This library provides model classes for multiple Discrete-Event Simulation formalisms and the tools to simulate those models. This project goal is replace CD++ with a more flexible and better performant implementation. Initial research in the architecture of Cadmium can be found in Sequential PDEVS architecture paper. Our primary building tool is clang, but we also test builds using gcc and visual studio when having the resources to do so.
- Model validation at compile time.
- PDEVS models simulated in a single thread.
- Typed messages going through typed ports.
- Time representation is independent of model implementation.
- A C++17 compliant compiler.
- The library is headers only. Then, it is enough to put the include directory in the path the compiler looks up for them.
By default, cadmium runs single threaded. There is also a concurrent version behind a flag, but it requires Boost.Thread library and some changes need to be made when compiling:
- The preprocessor variable CADMIUM_EXECUTE_CONCURRENT should be defined (add '-DCADMIUM_EXECUTE_CONCURRENT' when compiling ).
- Boost.Thread and Boost.System libraries should be linked (add '-lboost_system -lboost_thread')
- Boost.Test, if running the testsfor running the tests.
- Boost.Build, if using the building files provided for convenience.
- CD++ website is official CD++ website.
- CD++ paper describes the CD++ simulator.
- CDBoost website shows a preliminary implementation of Cadmium.
- Sequential PDEVS architecture describes the architecture originally proposed. Several changes had been implemented since then. The documentation will explain them when ready.