PowerDynamics.jl: An Open-Source Framework Written in Julia for Dynamic Power Grid Modeling and Analysis. The main idea of this package is to turn dynamic power grid models into a right-hand-side function of a DAE system, which can then be solved using OrdinaryDiffEq.jl.
The main features of PowerDynamics are:
- ModelingToolkit.jl based Frontend: Component models such as machines, controllers, power lines, ... are all defined as symbolic, equation-based MTK models.
- NetworkDynamics.jl based Backend: PD.jl generates Julia code for each of the MTK models as NetworkDynamics.jl compatible vertex- and edge models. NetworkDynamics is used to interconnect those bus and edge models.
- Component-Based Initialisation: Annotate your dynamic models with simplified powerflow models. Solve the powerflow and initialize free dynamic states and parameters of the node and edge models to fit the powerflow result.
- Symbolic Indexing and Observables: Use your typical SciML syntax like
plot(sol, idxs=VIndex(2,:busbar₊u_mag))to access arbitrary states, parameters, observables of your MTK models (in this case, the variable namedbusbar₊u_magof vertex model 2).
... and there is much more! Please check out the Documentation.
If you use PowerDynamics.jl in your research publications, please cite our paper.
@article{PowerDynamics2022,
title={PowerDynamics.jl--An experimentally validated open-source package for the dynamical analysis of power grids},
author={Plietzsch, Anton and Kogler, Raphael and Auer, Sabine and Merino, Julia and Gil-de-Muro, Asier and Li{\ss}e, Jan and Vogel, Christina and Hellmann, Frank},
journal = {SoftwareX},
volume = {17},
pages = {100861},
year = {2022},
publisher={Elsevier}
}Development of this project was in part funded by the German Federal Ministry for Economic Affairs and Climate Action as part of the OpPoDyn-Project (Project ID 01258425/1, 2024-2027).

