FEI  Version of the Day
fei_Factory.hpp
1 /*--------------------------------------------------------------------*/
2 /* Copyright 2005 Sandia Corporation. */
3 /* Under the terms of Contract DE-AC04-94AL85000, there is a */
4 /* non-exclusive license for use of this work by or on behalf */
5 /* of the U.S. Government. Export of this program may require */
6 /* a license from the United States Government. */
7 /*--------------------------------------------------------------------*/
8 
9 #ifndef _fei_Factory_hpp_
10 #define _fei_Factory_hpp_
11 
12 #include "fei_macros.hpp"
13 #include "fei_mpi.h"
14 #include "fei_VectorSpace.hpp"
15 #include "fei_MatrixGraph.hpp"
16 #include "fei_Matrix.hpp"
17 #include "fei_Vector.hpp"
18 #include "fei_LinearSystem.hpp"
19 #include "fei_Solver.hpp"
20 #include "fei_LibraryWrapper.hpp"
21 #include "FEI.hpp"
22 
23 namespace fei {
24  //first, a forward declaration...
25  class ParameterSet;
26 
37  class Factory : public virtual fei::VectorSpace::Factory,
38  public virtual fei::MatrixGraph::Factory,
39  public virtual fei::Matrix::Factory,
40  public virtual fei::Vector::Factory,
41  public virtual fei::LinearSystem::Factory,
42  public virtual fei::Solver::Factory {
43  public:
45  Factory(MPI_Comm comm);
46 
48  virtual ~Factory();
49 
51  virtual fei::SharedPtr<Factory> clone() const = 0;
52 
55  virtual void parameters(const fei::ParameterSet& paramset);
56 
65  MPI_Comm comm);
66 
74  virtual fei::SharedPtr<FEI> createFEI(MPI_Comm comm);
75 
79  virtual int getOutputLevel() const = 0;
80 
81  private:
82  Factory();
83  Factory(const Factory& src);
84  };//class Factory
85 }//namespace fei
86 
87 #endif // _fei_Factory_hpp_
fei::Factory::getOutputLevel
virtual int getOutputLevel() const =0
fei::Factory::clone
virtual fei::SharedPtr< Factory > clone() const =0
fei::SharedPtr
Definition: fei_SharedPtr.hpp:65
fei::Vector::Factory
Definition: fei_Vector.hpp:60
fei::ParameterSet
Definition: fei_ParameterSet.hpp:46
fei::Factory
Definition: fei_Factory.hpp:37
fei::LinearSystem::Factory
Definition: fei_LinearSystem.hpp:29
fei::VectorSpace::Factory
Definition: fei_VectorSpace.hpp:65
fei::MatrixGraph::Factory
Definition: fei_MatrixGraph.hpp:36
fei::Factory::~Factory
virtual ~Factory()
Definition: fei_Factory.cpp:31
fei::Factory::parameters
virtual void parameters(const fei::ParameterSet &paramset)
Definition: fei_Factory.cpp:38
fei
Definition: fei_ArrayUtils.hpp:16
fei::Matrix::Factory
Definition: fei_Matrix.hpp:33
fei::Factory::createFEI
virtual fei::SharedPtr< FEI > createFEI(fei::SharedPtr< LibraryWrapper > wrapper, MPI_Comm comm)
Definition: fei_Factory.cpp:65
fei::Solver::Factory
Definition: fei_Solver.hpp:25