Dynawo
This repository contains Dynaωo's simulation tool code.
Install / Use
/learn @dynawo/DynawoREADME
Dynaωo - A hybrid C++/Modelica suite of simulation tools for power systems
This repository contains Dynaωo's project code.
<p align="center"> <img src="documentation/resources/Dynawo-Logo-Color.png" width="400"/> </p>Table of Contents
- Get involved!
- About Dynaωo
- Getting started!
- Installation
- Dynaωo Documentation
- Quoting Dynaωo
- License
- Maintainers
- Roadmap
- Links
<a name="contributions"></a>
Get involved!
Dynaωo is an open-source project and as such, questions, discussions, feedbacks and more generally any form of contribution are very welcome and greatly appreciated!
For further informations about contributing guidelines, please refers to the contributing documentation.
<a name="about"></a>
About Dynaωo
Dynaωo is a hybrid C++/Modelica open source suite of simulation tools for power systems. It aims at providing power system stakeholders with a transparent, flexible, interoperable and robust suite of simulation tools that could ease collaboration and cooperation in the power system community.
The nature of power system dynamics is deeply evolving towards a more diverse and difficult to predict behavior due to the massive changes going on in the power system (large penetration of power-electronic based components such as Renewable Energies Sources - RES - or High Voltage Direct Current - HVDC - lines, booming use of complex automata, control strategies or smart grids). Due to this radical change from physically-driven to numerically-driven dynamics, being able to assess the system stability becomes harder but is still essential as any generalized incident will be unacceptable for the economy and the consumers. This requires to have access to a transparent, flexible, robust and easy to use suite of simulation tools that will allow to run collaborative studies in a very simple way by sharing not only the same data but also the same modeling and solving choices in an open-source frame. Such tools will ensure to get similar results and to agree upon optimal and shared actions on the system to accompany the ongoing changes in the best possible way. This analysis has motivated us to launch a new effort on simulation tools that finally ends up in the development of the Dynaωo's software.
To achieve this goal, Dynaωo is based on two mains principles: the use of a high-level modeling language Modelica and a strict separation between modeling and solving parts. Modelica is an equation-based, declarative and object-oriented modeling language that is easy to read and understand (the equations are written in a similar way than they are written in textbooks for example) and already used in different and various industrial sectors. Using this language enables to easily share and discuss the modeling choices done because the final models implementation is available in an understandable way, even for the end-user. It is important to mention that Modelica-based tools already exist (Dymola, OpenModelica, JModelica, etc.) but they are not efficient enough for large-scale simulation of power system, which was one of the motivation for Dynaωo. In addition to this, the Modelica language itself has some limitations that are addressed in Dynaωo by the possibility to use C++ models in a similar way than Modelica models. The second important point in Dynaωo is the strict separation between modeler and solvers - it means that the models only expose a few methods to the solvers such as the residual evaluation, the Jacobian evaluation or the zero-crossing functions or in other words that the numerical resolution method doesn't interfere in the modeling part. This feature has several advantages: it enables to easily test or use new solvers, it eases the addition of new model and it allows modeling expert not to bother about numerical difficulties and vice versa.

Dynaωo's primary focus has been on long-term and short-term stability studies but the very encouraging results obtained and the flexibility of the approach led to an extension of the initiative. Dynaωo is now evolving towards a complete and coherent suite of simulation tools, sharing the same philosophy:
- DynaFlow for steady-state calculations
- DySym for short-circuit calculations
- DynaWaltz for long-term stability simulations
- DynaSwing for short-term stability studies
- DynaWave for stability studies and system design with a high-penetration of power-electronics based components (quasi-EMT)


<a name="start"></a>
Getting started!
To get started with Dynaωo you have different possibilities, depending on your background and what you want to do:
- If you are interested in the models available and want to have a quick look to them, please open the Dynaωo Modelica library in OpenModelica for example.
- If you want to launch simulations and examples with Dynaωo and observe the performances, you can use the pre-built distribution and the examples directory.
- If you want to checkout the repository and build it yourself to be able to modify the tool, please follow the build instructions available here
All validated models are included into the Dynaωo Modelica library. Don't hesitate to open it in OpenModelica to see what are the available models and simulate the simple full Modelica illustrative examples we provide.
In addition, we also provide an example directory containing validated test cases for DynaFlow, DynaWaltz and DynaSwing. Don't hesitate to simulate them and open the associated documentation.
<a name="installation"></a>
Installation
<a name="distribution"></a>
Dynaωo Distribution
You can download a pre-built Dynaωo release to start testing it. Pre-built releases are available for Linux and Windows:
If you are on MacOS you can use Docker.
Linux Requirements for Distribution
- Compilers: C and C++ (gcc or clang), C++11 compatible for C++ standard
- Python2 or Python3
- Binary utilities: curl and unzip
- CMake
Note For Python you need to have the python command available in your PATH. If you don't have one, you can use an environment variable to point to your Python version with export DYNAWO_PYTHON_COMMAND="python3".
You can install the dependencies for Ubuntu or Fedora with:
$> apt install -y g++ unzip curl python
$> dnf install -y gcc-c++ unzip curl python
Windows Requirements for Distribution
On Windows you can either run Dynaωo with distribution models and in this case nothing is required. If you want to be able to add new models you will need:
- Visual Studio 2022
- CMake
- [Python2](https://www.python.org/
Related Skills
node-connect
341.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.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
341.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
