|
Tempus Version of the Day
Time Integration
|
ModelEvaluator for forming adjoint sensitivity equations. More...
#include <Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp>
Public Types | |
| typedef Thyra::VectorBase< Scalar > | Vector |
| typedef Thyra::MultiVectorBase< Scalar > | MultiVector |
Public Member Functions | |
| AdjointAuxSensitivityModelEvaluator (const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &model, const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &adjoint_model, const Scalar &t_init, const Scalar &t_final, const Teuchos::RCP< const Teuchos::ParameterList > &pList=Teuchos::null) | |
| Constructor. | |
| Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | getModel () const |
| Get the underlying model 'f'. | |
| Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | getAdjointModel () const |
| Get the underlying adjoint model. | |
| void | setFinalTime (const Scalar t_final) |
| Set the final time from the forward evaluation. | |
| void | setForwardSolutionHistory (const Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > &sh) |
| Set solution history from forward evaluation. | |
Public functions overridden from ModelEvaulator. | |
| typedef Thyra::DefaultProductVectorSpace< Scalar > | DPVS |
| typedef Thyra::DefaultProductVector< Scalar > | DPV |
| typedef Thyra::DefaultMultiVectorProductVectorSpace< Scalar > | DMVPVS |
| typedef Thyra::DefaultMultiVectorProductVector< Scalar > | DMVPV |
| Thyra::ModelEvaluatorBase::InArgs< Scalar > | prototypeInArgs_ |
| Thyra::ModelEvaluatorBase::OutArgs< Scalar > | prototypeOutArgs_ |
| Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | model_ |
| Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > | adjoint_model_ |
| Teuchos::RCP< const DMVPVS > | adjoint_space_ |
| Teuchos::RCP< const DMVPVS > | residual_space_ |
| Teuchos::RCP< const DMVPVS > | response_space_ |
| Teuchos::RCP< const DPVS > | x_prod_space_ |
| Teuchos::RCP< const DPVS > | f_prod_space_ |
| Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > | sh_ |
| Scalar | t_init_ |
| Scalar | t_final_ |
| bool | mass_matrix_is_constant_ |
| bool | mass_matrix_is_identity_ |
| AdjointResponseType | response_type_ |
| bool | g_depends_on_p_ |
| bool | f_depends_on_p_ |
| int | p_index_ |
| int | g_index_ |
| int | num_adjoint_ |
| bool | mass_matrix_is_computed_ |
| Teuchos::RCP< Thyra::LinearOpBase< Scalar > > | my_dfdx_ |
| Teuchos::RCP< Thyra::LinearOpBase< Scalar > > | my_dfdxdot_ |
| Teuchos::RCP< Thyra::LinearOpBase< Scalar > > | my_dfdp_op_ |
| Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > | my_dfdp_mv_ |
| Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > | my_dgdx_mv_ |
| Teuchos::RCP< Thyra::MultiVectorBase< Scalar > > | my_dgdp_mv_ |
| bool | dgdx_dot_checked_ |
| Teuchos::RCP< Tempus::SolutionState< Scalar > > | 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< Thyra::LinearOpBase< Scalar > > | create_W_op () 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 |
| Thyra::ModelEvaluatorBase::InArgs< Scalar > | responseInArgs (const Thyra::ModelEvaluatorBase::InArgs< Scalar > &me_inArgs) const |
| InArgs for evaluating the response derivatives at the forward state. | |
ModelEvaluator for forming adjoint sensitivity equations.
This class wraps a given ModelEvalutor encapsulating f(x_dot,x,p) and creates a new "residual" for the adjoint sensitivity equations: F(y,z) = [ d/dt( df/dx_dot^T*y ) - df/dx^T*y ] = 0 [ dz/dt - df/dp^T*y ] where y is the adjoint variable and z is an auxiliary variable. Nominally y is a multi-vector belonging to the vector space of the residual f and a given number of columns and z is a multi-vector beling to the vector space p and the same number of columns. To satisfy the model evaluator interface, y and z are converted to a product vector formed by their columns. This is the form of the adjoint equations suitable for computing sensitivities of a response function g(x(T),p).
To compute adjoint sensitivities, the equations f(x_dot,x,p) = 0 are integrated forward in time to some final time T, with the adjoint equations above integrated backward in time starting at T. Since the tempus integrator can only integrate forward in time, we define tau = T - t and transform the adjoint equations to: F(y) = d/dtau( df/dx_dot^T*y ) + df/dx^T*y = 0. The initial conditions at t = T for y are y(T) = df/dx_dot(x_dot(T),x(T),p)^{-T} * dg/dx(x(T),p)^T. along with z(T) = 0. The sensitivity of g(T) is then dg/dp(T) - int_{0}^T(df/dp^T*y)dt + dx/dp(0)^T*df/dx_dot(0)^T*y(0) = dg/dp(T) - z(0) + dx/dp(0)^T*df/dx_dot(0)^T*y(0)
This model evaluator supports both implicit and explict forms of the governing equations. However it assumes df/dx_dot is constant with respect to x_dot, x, and t so that the adjoint equations become F(y) = df/dxdot^T*y_dot + df/dx^T*y = 0. Moving beyond this assumption will require modifications to the steppers in how they generate time-derivative terms.
For a time-integrated response J = int_{0}^T g(x(t),p,t) dt ("Response Type" = "Time Integral"), the response enters the adjoint equations as a source term. In the reversed time tau the equations become F(y,z) = [ df/dx_dot^T*y_dot + df/dx^T*y - dg/dx^T ] = 0 [ dz/dtau - df/dp^T*y + dg/dp^T ] (explicit form: y_dot = -df/dx^T*y + dg/dx^T, z_dot = df/dp^T*y - dg/dp^T), with y = 0 and z = 0 at t = T, and the sensitivity of J is -z(0) + dx/dp(0)^T*df/dx_dot(0)^T*y(0). The response must not depend on x_dot. For "Final Time" and "Sum Over Times" responses the adjoint equations are homogeneous; the response terms are added by IntegratorAdjointSensitivity.
Definition at line 71 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
| typedef Thyra::VectorBase<Scalar> Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::Vector |
Definition at line 74 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
| typedef Thyra::MultiVectorBase<Scalar> Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::MultiVector |
Definition at line 75 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 158 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 159 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 160 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 161 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
| Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::AdjointAuxSensitivityModelEvaluator | ( | const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | model, |
| const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > & | adjoint_model, | ||
| const Scalar & | t_init, | ||
| const Scalar & | t_final, | ||
| const Teuchos::RCP< const Teuchos::ParameterList > & | pList = Teuchos::null ) |
Constructor.
t_final is the final integration time used to implement the time transformation described above. num_adjoint is the number of adjoint variables defining the number of columns in y, which is determined by the number of elements in the vector space for the response g. The optionally supplied parameter list supports the following options:
Definition at line 25 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
inline |
Get the underlying model 'f'.
Definition at line 115 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
inline |
Get the underlying adjoint model.
Definition at line 121 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
| void Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::setFinalTime | ( | const Scalar | t_final | ) |
Set the final time from the forward evaluation.
Definition at line 117 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| void Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::setForwardSolutionHistory | ( | const Teuchos::RCP< const Tempus::SolutionHistory< Scalar > > & | sh | ) |
Set solution history from forward evaluation.
Definition at line 124 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::get_p_space | ( | int | p | ) | const |
Definition at line 135 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< const Teuchos::Array< std::string > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::get_p_names | ( | int | p | ) | const |
Definition at line 143 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::get_x_space | ( | ) | const |
Definition at line 151 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::get_f_space | ( | ) | const |
Definition at line 158 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< Thyra::LinearOpBase< Scalar > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::create_W_op | ( | ) | const |
Definition at line 165 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Teuchos::RCP< const Thyra::LinearOpWithSolveFactoryBase< Scalar > > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::get_W_factory | ( | ) | const |
Definition at line 181 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Thyra::ModelEvaluatorBase::InArgs< Scalar > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::createInArgs | ( | ) | const |
Definition at line 206 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
| Thyra::ModelEvaluatorBase::InArgs< Scalar > Tempus::AdjointAuxSensitivityModelEvaluator< Scalar >::getNominalValues | ( | ) | const |
Definition at line 213 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
static |
Definition at line 427 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
private |
Definition at line 243 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
private |
Definition at line 249 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
private |
InArgs for evaluating the response derivatives at the forward state.
Definition at line 448 of file Tempus_AdjointAuxSensitivityModelEvaluator_impl.hpp.
|
private |
Definition at line 173 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 174 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 176 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 177 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 179 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 180 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 181 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 182 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 183 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 184 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 185 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 186 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 187 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 188 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 189 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 190 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 191 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 192 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 193 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
private |
Definition at line 194 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 196 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 197 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 198 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 199 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 200 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 201 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 202 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 203 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 204 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.
|
mutableprivate |
Definition at line 205 of file Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp.