Rythmos - Transient Integration for Differential Equations  Version of the Day
 All Classes Functions Variables Typedefs Pages
Public Member Functions | List of all members
Rythmos::IntegrationObserverBase< Scalar > Class Template Referenceabstract

Base class for strategy objects that observe and time integration by observing the stepper object. More...

#include <Rythmos_IntegrationObserverBase.hpp>

Inheritance diagram for Rythmos::IntegrationObserverBase< Scalar >:
Inheritance graph
[legend]

Public Member Functions

virtual RCP
< IntegrationObserverBase
< Scalar > > 
cloneIntegrationObserver () const =0
 Clone this integration observer if supported . More...
 
virtual void resetIntegrationObserver (const TimeRange< Scalar > &integrationTimeDomain)=0
 Reset the observer to prepair it to observe another integration. More...
 
virtual void observeStartTimeIntegration (const StepperBase< Scalar > &stepper)
 Observe the beginning of a time integration loop. More...
 
virtual void observeEndTimeIntegration (const StepperBase< Scalar > &stepper)
 Observe the end of a time integration loop. More...
 
virtual void observeStartTimeStep (const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfo, const int timeStepIter)
 Observer the beginning of an integration step. More...
 
virtual void observeCompletedTimeStep (const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfo, const int timeStepIter)=0
 Observe a successfully completed integration step. More...
 
virtual void observeFailedTimeStep (const StepperBase< Scalar > &stepper, const StepControlInfo< Scalar > &stepCtrlInfo, const int timeStepIter)
 Observer a failed integration step. More...
 

Detailed Description

template<class Scalar>
class Rythmos::IntegrationObserverBase< Scalar >

Base class for strategy objects that observe and time integration by observing the stepper object.

ToDo: Finish Implementation!

Definition at line 24 of file Rythmos_IntegrationObserverBase.hpp.

Member Function Documentation

template<class Scalar >
virtual RCP<IntegrationObserverBase<Scalar> > Rythmos::IntegrationObserverBase< Scalar >::cloneIntegrationObserver ( ) const
pure virtual

Clone this integration observer if supported .

Here, the cloned object just has to have the ouptut strategy copied, not the complete state of the object mid way through an integration.

Implemented in Rythmos::ForwardResponseSensitivityComputerObserver< Scalar >, Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

template<class Scalar >
virtual void Rythmos::IntegrationObserverBase< Scalar >::resetIntegrationObserver ( const TimeRange< Scalar > &  integrationTimeDomain)
pure virtual

Reset the observer to prepair it to observe another integration.

Parameters
integrationTimeDomain[in] The time domain over which the integration will be defined.

Preconditions:

  • integrationTimeDomain.length() > 0.0
Todo:
Add initial guess as an argument

Implemented in Rythmos::ForwardResponseSensitivityComputerObserver< Scalar >, Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

template<class Scalar >
void Rythmos::IntegrationObserverBase< Scalar >::observeStartTimeIntegration ( const StepperBase< Scalar > &  stepper)
virtual

Observe the beginning of a time integration loop.

Parameters
stepper[in] The stepper object.

Warning! This function is NOT stateless. It should be called once and only once at the beginning of getFwdPoints().

NOTE: The function resetIntegrationControlStrategy() must be called prior to even the first call to function.

NOTE: This method should be pure virtual but has been given a default implementation for backwards compatibility. We will make this pure virtual in the future.

Reimplemented in Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

Definition at line 244 of file Rythmos_IntegrationObserverBase.hpp.

template<class Scalar >
void Rythmos::IntegrationObserverBase< Scalar >::observeEndTimeIntegration ( const StepperBase< Scalar > &  stepper)
virtual

Observe the end of a time integration loop.

Parameters
stepper[in] The stepper object.

Warning! This function is NOT stateless. It should be called once and only once at the end of getFwdPoints().

NOTE: The function resetIntegrationControlStrategy() must be called prior to even the first call to function.

NOTE: This method should be pure virtual but has been given a default implementation for backwards compatibility. We will make this pure virtual in the future.

Reimplemented in Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

Definition at line 251 of file Rythmos_IntegrationObserverBase.hpp.

