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 
21 
57 template<class Scalar>
59  : virtual public Tempus::Integrator<Scalar>
60 {
61 public:
62 
100  const Teuchos::RCP<IntegratorBasic<Scalar> > &fwd_integrator,
101  const Teuchos::RCP<IntegratorBasic<Scalar> > &sens_integrator,
102  const bool reuse_solver, const bool force_W_update);
103 
105 
107 
110 
112 
113 
115  virtual bool advanceTime();
117  virtual bool advanceTime(const Scalar timeFinal) override;
119  virtual Scalar getTime() const override;
121  virtual int getIndex() const override;
123  virtual Status getStatus() const override;
125  virtual void setStatus(const Status st) override;
127  virtual Teuchos::RCP<Stepper<Scalar> > getStepper() const override;
144  virtual void setObserver(
145  Teuchos::RCP<IntegratorObserver<Scalar> > obs = Teuchos::null);
147  {return state_integrator_->getIntegratorTimer();}
149  {return state_integrator_->getStepperTimer();}
150 
152 
154  virtual void initializeSolutionHistory(
155  Scalar t0,
157  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot0 = Teuchos::null,
158  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdotdot0 = Teuchos::null,
159  Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> > DxDp0 = Teuchos::null,
160  Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> > DxdotDp0 = Teuchos::null,
161  Teuchos::RCP<const Thyra::MultiVectorBase<Scalar> > DxdotdotDp0 = Teuchos::null);
162 
172 
177 
179 
180  std::string description() const override;
181  void describe(Teuchos::FancyOStream & out,
182  const Teuchos::EVerbosityLevel verbLevel) const override;
184 
187 
188 protected:
189 
190  void buildSolutionHistory();
191 
200 };
201 
203 
214 template<class Scalar>
219  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& sens_residual_model,
220  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& sens_solve_model);
221 
223 
233 template<class Scalar>
238  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& sens_residual_model)
239 {
241  pList, model, sens_residual_model, sens_residual_model);
242 }
243 
245 
254 template<class Scalar>
259 {
261  pList, model, model, model);
262 }
263 
265 
273 template<class Scalar>
276 
277 } // namespace Tempus
278 
279 #endif // Tempus_IntegratorPseudoTransientForwardSensitivity_decl_hpp
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const override
Get the Stepper.
virtual void setObserver(Teuchos::RCP< IntegratorObserver< Scalar > > obs=Teuchos::null)
Set the Observer.
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 Teuchos::RCP< TimeStepControl< Scalar > > getNonConstTimeStepControl() override
virtual Teuchos::RCP< const Thyra::VectorBase< Scalar > > getG() const
Return response function g.
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 bool advanceTime()
Advance the solution to timeMax, and return true if successful.
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.