FEI Version of the Day
Loading...
Searching...
No Matches
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
31namespace 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
fei::SharedPtr< LibraryWrapper > get_LibraryWrapper() const
virtual fei::SharedPtr< fei::Solver > createSolver(const char *name=0)
virtual fei::SharedPtr< fei::Vector > createVector(fei::SharedPtr< fei::VectorSpace > vecSpace, int numVectors=1)
virtual fei::SharedPtr< fei::MatrixGraph > createMatrixGraph(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > columnSpace, const char *name)
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
virtual fei::SharedPtr< fei::Matrix > createMatrix(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
fei::SharedPtr< fei::Factory > clone() const
int getOutputLevel() const
virtual void parameters(const fei::ParameterSet &parameterset)