Tempus  Version of the Day
Time Integration
Tempus_IntegratorBasicOld_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_IntegratorBasicOld_decl_hpp
10 #define Tempus_IntegratorBasicOld_decl_hpp
11 
12 #include "Thyra_ModelEvaluator.hpp"
13 
14 #include "Tempus_config.hpp"
15 #include "Tempus_Stepper.hpp"
16 #include "Tempus_Integrator.hpp"
17 #include "Tempus_TimeStepControl.hpp"
18 #include "Tempus_IntegratorObserverBasic.hpp"
19 #include "Tempus_IntegratorObserverComposite.hpp"
20 #include "Teuchos_ParameterListAcceptorDefaultBase.hpp"
21 
22 
23 namespace Tempus {
24 
25 
28 template<class Scalar>
30  : virtual public Tempus::Integrator<Scalar>,
31  virtual public Teuchos::ParameterListAcceptor
32 {
33 public:
34 
37  Teuchos::RCP<Teuchos::ParameterList> pList,
38  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model);
39 
42  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model,
43  std::string stepperType);
44 
47 
50  Teuchos::RCP<Teuchos::ParameterList> pList,
51  std::vector<Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > > models);
52 
54  virtual ~IntegratorBasicOld() {}
55 
57 
58  virtual bool advanceTime();
61  virtual bool advanceTime(const Scalar timeFinal) override;
63  virtual void startIntegrator();
65  virtual void startTimeStep();
67  virtual void checkTimeStep();
69  virtual void endIntegrator();
71  virtual Teuchos::RCP<Teuchos::ParameterList> getTempusParameterList()
72  override { return tempusPL_; }
73  virtual void setTempusParameterList(
74  Teuchos::RCP<Teuchos::ParameterList> pl) override
75  {
76  if (tempusPL_==Teuchos::null) tempusPL_=Teuchos::parameterList("Tempus");
77  if (pl != Teuchos::null) *tempusPL_ = *pl;
78  this->setParameterList(Teuchos::null);
79  }
81 
83 
84  virtual Scalar getTime() const override
86  {return solutionHistory_->getCurrentTime();}
88  virtual int getIndex() const override
89  {return solutionHistory_->getCurrentIndex();}
91  virtual Status getStatus() const override
92  {return integratorStatus_;}
94  virtual void setStatus(const Status st) override { integratorStatus_ = st; }
96  virtual Teuchos::RCP<Stepper<Scalar> > getStepper() const override
97  {return stepper_;}
99  virtual void setStepper(Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > model);
101  virtual void setStepper(
102  std::vector<Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > > models);
104  virtual void setStepperWStepper(Teuchos::RCP<Stepper<Scalar> > stepper);
106  virtual void initializeSolutionHistory(
107  Teuchos::RCP<SolutionState<Scalar> > state = Teuchos::null);
109  virtual void initializeSolutionHistory(Scalar t0,
110  Teuchos::RCP<const Thyra::VectorBase<Scalar> > x0,
111  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdot0 = Teuchos::null,
112  Teuchos::RCP<const Thyra::VectorBase<Scalar> > xdotdot0 = Teuchos::null);
114  virtual Teuchos::RCP<const SolutionHistory<Scalar> > getSolutionHistory() const override
115  {return solutionHistory_;}
117  virtual Teuchos::RCP<SolutionHistory<Scalar> > getNonConstSolutionHistory() override
118  {return solutionHistory_;}
120  virtual void setSolutionHistory(
121  Teuchos::RCP<SolutionHistory<Scalar> > sh = Teuchos::null);
123  virtual Teuchos::RCP<const TimeStepControl<Scalar> > getTimeStepControl() const override
124  {return timeStepControl_;}
125  virtual Teuchos::RCP<TimeStepControl<Scalar> > getNonConstTimeStepControl() override
126  {return timeStepControl_;}
128  virtual void setTimeStepControl(
129  Teuchos::RCP<TimeStepControl<Scalar> > tsc = Teuchos::null);
131  virtual Teuchos::RCP<IntegratorObserverComposite<Scalar> > getObserver()
132  {return integratorObserver_;}
134  virtual void setObserver(
135  Teuchos::RCP<IntegratorObserver<Scalar> > obs = Teuchos::null);
137  virtual void initialize();
138  //TODO: finish this
140  virtual Teuchos::RCP<Teuchos::Time> getIntegratorTimer() const override
141  { return integratorTimer_;}
142  virtual Teuchos::RCP<Teuchos::Time> getStepperTimer() const override
143  { return stepperTimer_;}
144 
146  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getX() const
147  {return solutionHistory_->getCurrentState()->getX();}
149  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getXDot() const
150  {return solutionHistory_->getCurrentState()->getXDot();}
152  virtual Teuchos::RCP<Thyra::VectorBase<Scalar> > getXDotDot() const
153  {return solutionHistory_->getCurrentState()->getXDotDot();}
154 
156  virtual Teuchos::RCP<SolutionState<Scalar> > getCurrentState()
157  {return solutionHistory_->getCurrentState();}
158 
159  Teuchos::RCP<Teuchos::ParameterList> getIntegratorParameterList()
160  { return integratorPL_; }
161 
162  //virtual Teuchos::RCP<Teuchos::Time> getIntegratorTimer() const
163  //{return integratorTimer_;}
164 
165  virtual void setScreenOutputIndexInterval(int i)
166  { integratorPL_->set("Screen Output Index Interval", i); }
167 
168  virtual int getScreenOutputIndexInterval() const
169  { return integratorPL_->get<int>("Screen Output Index Interval"); }
170 
171  virtual void setScreenOutputIndexList(std::string s)
172  { integratorPL_->set("Screen Output Index List", s); }
173 
174  virtual std::string getScreenOutputIndexList() const
175  { return integratorPL_->get<std::string>("Screen Output Index List", ""); }
177 
179  void parseScreenOutput();
180 
182 
183  void setParameterList(const Teuchos::RCP<Teuchos::ParameterList> & pl)
184  override;
185  Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList() override;
186  Teuchos::RCP<Teuchos::ParameterList> unsetParameterList() override;
187  Teuchos::RCP<const Teuchos::ParameterList> getValidParameters()
188  const override;
190 
192 
193  std::string description() const override;
194  void describe(Teuchos::FancyOStream & out,
195  const Teuchos::EVerbosityLevel verbLevel) const override;
197 
198 protected:
199 
200  Teuchos::RCP<Teuchos::ParameterList> tempusPL_;
201  Teuchos::RCP<Teuchos::ParameterList> integratorPL_;
202  Teuchos::RCP<SolutionHistory<Scalar> > solutionHistory_;
203  Teuchos::RCP<TimeStepControl<Scalar> > timeStepControl_;
204  Teuchos::RCP<IntegratorObserverComposite<Scalar> > integratorObserver_;
205  Teuchos::RCP<Stepper<Scalar> > stepper_;
206 
207  Teuchos::RCP<Teuchos::Time> integratorTimer_;
208  Teuchos::RCP<Teuchos::Time> stepperTimer_;
209  Scalar runtime_;
210 
211  std::vector<int> outputScreenIndices_;
212 
219 };
220 
222 template<class Scalar>
223 Teuchos::RCP<IntegratorBasicOld<Scalar> > integratorBasic(
224  Teuchos::RCP<Teuchos::ParameterList> pList,
225  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model);
226 
228 template<class Scalar>
229 Teuchos::RCP<IntegratorBasicOld<Scalar> > integratorBasic(
230  const Teuchos::RCP<Thyra::ModelEvaluator<Scalar> >& model,
231  std::string stepperType);
232 
234 template<class Scalar>
235 Teuchos::RCP<IntegratorBasicOld<Scalar> > integratorBasic();
236 
238 template<class Scalar>
239 Teuchos::RCP<IntegratorBasicOld<Scalar> > integratorBasic(
240  Teuchos::RCP<Teuchos::ParameterList> pList,
241  std::vector<Teuchos::RCP<const Thyra::ModelEvaluator<Scalar> > > models);
242 
243 
244 } // namespace Tempus
245 
246 #endif // Tempus_IntegratorBasicOld_decl_hpp
IntegratorBasicOld()
Constructor that requires a subsequent setParameterList, setStepper, and initialize calls...
void parseScreenOutput()
Parse when screen output should be executed.
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList() override
virtual std::string getScreenOutputIndexList() const
virtual Teuchos::RCP< Stepper< Scalar > > getStepper() const override
Get the Stepper.
Teuchos::RCP< Teuchos::ParameterList > tempusPL_
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList() override
Teuchos::RCP< Teuchos::Time > integratorTimer_
virtual Teuchos::RCP< const SolutionHistory< Scalar > > getSolutionHistory() const override
Get the SolutionHistory.
virtual Teuchos::RCP< SolutionHistory< Scalar > > getNonConstSolutionHistory() override
Get the SolutionHistory.
virtual Teuchos::RCP< TimeStepControl< Scalar > > getNonConstTimeStepControl() override
Teuchos::RCP< Teuchos::ParameterList > getIntegratorParameterList()
virtual Teuchos::RCP< const TimeStepControl< Scalar > > getTimeStepControl() const override
Get the TimeStepControl.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory_
virtual void initializeSolutionHistory(Teuchos::RCP< SolutionState< Scalar > > state=Teuchos::null)
Set the initial state which has the initial conditions.
Teuchos::RCP< Teuchos::Time > stepperTimer_
Thyra Base interface for time steppers.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
Create valid IntegratorBasicOld ParameterList.
virtual void setObserver(Teuchos::RCP< IntegratorObserver< Scalar > > obs=Teuchos::null)
Set the Observer.
virtual Teuchos::RCP< Teuchos::Time > getIntegratorTimer() const override
Returns the IntegratorTimer_ for this Integrator.
virtual void checkTimeStep()
Check if time step has passed or failed.
Teuchos::RCP< TimeStepControl< Scalar > > timeStepControl_
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getXDot() const
Get current the time derivative of the solution, xdot.
Teuchos::RCP< IntegratorObserverComposite< Scalar > > integratorObserver_
virtual void setStepperWStepper(Teuchos::RCP< Stepper< Scalar > > stepper)
Set the Stepper.
virtual void setStatus(const Status st) override
Set Status.
virtual Teuchos::RCP< Teuchos::ParameterList > getTempusParameterList() override
Return a copy of the Tempus ParameterList.
Status
Status for the Integrator, the Stepper and the SolutionState.
virtual Teuchos::RCP< Teuchos::Time > getStepperTimer() const override
IntegratorObserver class for time integrators.
Teuchos::RCP< Teuchos::ParameterList > integratorPL_
virtual Teuchos::RCP< IntegratorObserverComposite< Scalar > > getObserver()
Get the Observer.
virtual int getIndex() const override
Get current index.
std::string description() const override
TimeStepControl manages the time step size. There several mechanisms that effect the time step size a...
Teuchos::RCP< Stepper< Scalar > > stepper_
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getXDotDot() const
Get current the second time derivative of the solution, xdotdot.
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual void setTimeStepControl(Teuchos::RCP< TimeStepControl< Scalar > > tsc=Teuchos::null)
Set the TimeStepControl.
virtual Teuchos::RCP< Thyra::VectorBase< Scalar > > getX() const
Get current the solution, x.
virtual void setTempusParameterList(Teuchos::RCP< Teuchos::ParameterList > pl) override
virtual void initialize()
Initializes the Integrator after set* function calls.
Thyra Base interface for time integrators. Time integrators are designed to advance the solution from...
virtual Teuchos::RCP< SolutionState< Scalar > > getCurrentState()
Get current state.
virtual void setScreenOutputIndexList(std::string s)
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > &pl) override
virtual Scalar getTime() const override
Get current time.
virtual Status getStatus() const override
Get Status.
virtual void startTimeStep()
Start time step.
virtual void setSolutionHistory(Teuchos::RCP< SolutionHistory< Scalar > > sh=Teuchos::null)
Set the SolutionHistory.
virtual void startIntegrator()
Perform tasks before start of integrator.
virtual void setStepper(Teuchos::RCP< const Thyra::ModelEvaluator< Scalar > > model)
Set the Stepper.
virtual void endIntegrator()
Perform tasks after end of integrator.
Teuchos::RCP< IntegratorBasicOld< Scalar > > integratorBasic(Teuchos::RCP< Teuchos::ParameterList > pList, const Teuchos::RCP< Thyra::ModelEvaluator< Scalar > > &model)
Nonmember constructor.
virtual bool advanceTime()
Advance the solution to timeMax, and return true if successful.
Solution state for integrators and steppers. SolutionState contains the metadata for solutions and th...
std::vector< int > outputScreenIndices_
Vector of screen output indices.