FEI  Version of the Day
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 
snl_fei::Factory::getOutputLevel
int getOutputLevel() const
Definition: snl_fei_Factory.cpp:313
snl_fei::Factory::createMatrix
virtual fei::SharedPtr< fei::Matrix > createMatrix(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
Definition: snl_fei_Factory.cpp:249
fei::SharedPtr< LibraryWrapper >
snl_fei::Factory::get_LibraryWrapper
fei::SharedPtr< LibraryWrapper > get_LibraryWrapper() const
Definition: snl_fei_Factory.cpp:307
fei::ParameterSet
Definition: fei_ParameterSet.hpp:46
fei::Factory
Definition: fei_Factory.hpp:37
snl_fei::Factory::createVector
virtual fei::SharedPtr< fei::Vector > createVector(fei::SharedPtr< fei::VectorSpace > vecSpace, int numVectors=1)
Definition: snl_fei_Factory.cpp:167
snl_fei::Factory::createMatrixGraph
virtual fei::SharedPtr< fei::MatrixGraph > createMatrixGraph(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > columnSpace, const char *name)
Definition: snl_fei_Factory.cpp:156
snl_fei::Factory
Definition: snl_fei_Factory.hpp:35
snl_fei::Factory::createLinearSystem
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
Definition: snl_fei_Factory.cpp:274
snl_fei::Factory::clone
fei::SharedPtr< fei::Factory > clone() const
Definition: snl_fei_Factory.cpp:74
snl_fei::Factory::parameters
virtual void parameters(const fei::ParameterSet &parameterset)
Definition: snl_fei_Factory.cpp:92
snl_fei::Factory::~Factory
virtual ~Factory()
Definition: snl_fei_Factory.cpp:68
snl_fei::Factory::createSolver
virtual fei::SharedPtr< fei::Solver > createSolver(const char *name=0)
Definition: snl_fei_Factory.cpp:299