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

Transform a ModelEvaluator's sensitivity equations to its residual. More...

#include <Tempus_StaggeredForwardSensitivityModelEvaluator_decl.hpp>

Inheritance diagram for Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >:
Tempus::SensitivityModelEvaluatorBase< Scalar >

Public Types

typedef Thyra::VectorBase< Scalar > Vector
 
typedef Thyra::MultiVectorBase< Scalar > MultiVector
 

Public Member Functions

 StaggeredForwardSensitivityModelEvaluator (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model, const Teuchos::RCP< const Teuchos::ParameterList > &pList=Teuchos::null, const Teuchos::RCP< MultiVector > &dxdp_init=Teuchos::null, const Teuchos::RCP< MultiVector > &dx_dotdp_init=Teuchos::null, const Teuchos::RCP< MultiVector > &dx_dotdot_dp_init=Teuchos::null)
 Constructor. More...
 
Public functions overridden from SensitivityModelEvaulator.
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getForwardModel () const
 Get the underlying model 'f'. More...
 
void setForwardSolutionHistory (const Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > &sh)
 Set solution history from forward state evaluation (for interpolation) More...
 
virtual void setForwardSolutionState (const Teuchos::RCP< const Tempus::SolutionState< Scalar > > &s)
 Set solution state from forward state evaluation (for frozen state) More...
 
virtual void setSolver (const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &solver, const bool force_W_update)
 Set the solver of the underlying model if you want to reuse it. More...
 
- Public Member Functions inherited from Tempus::SensitivityModelEvaluatorBase< Scalar >
 SensitivityModelEvaluatorBase ()
 Constructor. More...
 
virtual ~SensitivityModelEvaluatorBase ()
 Destructor. More...
 

Public functions overridden from ModelEvaulator.

Thyra::ModelEvaluatorBase::InArgs< Scalar > prototypeInArgs_
 
Thyra::ModelEvaluatorBase::OutArgs< Scalar > prototypeOutArgs_
 
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > model_
 
Teuchos::RCP< MultiVectordxdp_init_
 
Teuchos::RCP< MultiVectordx_dotdp_init_
 
Teuchos::RCP< MultiVectordx_dotdotdp_init_
 
int p_index_
 
int x_tangent_index_
 
int xdot_tangent_index_
 
int xdotdot_tangent_index_
 
bool use_dfdp_as_tangent_
 
int num_param_
 
Teuchos::RCP< const Thyra::DefaultMultiVectorProductVectorSpace< Scalar > > dxdp_space_
 
Teuchos::RCP< const Thyra::DefaultMultiVectorProductVectorSpace< Scalar > > dfdp_space_
 
Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > sh_
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > lo_
 
Teuchos::RCP< Thyra::PreconditionerBase< Scalar > > po_
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > my_dfdx_
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > my_dfdxdot_
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > my_dfdxdotdot_
 
Teuchos::RCP< const Tempus::SolutionState< Scalar > > forward_state_
 
Teuchos::RCP< Tempus::SolutionState< Scalar > > nc_forward_state_
 
Scalar t_interp_
 
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_p_space (int p) const
 
Teuchos::RCP< const Teuchos::Array< std::string > > get_p_names (int p) const
 
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space () const
 
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_f_space () const
 
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_g_space (int j) const
 
Teuchos::ArrayView< const std::string > get_g_names (int j) const
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_W_op () const
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_DgDx_dot_op (int j) const
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_DgDx_op (int j) const
 
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > create_DgDp_op (int j, int l) const
 
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > get_W_factory () const
 
Thyra::ModelEvaluatorBase::InArgs< Scalar > createInArgs () const
 
Thyra::ModelEvaluatorBase::InArgs< Scalar > getNominalValues () const
 
static Teuchos::RCP< const Teuchos::ParameterList > getValidParameters ()
 
Thyra::ModelEvaluatorBase::OutArgs< Scalar > createOutArgsImpl () const
 
void evalModelImpl (const Thyra::ModelEvaluatorBase::InArgs< Scalar > &inArgs, const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &outArgs) const
 

Detailed Description

template<typename Scalar>
class Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >

Transform a ModelEvaluator's sensitivity equations to its residual.

