The SyDEVS open source C++ library provides a framework for modeling and simulating complex systems.
In a nutshell, it will help make your simulation code scale.
SyDEVS allows physics solvers, state machines, and other types of simulation models to be implemented as independent nodes and later integrated. Even nodes that use different time steps (or variable time steps) can be linked together and allowed to interact.
Below is an example of a multi-solver simulation developed by Rutgers University, York University, and Autodesk Research using SyDEVS as the underlying framework. Click the image to see the animated results on YouTube.
Also see Making Simulation Code Scale with SyDEVS, a tutorial presented by Autodesk Research and hosted by Alphabet as part of their Modeling Talk Series.
The SyDEVS framework is based on the Symmetric DEVS formalism (PDF), a set of conventions combining three modeling paradigms: discrete event simulation, dataflow programming and agent-based modeling. These foundations give SyDEVS the generality needed to support essentially any type of simulation, regardless of domain, time scale, or time advancement scheme.
In addition to supporting multiple modeling paradigms, the SyDEVS library provides comprehensive and reusable Modern C++ implementations of multidimensional arrays, Standard International (SI) units, and the multiscale representation of simulated time described in this freely available paper from Simulation.
Documentation
- Overview: Briefly introduces SyDEVS.
- Getting Started: Explains how to use SyDEVS, step by step.
- User Manual: Describes the main elements of SyDEVS in detail, with examples.
- API Reference: Documents the C++ classes that make up the library.
- SyDEVS Introduction (PPTX, PDF): Provides background information and introduces SyDEVS.
- SyDEVS Framework Overview (PPTX, PDF): Illustrates the main concepts & relates them to code.
- SyDEVS Building7m Tutorial (PPTX, PDF): Challenges users to learn by enhancing an example.
- Symmetric DEVS Tutorial (PPTX): Explains the theory underlying the SyDEVS framework.
Download
Download the latest SyDEVS release here, or fork, clone, and build the repo.
You will need a C++ compiler that implements the C++14 standard. SyDEVS has been tested successfully with Visual Studio 2015, Visual Studio 2017, and recent versions of GCC and Clang.
SyDEVS is released under the Apache License 2.0, a permissive open source license.
Contact
Inquires about SyDEVS can be directed to Rhys Goldstein.