9#ifndef Tempus_TimeStepControlStrategy_Constant_hpp
10#define Tempus_TimeStepControlStrategy_Constant_hpp
12#include "Tempus_config.hpp"
14#include "Tempus_SolutionState.hpp"
15#include "Tempus_SolutionHistory.hpp"
42 std::string name =
"Constant")
57 Status & integratorStatus)
override
63 RCP<SolutionState<Scalar> >workingState=solutionHistory->getWorkingState();
64 const Scalar errorAbs = workingState->getErrorAbs();
65 const Scalar errorRel = workingState->getErrorRel();
66 Scalar dt = workingState->getTimeStep();
68 RCP<Teuchos::FancyOStream> out = tsc.getOStream();
69 Teuchos::OSTab ostab(out,1,
"setNextTimeStep");
70 out->setOutputToRootOnly(0);
76 "Resetting constant dt.");
82 *out <<
"Failure - Stepper failed and can not change time step size!\n"
83 <<
" Time step type == CONSTANT_STEP_SIZE\n" << std::endl;
90 *out <<
"Failure - Absolute error failed and can not change time step!\n"
91 <<
" Time step type == CONSTANT_STEP_SIZE\n"
92 <<
" (errorAbs ="<<errorAbs<<
") > (errorMaxAbs ="
100 *out <<
"Failure - Relative error failed and can not change time step!\n"
101 <<
" Time step type == CONSTANT_STEP_SIZE\n"
102 <<
" (errorRel ="<<errorRel<<
") > (errorMaxRel ="
104 integratorStatus =
FAILED;
109 workingState->setTimeStep(dt);
114 const int index = workingState->getIndex();
115 const Scalar time = (index-initIndex)*dt + initTime;
116 workingState->setTime(time);
123 {
return "Tempus::TimeStepControlStrategyConstant"; }
126 const Teuchos::EVerbosityLevel verbLevel)
const override
128 auto l_out = Teuchos::fancyOStream( out.getOStream() );
129 Teuchos::OSTab ostab(*l_out, 2, this->
description());
130 l_out->setOutputToRootOnly(0);
132 *l_out <<
"\n--- " << this->
description() <<
" ---" << std::endl;
134 if (Teuchos::as<int>(verbLevel) >= Teuchos::as<int>(Teuchos::VERB_MEDIUM)) {
136 <<
" Step Type = " << this->
getStepType() << std::endl
139 *l_out << std::string(this->
description().length()+8,
'-') <<std::endl;
147 Teuchos::RCP<Teuchos::ParameterList> pl =
148 Teuchos::parameterList(
"Time Step Control Strategy");
150 pl->set<std::string>(
"Strategy Type", this->
getStrategyType(),
"Constant");
176template <
class Scalar>
177Teuchos::RCP<TimeStepControlStrategyConstant<Scalar> >
179 const Teuchos::RCP<Teuchos::ParameterList> & pList,
180 std::string name =
"Constant")
183 if (pList == Teuchos::null || pList->numParams() == 0)
return tscs;
185 TEUCHOS_TEST_FOR_EXCEPTION(
186 pList->get<std::string>(
"Strategy Type") !=
"Constant", std::logic_error,
187 "Error - Strategy Type != 'Constant'. (='"
188 +pList->get<std::string>(
"Strategy Type")+
"')\n");
190 pList->validateParametersAndSetDefaults(*tscs->getValidParameters());
192 tscs->setConstantTimeStep(pList->get<
double>(
"Time Step"));
202template<
class Scalar>
206 return Teuchos::rcp_const_cast<Teuchos::ParameterList> (t->getValidParameters());
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
StepControlStrategy class for TimeStepControl.
virtual Scalar getConstantTimeStep() const
virtual void setConstantTimeStep(Scalar dt)
TimeStepControlStrategyConstant(Scalar constantTimeStep, std::string name="Constant")
Full Constructor.
std::string description() const override
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
virtual void setNextTimeStep(const TimeStepControl< Scalar > &tsc, Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory, Status &integratorStatus) override
Determine the time step size.
Scalar constantTimeStep_
Constant time step size.
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
Return ParameterList with current values.
virtual void initialize() const override
TimeStepControlStrategyConstant()
Default Constructor.
virtual ~TimeStepControlStrategyConstant()
Destructor.
TimeStepControlStrategy class for TimeStepControl.
virtual void setStrategyType(std::string s)
virtual void checkInitialized()
bool isInitialized_
Bool if strategy is initialized.
virtual void setStepType(std::string s)
virtual std::string getStrategyType() const
virtual void setName(std::string s)
virtual std::string getStepType() const
TimeStepControl manages the time step size. There several mechanisms that effect the time step size a...
virtual int getInitIndex() const
virtual Scalar getMaxAbsError() const
virtual Scalar getMaxRelError() const
virtual Scalar getInitTime() const
virtual Scalar getInitTimeStep() const
virtual void printDtChanges(int istep, Scalar dt_old, Scalar dt_new, std::string reason) const
Status
Status for the Integrator, the Stepper and the SolutionState.
Teuchos::RCP< Teuchos::ParameterList > getTimeStepControlStrategyConstantPL()
Nonmember function to return ParameterList with default values.
Teuchos::RCP< TimeStepControlStrategyConstant< Scalar > > createTimeStepControlStrategyConstant(const Teuchos::RCP< Teuchos::ParameterList > &pList, std::string name="Constant")
Nonmember constructor.