This class wraps a given ModelEvalutor encapsulating f(x,p) and creates a new "residual" for the forward sensitivity equations: F(X) = (df/dx)(x,p) * X + df/dp(x,p) = 0 where X = dx/dp (transient terms supressed for simplicity). This model evaluator can then be handed to a regular (non)linear solver to compute X. Note that even though these equations are linear in X, it is not necessarily the case that the underlying model evaluator accurately computes df/dx in its evaluation of W. Therefore this model evaluator can optionally reinterpret the model's df/dp out-arg as (df/dx)(x,p) * dx/dp + df/dp(x,p) where dx/dp is passed as another parameter (product) vector (encapsulated in the Thyra::DefaultMultiVectorProductVector). This is not standard model evaluator behavior, but is useful for models where W is only an approximation to df/dx and/or the model is capable of directly computing (df/dx)(x,p) * dx/dp + df/dp(x,p).

This model evaluator differes from CombinedForwardSensitivityModelEvaluator in that it doesn't include the state equations in the residual, just the sensitivity equations. Therefore it provides methods to set the state solution vector (x) and time derivatives (x_dot, x_dot_dot) for use in evaluating the senstivity residual. It also provides methods for setting the linear operator (W a.k.a. alpha*df/dx + beta*df/dx_dot) and its preconditioner in cases where they can be reused from the state model evaluations.

Definition at line 48 of file Tempus_StaggeredForwardSensitivityModelEvaluator_decl.hpp.

Member Typedef Documentation

◆ MultiVector

template<typename Scalar >
typedef Thyra::MultiVectorBase<Scalar> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::MultiVector

◆ Vector

template<typename Scalar >
typedef Thyra::VectorBase<Scalar> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::Vector

Constructor & Destructor Documentation

◆ StaggeredForwardSensitivityModelEvaluator()

template<typename Scalar >
Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::StaggeredForwardSensitivityModelEvaluator ( const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &  model,
const Teuchos::RCP< const Teuchos::ParameterList > &  pList = Teuchos::null,
const Teuchos::RCP< MultiVector > &  dxdp_init = Teuchos::null,
const Teuchos::RCP< MultiVector > &  dx_dotdp_init = Teuchos::null,
const Teuchos::RCP< MultiVector > &  dx_dotdot_dp_init = Teuchos::null 
)

Constructor.

The optionally supplied parameter list supports the following options:

  • "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 above. If it is false, this implementation will compute the tangent through several calls to the models evalModel().
  • "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 23 of file Tempus_StaggeredForwardSensitivityModelEvaluator_impl.hpp.

Member Function Documentation

◆ create_DgDp_op()

template<typename Scalar >
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::create_DgDp_op ( int  j,
int  l 
) const

◆ create_DgDx_dot_op()

template<typename Scalar >
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::create_DgDx_dot_op ( int  j) const

◆ create_DgDx_op()

template<typename Scalar >
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::create_DgDx_op ( int  j) const

◆ create_W_op()

template<typename Scalar >
Teuchos::RCP< Thyra::LinearOpBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::create_W_op ( ) const

◆ createInArgs()

template<typename Scalar >
Thyra::ModelEvaluatorBase::InArgs< Scalar > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::createInArgs ( ) const

◆ createOutArgsImpl()

template<typename Scalar >
Thyra::ModelEvaluatorBase::OutArgs< Scalar > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::createOutArgsImpl ( ) const
private

◆ evalModelImpl()

template<typename Scalar >
void Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::evalModelImpl ( const Thyra::ModelEvaluatorBase::InArgs< Scalar > &  inArgs,
const Thyra::ModelEvaluatorBase::OutArgs< Scalar > &  outArgs 
) const
private

◆ get_f_space()

template<typename Scalar >
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_f_space ( ) const

◆ get_g_names()

template<typename Scalar >
Teuchos::ArrayView< const std::string > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_g_names ( int  j) const

◆ get_g_space()

template<typename Scalar >
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_g_space ( int  j) const

◆ get_p_names()

template<typename Scalar >
Teuchos::RCP< const Teuchos::Array< std::string > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_p_names ( int  p) const

◆ get_p_space()

template<typename Scalar >
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_p_space ( int  p) const

◆ get_W_factory()

template<typename Scalar >
Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_W_factory ( ) const

◆ get_x_space()

template<typename Scalar >
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::get_x_space ( ) const

◆ getForwardModel()

template<typename Scalar >
Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::getForwardModel ( ) const
inlinevirtual

Get the underlying model 'f'.

Reimplemented from Tempus::SensitivityModelEvaluatorBase< Scalar >.

Definition at line 90 of file Tempus_StaggeredForwardSensitivityModelEvaluator_decl.hpp.

◆ getNominalValues()

