9 #ifndef Tempus_IntegratorForwardSensitivity_decl_hpp
10 #define Tempus_IntegratorForwardSensitivity_decl_hpp
13 #include "Tempus_IntegratorBasic.hpp"
15 #include "Tempus_StepperStaggeredForwardSensitivity.hpp"
45 template<
class Scalar>
83 Teuchos::RCP<Teuchos::ParameterList> pList,
84 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model);
88 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model,
89 std::string stepperType);
137 virtual Teuchos::RCP<Stepper<Scalar> >
getStepper()
const override
141 virtual void setStepper(Teuchos::RCP<Thyra::ModelEvaluator<Scalar> > model);
154 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > x0,
155 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xdot0 = Teuchos::null,
156 Teuchos::RCP<
const Thyra::VectorBase<Scalar> > xdotdot0 = Teuchos::null,
157 Teuchos::RCP<
const Thyra::MultiVectorBase<Scalar> > DxDp0 = Teuchos::null,
158 Teuchos::RCP<
const Thyra::MultiVectorBase<Scalar> > DxdotDp0 = Teuchos::null,
159 Teuchos::RCP<
const Thyra::MultiVectorBase<Scalar> > DxdotdotDp0 = Teuchos::null);
172 {
return integrator_->getNonConstTimeStepControl(); }
193 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> >
getX()
const;
194 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> >
getDxDp()
const;
196 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> >
getXdot()
const;
197 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> >
getDxdotDp()
const;
199 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar> >
getXdotdot()
const;
200 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> >
getDxdotdotDp()
const;
225 void describe(Teuchos::FancyOStream & out,
226 const Teuchos::EVerbosityLevel verbLevel)
const override;
234 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model);
236 Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >
model_;
247 template<
class Scalar>
248 Teuchos::RCP<IntegratorForwardSensitivity<Scalar> >
250 Teuchos::RCP<Teuchos::ParameterList> pList,
251 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model);
254 template<
class Scalar>
255 Teuchos::RCP<IntegratorForwardSensitivity<Scalar> >
257 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model,
258 std::string stepperType);
261 template<
class Scalar>
262 Teuchos::RCP<IntegratorForwardSensitivity<Scalar> >
Time integrator implementing forward sensitivity analysis.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDxdotdotDp() const
Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > model_
virtual void checkTimeStep()
Check if time step has passed or failed.
virtual void setStepper(Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > model)
Set the Stepper.
Teuchos::RCP< SensitivityModelEvaluatorBase< Scalar > > sens_model_
virtual Teuchos::RCP< const SolutionHistory< Scalar > > getSolutionHistory() const override
Get the SolutionHistory.
virtual Teuchos::RCP< const TimeStepControl< Scalar > > getTimeStepControl() const override
Get the TimeStepControl.
virtual void initializeSolutionHistory(Teuchos::RCP< SolutionState< Scalar > > state=Teuchos::null)
Set the initial state which has the initial conditions.
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList() override
virtual Teuchos::RCP< IntegratorObserver< Scalar > > getObserver()
Get the Observer.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDxDp() const
void createSensitivityModelAndStepper(const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &model)
bool use_combined_method_
virtual Teuchos::RCP< TimeStepControl< Scalar > > getNonConstTimeStepControl() override
virtual Teuchos::RCP< SolutionState< Scalar > > getCurrentState()
Get current state.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getX() const
Get current the solution, x.
virtual void startIntegrator()
Perform tasks before start of integrator.
virtual Teuchos::RCP< Teuchos::Time > getStepperTimer() const override
Teuchos::RCP< Teuchos::ParameterList > stepper_pl_
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXdotdot() const
Get current the second time derivative of the solution, xdotdot.
virtual void initialize()
Initializes the Integrator after set* function calls.
virtual void setTimeStepControl(Teuchos::RCP< TimeStepControl< Scalar > > tsc=Teuchos::null)
Set the TimeStepControl.
virtual void endIntegrator()
Perform tasks after end of integrator.
void parseScreenOutput()
Parse when screen output should be executed.
virtual int getIndex() const override
Get current index.
Teuchos::RCP< IntegratorBasic< Scalar > > integrator_
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &pl) override
Teuchos::RCP< StepperStaggeredForwardSensitivity< Scalar > > sens_stepper_
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDxdotDp() const
virtual void setTempusParameterList(Teuchos::RCP< Teuchos::ParameterList > pl) override
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
Teuchos::RCP< Teuchos::ParameterList > sens_pl_
virtual Status getStatus() const override
Get Status.
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList() override
std::string description() const override
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual void setStepperWStepper(Teuchos::RCP< Stepper< Scalar > > stepper)
Set the Stepper.
virtual void setSolutionHistory(Teuchos::RCP< SolutionHistory< Scalar > > sh=Teuchos::null)
Set the SolutionHistory.
virtual void startTimeStep()
Start time step.
virtual Scalar getTime() const override
Get current time.
virtual Teuchos::RCP< Teuchos::Time > getIntegratorTimer() const override
Returns the IntegratorTimer_ for this Integrator.
virtual bool advanceTime()
Advance the solution to timeMax, and return true if successful.
IntegratorForwardSensitivity()
Destructor.
virtual void setObserver(Teuchos::RCP< IntegratorObserver< Scalar > > obs=Teuchos::null)
Set the Observer.
virtual Teuchos::RCP< Teuchos::ParameterList > getTempusParameterList() override
Return a copy of the Tempus ParameterList.
Teuchos::RCP< Teuchos::ParameterList > tempus_pl_
virtual ~IntegratorForwardSensitivity()
Destructor.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXdot() const
Get current the time derivative of the solution, xdot.
virtual bool advanceTime(const Scalar timeFinal) override
Advance the solution to timeFinal, and return true if successful.
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const override
Get the Stepper.
IntegratorObserver class for time integrators.
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
Thyra Base interface for time steppers.
TimeStepControl manages the time step size. There several mechanicisms that effect the time step size...
Status
Status for the Integrator, the Stepper and the SolutionState.
Teuchos::RCP< IntegratorForwardSensitivity< Scalar > > integratorForwardSensitivity(Teuchos::RCP< Teuchos::ParameterList > pList, const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &model)
Non-member constructor.