A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

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

README.md

PowSyBl Open Load Flow

Actions Status
Coverage Status
Quality Gate
MPL-2.0 License
Slack

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:

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


GitHub Events

Total
Last Year

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 Email 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:


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

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/powsybl/powsybl-open-loadflow

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

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

.github/workflows/maven.yml actions
  • actions/checkout v1 composite
  • actions/setup-java v1 composite
pom.xml maven
  • 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