template<class Scalar >
void Rythmos::IntegrationObserverBase< Scalar >::observeStartTimeStep ( const StepperBase< Scalar > &  stepper,
const StepControlInfo< Scalar > &  stepCtrlInfo,
const int  timeStepIter 
)
virtual

Observer the beginning of an integration step.

Parameters
stepper[in] The stepper object.
stepCtrlInfo[in] The info for the time step about to be taken.
timeStepIter[in] The time step iteration counter. In the first call to this function, this should be timeStepIter==0 and it should be incremented on each call only once. While the concrete implementation of *this could keep track of the this counter, putting it in the argument list helps to simplify logic and helps to validate correct usage.

Warning! This function is NOT stateless. It should be called once and only once at the beginning of each time step.

NOTE: The function resetIntegrationControlStrategy() must be called prior to even the first call to function.

NOTE: This method should be pure virtual but has been given a default implementation for backwards compatibility. We will make this pure virtual in the future.

Reimplemented in Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

Definition at line 258 of file Rythmos_IntegrationObserverBase.hpp.

template<class Scalar >
virtual void Rythmos::IntegrationObserverBase< Scalar >::observeCompletedTimeStep ( const StepperBase< Scalar > &  stepper,
const StepControlInfo< Scalar > &  stepCtrlInfo,
const int  timeStepIter 
)
pure virtual

Observe a successfully completed integration step.

Parameters
stepper[in] The stepper object that was just stepped forward once to integrate the transient ODE/DAE equations. On the very first call and every other call, this stepper should have a finite time range for a successfull step.
stepCtrlInfo[in] The info for the actual time step that was just completed.
timeStepIter[in] The time step iteration counter. In the first call to this function, this should be timeStepIter==0 and it should be incremented on each call only once. While the concrete implementation of *this could keep track of the this counter, putting it in the argument list helps to simplify logic and helps to validate correct usage.

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.

NOTE: If isInitialTimeStep(stepper->getTimeRange(), fullTimeRange) == true then this is the first time step (where fullTimeRange was passed into resetIntegrationObserver().

NOTE: If isFinalTimeStep(stepper->getTimeRange(), fullTimeRange) == true then this is the last time step (where fullTimeRange was passed into resetIntegrationObserver().

Implemented in Rythmos::CompositeIntegrationObserver< Scalar >, Rythmos::ForwardResponseSensitivityComputerObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

template<class Scalar >
void Rythmos::IntegrationObserverBase< Scalar >::observeFailedTimeStep ( const StepperBase< Scalar > &  stepper,
const StepControlInfo< Scalar > &  stepCtrlInfo,
const int  timeStepIter 
)
virtual

Observer a failed integration step.

Parameters
stepper[in] The stepper object that was just stepped forward once to integrate the transient ODE/DAE equations. On the very first call and every other call, this stepper should have a finite time range for a successfull step.
stepCtrlInfo[in] The info for the actual time step that was just attempted.
timeStepIter[in] The time step iteration counter. In the first call to this function, this should be timeStepIter==0 and it should be incremented on each call only once. While the concrete implementation of *this could keep track of the this counter, putting it in the argument list helps to simplify logic and helps to validate correct usage.

Warning! This function is NOT stateless. It should be called once and only once per failed time step iteration.

NOTE: The function resetIntegrationControlStrategy() must be called prior to even the first call to function.

NOTE: If isInitialTimeStep(stepper->getTimeRange(), fullTimeRange) == true then this is the first time step (where fullTimeRange was passed into resetIntegrationObserver().

NOTE: If isFinalTimeStep(stepper->getTimeRange(), fullTimeRange) == true then this is the last time step (where fullTimeRange was passed into resetIntegrationObserver().

NOTE: This method should be pure virtual but has been given a default implementation for backwards compatibility. We will make this pure virtual in the future.

Reimplemented in Rythmos::CompositeIntegrationObserver< Scalar >, and Rythmos::LoggingIntegrationObserver< Scalar >.

Definition at line 269 of file Rythmos_IntegrationObserverBase.hpp.


The documentation for this class was generated from the following file: