Tempus  Version of the Day
Time Integration
Tempus::StepperStaggeredForwardSensitivity< Scalar > Class Template Reference

A stepper implementing staggered forward sensitivity analysis. More...

#include <Tempus_StepperStaggeredForwardSensitivity_decl.hpp>

Inheritance diagram for Tempus::StepperStaggeredForwardSensitivity< Scalar >:
Tempus::Stepper< Scalar >

Public Member Functions

 StepperStaggeredForwardSensitivity (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel, const Teuchos::RCP< Teuchos::ParameterList > &pList=Teuchos::null, const Teuchos::RCP< Teuchos::ParameterList > &sens_pList=Teuchos::null)
 Constructor. More...
 
Basic stepper methods
virtual void setModel (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
 
virtual void setNonConstModel (const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel)
 
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel ()
 
virtual void setSolver (std::string solverName)
 Set solver via ParameterList solver name. More...
 
virtual void setSolver (Teuchos::RCP< Teuchos::ParameterList > solverPL=Teuchos::null)
 Set solver via solver ParameterList. More...
 
virtual void setSolver (Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver)
 Set solver. More...
 
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver () const
 Get solver. More...
 
virtual void setObserver (Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null)
 Set Observer. More...
 
virtual void initialize ()
 Initialize during construction and after changing input parameters. More...
 
virtual void takeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
 Take the specified timestep, dt, and return true if successful. More...
 
virtual std::string getStepperType () const
 
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState ()
 Get a default (initial) StepperState. More...
 
virtual Scalar getOrder () const
 
virtual Scalar getOrderMin () const
 
virtual Scalar getOrderMax () const
 
virtual Scalar getInitTimeStep (const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const
 
virtual bool isExplicit () const
 
virtual bool isImplicit () const
 
virtual bool isExplicitImplicit () const
 
virtual bool isOneStepMethod () const
 
virtual bool isMultiStepMethod () const
 
virtual void setInitialGuess (Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess)
 Pass initial guess to Newton solver (only relevant for explicit schemes)
More...
 
ParameterList methods
void setParameterList (const Teuchos::RCP< Teuchos::ParameterList > &pl)
 
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList ()
 
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList ()
 
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters () const
 
Teuchos::RCP< Teuchos::ParameterList > getDefaultParameters () const
 
- Public Member Functions inherited from Tempus::Stepper< Scalar >
virtual void createSubSteppers (std::vector< Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > > models)
 
void validExplicitODE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const
 Validate that the model supports explicit ODE evaluation, f(x,t) [=xdot]. More...
 
void validSecondOrderExplicitODE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const
 Validate that the model supports explicit second order ODE evaluation, f(x,xdot,t) [=xdotdot]. More...
 
void validImplicitODE_DAE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const
 Validate ME supports implicit ODE/DAE evaluation, f(xdot,x,t) [= 0]. More...
 
void validSecondOrderODE_DAE (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model) const
 Validate ME supports 2nd order implicit ODE/DAE evaluation, f(xdotdot,xdot,x,t) [= 0]. More...
 
Teuchos::RCP< Teuchos::ParameterList > defaultSolverParameters () const
 

Overridden from Teuchos::Describable

Teuchos::RCP< Teuchos::ParameterList > stepperPL_
 
Teuchos::RCP< Teuchos::ParameterList > sensPL_
 
Teuchos::RCP< Stepper< Scalar > > stateStepper_
 
Teuchos::RCP< Stepper< Scalar > > sensitivityStepper_
 
Teuchos::RCP< SensitivityModelEvaluatorBase< Scalar > > combined_fsa_model_
 
Teuchos::RCP< SensitivityModelEvaluatorBase< Scalar > > fsa_model_
 
Teuchos::RCP< SolutionHistory< Scalar > > stateSolutionHistory_
 
Teuchos::RCP< SolutionHistory< Scalar > > sensSolutionHistory_
 
bool reuse_solver_
 
bool force_W_update_
 
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess_
 
virtual std::string description () const
 
virtual void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space () const
 
 StepperStaggeredForwardSensitivity ()
 Default Constructor – not allowed. More...
 
void setParams (const Teuchos::RCP< Teuchos::ParameterList > &pl, const Teuchos::RCP< Teuchos::ParameterList > &spl)
 

Detailed Description

template<class Scalar>
class Tempus::StepperStaggeredForwardSensitivity< Scalar >

A stepper implementing staggered forward sensitivity analysis.

It constructs two internal steppers, one for the state equations as usual and one for the sensitivity equations using Tempus::StaggeredForwardSensitivityModelEvaluator. It's implementation of takeStep() first takes a step using the state stepper, updates the sensitivity model evaluator with the compute state solution and time derivatives, and then takes a step using the sensitivity stepper. It optionally can reuse the state solver for the sensitivity equations as well.

Definition at line 29 of file Tempus_StepperStaggeredForwardSensitivity_decl.hpp.

Constructor & Destructor Documentation

◆ StepperStaggeredForwardSensitivity() [1/2]

template<class Scalar >
Tempus::StepperStaggeredForwardSensitivity< Scalar >::StepperStaggeredForwardSensitivity ( const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &  appModel,
const Teuchos::RCP< Teuchos::ParameterList > &  pList = Teuchos::null,
const Teuchos::RCP< Teuchos::ParameterList > &  sens_pList = Teuchos::null 
)

Constructor.

The first parameter list argument supplies supplies regular stepper options, while the second provides sensitivity specific options:

  • "Reuse State Linear Solver" (default: false) Whether to reuse the model's W matrix, solver, and preconditioner when solving the sensitivity equations. If they can be reused, substantial savings in compute time are possible.
  • "Force W Update" (default: false) When reusing the solver as above whether to force recomputation of W. This can be necessary when the solver overwrites it during the solve-phase (e.g., by a factorization).
  • "Use DfDp as Tangent" (default: false) Reinterpret the df/dp out-arg as the tangent vector (df/dx)(x,p) * dx/dp + df/dp(x,p) as described in the Tempus::CombinedForwardSensitivityModelEvaluator documentation.
  • "Sensitivity Parameter Index" (default: 0) Model evaluator parameter index for which sensitivities will be computed.
  • "Sensitivity X Tangent Index" (default: 1) If "Use DfDp as Tangent" is true, the model evaluator parameter index for passing dx/dp as a Thyra::DefaultMultiVectorProductVector.
  • "Sensitivity X-Dot Tangent Index" (default: 2) If "Use DfDp as Tangent" is true, the model evaluator parameter index for passing dx_dot/dp as a Thyra::DefaultMultiVectorProductVector.
  • "Sensitivity X-Dot-Dot Tangent Index" (default: 3) If "Use DfDp as Tangent" is true, the model evaluator parameter index for passing dx_dot_dot/dp as a Thyra::DefaultMultiVectorProductVector (if the model supports x_dot_dot).

Definition at line 29 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ StepperStaggeredForwardSensitivity() [2/2]

Default Constructor – not allowed.

Member Function Documentation

◆ describe()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::describe ( Teuchos::FancyOStream &  out,
const Teuchos::EVerbosityLevel  verbLevel 
) const
virtual

◆ description()

template<class Scalar >
std::string Tempus::StepperStaggeredForwardSensitivity< Scalar >::description ( ) const
virtual

◆ get_x_space()

template<class Scalar >
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::StepperStaggeredForwardSensitivity< Scalar >::get_x_space ( ) const

◆ getDefaultParameters()

template<class Scalar >
Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getDefaultParameters ( ) const
virtual

◆ getDefaultStepperState()

template<class Scalar >
Teuchos::RCP< Tempus::StepperState< Scalar > > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getDefaultStepperState ( )
virtual

Get a default (initial) StepperState.

Implements Tempus::Stepper< Scalar >.

Definition at line 282 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ getInitTimeStep()

template<class Scalar >
virtual Scalar Tempus::StepperStaggeredForwardSensitivity< Scalar >::getInitTimeStep ( const Teuchos::RCP< SolutionHistory< Scalar > > &  solutionHistory) const
inlinevirtual

◆ getModel()

template<class Scalar >
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getModel ( )
virtual

◆ getNonconstParameterList()

template<class Scalar >
Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getNonconstParameterList ( )

◆ getOrder()

template<class Scalar >
virtual Scalar Tempus::StepperStaggeredForwardSensitivity< Scalar >::getOrder ( ) const
inlinevirtual

◆ getOrderMax()

template<class Scalar >
virtual Scalar Tempus::StepperStaggeredForwardSensitivity< Scalar >::getOrderMax ( ) const
inlinevirtual

◆ getOrderMin()

template<class Scalar >
virtual Scalar Tempus::StepperStaggeredForwardSensitivity< Scalar >::getOrderMin ( ) const
inlinevirtual

◆ getSolver()

template<class Scalar >
virtual Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getSolver ( ) const
inlinevirtual

Get solver.

Implements Tempus::Stepper< Scalar >.

Definition at line 84 of file Tempus_StepperStaggeredForwardSensitivity_decl.hpp.

◆ getStepperType()

template<class Scalar >
virtual std::string Tempus::StepperStaggeredForwardSensitivity< Scalar >::getStepperType ( ) const
inlinevirtual

◆ getValidParameters()

template<class Scalar >
Teuchos::RCP< const Teuchos::ParameterList > Tempus::StepperStaggeredForwardSensitivity< Scalar >::getValidParameters ( ) const

◆ initialize()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::initialize ( )
virtual

Initialize during construction and after changing input parameters.

Implements Tempus::Stepper< Scalar >.

Definition at line 127 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ isExplicit()

template<class Scalar >
virtual bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::isExplicit ( ) const
inlinevirtual

◆ isExplicitImplicit()

template<class Scalar >
virtual bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::isExplicitImplicit ( ) const
inlinevirtual

◆ isImplicit()

template<class Scalar >
virtual bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::isImplicit ( ) const
inlinevirtual

◆ isMultiStepMethod()

template<class Scalar >
virtual bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::isMultiStepMethod ( ) const
inlinevirtual

◆ isOneStepMethod()

template<class Scalar >
virtual bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::isOneStepMethod ( ) const
inlinevirtual

◆ setInitialGuess()

template<class Scalar >
virtual void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setInitialGuess ( Teuchos::RCP< const Thyra::VectorBase< Scalar > >  initial_guess)
inlinevirtual

Pass initial guess to Newton solver (only relevant for explicit schemes)

Implements Tempus::Stepper< Scalar >.

Definition at line 126 of file Tempus_StepperStaggeredForwardSensitivity_decl.hpp.

◆ setModel()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setModel ( const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &  appModel)
virtual

◆ setNonConstModel()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setNonConstModel ( const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &  appModel)
virtual

◆ setObserver()

template<class Scalar >
virtual void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setObserver ( Teuchos::RCP< StepperObserver< Scalar > >  obs = Teuchos::null)
inlinevirtual

Set Observer.

Implements Tempus::Stepper< Scalar >.

Definition at line 88 of file Tempus_StepperStaggeredForwardSensitivity_decl.hpp.

◆ setParameterList()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setParameterList ( const Teuchos::RCP< Teuchos::ParameterList > &  pl)

◆ setParams()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setParams ( const Teuchos::RCP< Teuchos::ParameterList > &  pl,
const Teuchos::RCP< Teuchos::ParameterList > &  spl 
)
private

◆ setSolver() [1/3]

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setSolver ( std::string  solverName)
virtual

Set solver via ParameterList solver name.

Implements Tempus::Stepper< Scalar >.

Definition at line 90 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ setSolver() [2/3]

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setSolver ( Teuchos::RCP< Teuchos::ParameterList >  solverPL = Teuchos::null)
virtual

Set solver via solver ParameterList.

Implements Tempus::Stepper< Scalar >.

Definition at line 107 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ setSolver() [3/3]

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::setSolver ( Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > >  solver)
virtual

Set solver.

Implements Tempus::Stepper< Scalar >.

Definition at line 117 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ takeStep()

template<class Scalar >
void Tempus::StepperStaggeredForwardSensitivity< Scalar >::takeStep ( const Teuchos::RCP< SolutionHistory< Scalar > > &  solutionHistory)
virtual

Take the specified timestep, dt, and return true if successful.

Implements Tempus::Stepper< Scalar >.

Definition at line 135 of file Tempus_StepperStaggeredForwardSensitivity_impl.hpp.

◆ unsetParameterList()

template<class Scalar >
Teuchos::RCP< Teuchos::ParameterList > Tempus::StepperStaggeredForwardSensitivity< Scalar >::unsetParameterList ( )

Member Data Documentation

◆ combined_fsa_model_

template<class Scalar >
Teuchos::RCP<SensitivityModelEvaluatorBase<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::combined_fsa_model_
private

◆ force_W_update_

template<class Scalar >
bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::force_W_update_
private

◆ fsa_model_

template<class Scalar >
Teuchos::RCP<SensitivityModelEvaluatorBase<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::fsa_model_
private

◆ initial_guess_

template<class Scalar >
Teuchos::RCP<const Thyra::VectorBase<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::initial_guess_
private

◆ reuse_solver_

template<class Scalar >
bool Tempus::StepperStaggeredForwardSensitivity< Scalar >::reuse_solver_
private

◆ sensitivityStepper_

template<class Scalar >
Teuchos::RCP<Stepper<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::sensitivityStepper_
private

◆ sensPL_

template<class Scalar >
Teuchos::RCP<Teuchos::ParameterList> Tempus::StepperStaggeredForwardSensitivity< Scalar >::sensPL_
private

◆ sensSolutionHistory_

template<class Scalar >
Teuchos::RCP<SolutionHistory<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::sensSolutionHistory_
private

◆ stateSolutionHistory_

template<class Scalar >
Teuchos::RCP<SolutionHistory<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::stateSolutionHistory_
private

◆ stateStepper_

template<class Scalar >
Teuchos::RCP<Stepper<Scalar> > Tempus::StepperStaggeredForwardSensitivity< Scalar >::stateStepper_
private

◆ stepperPL_

template<class Scalar >
Teuchos::RCP<Teuchos::ParameterList> Tempus::StepperStaggeredForwardSensitivity< Scalar >::stepperPL_
private

The documentation for this class was generated from the following files: