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_ABSTRACT_FACTORY_H
00043 #define LOCA_ABSTRACT_FACTORY_H
00044
00045 #include "Teuchos_RCP.hpp"
00046
00047 #include "NOX_Abstract_Group.H"
00048
00049
00050 namespace Teuchos {
00051 class ParameterList;
00052 }
00053 namespace LOCA {
00054 class GlobalData;
00055 namespace Parameter {
00056 class SublistParser;
00057 }
00058 namespace MultiPredictor {
00059 class AbstractStrategy;
00060 }
00061 namespace MultiContinuation {
00062 class AbstractStrategy;
00063 class AbstractGroup;
00064 }
00065 namespace StepSize {
00066 class AbstractStrategy;
00067 }
00068 namespace BorderedSolver {
00069 class AbstractStrategy;
00070 }
00071 namespace Eigensolver {
00072 class AbstractStrategy;
00073 }
00074 namespace EigenvalueSort {
00075 class AbstractStrategy;
00076 }
00077 namespace SaveEigenData {
00078 class AbstractStrategy;
00079 }
00080 namespace AnasaziOperator {
00081 class AbstractStrategy;
00082 }
00083 namespace TurningPoint {
00084 namespace MooreSpence {
00085 class SolverStrategy;
00086 }
00087 }
00088 namespace Pitchfork {
00089 namespace MooreSpence {
00090 class SolverStrategy;
00091 }
00092 }
00093 namespace Hopf {
00094 namespace MooreSpence {
00095 class SolverStrategy;
00096 }
00097 }
00098 }
00099
00100 namespace LOCA {
00101
00102 namespace Abstract {
00103
00105
00118 class Factory {
00119
00120 public:
00121
00123 Factory() {}
00124
00126 virtual ~Factory() {}
00127
00129
00134 virtual void
00135 init(const Teuchos::RCP<LOCA::GlobalData>& global_data) = 0;
00136
00141
00143 virtual bool
00144 createPredictorStrategy(
00145 const string& strategyName,
00146 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00147 const Teuchos::RCP<Teuchos::ParameterList>& predictorParams,
00148 Teuchos::RCP<LOCA::MultiPredictor::AbstractStrategy>& strategy);
00149
00151 virtual bool
00152 createContinuationStrategy(
00153 const string& strategyName,
00154 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00155 const Teuchos::RCP<Teuchos::ParameterList>& stepperParams,
00156 const Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>& grp,
00157 const Teuchos::RCP<LOCA::MultiPredictor::AbstractStrategy>& pred,
00158 const vector<int>& paramIDs,
00159 Teuchos::RCP<LOCA::MultiContinuation::AbstractStrategy>& strategy);
00160
00162 virtual bool
00163 createBifurcationStrategy(
00164 const string& strategyName,
00165 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00166 const Teuchos::RCP<Teuchos::ParameterList>& bifurcationParams,
00167 const Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>& grp,
00168 Teuchos::RCP<LOCA::MultiContinuation::AbstractGroup>& strategy);
00169
00171 virtual bool
00172 createStepSizeStrategy(
00173 const string& strategyName,
00174 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00175 const Teuchos::RCP<Teuchos::ParameterList>& stepsizeParams,
00176 Teuchos::RCP<LOCA::StepSize::AbstractStrategy>& strategy);
00177
00179 virtual bool
00180 createBorderedSolverStrategy(
00181 const string& strategyName,
00182 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00183 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00184 Teuchos::RCP<LOCA::BorderedSolver::AbstractStrategy>& strategy);
00185
00187 virtual bool
00188 createEigensolverStrategy(
00189 const string& strategyName,
00190 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00191 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
00192 Teuchos::RCP<LOCA::Eigensolver::AbstractStrategy>& strategy);
00193
00195 virtual bool
00196 createEigenvalueSortStrategy(
00197 const string& strategyName,
00198 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00199 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
00200 Teuchos::RCP<LOCA::EigenvalueSort::AbstractStrategy>& strategy);
00201
00203 virtual bool
00204 createSaveEigenDataStrategy(
00205 const string& strategyName,
00206 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00207 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
00208 Teuchos::RCP<LOCA::SaveEigenData::AbstractStrategy>& strategy);
00209
00211 virtual bool
00212 createAnasaziOperatorStrategy(
00213 const string& strategyName,
00214 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00215 const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
00216 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00217 const Teuchos::RCP<NOX::Abstract::Group>& grp,
00218 Teuchos::RCP<LOCA::AnasaziOperator::AbstractStrategy>& strategy);
00219
00221 virtual bool
00222 createMooreSpenceTurningPointSolverStrategy(
00223 const string& strategyName,
00224 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00225 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00226 Teuchos::RCP<LOCA::TurningPoint::MooreSpence::SolverStrategy>& strategy);
00227
00229 virtual bool
00230 createMooreSpencePitchforkSolverStrategy(
00231 const string& strategyName,
00232 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00233 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00234 Teuchos::RCP<LOCA::Pitchfork::MooreSpence::SolverStrategy>& strategy);
00235
00237 virtual bool
00238 createMooreSpenceHopfSolverStrategy(
00239 const string& strategyName,
00240 const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
00241 const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
00242 Teuchos::RCP<LOCA::Hopf::MooreSpence::SolverStrategy>& strategy);
00243
00245
00246 };
00247
00248 }
00249
00250 }
00251
00252 #endif