Base class for strategy objects that control integration by selecting step sizes for a stepper. More...
#include <Rythmos_IntegrationControlStrategyBase.hpp>
Public Member Functions | |
virtual RCP < IntegrationControlStrategyBase < Scalar > > | cloneIntegrationControlStrategy () const =0 |
Clone this integration control object if supported . | |
virtual void | resetIntegrationControlStrategy (const TimeRange< Scalar > &integrationTimeDomain)=0 |
Reset the control algorithm to the beginning to start a new integration. | |
virtual StepControlInfo< Scalar > | getNextStepControlInfo (const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfoLast, const int timeStepIter)=0 |
Select the next time step control info. |
Base class for strategy objects that control integration by selecting step sizes for a stepper.
ToDo: Finish Implementation!
Definition at line 25 of file Rythmos_IntegrationControlStrategyBase.hpp.
virtual RCP<IntegrationControlStrategyBase<Scalar> > Rythmos::IntegrationControlStrategyBase< Scalar >::cloneIntegrationControlStrategy | ( | ) | const [pure virtual] |
Clone this integration control object if supported .
Here, the cloned object just has to have the control information copied, not the complete state of the object mid way through an integration.
Implemented in Rythmos::SimpleIntegrationControlStrategy< Scalar >.
virtual void Rythmos::IntegrationControlStrategyBase< Scalar >::resetIntegrationControlStrategy | ( | const TimeRange< Scalar > & | integrationTimeDomain | ) | [pure virtual] |
Reset the control algorithm to the beginning to start a new integration.
integrationTimeDomain | [in] The time domain over which the integration will be defined. |
Preconditions:
integrationTimeDomain.length() > 0.0
Implemented in Rythmos::SimpleIntegrationControlStrategy< Scalar >.
virtual StepControlInfo<Scalar> Rythmos::IntegrationControlStrategyBase< Scalar >::getNextStepControlInfo | ( | const StepperBase< Scalar > & | stepper, | |
const StepControlInfo< Scalar > & | stepCtrlInfoLast, | |||
const int | timeStepIter | |||
) | [pure virtual] |
Select the next time step control info.
stepper | [in] The stepper object that is being stepped forward in time to integrate the transient ODE/DAE equations. On the very first call, this stepper should just have the initial condition. | |
stepCtrlInfoLast | [in] The actual time step that was taken on the last time step. | |
timeStepIter | [in] The (zero-based) time step iteration counter. In the first call to this function, this should be passed as timeStepIter==0 and it should be incremented on each call only once. While the concrete implementation if *this could keep track of the this counter, putting it in the argument list helps to simplify logic and helps to validate correct usage. |
returnVal.stepSize
is limited by a breakpoint and if that breakpoint requires a restart of the stepper. If no more steps are to be taken then a step size of returnVal.stepSize < 0.0
will be returned and the time integrator client should halt the integration immediately!Warning! This function is *NOT* stateless. It should be called once and only once per time step iteration.
NOTE: The function resetIntegrationControlStrategy()
must be called prior to even the first call to function.
Implemented in Rythmos::SimpleIntegrationControlStrategy< Scalar >.