FEI  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
snl_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 _snl_fei_Factory_hpp_
10 #define _snl_fei_Factory_hpp_
11 
12 #include <fei_macros.hpp>
13 #include <fei_Factory.hpp>
14 #include <fei_VectorSpace.hpp>
15 #include <snl_fei_Broker_FEData.hpp>
16 #include <snl_fei_Broker_LinSysCore.hpp>
17 #include <fei_Solver.hpp>
18 #include <fei_LinearSystemCore.hpp>
19 #include <fei_LibraryWrapper.hpp>
20 #include <fei_utils.hpp>
21 #include <fei_Reducer.hpp>
22 #include <fei_MatrixReducer.hpp>
23 #include <fei_VectorReducer.hpp>
24 #include <fei_ParameterSet.hpp>
25 #include <fei_MatrixGraph_Impl2.hpp>
26 
27 #undef fei_file
28 #define fei_file "snl_fei_Factory.hpp"
29 #include <fei_ErrMacros.hpp>
30 
31 namespace snl_fei {
32 
35  class Factory : public virtual fei::Factory {
36  public:
38  Factory(MPI_Comm comm, fei::SharedPtr<LibraryWrapper> wrapper);
39 
41  Factory(MPI_Comm comm, fei::SharedPtr<LinearSystemCore> lsc);
42 
44  Factory(MPI_Comm comm,
45  fei::SharedPtr<FiniteElementData> feData, int nodeIDType);
46 
48  virtual ~Factory();
49 
50 
53 
55  virtual void parameters(const fei::ParameterSet& parameterset);
56 
62  const char* name);
63 
67  int numVectors=1);
68 
71  bool isSolutionVector,
72  int numVectors=1);
73 
77  int numVectors=1);
78 
82  bool isSolutionVector,
83  int numVectors=1);
84 
87 
92 
94  virtual fei::SharedPtr<fei::Solver> createSolver(const char* name=0);
95 
98 
99  int getOutputLevel() const;
100 
101  private:
102  int createBroker(fei::SharedPtr<fei::MatrixGraph> matrixGraph);
103 
104  int createBroker_LinSysCore(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
106 
107  int createBroker_FEData(fei::SharedPtr<fei::MatrixGraph> matrixGraph,
109 
110  MPI_Comm comm_;
114 
115  int nodeIDType_;
116 
120  int outputLevel_;
121  bool blockMatrix_;
122  };//class Factory
123 }//namespace snl_fei
124 
125 #endif // _snl_fei_Factory_hpp_
126 
Factory(MPI_Comm comm, fei::SharedPtr< LibraryWrapper > wrapper)
virtual fei::SharedPtr< fei::MatrixGraph > createMatrixGraph(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > columnSpace, const char *name)
fei::SharedPtr< LibraryWrapper > get_LibraryWrapper() const
fei::SharedPtr< fei::Factory > clone() const
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
virtual void parameters(const fei::ParameterSet &parameterset)
int getOutputLevel() const
virtual fei::SharedPtr< fei::Matrix > createMatrix(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
virtual fei::SharedPtr< fei::Solver > createSolver(const char *name=0)
virtual fei::SharedPtr< fei::Vector > createVector(fei::SharedPtr< fei::VectorSpace > vecSpace, int numVectors=1)