Tempus  Version of the Day
Time Integration
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Tempus_StepperStaggeredForwardSensitivity_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_StepperStaggeredForwardSensitivity_decl_hpp
10 #define Tempus_StepperStaggeredForwardSensitivity_decl_hpp
11 
12 #include "Tempus_config.hpp"
13 #include "Tempus_Stepper.hpp"
15 
16 namespace Tempus {
17 
20  Combined,
21  Adjoint };
22 
34 template <class Scalar>
36  : virtual public Tempus::Stepper<Scalar>,
37  virtual public Teuchos::ParameterListAcceptor {
38  public:
45 
47 
79  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel,
81  sens_residual_model,
83  sens_solve_model,
84  const Teuchos::RCP<Teuchos::ParameterList>& pList = Teuchos::null,
85  const Teuchos::RCP<Teuchos::ParameterList>& sens_pList = Teuchos::null);
86 
88 
89  virtual void setModel(
90  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel)
91  {
92  setModel(appModel, appModel, appModel);
93  }
94  virtual void setModel(
95  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel,
97  sens_residual_model,
99  sens_solve_model);
101 
102  virtual void setSolver(
103  Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver = Teuchos::null);
105  {
106  return stateStepper_->getSolver();
107  }
108 
110  virtual void setInitialConditions(
111  const Teuchos::RCP<SolutionHistory<Scalar> >& /* solutionHistory */)
112  {
113  }
114 
116  virtual void takeStep(
117  const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
118 
121  virtual Scalar getOrder() const { return stateStepper_->getOrder(); }
122  virtual Scalar getOrderMin() const { return stateStepper_->getOrderMin(); }
123  virtual Scalar getOrderMax() const { return stateStepper_->getOrderMax(); }
124  virtual Scalar getInitTimeStep(
125  const Teuchos::RCP<SolutionHistory<Scalar> >& /* solutionHistory */) const
126  {
127  return Scalar(1.0e+99);
128  }
129 
130  virtual bool isExplicit() const
131  {
132  return stateStepper_->isExplicit() || sensitivityStepper_->isExplicit();
133  }
134  virtual bool isImplicit() const
135  {
136  return stateStepper_->isImplicit() || sensitivityStepper_->isImplicit();
137  }
138  virtual bool isExplicitImplicit() const
139  {
140  return isExplicit() && isImplicit();
141  }
142 
143  virtual bool isOneStepMethod() const
144  {
145  return stateStepper_->isOneStepMethod() &&
146  sensitivityStepper_->isOneStepMethod();
147  }
148  virtual bool isMultiStepMethod() const { return !isOneStepMethod(); }
149 
150  virtual OrderODE getOrderODE() const { return FIRST_ORDER_ODE; }
151 
152  virtual void setUseFSAL(bool a) { stepperPL_->set<bool>("Use FSAL", a); }
153  virtual bool getUseFSAL() const
154  {
155  return stepperPL_->get<bool>("Use FSAL", false);
156  }
157 
158  virtual void setICConsistency(std::string s)
159  {
160  stepperPL_->set<std::string>("Initial Condition Consistency", s);
161  }
162  virtual std::string getICConsistency() const
163  {
164  return stepperPL_->get<std::string>("Initial Condition Consistency",
165  "None");
166  }
167 
168  virtual void setICConsistencyCheck(bool c)
169  {
170  stepperPL_->set<bool>("Initial Condition Consistency Check", c);
171  }
172  virtual bool getICConsistencyCheck() const
173  {
174  return stepperPL_->get<bool>("Initial Condition Consistency Check", false);
175  }
177 
179  virtual void setInitialGuess(
180  Teuchos::RCP<const Thyra::VectorBase<Scalar> > /* initial_guess */)
181  {
182  }
183 
185 
192 
194 
195  virtual std::string description() const
196  {
197  return "StepperStaggeredForwardSensitivity";
198  }
199  virtual void describe(Teuchos::FancyOStream& out,
200  const Teuchos::EVerbosityLevel verbLevel) const;
202 
203  virtual bool isValidSetup(Teuchos::FancyOStream& out) const;
204 
206 
208  {
209  return stepperPL_;
210  }
211 
214 
215  private:
218 
219  protected:
231 };
232 
233 } // namespace Tempus
234 
235 #endif // Tempus_StepperStaggeredForwardSensitivity_decl_hpp
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &) const
T & get(const std::string &name, T def_value)
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
virtual void setInitialConditions(const Teuchos::RCP< SolutionHistory< Scalar > > &)
Set the initial conditions and make them consistent.
A stepper implementing staggered forward sensitivity analysis.
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Take the specified timestep, dt, and return true if successful.
Teuchos::RCP< const Thyra::VectorSpaceBase< Scalar > > get_x_space() const
Teuchos::RCP< SensitivityModelEvaluatorBase< Scalar > > combined_fsa_model_
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()
Get a default (initial) StepperState.
Thyra Base interface for time steppers.
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Teuchos::RCP< Teuchos::ParameterList > getDefaultParameters() const
Teuchos::RCP< SensitivityModelEvaluatorBase< Scalar > > fsa_model_
virtual Teuchos::RCP< const Teuchos::ParameterList > getParameterList() const
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Stepper integrates first-order ODEs.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
SensitivityStepMode getStepMode() const
What mode the current time integration step is in.
void setParams(const Teuchos::RCP< Teuchos::ParameterList > &pl, const Teuchos::RCP< Teuchos::ParameterList > &spl)
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > >)
Pass initial guess to Newton solver.
virtual void setSolver(Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver=Teuchos::null)
Set solver.
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel() const
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &pl)
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const