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" 24 template<
class Scalar>
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");
176 template <
class Scalar>
177 Teuchos::RCP<TimeStepControlStrategyConstant<Scalar> >
179 const Teuchos::RCP<Teuchos::ParameterList> & pList,
180 std::string name =
"Constant")
183 if (pList == Teuchos::null)
return tscs;
185 TEUCHOS_TEST_FOR_EXCEPTION(
186 pList->get<std::string>(
"Strategy Type",
"Constant") !=
"Constant",
188 "Error - Strategy Type != 'Constant'. (='" 189 +pList->get<std::string>(
"Strategy Type")+
"')\n");
191 pList->validateParametersAndSetDefaults(*tscs->getValidParameters(), 0);
193 tscs->setConstantTimeStep(pList->get<
double>(
"Time Step"));
203 template<
class Scalar>
207 return Teuchos::rcp_const_cast<Teuchos::ParameterList> (t->getValidParameters());
212 #endif // Tempus_TimeStepControlStrategy_Constant_hpp virtual std::string getStrategyType() const
virtual Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
Return ParameterList with current values.
virtual Scalar getInitTimeStep() const
virtual void initialize() const override
virtual Scalar getInitTime() const
virtual int getInitIndex() const
virtual void checkInitialized()
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
TimeStepControlStrategyConstant(Scalar constantTimeStep, std::string name="Constant")
Full Constructor.
virtual void setNextTimeStep(const TimeStepControl< Scalar > &tsc, Teuchos::RCP< SolutionHistory< Scalar > > solutionHistory, Status &integratorStatus) override
Determine the time step size.
Teuchos::RCP< TimeStepControlStrategyConstant< Scalar > > createTimeStepControlStrategyConstant(const Teuchos::RCP< Teuchos::ParameterList > &pList, std::string name="Constant")
Nonmember constructor.
TimeStepControlStrategyConstant()
Default Constructor.
Status
Status for the Integrator, the Stepper and the SolutionState.
virtual void setStepType(std::string s)
virtual ~TimeStepControlStrategyConstant()
Destructor.
virtual void printDtChanges(int istep, Scalar dt_old, Scalar dt_new, std::string reason) const
bool isInitialized_
Bool if strategy is initialized.
TimeStepControl manages the time step size. There several mechanisms that effect the time step size a...
Teuchos::RCP< Teuchos::ParameterList > getTimeStepControlStrategyConstantPL()
Nonmember function to return ParameterList with default values.
virtual Scalar getMaxAbsError() const
virtual void setConstantTimeStep(Scalar dt)
virtual void setName(std::string s)
SolutionHistory is basically a container of SolutionStates. SolutionHistory maintains a collection of...
virtual Scalar getMaxRelError() const
StepControlStrategy class for TimeStepControl.
Scalar constantTimeStep_
Constant time step size.
virtual Scalar getConstantTimeStep() const
std::string description() const override
virtual void setStrategyType(std::string s)
virtual std::string getStepType() const
TimeStepControlStrategy class for TimeStepControl.