The EMRALD simulation or solve engine is based on three-phase discrete event simulation which has no fixed time steps. All probabilistic conditions are dynamically sampled when specific conditions arise. Once all state events are analyzed; actions of the model are executed; and current sampling is performed, the simulation jumps to the next event in time. The simulation processing steps are as follows:

1.      While there are States in the New States list, for each State: 

  • Add the Events to the Time Queue or Conditional List.
  • Execute any Immediate Actions.

2.      If any Conditional Events criteria is met:

  • Execute that event's actions.
  • (Go to Step 1.)

3.      Jump to the next chronological event:  

  • Process that event's actions.
  • (Go to Step 1.)

Simulation_Architecture_1.png

External simulations or codes can be used in the simulation through either one or two-way coupling.  For one way coupling, any locally installed application can be executed when running an EMRALD model.  This is done by assigning the path of the executable to an event.  Next, a user defined script can prepare input data. Finally, another script can process results of the executable to adjust conditions in the EMRALD simulation. 

Two–way coupling uses loose coupling methods and can be done with any code running on the same network.  This requires the other application, or a wrapper, to implement an open communication protocol for message transfer. Messages are then used to both adjust the external simulation or modify the EMRALD simulation.