#include <adevs_simulator.h>
Inheritance diagram for adevs::Simulator< X >:
Public Member Functions | |
Simulator (Devs< X > *model) | |
double | nextEventTime () |
Get the model's next event time. | |
void | execNextEvent () |
Execute the simulation cycle at time nextEventTime(). | |
void | execUntil (double tend) |
Execute until nextEventTime() > tend. | |
void | computeNextOutput () |
void | computeNextState (Bag< Event< X > > &input, double t) |
~Simulator () | |
void | addModel (Atomic< X > *model) |
Simulator (LogicalProcess< X > *lp) | |
Classes | |
struct | bottom_to_top_depth_compare |
struct | top_to_bottom_depth_compare |
adevs::Simulator< X >::Simulator | ( | Devs< X > * | model | ) | [inline] |
Create a simulator for the provided model. The simulator constructor will fail and throw an adevs::exception if the time advance of any component atomic model is less than zero.
adevs::Simulator< X >::~Simulator | ( | ) |
Deletes the simulator, but leaves the model intact. The model must exist when the simulator is deleted. Delete the model only after the Simulator is deleted.
adevs::Simulator< X >::Simulator | ( | LogicalProcess< X > * | lp | ) | [inline] |
Create a simulator that will be used by an LP as part of a parallel simulation.
void adevs::Simulator< X >::addModel | ( | Atomic< X > * | model | ) | [inline] |
Assign a model to the simulator. This has the same effect as passing the model to the constructor.
void adevs::Simulator< X >::computeNextOutput | ( | ) |
Compute the output values of the imminent models if these values have not already been computed. This will notify the EventListener objects as the outputs are found. This, in effect, implements the output function of the resultant model.
void adevs::Simulator< X >::computeNextState | ( | Bag< Event< X > > & | input, | |
double | t | |||
) |
Apply the specified inputs at time t and then compute the next model states. Requires that lastEventTime() <= t <= nextEventTime(). This, in effect, implements the state transition function of the resultant model.
Compute model transitions and build up the prev (pre-transition) and next (post-transition) componenent sets. These sets are built up from only the models that have the model_transition function evalauted.
The model adds are processed first. This is done so that, if any of the added models are components something that was removed at a higher level, then the models will not have been deleted when trying to schedule them.
If this model has children, then remove them from the deletion set. This will avoid double delete problems.