Tempus Version of the Day
Time Integration
Loading...
Searching...
No Matches
Tempus_IntegratorPseudoTransientForwardSensitivity_decl.hpp
Go to the documentation of this file.
1//@HEADER
2// *****************************************************************************
3// Tempus: Time Integration and Sensitivity Analysis Package
4//
5// Copyright 2017 NTESS and the Tempus contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8//@HEADER
9
10#ifndef Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
11#define Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
12
13// Tempus
14#include "Tempus_config.hpp"
15#include "Tempus_IntegratorBasic.hpp"
17
18#include "Tempus_StepperStaggeredForwardSensitivity.hpp" // For SensitivityStepMode
19
20namespace Tempus {
21
57template <class Scalar>
59 : virtual public Tempus::Integrator<Scalar> {
60 public:
96 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& model,
97 const Teuchos::RCP<SensitivityModelEvaluatorBase<Scalar>>& sens_model,
98 const Teuchos::RCP<IntegratorBasic<Scalar>>& fwd_integrator,
99 const Teuchos::RCP<IntegratorBasic<Scalar>>& sens_integrator,
100 const bool reuse_solver, const bool force_W_update);
101
103
106
109
111
112
114 virtual bool advanceTime();
116 virtual bool advanceTime(const Scalar timeFinal) override;
118 virtual Scalar getTime() const override;
120 virtual int getIndex() const override;
122 virtual Status getStatus() const override;
124 virtual void setStatus(const Status st) override;
126 virtual Teuchos::RCP<Stepper<Scalar>> getStepper() const override;
127 Teuchos::RCP<Stepper<Scalar>> getStateStepper() const;
128 Teuchos::RCP<Stepper<Scalar>> getSensStepper() const;
130 virtual Teuchos::RCP<const SolutionHistory<Scalar>> getSolutionHistory()
131 const override;
132 Teuchos::RCP<const SolutionHistory<Scalar>> getStateSolutionHistory() const;
133 Teuchos::RCP<const SolutionHistory<Scalar>> getSensSolutionHistory() const;
135 virtual Teuchos::RCP<SolutionHistory<Scalar>> getNonConstSolutionHistory()
136 override;
138 virtual Teuchos::RCP<const TimeStepControl<Scalar>> getTimeStepControl()
139 const override;
140 virtual Teuchos::RCP<TimeStepControl<Scalar>> getNonConstTimeStepControl()
141 override;
142 Teuchos::RCP<TimeStepControl<Scalar>> getStateNonConstTimeStepControl();
143 Teuchos::RCP<TimeStepControl<Scalar>> getSensNonConstTimeStepControl();
145 virtual Teuchos::RCP<IntegratorObserver<Scalar>> getObserver();
147 virtual void setObserver(
148 Teuchos::RCP<IntegratorObserver<Scalar>> obs = Teuchos::null);
149 virtual Teuchos::RCP<Teuchos::Time> getIntegratorTimer() const override
150 {
151 return state_integrator_->getIntegratorTimer();
152 }
153 virtual Teuchos::RCP<Teuchos::Time> getStepperTimer() const override
154 {
155 return state_integrator_->getStepperTimer();
156 }
157
159
161 virtual void initializeSolutionHistory(
162 Scalar t0, Teuchos::RCP<const Thyra::VectorBase<Scalar>> x0,
163 Teuchos::RCP<const Thyra::VectorBase<Scalar>> xdot0 = Teuchos::null,
164 Teuchos::RCP<const Thyra::VectorBase<Scalar>> xdotdot0 = Teuchos::null,
165 Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> DxDp0 = Teuchos::null,
166 Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> DxdotDp0 =
167 Teuchos::null,
168 Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> DxdotdotDp0 =
169 Teuchos::null);
170
172 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar>> getX() const;
173 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> getDxDp() const;
175 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar>> getXDot() const;
176 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> getDXDotDp() const;
178 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar>> getXDotDot() const;
179 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> getDXDotDotDp()
180 const;
181
183 virtual Teuchos::RCP<const Thyra::VectorBase<Scalar>> getG() const;
185 virtual Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> getDgDp() const;
186
188
189 std::string description() const override;
190 void describe(Teuchos::FancyOStream& out,
191 const Teuchos::EVerbosityLevel verbLevel) const override;
193
196
197 protected:
199
200 Teuchos::RCP<Thyra::ModelEvaluator<Scalar>> model_;
201 Teuchos::RCP<SensitivityModelEvaluatorBase<Scalar>> sens_model_;
202 Teuchos::RCP<IntegratorBasic<Scalar>> state_integrator_;
203 Teuchos::RCP<IntegratorBasic<Scalar>> sens_integrator_;
204 Teuchos::RCP<SolutionHistory<Scalar>> solutionHistory_;
208};
209
211
222template <class Scalar>
223Teuchos::RCP<Tempus::IntegratorPseudoTransientForwardSensitivity<Scalar>>
225 Teuchos::RCP<Teuchos::ParameterList> pList,
226 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& model,
227 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_residual_model,
228 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_solve_model);
229
231
241template <class Scalar>
242Teuchos::RCP<Tempus::IntegratorPseudoTransientForwardSensitivity<Scalar>>
244 Teuchos::RCP<Teuchos::ParameterList> pList,
245 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& model,
246 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_residual_model)
247{
249 pList, model, sens_residual_model, sens_residual_model);
250}
251
253
262template <class Scalar>
263Teuchos::RCP<Tempus::IntegratorPseudoTransientForwardSensitivity<Scalar>>
265 Teuchos::RCP<Teuchos::ParameterList> pList,
266 const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& model)
267{
268 return createIntegratorPseudoTransientForwardSensitivity(pList, model, model,
269 model);
270}
271
273
281template <class Scalar>
282Teuchos::RCP<Tempus::IntegratorPseudoTransientForwardSensitivity<Scalar>>
284
285} // namespace Tempus
286
287#endif // Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
IntegratorObserver class for time integrators.
Time integrator suitable for pseudotransient forward sensitivity analysis.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDotDot() const
Get current the second time derivative of the solution, xdotdot.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getG() const
Return response function g.
virtual Teuchos::RCP< TimeStepControl< Scalar > > getNonConstTimeStepControl() override
SensitivityStepMode getStepMode() const
What mode the current time integration step is in.
virtual void initializeSolutionHistory(Scalar t0, Teuchos::RCP< const Thyra::VectorBase< Scalar > > x0, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdot0=Teuchos::null, Teuchos::RCP< const Thyra::VectorBase< Scalar > > xdotdot0=Teuchos::null, Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > DxDp0=Teuchos::null, Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > DxdotDp0=Teuchos::null, Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > DxdotdotDp0=Teuchos::null)
Set the initial state from Thyra::VectorBase(s)
virtual Teuchos::RCP< Teuchos::Time > getIntegratorTimer() const override
Returns the IntegratorTimer_ for this Integrator.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getX() const
Get current the solution, x.
virtual Teuchos::RCP< SolutionHistory< Scalar > > getNonConstSolutionHistory() override
Get the SolutionHistory.
virtual Teuchos::RCP< IntegratorObserver< Scalar > > getObserver()
Get the Observer.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDgDp() const
Return forward sensitivity stored in Jacobian format.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDot() const
Get current the time derivative of the solution, xdot.
virtual Teuchos::RCP< const TimeStepControl< Scalar > > getTimeStepControl() const override
Get the TimeStepControl.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDXDotDp() const
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDXDotDotDp() const
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const override
Get the Stepper.
virtual Teuchos::RCP< const SolutionHistory< Scalar > > getSolutionHistory() const override
Get the SolutionHistory.
virtual void setObserver(Teuchos::RCP< IntegratorObserver< Scalar > > obs=Teuchos::null)
Set the Observer.
virtual bool advanceTime()
Advance the solution to timeMax, and return true if successful.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDxDp() const
A ModelEvaluator decorator for sensitivity analysis.
Status
Status for the Integrator, the Stepper and the SolutionState.
Teuchos::RCP< Tempus::IntegratorPseudoTransientForwardSensitivity< Scalar > > createIntegratorPseudoTransientForwardSensitivity()
Nonmember constructor.