PowSyBl Open Load Flow
An open source library written in Java, that makes it easy to write complex software for power systems simulations and analysis.
https://github.com/powsybl/powsybl-open-loadflow
Category: Energy Systems
Sub Category: Energy System Modeling Frameworks
Keywords
energy-system java klu load-flow loadflow power-flow power-system-simulation power-systems powerflow powsybl
Keywords from Contributors
cim extensible groovy modular user-stories power-system-analysis power-system cgmes single-line-diagram one-line-diagram
Last synced: about 9 hours ago
JSON representation
Repository metadata
An open source loadflow based on PowSyBl
- Host: GitHub
- URL: https://github.com/powsybl/powsybl-open-loadflow
- Owner: powsybl
- License: mpl-2.0
- Created: 2019-10-01T13:48:47.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-24T11:26:06.000Z (3 days ago)
- Last Synced: 2025-04-24T12:28:02.039Z (3 days ago)
- Topics: energy-system, java, klu, load-flow, loadflow, power-flow, power-system-simulation, power-systems, powerflow, powsybl
- Language: Java
- Homepage:
- Size: 10.1 MB
- Stars: 53
- Watchers: 13
- Forks: 8
- Open Issues: 51
- Releases: 59
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: docs/security/index.md
README.md
PowSyBl Open Load Flow
PowSyBl (Power System Blocks) is an open source library written in Java, that makes it easy to write complex
software for power systems’ simulations and analysis. Its modular approach allows developers to extend or customize its
features.
PowSyBl is part of the LF Energy Foundation, a project of The Linux Foundation that supports open source innovation projects
within the energy and electricity sectors.
Read more at https://www.powsybl.org !
This project and everyone participating in it is under the Linux Foundation Energy governance principles and must respect the PowSyBl Code of Conduct.
By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
PowSyBl vs PowSyBl Open Load Flow
PowSyBl Open Load Flow provides:
- An open-source implementation of the LoadFlow API from PowSyBl Core, supporting DC and AC calculations.
- An open-source implementation of the SecurityAnalysis API from PowSyBl Core, supporting DC and AC calculations.
- An open-source implementation of the SensitivityAnalysis API from PowSyBl Core, supporting DC and AC calculations.
Most of the code is written in Java. It only relies on native code for the KLU sparse linear solver. Linux, Windows and MacOS are supported. KLU is distributed with license LGPL-2.1+.
Let's visit our work-in-progress functional documentation!
Common features
The AC calculations are based on full Newton-Raphson algorithm. The DC calculations are based on direct current linear approximation. Open Load Flow relies on:
- Fast and robust convergence, based on KLU sparse solver.
- Distributed slack (on generators, on loads, or on conform loads); Manual or automatic slack bus selection as explained here.
- Support of generators' active and reactive power limits, including the support of reactive capability curves.
- 5 voltage initialization modes: flat, warm, angles-only based on a DC load flow, magnitude-only initialization based on a specific initializer, or both voltages angle and magnitude initialization based on the two previous methods.
- Support of zero impedance branches, including complex zero impedance subnetworks, particularly important in case of voltage controls and topology changes involved in contingencies or in remedial actions.
- Multiple synchronous component calculation, generally linked to HVDC lines.
- Modeling of secondary voltage control following research of Balthazar Donon, Liège University.
- Support of asymmetrical calculations.
- Implementation of three methods to update the state vector in the Newton-Raphson algorithm: classic, rescaling under maximum voltage change and linear search rescaling.
About controls
Open Load Flow supports:
- Generator and static var compensator voltage remote control through PQV bus modelling. It supports any kind of shared voltage control between controllers that can be generators, static var compensators, or VSC converter stations.
- Static var compensator local voltage control with a slope (support the powsybl-core extension
VoltagePerReactivePowerControl
. - Local and remote phase control: phase tap changers can regulate active power flows or limit currents at given terminals.
- Local and remote voltage control by transformers, including shared controls.
- Local and remote voltage control by shunts, including shared controls.
- Remote reactive power control of a branch by generators, including shared controls.
- Remote reactive power control of a branch by transformers.
Heterogeneous voltage controls management has become a key feature. All well-modeled voltage controls are kept and managed through a priority and a complex management of zero impedance lines. The generators have the first priority, followed by transformers, and then shunts. In a load flow run, in a controlled bus, only the main voltage control of highest priority controls voltage. When incremental outer loops are used, secondary priorities voltage controls can help generators that have reached reactive limits.
Security analysis implementation
- Network in node/breaker topology and in bus/breaker topology.
- Support of all types of contingency. Note that in case of a shunt compensator contingency, we don't support a contingency on it with a global voltage control by shunts at this stage. Bus contingency and bus bar section contingency are supported, leading in many case to branches opened at one side.
- All kind of operational limits violations detection on branches (permanent and temporary limits): current limits, apparent power limits, active power limits.
- High and low voltage limits violations detection on buses.
- Voltage angle limits violation.
- Complex cases where the contingency leads to another synchronous component where a new resolution has to be performed are not supported at that stage. The loss of slack bus during a contingency is not supported yet, but the work is in progress.
- The active and reactive power flows on branches, as well as angle and voltage at buses, can be monitored and collected for later analysis after the base case and after each contingency.
- Remedial actions such as: switch action, terminal(s) connection action, re-dispatching action
- Fast DC mode available, based on Woodbury's formula for calculating post-contingency states. Note that this mode has limitations for the moment. Refer to the documentation here for more information.
Sensitivity analysis implementation
Open Load Flow both supports both AC and DC calculations. Even though it comes from the same powsybl-core API, the calculations behind are radically different. The AC post-contingency sensitivities calculation is based on the same principles than the AC security analysis. The DC post-contingency sensitivities calculation is highly optimized and fully documented here.
It supports all types of sensitivity factors that can be found in the API:
- Variables: injection increase, phase angle shift, HVDC set point increase. For AC calculations only: voltage target increase of generator, static var compensator, transformers or shunt.
- Functions: the active power flow or the current on a branch. For AC calculations only: the voltage on a bus.
The following contingency types are supported:
- Branch contingencies,
- Load and generator contingencies,
- HVDC line contingency.
Documentation
Latest version of the documentation is available here.
To contribute to the documentation follow the instructions in the documentation README page.
Getting started
Running a load flow with PowSyBl Open Load Flow is easy. First let's start loading a IEEE 14 bus network. We first add a few Maven
dependencies to respectively have access to network model, IEEE test networks and simple logging capabilities:
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-iidm-impl</artifactId>
<version>6.7.0</version>
</dependency>
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-ieee-cdf-converter</artifactId>
<version>6.7.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.13</version>
</dependency>
We are now able to load the IEEE 14 bus:
Network network = IeeeCdfNetworkFactory.create14();
After adding a last Maven dependency on Open Load Flow implementation:
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-open-loadflow</artifactId>
<version>1.15.0</version>
</dependency>
We can run the load flow with default parameters on the network:
LoadFlow.run(network);
State variables and power flows computed by the load flow are have been updated inside the network model, and we can, for instance
print on standard output buses voltage magnitude and angle:
network.getBusView().getBusStream().forEach(b -> System.out.println(b.getId() + " " + b.getV() + " " + b.getAngle()));
Contributing to PowSyBl Open Load Flow
PowSyBl Open Load Flow could support more features. The following list is not exhaustive and is an invitation to collaborate:
We can always increase or improves features and implementations. We have thought about:
- Improving performances of the AC security and sensitivity analysis implementations.
- Support of all remedial action types available in the API.
- Contingency propagation in AC and DC sensitivity analyses.
For more details, to report bugs or if you need more features, visit our github and do not hesitate to write new issues.
Using Maven Wrapper
If you don't have a proper Maven installation, you could use the provided Apache Maven Wrapper scripts.
They will download a compatible maven distribution and use it automatically.
You can see the Using Maven Wrapper section of the powsybl-core documentation if you want further information on this subject.
Owner metadata
- Name: PowSyBl
- Login: powsybl
- Email:
- Kind: organization
- Description: Power System Blocks
- Website: https://www.powsybl.org
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/29916668?v=4
- Repositories: 40
- Last ynced at: 2023-03-02T12:15:33.356Z
- Profile URL: https://github.com/powsybl
GitHub Events
Total
- Create event: 118
- Issues event: 21
- Release event: 5
- Watch event: 6
- Delete event: 93
- Member event: 4
- Issue comment event: 757
- Push event: 834
- Pull request review event: 755
- Pull request review comment event: 605
- Pull request event: 185
- Fork event: 2
Last Year
- Create event: 118
- Issues event: 21
- Release event: 5
- Watch event: 6
- Delete event: 93
- Member event: 4
- Issue comment event: 757
- Push event: 834
- Pull request review event: 755
- Pull request review comment event: 605
- Pull request event: 185
- Fork event: 2
Committers metadata
Last synced: 6 days ago
Total Commits: 1,017
Total Committers: 39
Avg Commits per committer: 26.077
Development Distribution Score (DDS): 0.585
Commits in past year: 165
Committers in past year: 19
Avg Commits per committer in past year: 8.684
Development Distribution Score (DDS) in past year: 0.842
Name | Commits | |
---|---|---|
Geoffroy Jamgotchian | g****n@r****m | 422 |
Anne Tilloy | 4****l | 190 |
Florian Dupuy | 6****p | 80 |
jeandemanged | d****e@a****m | 51 |
Bertrand Rix | b****x@g****m | 31 |
vidaldid-rte | 1****e | 30 |
Florian Dupuy | 6****r | 24 |
p-arvy | 1****y | 24 |
Caio Luke | 3****e | 22 |
Gaël Macherel | 3****i | 20 |
Olivier Perrin | o****n@r****m | 18 |
Valentin Mouradian | 1****n | 16 |
Hadrien-Godard | 6****d | 15 |
Sylvestre Prabakaran | 3****i | 13 |
EtienneLt | 3****t | 9 |
Sylvain Leclerc | s****c@r****m | 6 |
VEDELAGO MIORA | m****a@r****m | 5 |
Sophie Frasnedo | 9****s | 5 |
Mathieu BAGUE | m****e@r****m | 4 |
Coline Piloquet | 5****t | 3 |
Jon Harper | j****7@g****m | 3 |
Thomas ADAM | 5****0 | 3 |
alicecaron | a****n@r****m | 3 |
frigaux | 4****x | 3 |
yichen88 | 3****8 | 2 |
Jean-Luc Bouchot | j****t@g****m | 2 |
ne0ds | 3****s | 1 |
marqueslanauja | 5****a | 1 |
m-guibert | 1****t | 1 |
jlabous | 5****s | 1 |
and 9 more... |
Committer domains:
- rte-france.com: 8
- artelys.com: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 131
Total pull requests: 1,148
Average time to close issues: 6 months
Average time to close pull requests: 19 days
Total issue authors: 25
Total pull request authors: 45
Average comments per issue: 1.35
Average comments per pull request: 1.45
Merged pull request: 994
Bot issues: 0
Bot pull requests: 1
Past year issues: 24
Past year pull requests: 198
Past year average time to close issues: 2 months
Past year average time to close pull requests: 16 days
Past year issue authors: 12
Past year pull request authors: 24
Past year average comments per issue: 0.21
Past year average comments per pull request: 1.75
Past year merged pull request: 158
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- annetill (52)
- geofjamg (11)
- jeandemanged (10)
- AnkurArohi (8)
- sylvlecl (7)
- Hadrien-Godard (6)
- Djazouli (5)
- alicecaron (4)
- vidaldid-rte (4)
- vmouradian (4)
- flo-dup (3)
- obrix (2)
- So-Fras (2)
- SylvestreSakti (2)
- adriguir (1)
Top Pull Request Authors
- geofjamg (446)
- annetill (221)
- flo-dup (95)
- jeandemanged (56)
- vidaldid-rte (53)
- obrix (32)
- caioluke (28)
- p-arvy (27)
- vmouradian (24)
- Djazouli (23)
- SylvestreSakti (22)
- olperr1 (17)
- Hadrien-Godard (17)
- EtienneLt (14)
- So-Fras (7)
Top Issue Labels
- bug (21)
- Release 06/2025 (7)
- Release 03/2025 (4)
- enhancement (2)
- documentation (1)
Top Pull Request Labels
- PR: next-release (191)
- bug (79)
- ready-for-review (31)
- Release 03/2025 (28)
- December 2024 release (21)
- PR: do-not-merge (15)
- under_validation (7)
- enhancement (7)
- PR: waiting-for-review (6)
- Release 06/2025 (6)
- prototype (5)
- needs_core_rc (5)
- refactoring (3)
- Breaking Change (3)
- documentation (2)
- question (2)
- dependencies (1)
- performance (1)
- In Review (1)
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total docker downloads: 8,542
- Total dependent packages: 26
- Total dependent repositories: 20
- Total versions: 60
repo1.maven.org: com.powsybl:powsybl-open-loadflow
An open source loadflow based on PowSyBl
- Homepage: http://www.powsybl.org
- Documentation: https://appdoc.app/artifact/com.powsybl/powsybl-open-loadflow/
- Licenses: Mozilla Public License, Version 2.0
- Latest release: 1.15.0 (published about 1 month ago)
- Last Synced: 2025-04-26T05:33:31.506Z (1 day ago)
- Versions: 60
- Dependent Packages: 26
- Dependent Repositories: 20
- Docker Downloads: 8,542
-
Rankings:
- Dependent packages count: 2.554%
- Docker downloads count: 3.254%
- Dependent repos count: 5.315%
- Average: 18.355%
- Stargazers count: 34.853%
- Forks count: 45.799%
Dependencies
- actions/checkout v1 composite
- actions/setup-java v1 composite
- com.powsybl:powsybl-core 5.0.0 import
- com.powsybl:powsybl-commons
- com.powsybl:powsybl-iidm-api
- com.powsybl:powsybl-iidm-extensions
- com.powsybl:powsybl-loadflow-api
- com.powsybl:powsybl-loadflow-results-completion
- com.powsybl:powsybl-math
- com.powsybl:powsybl-security-analysis-api
- com.powsybl:powsybl-sensitivity-analysis-api
- net.jafama:jafama 2.3.2
- org.jgrapht:jgrapht-core
- org.usefultoys:slf4j-toys 1.6.3
- ch.qos.logback:logback-classic test
- com.google.guava:guava-testlib test
- com.google.jimfs:jimfs test
- com.powsybl:powsybl-commons test
- com.powsybl:powsybl-config-test test
- com.powsybl:powsybl-ieee-cdf-converter test
- com.powsybl:powsybl-iidm-impl test
- com.powsybl:powsybl-iidm-test test
- org.junit.jupiter:junit-jupiter-engine 5.8.2 test
- org.mockito:mockito-core test
- org.slf4j:log4j-over-slf4j test
Score: 17.36712112944546