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
virtual std::string getStepperType() const
const Thyra::SolveStatus< Scalar > solveImplicitODE(const Teuchos::RCP< Thyra::VectorBase< Scalar > > &x)
Solve problem using x in-place.
Teuchos::RCP< WrapperModelEvaluator< Scalar > > wrapperModel_
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Teuchos::RCP< Teuchos::ParameterList > stepperPL_
virtual bool getZeroInitialGuess() const
Thyra Base interface for time steppers.
Thyra Base interface for implicit time steppers.
virtual void setNonConstModel(const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel)
virtual void setSolver(std::string solverName)
Set solver via ParameterList solver name.
Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory(Teuchos::RCP< Teuchos::ParameterList > pList=Teuchos::null)
Nonmember constructor.
virtual void setZeroInitialGuess(bool zIG)
Set parameter so that the initial guess is set to zero (=True) or use last timestep (=False)...
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel()
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
virtual void setInitialGuess(Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess)
Pass initial guess to Newton solver (only relevant for implicit solvers)
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess_
Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > solver_