Tempus  Version of the Day
Time Integration
Tempus_StepperNewmarkExplicitAForm_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_StepperNewmarkExplicitAForm_decl_hpp
10 #define Tempus_StepperNewmarkExplicitAForm_decl_hpp
11 
12 #include "Tempus_config.hpp"
13 #include "Tempus_Stepper.hpp"
14 
15 namespace Tempus {
16 
17 
18 /** \brief Newmark Explicit time stepper. This is the specific case of the
19  * more general Newmark time stepper in the case this stepper is explicit (beta = 0).
20  * Newmark Explicit is hence an explicit time stepper (i.e., no solver used).
21  */
22 template<class Scalar>
23 class StepperNewmarkExplicitAForm : virtual public Tempus::Stepper<Scalar>
24 {
25 public:
26 
27  /// Constructor
29  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel,
30  Teuchos::RCP<Teuchos::ParameterList> pList = Teuchos::null);
31 
32  /// \name Basic stepper methods
33  //@{
34  virtual void setModel(
35  const Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >& appModel);
36  virtual void setNonConstModel(
37  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& appModel);
38  virtual Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> >
39  getModel(){return appModel_;}
40 
41  virtual void setSolver(std::string solverName);
42  virtual void setSolver(
43  Teuchos::RCP<Teuchos::ParameterList> solverPL=Teuchos::null);
44  virtual void setSolver(
45  Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > solver);
46  virtual Teuchos::RCP<Thyra::NonlinearSolverBase<Scalar> > getSolver() const
47  { return Teuchos::null; }
48 
49  virtual void setObserver(
50  Teuchos::RCP<StepperObserver<Scalar> > obs = Teuchos::null){}
51 
52  /// Initialize during construction and after changing input parameters.
53  virtual void initialize();
54 
55  /// Take the specified timestep, dt, and return true if successful.
56  virtual void takeStep(
57  const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory);
58 
59  /// Pass initial guess to Newton solver (only relevant for implicit solvers)
60  virtual void setInitialGuess(Teuchos::RCP<const Thyra::VectorBase<Scalar> > initial_guess)
61  {initial_guess_ = initial_guess;}
62 
63  virtual std::string getStepperType() const
64  { return stepperPL_->get<std::string>("Stepper Type"); }
65 
66  /// Get a default (initial) StepperState
67  virtual Teuchos::RCP<Tempus::StepperState<Scalar> > getDefaultStepperState();
68  virtual Scalar getOrder() const {
69  if (gamma_ == 0.5) return 2.0;
70  else return 1.0;
71  }
72  virtual Scalar getOrderMin() const {return 1.0;}
73  virtual Scalar getOrderMax() const {return 2.0;}
74  virtual Scalar getInitTimeStep(
75  const Teuchos::RCP<SolutionHistory<Scalar> >& solutionHistory) const
76  {return std::numeric_limits<Scalar>::max();}
77 
78  virtual bool isExplicit() const {return true;}
79  virtual bool isImplicit() const {return false;}
80  virtual bool isExplicitImplicit() const
81  {return isExplicit() and isImplicit();}
82  virtual bool isOneStepMethod() const {return true;}
83  virtual bool isMultiStepMethod() const {return !isOneStepMethod();}
84  //@}
85 
86  /// \name ParameterList methods
87  //@{
88  void setParameterList(const Teuchos::RCP<Teuchos::ParameterList> & pl);
89  Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
90  Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
91  Teuchos::RCP<const Teuchos::ParameterList> getValidParameters() const;
92  Teuchos::RCP<Teuchos::ParameterList> getDefaultParameters() const;
93  //@}
94 
95  /// \name Overridden from Teuchos::Describable
96  //@{
97  virtual std::string description() const;
98  virtual void describe(Teuchos::FancyOStream & out,
99  const Teuchos::EVerbosityLevel verbLevel) const;
100  //@}
101 
102  void predictVelocity(Thyra::VectorBase<Scalar>& vPred,
103  const Thyra::VectorBase<Scalar>& v,
104  const Thyra::VectorBase<Scalar>& a,
105  const Scalar dt) const;
106 
107  void predictDisplacement(Thyra::VectorBase<Scalar>& dPred,
108  const Thyra::VectorBase<Scalar>& d,
109  const Thyra::VectorBase<Scalar>& v,
110  const Thyra::VectorBase<Scalar>& a,
111  const Scalar dt) const;
112 
113  void correctVelocity(Thyra::VectorBase<Scalar>& v,
114  const Thyra::VectorBase<Scalar>& vPred,
115  const Thyra::VectorBase<Scalar>& a,
116  const Scalar dt) const;
117 
118 
119 private:
120 
121  /// Default Constructor -- not allowed
122 
123 private:
124 
125  /// Default Constructor -- not allowed
127 
128 protected:
129 
130  Teuchos::RCP<Teuchos::ParameterList> stepperPL_;
131  /// Explicit ODE ModelEvaluator
132  Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > appModel_;
133 
134  Thyra::ModelEvaluatorBase::InArgs<Scalar> inArgs_;
135  Thyra::ModelEvaluatorBase::OutArgs<Scalar> outArgs_;
136 
137  Scalar gamma_;
138 
139  Teuchos::RCP<Teuchos::FancyOStream> out_;
140 
141  Teuchos::RCP<const Thyra::VectorBase<Scalar> > initial_guess_;
142 
143 
144 };
145 } // namespace Tempus
146 
147 #endif // Tempus_StepperNewmarkExplicitAForm_decl_hpp
Tempus::StepperNewmarkExplicitAForm::predictDisplacement
void predictDisplacement(Thyra::VectorBase< Scalar > &dPred, const Thyra::VectorBase< Scalar > &d, const Thyra::VectorBase< Scalar > &v, const Thyra::VectorBase< Scalar > &a, const Scalar dt) const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:33
Tempus::StepperNewmarkExplicitAForm::takeStep
virtual void takeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory)
Take the specified timestep, dt, and return true if successful.
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:135
Tempus::StepperNewmarkExplicitAForm::getOrder
virtual Scalar getOrder() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:68
Tempus::StepperNewmarkExplicitAForm::StepperNewmarkExplicitAForm
StepperNewmarkExplicitAForm()
Default Constructor – not allowed.
Tempus::StepperNewmarkExplicitAForm::setSolver
virtual void setSolver(std::string solverName)
Set solver via ParameterList solver name.
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:92
Tempus::StepperNewmarkExplicitAForm::getValidParameters
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:317
Tempus::StepperNewmarkExplicitAForm::getOrderMax
virtual Scalar getOrderMax() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:73
Tempus::StepperNewmarkExplicitAForm::getModel
virtual Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > getModel()
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:39
Tempus::solutionHistory
Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory(Teuchos::RCP< Teuchos::ParameterList > pList=Teuchos::null)
Nonmember constructor.
Definition: Tempus_SolutionHistory_impl.hpp:504
Tempus::StepperNewmarkExplicitAForm::getNonconstParameterList
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:343
Tempus::StepperNewmarkExplicitAForm::inArgs_
Thyra::ModelEvaluatorBase::InArgs< Scalar > inArgs_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:134
Tempus
Definition: Tempus_AdjointAuxSensitivityModelEvaluator_decl.hpp:20
Tempus::StepperNewmarkExplicitAForm::setObserver
virtual void setObserver(Teuchos::RCP< StepperObserver< Scalar > > obs=Teuchos::null)
Set Observer.
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:49
Tempus::StepperNewmarkExplicitAForm::initial_guess_
Teuchos::RCP< const Thyra::VectorBase< Scalar > > initial_guess_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:141
Tempus::StepperNewmarkExplicitAForm::getInitTimeStep
virtual Scalar getInitTimeStep(const Teuchos::RCP< SolutionHistory< Scalar > > &solutionHistory) const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:74
Tempus::StepperNewmarkExplicitAForm::setModel
virtual void setModel(const Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > &appModel)
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:73
Tempus::StepperNewmarkExplicitAForm
Newmark Explicit time stepper. This is the specific case of the more general Newmark time stepper in ...
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:23
Tempus::StepperNewmarkExplicitAForm::stepperPL_
Teuchos::RCP< Teuchos::ParameterList > stepperPL_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:130
Tempus::StepperNewmarkExplicitAForm::predictVelocity
void predictVelocity(Thyra::VectorBase< Scalar > &vPred, const Thyra::VectorBase< Scalar > &v, const Thyra::VectorBase< Scalar > &a, const Scalar dt) const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:22
Tempus::StepperNewmarkExplicitAForm::description
virtual std::string description() const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:267
Tempus::StepperNewmarkExplicitAForm::out_
Teuchos::RCP< Teuchos::FancyOStream > out_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:139
Tempus::StepperNewmarkExplicitAForm::isExplicit
virtual bool isExplicit() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:78
Tempus::StepperNewmarkExplicitAForm::gamma_
Scalar gamma_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:137
Tempus::StepperNewmarkExplicitAForm::initialize
virtual void initialize()
Initialize during construction and after changing input parameters.
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:124
Tempus::StepperObserver
StepperObserver class for Stepper class.
Definition: Tempus_StepperObserver.hpp:38
Tempus_Stepper.hpp
Tempus::StepperNewmarkExplicitAForm::unsetParameterList
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:351
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::StepperNewmarkExplicitAForm::getSolver
virtual Teuchos::RCP< Thyra::NonlinearSolverBase< Scalar > > getSolver() const
Get solver.
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:46
Tempus::StepperNewmarkExplicitAForm::isExplicitImplicit
virtual bool isExplicitImplicit() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:80
Tempus::StepperNewmarkExplicitAForm::describe
virtual void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:275
Tempus::StepperNewmarkExplicitAForm::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_StepperNewmarkExplicitAForm_decl.hpp:60
Tempus::StepperNewmarkExplicitAForm::getDefaultParameters
Teuchos::RCP< Teuchos::ParameterList > getDefaultParameters() const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:333
Tempus::StepperNewmarkExplicitAForm::getStepperType
virtual std::string getStepperType() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:63
Tempus::StepperNewmarkExplicitAForm::getDefaultStepperState
virtual Teuchos::RCP< Tempus::StepperState< Scalar > > getDefaultStepperState()
Get a default (initial) StepperState.
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:258
Tempus::StepperNewmarkExplicitAForm::getOrderMin
virtual Scalar getOrderMin() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:72
Tempus::StepperNewmarkExplicitAForm::isOneStepMethod
virtual bool isOneStepMethod() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:82
Tempus::StepperNewmarkExplicitAForm::setNonConstModel
virtual void setNonConstModel(const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &appModel)
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:85
Tempus::StepperNewmarkExplicitAForm::outArgs_
Thyra::ModelEvaluatorBase::OutArgs< Scalar > outArgs_
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:135
Tempus::StepperNewmarkExplicitAForm::isMultiStepMethod
virtual bool isMultiStepMethod() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:83
Tempus::StepperNewmarkExplicitAForm::correctVelocity
void correctVelocity(Thyra::VectorBase< Scalar > &v, const Thyra::VectorBase< Scalar > &vPred, const Thyra::VectorBase< Scalar > &a, const Scalar dt) const
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:50
Tempus::StepperNewmarkExplicitAForm::appModel_
Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > appModel_
Explicit ODE ModelEvaluator.
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:132
Tempus::StepperNewmarkExplicitAForm::isImplicit
virtual bool isImplicit() const
Definition: Tempus_StepperNewmarkExplicitAForm_decl.hpp:79
Tempus::StepperNewmarkExplicitAForm::setParameterList
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &pl)
Definition: Tempus_StepperNewmarkExplicitAForm_impl.hpp:285