00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef LOCA_FACTORY_H
00043 #define LOCA_FACTORY_H
00044
00045 #include "Teuchos_RCP.hpp"
00046
00047 #include "NOX_Abstract_Group.H"
00048
00049 #include "LOCA_MultiPredictor_Factory.H"
00050 #include "LOCA_MultiContinuation_Factory.H"
00051 #include "LOCA_Bifurcation_Factory.H"
00052 #include "LOCA_StepSize_Factory.H"
00053 #include "LOCA_BorderedSolver_Factory.H"
00054 #include "LOCA_Eigensolver_Factory.H"
00055 #include "LOCA_EigenvalueSort_Factory.H"
00056 #include "LOCA_SaveEigenData_Factory.H"
00057 #include "LOCA_AnasaziOperator_Factory.H"
00058 #include "LOCA_TurningPoint_MooreSpence_SolverFactory.H"
00059 #include "LOCA_Pitchfork_MooreSpence_SolverFactory.H"
00060 #include "LOCA_Hopf_MooreSpence_SolverFactory.H"
00061
00062
00063 namespace Teuchos {
00064 class ParameterList;
00065 }
00066 namespace LOCA {
00067 class GlobalData;
00068 namespace Abstract {
00069 class Factory;
00070 }
00071 namespace Parameter {
00072 class SublistParser;
00073 }
00074 }
00075
00076 namespace LOCA {
00077
00079
00094 class Factory {
00095
00096 public:
00097
00099
00103 Factory(const Teuchos::RCP<LOCA::GlobalData>& global_data);
00104
00106
00112 Factory(const Teuchos::RCP<LOCA::GlobalData>& global_data,
00113 const Teuchos::RCP<LOCA::Abstract::Factory>& userFactory);
00114
00116 virtual ~Factory();
00117
00122
00124
00129 Teuchos::RCP<LOCA::MultiPredictor::AbstractStrategy>
00130 createPredictorStrategy(
00131 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00132 const Teuchos::RCP<Teuchos::ParameterList>& predictorParams);
00133
00135
00141 Teuchos::RCP<LOCA::MultiContinuation::AbstractStrategy>
00142 createContinuationStrategy(
00143 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00144 const Teuchos::RCP<Teuchos::ParameterList>& stepperParams,
00145 const Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>& grp,
00146 const Teuchos::RCP<LOCA::MultiPredictor::AbstractStrategy>& pred,
00147 const vector<int>& paramIDs);
00148
00150
00156 Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>
00157 createBifurcationStrategy(
00158 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00159 const Teuchos::RCP<Teuchos::ParameterList>& bifurcationParams,
00160 const Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>& grp);
00161
00163
00168 Teuchos::RCP<LOCA::StepSize::AbstractStrategy>
00169 createStepSizeStrategy(
00170 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00171 const Teuchos::RCP<Teuchos::ParameterList>& stepsizeParams);
00172
00174
00180 Teuchos::RCP<LOCA::BorderedSolver::AbstractStrategy>
00181 createBorderedSolverStrategy(
00182 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00183 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00184
00186
00191 Teuchos::RCP<LOCA::Eigensolver::AbstractStrategy>
00192 createEigensolverStrategy(
00193 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00194 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams);
00195
00197
00202 Teuchos::RCP<LOCA::EigenvalueSort::AbstractStrategy>
00203 createEigenvalueSortStrategy(
00204 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00205 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams);
00206
00208
00214 Teuchos::RCP<LOCA::SaveEigenData::AbstractStrategy>
00215 createSaveEigenDataStrategy(
00216 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00217 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams);
00218
00220
00226 Teuchos::RCP<LOCA::AnasaziOperator::AbstractStrategy>
00227 createAnasaziOperatorStrategy(
00228 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00229 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
00230 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00231 const Teuchos::RCP<NOX::Abstract::Group>& grp);
00232
00234
00240 Teuchos::RCP<LOCA::TurningPoint::MooreSpence::SolverStrategy>
00241 createMooreSpenceTurningPointSolverStrategy(
00242 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00243 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00244
00246
00252 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::SolverStrategy>
00253 createMooreSpencePitchforkSolverStrategy(
00254 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00255 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00256
00258
00264 Teuchos::RCP<LOCA::Hopf::MooreSpence::SolverStrategy>
00265 createMooreSpenceHopfSolverStrategy(
00266 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00267 const Teuchos::RCP<Teuchos::ParameterList>& solverParams);
00268
00270
00271 private:
00272
00274 Factory(const Factory&);
00275
00277 Factory& operator = (const Factory&);
00278
00279 protected:
00280
00282 Teuchos::RCP<LOCA::GlobalData> globalData;
00283
00285 Teuchos::RCP<LOCA::Abstract::Factory> factory;
00286
00288 bool haveFactory;
00289
00291 LOCA::MultiPredictor::Factory predictorFactory;
00292
00294 LOCA::MultiContinuation::Factory continuationFactory;
00295
00297 LOCA::Bifurcation::Factory bifurcationFactory;
00298
00300 LOCA::StepSize::Factory stepsizeFactory;
00301
00303 LOCA::BorderedSolver::Factory borderedFactory;
00304
00306 LOCA::Eigensolver::Factory eigensolverFactory;
00307
00309 LOCA::EigenvalueSort::Factory eigenvalueSortFactory;
00310
00312 LOCA::SaveEigenData::Factory saveEigenFactory;
00313
00315 LOCA::AnasaziOperator::Factory anasaziOperatorFactory;
00316
00318 LOCA::TurningPoint::MooreSpence::SolverFactory mooreSpenceTurningPointSolverFactory;
00319
00321 LOCA::Pitchfork::MooreSpence::SolverFactory mooreSpencePitchforkSolverFactory;
00322
00324 LOCA::Hopf::MooreSpence::SolverFactory mooreSpenceHopfSolverFactory;
00325
00326 };
00327
00328 }
00329
00330 #endif