template<typename Scalar >
Thyra::ModelEvaluatorBase::InArgs< Scalar > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::getNominalValues ( ) const

◆ getValidParameters()

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

◆ setForwardSolutionHistory()

template<typename Scalar >
void Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::setForwardSolutionHistory ( const Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > &  sh)
virtual

Set solution history from forward state evaluation (for interpolation)

Reimplemented from Tempus::SensitivityModelEvaluatorBase< Scalar >.

Definition at line 105 of file Tempus_StaggeredForwardSensitivityModelEvaluator_impl.hpp.

◆ setForwardSolutionState()

template<typename Scalar >
void Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::setForwardSolutionState ( const Teuchos::RCP< const Tempus::SolutionState< Scalar > > &  s)
virtual

Set solution state from forward state evaluation (for frozen state)

Reimplemented from Tempus::SensitivityModelEvaluatorBase< Scalar >.

Definition at line 115 of file Tempus_StaggeredForwardSensitivityModelEvaluator_impl.hpp.

◆ setSolver()

template<typename Scalar >
virtual void Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::setSolver ( const Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > &  solver,
const bool  force_W_update 
)
inlinevirtual

Set the solver of the underlying model if you want to reuse it.

Reimplemented from Tempus::SensitivityModelEvaluatorBase< Scalar >.

Definition at line 102 of file Tempus_StaggeredForwardSensitivityModelEvaluator_decl.hpp.

Member Data Documentation

◆ dfdp_space_

template<typename Scalar >
Teuchos::RCP<const Thyra::DefaultMultiVectorProductVectorSpace<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::dfdp_space_
private

◆ dx_dotdotdp_init_

template<typename Scalar >
Teuchos::RCP<MultiVector> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::dx_dotdotdp_init_
private

◆ dx_dotdp_init_

template<typename Scalar >
Teuchos::RCP<MultiVector> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::dx_dotdp_init_
private

◆ dxdp_init_

template<typename Scalar >
Teuchos::RCP<MultiVector> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::dxdp_init_
private

◆ dxdp_space_

template<typename Scalar >
Teuchos::RCP<const Thyra::DefaultMultiVectorProductVectorSpace<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::dxdp_space_
private

◆ forward_state_

template<typename Scalar >
Teuchos::RCP<const Tempus::SolutionState<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::forward_state_
mutableprivate

◆ lo_

template<typename Scalar >
Teuchos::RCP<Thyra::LinearOpBase<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::lo_
private

◆ model_

template<typename Scalar >
Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::model_
private

◆ my_dfdx_

template<typename Scalar >
Teuchos::RCP<Thyra::LinearOpBase<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::my_dfdx_
mutableprivate

◆ my_dfdxdot_

template<typename Scalar >
Teuchos::RCP<Thyra::LinearOpBase<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::my_dfdxdot_
mutableprivate

◆ my_dfdxdotdot_

template<typename Scalar >
Teuchos::RCP<Thyra::LinearOpBase<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::my_dfdxdotdot_
mutableprivate

◆ nc_forward_state_

template<typename Scalar >
Teuchos::RCP<Tempus::SolutionState<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::nc_forward_state_
mutableprivate

◆ num_param_

template<typename Scalar >
int Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::num_param_
private

◆ p_index_

template<typename Scalar >
int Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::p_index_
private

◆ po_

template<typename Scalar >
Teuchos::RCP<Thyra::PreconditionerBase<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::po_
private

◆ prototypeInArgs_

template<typename Scalar >
Thyra::ModelEvaluatorBase::InArgs<Scalar> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::prototypeInArgs_
private

◆ prototypeOutArgs_

template<typename Scalar >
Thyra::ModelEvaluatorBase::OutArgs<Scalar> Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::prototypeOutArgs_
private

◆ sh_

template<typename Scalar >
Teuchos::RCP<const Tempus::SolutionHistory<Scalar> > Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::sh_
private

◆ t_interp_

template<typename Scalar >
Scalar Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::t_interp_
mutableprivate

◆ use_dfdp_as_tangent_

template<typename Scalar >
bool Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::use_dfdp_as_tangent_
private

◆ x_tangent_index_

template<typename Scalar >
int Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::x_tangent_index_
private

◆ xdot_tangent_index_

template<typename Scalar >
int Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::xdot_tangent_index_
private

◆ xdotdot_tangent_index_

template<typename Scalar >
int Tempus::StaggeredForwardSensitivityModelEvaluator< Scalar >::xdotdot_tangent_index_
private

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