Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_IntegratorPseudoTransientForwardSensitivity_decl.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ****************************************************************************
3 // Tempus: Copyright (2017) Sandia Corporation
4 //
5 // Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6 // ****************************************************************************
7 // @HEADER
8 
9 #ifndef Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
10 #define Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
11 
12 // Tempus
13 #include "Tempus_config.hpp"
14 #include "Tempus_IntegratorBasic.hpp"
16 
17 #include "Tempus_StepperStaggeredForwardSensitivity.hpp" // For SensitivityStepMode
18 
19 namespace Tempus {
20 
56 template <class Scalar>
58  : virtual public Tempus::Integrator<Scalar> {
59  public:
97  const Teuchos::RCP<IntegratorBasic<Scalar>>& fwd_integrator,
98  const Teuchos::RCP<IntegratorBasic<Scalar>>& sens_integrator,
99  const bool reuse_solver, const bool force_W_update);
100 
102 
105 
108 
110 
111 
113  virtual bool advanceTime();
115  virtual bool advanceTime(const Scalar timeFinal) override;
117  virtual Scalar getTime() const override;
119  virtual int getIndex() const override;
121  virtual Status getStatus() const override;
123  virtual void setStatus(const Status st) override;
125  virtual Teuchos::RCP<Stepper<Scalar>> getStepper() const override;
130  const override;
135  override;
138  const override;
140  override;
146  virtual void setObserver(
147  Teuchos::RCP<IntegratorObserver<Scalar>> obs = Teuchos::null);
149  {
150  return state_integrator_->getIntegratorTimer();
151  }
153  {
154  return state_integrator_->getStepperTimer();
155  }
156 
158 
160  virtual void initializeSolutionHistory(
161  Scalar t0, Teuchos::RCP<const Thyra::VectorBase<Scalar>> x0,
162  Teuchos::RCP<const Thyra::VectorBase<Scalar>> xdot0 = Teuchos::null,
163  Teuchos::RCP<const Thyra::VectorBase<Scalar>> xdotdot0 = Teuchos::null,
164  Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> DxDp0 = Teuchos::null,
166  Teuchos::null,
167  Teuchos::RCP<const Thyra::MultiVectorBase<Scalar>> DxdotdotDp0 =
168  Teuchos::null);
169 
179  const;
180 
185 
187 
188  std::string description() const override;
190  const Teuchos::EVerbosityLevel verbLevel) const override;
192 
195 
196  protected:
197  void buildSolutionHistory();
198 
207 };
208 
210 
221 template <class Scalar>
226  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_residual_model,
227  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_solve_model);
228 
230 
240 template <class Scalar>
245  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar>>& sens_residual_model)
246 {
248  pList, model, sens_residual_model, sens_residual_model);
249 }
250 
252 
261 template <class Scalar>
266 {
267  return createIntegratorPseudoTransientForwardSensitivity(pList, model, model,
268  model);
269 }
270 
272 
280 template <class Scalar>
283 
284 } // namespace Tempus
285 
286 #endif // Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const override
Get the Stepper.
Teuchos::RCP< Tempus::IntegratorPseudoTransientForwardSensitivity< Scalar > > createIntegratorPseudoTransientForwardSensitivity(Teuchos::RCP< Teuchos::ParameterList > pList, const Teuchos::RCP< Thyra::ModelEvaluator< Scalar >> &model, const Teuchos::RCP< Thyra::ModelEvaluator< Scalar >> &sens_residual_model, const Teuchos::RCP< Thyra::ModelEvaluator< Scalar >> &sens_solve_model)
Nonmember constructor.
virtual Teuchos::RCP< const SolutionHistory< Scalar > > getSolutionHistory() const override
Get the SolutionHistory.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDxDp() const
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< TimeStepControl< Scalar > > getNonConstTimeStepControl() override
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getG() const
Return response function g.
virtual bool advanceTime()
Advance the solution to timeMax, and return true if successful.
virtual void setObserver(Teuchos::RCP< IntegratorObserver< Scalar >> obs=Teuchos::null)
Set the Observer.
SensitivityStepMode getStepMode() const
What mode the current time integration step is in.
Status
Status for the Integrator, the Stepper and the SolutionState.
IntegratorObserver class for time integrators.
virtual Teuchos::RCP< Teuchos::Time > getIntegratorTimer() const override
Returns the IntegratorTimer_ for this Integrator.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDgDp() const
Return forward sensitivity stored in Jacobian format.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDotDot() const
Get current the second time derivative of the solution, xdotdot.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual Teuchos::RCP< IntegratorObserver< Scalar > > getObserver()
Get the Observer.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDXDotDp() const
Time integrator suitable for pseudotransient forward sensitivity analysis.
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
virtual Teuchos::RCP< const TimeStepControl< Scalar > > getTimeStepControl() const override
Get the TimeStepControl.
virtual Teuchos::RCP< const Thyra::MultiVectorBase< Scalar > > getDXDotDotDp() const
virtual Teuchos::RCP< SolutionHistory< Scalar > > getNonConstSolutionHistory() override
Get the SolutionHistory.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getXDot() const
Get current the time derivative of the solution, xdot.
A ModelEvaluator decorator for sensitivity analysis.
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getX() const
Get current the solution, x.