Recent Releases of DPsim
DPsim - DPsim v1.2.1
What's Changed since v1.1.1
Highlights
- You can now try DPsim online in your browser via MyBinder
, with Python-based examples.
- Improved real-time performance and VILLAS/FPGA integration, including a new queueless VILLAS interface.
- New and refined power system models and solvers for EMT and power flow.
- Better test coverage, code quality and modernised packaging/CI for PyPI, Linux, Windows and more.
Special thanks
Huge thanks to everyone who contributed to this release!
In particular:
- @stv0g for major work on CI, packaging, CMake, Nix support, code style and dependency updates — and for generously donating free time to push DPsim’s tooling and infrastructure forward.
- @n-eiling for real-time improvements, the new queueless VILLAS interface and FPGA co-simulation support.
- @martinmoraga for advancing the core power system models and numerics, including the 5th order synchronous generator and power flow improvements.
- @pipeacosta for examples and distribution work, including WSCC_9bus updates, MyBinder integration, VILLAS-related fixes and helping to review and maintain DPsim.
- @georgii-tishenin for MNA refactoring, attribute cleanup and helping to review and maintain DPsim.
- @dinkelbachjan for Linear SSN support and solver improvements with KLU / SuiteSparse.
- @MarvinTollnitschRWTH for Linear SSN support.
- @gnakti for code contributions as well as ongoing support and mentoring.
- @m-mirz for donating free time to review and help maintain DPsim.
- @AnasBahr10 for adding code coverage reporting.
And a warm welcome to the new contributors in this cycle:
@MarvinTollnitschRWTH, @AnasBahr10, @shikhindahikar, @cwirtz-fgh – thanks for jumping in!
Many of these contributions were done in personal free time – we deeply appreciate that commitment to DPsim.
Try DPsim online
- Adapt DPsim for deployment on MyBinder so users can experiment with examples directly in the browser, without installing DPsim locally.
(PRs: #323, #399, #400) - Fix compilation issues when using
dpsimpyon Binder containers with VILLAS and adjust workflows to make the MyBinder setup reliable.
(PRs: #434, #450)
Real-time, VILLAS & FPGA integration
- Introduce a new queueless VILLAS interface to improve real-time performance and reduce latency in co-simulations.
(PR: #316) - Enhance the VILLASnode interface and FPGA workflows, including improved FPGA examples, 9-bus HIL builds and conditional building of FPGA examples only when CIMpp is available.
(PRs: #299, #325, #338) - Add and stabilise the
dpsimvillas/dpsimpyvillasmodule, link DPsim to VILLAS libraries and the OpenDSS C library, and fix hardcoded paths and Dockerfile integration.
(PRs: #292, #322, #327, #331, #401, #447, #448, #449) - Fix and improve VILLAS-related examples and workflows, including the dedicated villas examples workflow and updated docs on real-time and VILLASnode interfaces.
(PRs: #319, #335)
Power system models & numerics
- Introduce a 5th Order Synchronous Generator model and revise the power flow solver to improve accuracy and robustness of power system studies.
(PRs: #230, #284) - Add Linear SSN support and extend EMT functionality with a single-phase EMT switch component, improved EMT synchronous generator stamping, and decoupling lines.
(PRs: #175, #312, #315, #422) - Improve numerical consistency: fix RX load initialisation, synchronous generator power flow initialisation, and ensure consistent calculations at the first time step.
(PRs: #210, #241, #238) - Change the default linear solver to KLU / SuiteSparse for better performance and update the CMake configuration accordingly.
(PRs: #250, #380)
Code coverage, testing & core code quality
- Add a code coverage report to track and improve test coverage across the project.
(PR: #395) - Reuse and clean up MNA stamping code, including conductance stamps and EMT synchronous generator stamps, and reduce attribute noise and commented-out code.
(PRs: #297, #306, #388, #390) - Fix a range of platform-specific issues to support newer compilers (GCC 14, Clang 18) and Windows builds, including MSVC warnings and
std::maxbehaviour underNOMINMAX.
(PRs: #293, #294, #334, #360, #280, #408) - Improve tests and examples, including MNASolverPlugins examples and conditions for FPGA examples, and disable coverage on specific workflows where necessary.
(PRs: #346, #338, #412)
Packaging, CI/CD & release pipeline
- Modernise PyPI publishing: remove Python 3.6/3.7, switch to
python3for builds, introduce trusted/OIDC publishing, and fix tag/parallel publish issues and PyPI workflow errors.
(PRs: #229, #272, #353, #354, #355, #375, #303) - Introduce manylinux-based packaging for DPsim, skip RC versions on PyPI.org while publishing them to TestPyPI, and add a proper CMake
installtarget andfind_packagesupport.
(PRs: #451, #381, #380) - Overhaul CI workflows: update actions and caching, trigger behaviour for PRs, Rocky/Fedora workflows, and introduce Nix packaging.
(PRs: #237, #296, #298, #305, #333, #357, #329) - Improve Sonar and profiling workflows, including action version bumps, Rocky profiling fixes, and security hardening of profiling and VILLAS workflows.
(PRs: #265, #298, #399, #439, #454, #455, #456) - Versioning and follow-up patching for 1.2.x, including final version bumps and fixes for Python publishing workflows.
(PRs: #453, #458, #459)
Dependencies, platforms & build system
- Update and clean up dependencies (CIMpp, VILLAS, Spdlog, docs stack, etc.) and allow builds without
nlohmann/json.
(PRs: #245, #329, #340, #362, #404, #405, #421) - Upgrade Fedora Dockerfiles to Fedora 42 and remove legacy RWTH GitLab dependencies to improve portability and maintenance.
(PRs: #261, #387) - Improve CMake configuration: fix style and typos, remove deprecated options, ensure feature summaries even without git info, and add an install target.
(PRs: #341, #342, #376, #379, #381)
Python, developer workflow & docs
- Improve Python bindings and tests: fix the missing
stop()in pybind simulations, hotfix missing simulation stop, and move pytest configuration intopyproject.toml.
(PRs: #246, #247, #348) - Introduce and iterate on pre-commit hooks and add CODEOWNERS for a more consistent developer experience.
(PRs: #290, #352, #361, #363, #377, #382, #383, #385, #386) - Improve documentation and project presentation: fix Doxygen INPUT configuration, docu pipelines, and docu issues; update contact details and badges; and extend the changelog with older versions.
(PRs: #254, #264, #310, #333, #430, #429, #282, #457) - Misc improvements: logging and switch attribute consistency, GitHub Actions and docs dependency bumps, and various small cleanup fixes (capitalisation, whitespace, badges, etc.).
(PRs: #281, #215, #304, #351, #350, #411, #418)
New Contributors
- @georgii-tishenin made their first contribution in https://github.com/sogno-platform/dpsim/pull/297
- @MarvinTollnitschRWTH made their first contribution in https://github.com/sogno-platform/dpsim/pull/175
- @AnasBahr10 made their first contribution in https://github.com/sogno-platform/dpsim/pull/395
- @shikhindahikar made their first contribution in https://github.com/sogno-platform/dpsim/pull/411
- @cwirtz-fgh made their first contribution in https://github.com/sogno-platform/dpsim/pull/408
Full Changelog: https://github.com/sogno-platform/dpsim/compare/v1.1.1...v1.2.1
Energy Systems - Energy System Modeling Frameworks
- C++
Published by leonardocarreras 3 months ago