Home - researcherben/structural-simulation-toolkit GitHub Wiki
The purpose of SST is to provide a framework for discrete event simulation (DES).
See a list of resources for SST
suggested information to include in SST documentation
Do not assume novices understand DES. Provide links to references.
- https://en.wikipedia.org/wiki/Discrete-event_simulation
- https://en.wikipedia.org/wiki/DEVS
- "Formal Framework for Discrete-Event Simulation" https://hal.archives-ouvertes.fr/hal-01562929/document
- "Practical Process Simulation: Using Object-Oriented Techniques and C++" by Jose M. Garrido (Artech House, 1999)
- "Theory Of Modeling And Simulation" by Bernard P. Zeigler, Alexandre Muzy, and Ermesto Kofman. 3rd Ed. Academic Press, 2018.
Domains that share the DES label but are not in scope for SST because they feature person-in-the-loop: hospital simulations and military training in aviation.
Alternative DES frameworks and how SST is different
SST as a framework for DES simulators is not focused on a specific problem or domain. Also, SST supports distributed computation using MPI.
Other DES software:
- Python - https://en.wikipedia.org/wiki/SimPy and https://www.researchgate.net/publication/322949363_Discrete_Event_Simulation_It's_Easy_with_SimPy
- R - https://rdrr.io/cran/simmer/
- https://www.nsnam.org/docs/models/html/distributed.html
See also https://en.wikipedia.org/wiki/List_of_discrete_event_simulation_software
SST-specific capabilities to include in documentation
- how to run SST inside container (Docker, Singularity). Available in this repo
- how to use MPI with SST. Available in this repo
- how to integrate Python functions with C++ using pybind11. In progress in this repo
DES-specific jargon vs SST-specific jargon
DES-specific jargon
- A "referent" is the thing being simulated.
SST-specific jargon
- components are connected to other components via links
- components are connected to a link via a port
- composition of components and links is implemented in a "project driver file"
- a "project driver file" is a Python file that specifies the links and components used in a simulation
- Messages transmitted among components in SST are labeled as "events".
- events are transmitted between components via links
- each component in SST is assigned a clock rate. On each clock tick, the clock event handler is called.
The components can exchange messages every clock step, and execute an action as appropriate