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 Binder, 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 dpsimpy on 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 / dpsimpyvillas module, 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::max behaviour under NOMINMAX.
    (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 python3 for 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 install target and find_package support.
    (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 into pyproject.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

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