Tempus  Version of the Day
Time Integration
Tempus_StepperImplicit_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_StepperImplicit_decl_hpp
10 #define Tempus_StepperImplicit_decl_hpp
11 
12 // Tempus
13 #include "Tempus_Stepper.hpp"
14 #include "Tempus_WrapperModelEvaluatorBasic.hpp"
15 
16 
17 namespace Tempus {
18 
19 
20 /** \brief Thyra Base interface for implicit time steppers.
21  *
22  */
23 template<class Scalar>
24 class StepperImplicit : virtual public Tempus::Stepper<Scalar>
25 {
26 public:
27 
28  /// \name Basic implicit stepper methods
29  //@{
30  virtual void setModel(
31  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel);
32  virtual void setNonConstModel(
33  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& appModel);
34  virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
35  getModel(){return wrapperModel_->getAppModel();}
36 
37  /// Set solver via ParameterList solver name.
38  virtual void setSolver(std::string solverName);
39  /// Set solver via solver ParameterList.
40  virtual void setSolver(
41  Teuchos::RCP<Teuchos::ParameterList> solverPL=Teuchos::null);
42  /// Set solver.
43  virtual void setSolver(
44  Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver);
45  virtual Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > getSolver() const
46  { return solver_; }
47 
48  virtual std::string getStepperType() const
49  { return stepperPL_->get<std::string>("Stepper Type"); }
50 
51  /// Solve problem using x in-place.
52  const Thyra::SolveStatus<Scalar> solveImplicitODE(
53  const Teuchos::RCP<Thyra::VectorBase<Scalar> > & x);
54 
55  /// Pass initial guess to Newton solver (only relevant for implicit solvers)
56  virtual void setInitialGuess(Teuchos::RCP<const Thyra::VectorBase<Scalar> > initial_guess)
57  {initial_guess_ = initial_guess;}
58 
59  /// Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False).
60  virtual void setZeroInitialGuess(bool zIG)
61  { stepperPL_->set<bool>("Zero Initial Guess", zIG); }
62  virtual bool getZeroInitialGuess() const
63  { return stepperPL_->get<bool>("Zero Initial Guess", false); }
64  virtual bool getEmbedded() const
65  { return stepperPL_->get<bool>("Use Embedded", false); }
66  virtual Scalar getInitTimeStep(
67  const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory) const
68  {return std::numeric_limits<Scalar>::max();}
69  //@}
70 
71 protected:
72 
73  Teuchos::RCP<Teuchos::ParameterList> stepperPL_;
74  Teuchos::RCP<WrapperModelEvaluator<Scalar> > wrapperModel_;
75  Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver_;
76  Teuchos::RCP<const Thyra::VectorBase<Scalar> > initial_guess_;
77 };
78 
79 } // namespace Tempus
80 #endif // Tempus_StepperImplicit_decl_hpp
Tempus::StepperImplicit::getEmbedded
virtual bool getEmbedded() const
Definition: Tempus_StepperImplicit_decl.hpp:64
Tempus::solutionHistory
Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory(Teuchos::RCP< Teuchos::ParameterList > pList=Teuchos::null)
Nonmember constructor.
Definition: Tempus_SolutionHistory_impl.hpp:504
Tempus::StepperImplicit::stepperPL_
Teuchos::RCP< Teuchos::ParameterList > stepperPL_
Definition: Tempus_StepperImplicit_decl.hpp:73
Tempus::StepperImplicit::getStepperType
virtual std::string getStepperType() const
Definition: Tempus_StepperImplicit_decl.hpp:48
Tempus
Definition: Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:20
Tempus::StepperImplicit::solveImplicitODE
const Thyra::SolveStatus< Scalar > solveImplicitODE(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x)
Solve problem using x in-place.
Definition: Tempus_StepperImplicit_impl.hpp:120
Tempus::StepperImplicit::setNonConstModel
virtual void setNonConstModel(const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel)
Definition: Tempus_StepperImplicit_impl.hpp:36
Tempus::StepperImplicit::getModel
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel()
Definition: Tempus_StepperImplicit_decl.hpp:35
Tempus::StepperImplicit::solver_
Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver_
Definition: Tempus_StepperImplicit_decl.hpp:75
Tempus::StepperImplicit::initial_guess_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess_
Definition: Tempus_StepperImplicit_decl.hpp:76
Tempus::StepperImplicit::setModel
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Definition: Tempus_StepperImplicit_impl.hpp:26
Tempus_Stepper.hpp
Tempus::StepperImplicit::setInitialGuess
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess)
Pass initial guess to Newton solver (only relevant for implicit solvers)
Definition: Tempus_StepperImplicit_decl.hpp:56
Tempus::StepperImplicit
Thyra Base interface for implicit time steppers.
Definition: Tempus_StepperImplicit_decl.hpp:24
Tempus::StepperImplicit::setSolver
virtual void setSolver(std::string solverName)
Set solver via ParameterList solver name.
Definition: Tempus_StepperImplicit_impl.hpp:50
Tempus::StepperImplicit::getSolver
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
Definition: Tempus_StepperImplicit_decl.hpp:45
Tempus::SolutionHistory
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
Definition: Tempus_Integrator.hpp:25
Tempus::Stepper
Thyra Base interface for time steppers.
Definition: Tempus_Integrator.hpp:24
Tempus::StepperImplicit::getInitTimeStep
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const
Definition: Tempus_StepperImplicit_decl.hpp:66
Tempus::StepperImplicit::getZeroInitialGuess
virtual bool getZeroInitialGuess() const
Definition: Tempus_StepperImplicit_decl.hpp:62
Tempus::StepperImplicit::setZeroInitialGuess
virtual void setZeroInitialGuess(bool zIG)
Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False).
Definition: Tempus_StepperImplicit_decl.hpp:60
Tempus::StepperImplicit::wrapperModel_
Teuchos::RCP< WrapperModelEvaluator< Scalar > > wrapperModel_
Definition: Tempus_StepperImplicit_decl.hpp:74