Stepper


Files

file  DifferentialStepper.hpp
file  DiscreteEventStepper.hpp
file  DiscreteTimeStepper.hpp
file  PassiveStepper.hpp
file  Stepper.hpp
file  SystemStepper.hpp

Typedefs

typedef boost::multi_array<
Real, 2 > 
libecs::RealMatrix_
 DIFFERENTIAL EQUATION SOLVER.

Functions

 libecs::DECLARE_TYPE (RealMatrix_, RealMatrix)
 libecs::DECLARE_CLASS (DifferentialStepper)
 libecs::LIBECS_DM_CLASS (DifferentialStepper, Stepper)
 libecs::DECLARE_CLASS (AdaptiveDifferentialStepper)
 ADAPTIVE STEPSIZE DIFFERENTIAL EQUATION SOLVER.
 libecs::LIBECS_DM_CLASS (AdaptiveDifferentialStepper, DifferentialStepper)
 libecs::LIBECS_DM_CLASS (DiscreteEventStepper, Stepper)
 libecs::LIBECS_DM_CLASS (DiscreteTimeStepper, Stepper)
 DiscreteTimeStepper has a fixed step interval.
 libecs::LIBECS_DM_CLASS (PassiveStepper, Stepper)
 PassiveStepper steps only when triggered by incoming interruptions from other Steppers.
 libecs::DECLARE_VECTOR (Real, RealVector)
 libecs::LIBECS_DM_CLASS (Stepper, PropertiedClass)
 Stepper class defines and governs a computation unit in a model.
 libecs::LIBECS_DM_CLASS (SystemStepper, Stepper)

Function Documentation

libecs::LIBECS_DM_CLASS ( Stepper  ,
PropertiedClass   
)

Stepper class defines and governs a computation unit in a model.

The computation unit is defined as a set of Process objects.

Get the current time of this Stepper.

The current time is defined as a next scheduled point in time of this Stepper.

Returns:
the current time in Real.
This may be overridden in dynamically scheduled steppers.

Get the step interval of this Stepper.

The step interval is a length of time that this Stepper proceeded in the last step.

Returns:
the step interval of this Stepper
Each subclass of Stepper defines this.

Note:
Subclass of Stepper must call this by Stepper::calculate() from their step().
Let the Loggers log data.

The default behavior is to call all the Loggers attached to any Entities related to this Stepper.

Register a System to this Stepper.

Parameters:
aSystemPtr a pointer to a System object to register
Remove a System from this Stepper.

Note:
This method is not currently supported. Calling this method causes undefined behavior.
Parameters:
aSystemPtr a pointer to a System object
Register a Process to this Stepper.

Parameters:
aProcessPtr a pointer to a Process object to register
Remove a Process from this Stepper.

Note:
This method is not currently supported.
Parameters:
aProcessPtr a pointer to a Process object

For internal use only.

Set a priority value of this Stepper.

The priority is an Int value which is used to determine the order of step when more than one Stepper is scheduled at the same point in time (such as starting up: t=0).

Larger value means higher priority, and called first.

Parameters:
value the priority value as an Int.
See also:
Scheduler

setPriority()

Get the reference to the ProcessVector of this Stepper.

The ProcessVector holds a set of pointers to this Stepper's Processes.

The ProcessVector is partitioned in this way:

| Continuous Processes | Discrete Processes |

getDiscreteProcessOffset() method returns the offset (index number) of the first discrete Process in this Stepper.

Each part of the ProcessVector is sorted by Priority properties of Processes.

See also:
getProcessVector()
Get the reference to the VariableVector of this Stepper.

In the VariableVector, Variables are classified and partitioned into the following three groups:

| Write-Only Variables | Read-Write Variables | Read-Only Variables |

Use getReadWriteVariableOffset() method to get the index of the first Read-Write Variable in the VariableVector.

Use getReadOnlyVariableOffset() method to get the index of the first Read-Only Variable in the VariableVector.

See also:
getVariableVector()

getVariableVector()

Definition of the Stepper dependency: Stepper A depends on Stepper B if:

See VariableReference class about the definitions of Variable 'read' and 'write'.

See also:
Process, VariableReference
This method updates theIntegratedVariableVector.

theIntegratedVariableVector holds the Variables those isIntegrationNeeded() method return true.

This method must be called after initialize().

Update theProcessVector.

Update theVariableVector.

Create Interpolant objects and distribute the objects to write Variables.

Ownership of the Interpolant objects are given away to the Variables.

See also:
Variable::registerInterpolant()
Scan all the relevant Entity objects to this Stepper and construct the list of loggers.

The list, theLoggerVector, is used in log() method.

libecs::LIBECS_DM_CLASS ( PassiveStepper  ,
Stepper   
)

PassiveStepper steps only when triggered by incoming interruptions from other Steppers.

Note that this Stepper DOES dispatch interruptions to other Steppers when it steps.

The step interval of this Stepper is usually infinity -- which means that this doesn't step spontaneously. However, when interrupted by another Stepper, the step interval will be set zero, and this Stepper will step immediately after the currently stepping Stepper, at the same time point.

libecs::LIBECS_DM_CLASS ( DiscreteTimeStepper  ,
Stepper   
)

DiscreteTimeStepper has a fixed step interval.

This stepper ignores incoming interruptions, but dispatches interruptions always when it steps.

Process objects in this Stepper isn't allowed to use Variable::addVelocity() method, but Variable::setValue() method only.

This method calls fire() method of all Processes.

Do nothing. This Stepper ignores interruption.

TimeScale of this Stepper is always zero by default.

This behavior may be changed in subclasses.

libecs::LIBECS_DM_CLASS ( AdaptiveDifferentialStepper  ,
DifferentialStepper   
)


Generated on Mon Dec 18 07:24:43 2006 for E-CELL C++ libraries (libecs and libemc) 3.1.105 by  doxygen 1.5.1