FEI  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
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_
virtual void parameters(const fei::ParameterSet &paramset)
Definition: fei_Factory.cpp:38
virtual ~Factory()
Definition: fei_Factory.cpp:31
virtual fei::SharedPtr< Factory > clone() const =0
virtual int getOutputLevel() const =0
virtual fei::SharedPtr< FEI > createFEI(fei::SharedPtr< LibraryWrapper > wrapper, MPI_Comm comm)
Definition: fei_Factory.cpp:65