8#ifndef _snl_fei_Factory_cpp_
9#define _snl_fei_Factory_cpp_
30 lsc_ = wrapper->getLinearSystemCore();
31 feData_ = wrapper->getFiniteElementData();
80 else if (
lsc_.get() != NULL) {
83 else if (
feData_.get() != NULL) {
99 const char** paramStrings = NULL;
100 std::vector<std::string> stdstrings;
103 char** nc_paramStrings =
const_cast<char**
>(paramStrings);
104 if (
lsc_.get() != NULL) {
105 err +=
lsc_->parameters(numParams, nc_paramStrings);
108 err +=
feData_->parameters(numParams, nc_paramStrings);
111 delete [] paramStrings;
115 osstr <<
"snl_fei::Factory::parameters received err="<<err
116 <<
" from either feiData_->parameters or lsc_->parameters.";
117 throw std::runtime_error(osstr.str());
126 param = parameterset.
get(
"BLOCK_GRAPH");
132 param = parameterset.
get(
"BLOCK_MATRIX");
143 param = parameterset.
get(
"AZ_matrix_type");
173 fei::console_out() <<
"snl_fei::Factory ERROR: when using LinearSystemCore or FiniteElementData"
174 <<
", you must create a MatrixGraph before you can create vectors"<<
FEI_ENDL;
185 return(
broker_->createVector() );
191 bool isSolutionVector,
198 <<
", you must create a MatrixGraph before you can create vectors"<<
FEI_ENDL;
209 return(
broker_->createVector(isSolutionVector) );
226 return(
broker_->createVector() );
232 bool isSolutionVector,
244 return(
broker_->createVector(isSolutionVector) );
256 <<
", you must create a MatrixGraph before you can create matrices"<<
FEI_ENDL;
267 broker_->setMatrixGraph(matrixGraph);
269 return(
broker_->createMatrix());
279 fei::console_out() <<
"snl_fei::Factory ERROR: you may not create a LinearSystem with "
280 <<
"a NULL MatrixGraph object." <<
FEI_ENDL;
292 broker_->setMatrixGraph(matrixGraph);
294 return(
broker_->createLinearSystem() );
323 if (
lsc_.get() != NULL) {
virtual void parameters(const fei::ParameterSet ¶mset)
virtual fei::SharedPtr< fei::MatrixGraph > createMatrixGraph(fei::SharedPtr< fei::VectorSpace > rowSpace, fei::SharedPtr< fei::VectorSpace > columnSpace, const char *name)
const std::string & getStringValue() const
ParamType getType() const
bool getBoolValue() const
int getIntParamValue(const char *name, int ¶mValue) const
const Param * get(const char *name) const
fei::SharedPtr< LibraryWrapper > get_LibraryWrapper() const
virtual fei::SharedPtr< fei::Solver > createSolver(const char *name=0)
int createBroker_LinSysCore(fei::SharedPtr< fei::MatrixGraph > matrixGraph, fei::SharedPtr< LinearSystemCore > lsc)
virtual fei::SharedPtr< fei::Vector > createVector(fei::SharedPtr< fei::VectorSpace > vecSpace, int numVectors=1)
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< fei::Reducer > reducer_
virtual fei::SharedPtr< fei::LinearSystem > createLinearSystem(fei::SharedPtr< fei::MatrixGraph > &matrixGraph)
fei::SharedPtr< LinearSystemCore > lsc_
virtual fei::SharedPtr< fei::Matrix > createMatrix(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
int createBroker(fei::SharedPtr< fei::MatrixGraph > matrixGraph)
int createBroker_FEData(fei::SharedPtr< fei::MatrixGraph > matrixGraph, fei::SharedPtr< FiniteElementData > feData)
fei::SharedPtr< fei::MatrixGraph > matrixGraph_
fei::SharedPtr< fei::Factory > clone() const
fei::SharedPtr< LibraryWrapper > wrapper_
int getOutputLevel() const
fei::SharedPtr< snl_fei::Broker > broker_
fei::SharedPtr< FiniteElementData > feData_
virtual void parameters(const fei::ParameterSet ¶meterset)
#define FEI_OSTRINGSTREAM
void convert_ParameterSet_to_strings(const fei::ParameterSet *paramset, std::vector< std::string > ¶mStrings)
void strings_to_char_ptrs(std::vector< std::string > &stdstrings, int &numStrings, const char **&charPtrs)
std::ostream & console_out()