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) |
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.
Get the step interval of this Stepper.
The step interval is a length of time that this Stepper proceeded in the last step.
The default behavior is to call all the Loggers attached to any Entities related to this Stepper.
Register a System to this Stepper.
aSystemPtr | a pointer to a System object to register |
aSystemPtr | a pointer to a System object |
aProcessPtr | a pointer to a Process object to register |
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.
value | the priority value as an Int. |
setPriority()
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.
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.
getVariableVector()
See VariableReference class about the definitions of Variable 'read' and 'write'.
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.
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 | ||||
) |