30 #ifndef Rythmos_INTEGRATOR_BUILDER_DECL_H
31 #define Rythmos_INTEGRATOR_BUILDER_DECL_H
34 #include "Rythmos_Types.hpp"
35 #include "Rythmos_IntegratorBase.hpp"
36 #include "Rythmos_IntegrationControlStrategyBase.hpp"
37 #include "Rythmos_StepperBuilder.hpp"
38 #include "Rythmos_StepControlStrategyBase.hpp"
39 #include "Rythmos_InterpolationBufferBase.hpp"
40 #include "Rythmos_InterpolationBufferAppenderBase.hpp"
41 #include "Rythmos_ErrWtVecCalcBase.hpp"
42 #include "Rythmos_InterpolatorBase.hpp"
43 #include "Rythmos_RKButcherTableauBuilder.hpp"
46 #include "Thyra_LinearOpWithSolveFactoryBase.hpp"
47 #include "Thyra_NonlinearSolverBase.hpp"
48 #include "Thyra_ModelEvaluator.hpp"
51 #include "Teuchos_ObjectBuilder.hpp"
52 #include "Teuchos_ParameterListAcceptor.hpp"
62 template<
class Scalar>
76 const std::string &integratorFactoryName
82 const std::string &integrationControlName
87 const RCP<StepperBuilder<Scalar> > &stepperBuilder
95 const RCP<RKButcherTableauBuilder<Scalar> > & rkbtBuilder
101 const std::string &stepControlName
107 const std::string &interpolationBufferName
113 const std::string &interpolationBufferAppenderName
118 const RCP<
const AbstractFactory<ErrWtVecCalcBase<Scalar> > > &errWtVecCalcFactory,
119 const std::string &errWtVecCalcFactoryName
125 const std::string &interpolatorFactoryName
130 const RCP<Thyra::LinearOpWithSolveFactoryBase<Scalar> > &wFactoryObject
147 RCP<IntegratorBase<Scalar> >
create(
148 const RCP<
const Thyra::ModelEvaluator<Scalar> >& model,
149 const Thyra::ModelEvaluatorBase::InArgs<Scalar>& initialCondition,
150 const RCP<Thyra::NonlinearSolverBase<Scalar> >& nlSolver
178 RCP<Teuchos::ObjectBuilder<IntegratorBase<Scalar> > > integratorBuilder_;
179 RCP<Teuchos::ObjectBuilder<IntegrationControlStrategyBase<Scalar> > > integrationControlBuilder_;
180 RCP<StepperBuilder<Scalar> > stepperBuilder_;
181 RCP<RKButcherTableauBuilder<Scalar> > rkbtBuilder_;
182 RCP<Teuchos::ObjectBuilder<StepControlStrategyBase<Scalar> > > stepControlBuilder_;
183 RCP<Teuchos::ObjectBuilder<InterpolationBufferBase<Scalar> > > interpolationBufferBuilder_;
184 RCP<Teuchos::ObjectBuilder<InterpolationBufferAppenderBase<Scalar> > > interpolationBufferAppenderBuilder_;
185 RCP<Teuchos::ObjectBuilder<ErrWtVecCalcBase<Scalar> > > errWtVecCalcBuilder_;
186 RCP<Teuchos::ObjectBuilder<InterpolatorBase<Scalar> > > interpolatorBuilder_;
188 RCP<Thyra::LinearOpWithSolveFactoryBase<Scalar> > wFactoryObject_;
190 RCP<ParameterList> paramList_;
191 mutable RCP<ParameterList> validPL_;
196 void initializeDefaults_();
205 template<
class Scalar>
206 RCP<IntegratorBuilder<Scalar> > integratorBuilder();
213 template<
class Scalar>
214 RCP<IntegratorBuilder<Scalar> >
215 integratorBuilder(
const RCP<ParameterList> ¶mList);
222 template<
class Scalar>
223 RCP<IntegratorBase<Scalar> > createForwardSensitivityIntegrator(
224 const RCP<
const Thyra::ModelEvaluator<Scalar> >& model,
226 const Thyra::ModelEvaluatorBase::InArgs<Scalar>& model_ic,
227 const RCP<Thyra::NonlinearSolverBase<Scalar> >& nlSolver,
228 const RCP<ParameterList>& integratorBuilderPL
233 #endif //Rythmos_INTEGRATOR_BUILDER_DECL_H