Cadmium
A strong typed PDEVS simulator
Install / Use
/learn @SimulationEverywhere/CadmiumREADME
cadmium

Introduction
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.
Top features
- 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.
Quick start
Requirements
- A C++17 compliant compiler.
Install
- The library is headers only. Then, it is enough to put the include directory in the path the compiler looks up for them.
Running cadmium in concurrent mode
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')
Building tests and examples
- Boost.Test, if running the testsfor running the tests.
- Boost.Build, if using the building files provided for convenience.
References
- 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.
Related Skills
node-connect
351.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
