Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
3eb762f
Add HV/MV transformer models to the catalogue (#355)
alihamdan Mar 14, 2025
0742b2e
Add missing max voltage level to the catalogue (#356)
alihamdan Mar 18, 2025
081bf8d
Add more unbalance calculations
alihamdan Mar 19, 2025
ca6dad3
Merge pull request #357 from RoseauTechnologies/unbalance
benoit9126 Mar 25, 2025
f7712d1
ENH: Fix DGS export
audreyf9712 Mar 28, 2025
0b53071
ENH: Add a contributor
benoit9126 Mar 28, 2025
1063940
Merge pull request #358 from RoseauTechnologies/correction
audreyf9712 Mar 28, 2025
2de15a3
BUG: Close #359
benoit9126 Apr 8, 2025
7c404ad
Merge pull request #360 from RoseauTechnologies/issue359
benoit9126 Apr 8, 2025
2e7ed9c
Drop support for Python 3.10 (#362)
alihamdan Apr 15, 2025
93e4b61
Fix and improve the ZIP load equations in the docs
alihamdan Apr 15, 2025
feb25b7
Detect parameters with duplicate IDs (#361)
alihamdan Apr 16, 2025
3c0c9b3
Fix missing transformer floating neutral (#364)
alihamdan Apr 17, 2025
612f249
Fix minor inconsistency in sc parameters calculation of transformers …
alihamdan Apr 17, 2025
19226d8
Improve the transformer parameters and the catalogue (#366)
alihamdan Apr 18, 2025
60d2269
[single] Return scalar results as Python objects (#367)
alihamdan Apr 24, 2025
24bd08b
Rename internal branch getter methods (#368)
alihamdan Apr 28, 2025
13fca5c
Add debugging solver getters
Saelyos Apr 28, 2025
6bef895
Add debugging solver setter
Saelyos Apr 28, 2025
2a46e8d
Rename methods
Saelyos Apr 29, 2025
c929450
Move solver methods
Saelyos Apr 29, 2025
567cd24
Add properties
Saelyos Apr 29, 2025
fd61df6
Fix property doc
Saelyos Apr 29, 2025
15cfadb
Merge pull request #370 from RoseauTechnologies/engine-improvements
Saelyos Apr 29, 2025
b478fc4
Add results of ground potential to shunt line (#369)
alihamdan Apr 29, 2025
86b2871
Deprecate forgotten transformer properties from last release (#371)
alihamdan Apr 29, 2025
a9a7cd2
[single] Performance improvements (#372)
alihamdan Apr 30, 2025
e4f6bd4
Bump astral-sh/setup-uv from 5 to 6 (#373)
dependabot[bot] May 2, 2025
3959d71
Refactor network and element classes (#374)
alihamdan May 7, 2025
59910de
Simplify code with Python 3.11+ idioms (#376)
alihamdan May 12, 2025
03c3d35
ENH: Add check-json-schema hook
benoit9126 May 22, 2025
3a74f09
ENH: Add typos checker hook
benoit9126 May 22, 2025
63175c9
ENH: Use zizmor pre-commit hook
benoit9126 May 22, 2025
202aa8c
ENH: Add mdformat pre-commit hook
benoit9126 May 22, 2025
d7cc9b1
ENH: Add biome pre-commit hook
alihamdan May 23, 2025
ef46987
Merge pull request #377 from RoseauTechnologies/pre-commit
alihamdan May 23, 2025
dcf83d8
Fix missing neutral ampacity in line params geometric model (#380)
alihamdan Jun 11, 2025
fb35b5f
Improve line models for rlfs (#381)
alihamdan Jun 12, 2025
7f5f952
Fix voltage propagation when traversing step-up transformer (#382)
alihamdan Jun 13, 2025
5317d2f
Improve conversion of asymmetric multi-phase lines to single-phase li…
alihamdan Jun 16, 2025
53cab77
Add branch sides (#385)
alihamdan Jul 7, 2025
ec00f38
Update biome to 2.1 and use it to format html (#386)
alihamdan Jul 11, 2025
30f11f2
Stop reformatting arrays in json output (#387)
alihamdan Jul 15, 2025
bb585ef
Add external tool data to the electrical network (#388)
alihamdan Jul 16, 2025
1918ddb
Add support for open switches (#389)
alihamdan Jul 21, 2025
2c05e0d
Delete unused variables
alihamdan Jul 22, 2025
e1aa8c6
Return multi-graph from `en.to_graph` (#391)
alihamdan Jul 22, 2025
f2ca894
Fix disconnecting loads and sources (#392)
alihamdan Jul 23, 2025
be458a6
ENH: Use uv build backend
benoit9126 Jul 23, 2025
983ccac
Merge pull request #393 from RoseauTechnologies/uv-build-backend
benoit9126 Jul 23, 2025
5f5e2dd
ENH: Relax the RLFE requirements
benoit9126 Jul 23, 2025
3b4ed46
Support musl linux (#394)
alihamdan Jul 24, 2025
ad7b12b
Improve plotting interactive map (#395)
alihamdan Jul 24, 2025
3d2df9c
Allow passing a single flex param to loads (#396)
alihamdan Jul 25, 2025
e92d831
[single] Add conversion from rlf including for catalogue networks (#397)
alihamdan Jul 31, 2025
d1b6a59
Improve the performance of network results and network serialization …
alihamdan Jul 31, 2025
314a2ea
Add popup and search to interactive map plots (#399)
alihamdan Aug 1, 2025
0887227
Add LineParameters.to_sym method (#400)
alihamdan Aug 4, 2025
d79f2d5
Flatten the models package (#401)
alihamdan Aug 4, 2025
05185c3
Add results plotting for rlfs (#402)
alihamdan Aug 4, 2025
89c5b7a
Make the graph data of the network json serializable (#403)
alihamdan Aug 5, 2025
dffb77e
Add deprecation version comments and break import cycles
alihamdan Aug 5, 2025
30131f1
Prepare release
benoit9126 Aug 29, 2025
157b3b8
Fix switch dict missing closed parameter
alihamdan Aug 29, 2025
4c3f9d2
Fix catalogue string matching with new pandas
alihamdan Aug 29, 2025
42e5b5b
Upgrade network files to latest version
alihamdan Aug 29, 2025
28435c9
Merge pull request #405 from RoseauTechnologies/fixes-and-network-upd…
alihamdan Aug 29, 2025
687aaf7
One more fix for pandas string pattern matching
alihamdan Aug 29, 2025
095b3d6
Bump version
benoit9126 Aug 29, 2025
0277ebb
ENH: Pin RLFE
benoit9126 Aug 29, 2025
22f1630
ENH: Add classifiers
benoit9126 Sep 1, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
10 changes: 8 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,24 @@ env:
UV_SYSTEM_PYTHON: 1
COVERAGE_CORE: sysmon

permissions: {}

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.11", "3.12", "3.13"] #, "3.13t", "3.14-dev"] # waiting for pyproj support

permissions:
contents: read

steps:
- uses: actions/checkout@v4
with:
lfs: false
persist-credentials: false

- name: Create LFS file list
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
Expand All @@ -52,7 +58,7 @@ jobs:
git lfs prune --verify-remote

- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v6
with:
enable-cache: true

Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,18 @@ on:
- ".vscode/**"
- ".idea/**"

permissions: {}

jobs:
pre-commit:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
lfs: false
persist-credentials: false
- uses: actions/setup-python@v5
with:
python-version: "3.13"
Expand Down
47 changes: 41 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
exclude: ^.idea/|.vscode/
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: check-json
- id: check-merge-conflict
Expand All @@ -11,13 +11,28 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.6.6
rev: 0.8.14
hooks:
- id: uv-lock
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.33.3
hooks:
- id: check-github-workflows
- id: check-dependabot
- id: check-readthedocs
- repo: https://github.com/crate-ci/typos
rev: v1.35.6
hooks:
- id: typos
args: [--force-exclude]
- repo: https://github.com/woodruffw/zizmor-pre-commit
rev: v1.12.1
hooks:
- id: zizmor
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.10
rev: v0.12.11
hooks:
- id: ruff
- id: ruff-check
args: [--fix]
- id: ruff-format
- repo: https://github.com/adamchainz/blacken-docs
Expand All @@ -26,14 +41,34 @@ repos:
- id: blacken-docs
files: ^doc/.*\.md$
args: [-l 90]
- repo: https://github.com/executablebooks/mdformat
rev: 0.7.22
hooks:
- id: mdformat
additional_dependencies:
- mdformat-pyproject
- mdformat-myst
- mdformat-gfm
- mdformat-gfm-alerts
# - mdformat-ruff
- mdformat-config
- mdformat-deflist
exclude: ^.github/.*\.md$
- repo: https://github.com/rbubley/mirrors-prettier
rev: v3.5.3
rev: v3.6.2
hooks:
- id: prettier
args: ["--print-width", "120"]
require_serial: true
types_or: [yaml]
- repo: https://github.com/cmhughes/latexindent.pl
rev: V3.24.4
rev: V3.24.7
hooks:
- id: latexindent
args: [-l, -m, -s, -wd]
- repo: https://github.com/biomejs/pre-commit
rev: v2.2.2
hooks:
- id: biome-check
types_or: [json, html, css]
files: ".*" # Override default files regex that excludes html, rely on `types_or` instead
13 changes: 5 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@
},

// Python
"python.analysis.diagnosticSeverityOverrides": {
"reportInvalidStringEscapeSequence": "warning",
"reportImportCycles": "warning",
"reportUnusedImport": "warning",
},
"python.testing.pytestEnabled": true,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
Expand All @@ -22,12 +17,14 @@
},
// Prettier
"prettier.printWidth": 120,
"[markdown][yaml][html][css]": {
"[yaml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
},
// Json
"[json]": {
// Biome
"[json][html][css]": {
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"editor.indentSize": 2,
},
}
35 changes: 15 additions & 20 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,22 @@ BSD 3-Clause License

Copyright (c) 2018, Roseau Technologies

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 changes: 16 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,39 +18,38 @@ _Roseau Load Flow_ is a powerful load flow solver and static analysis tool that
In addition to the following **unique** set of features:

- Support for _floating neutrals_ for loads and sources
- Four-wire multi-phase modelling with no Kron's reduction, no transformations, no assumptions on the
network topology and no implicit earthing everywhere
- Support for **flexible**, voltage-dependent, loads directly in the Newton algorithm for better
convergence and stability
- Four-wire multi-phase modelling with no Kron's reduction, no transformations, no assumptions on the network topology
and no implicit earthing everywhere
- Support for **flexible**, voltage-dependent, loads directly in the Newton algorithm for better convergence and
stability

<!-- end rlf-pitch -->

This project is compatible with Python version 3.10 and newer. The
[installation instructions](https://roseau-load-flow.roseautechnologies.com/en/latest/Installation.html)
will guide you through the installation process. If you are new to _Roseau Load Flow_, we recommend
you start with the
[getting started tutorial](https://roseau-load-flow.roseautechnologies.com/en/latest/usage/Getting_Started.html).
You can find the complete documentation at https://roseau-load-flow.roseautechnologies.com/.
This project is compatible with Python version 3.11 and newer. The
[installation instructions](https://roseau-load-flow.roseautechnologies.com/en/latest/Installation.html) will guide you
through the installation process. If you are new to _Roseau Load Flow_, we recommend you start with the
[getting started tutorial](https://roseau-load-flow.roseautechnologies.com/en/latest/usage/Getting_Started.html). You
can find the complete documentation at https://roseau-load-flow.roseautechnologies.com/.

## License

This project is _partially_ open source but using the solver requires a license. The license key
`A8C6DA-9405FB-E74FB9-C71C3C-207661-V3` can be used free of charge with networks containing up to 10
buses. To obtain a personal or commercial license, please contact us
at [contact@roseautechnologies.com](mailto:contact@roseautechnologies.com).
`A8C6DA-9405FB-E74FB9-C71C3C-207661-V3` can be used free of charge with networks containing up to 10 buses. To obtain a
personal or commercial license, please contact us at
[contact@roseautechnologies.com](mailto:contact@roseautechnologies.com).

> [!NOTE]
> Licenses are given free of charge for **students and teachers**. Please contact us at
> contact@roseautechnologies.com for more information.
> Licenses are given free of charge for **students and teachers**. Please contact us at contact@roseautechnologies.com
> for more information.

Read more at [License](https://roseau-load-flow.roseautechnologies.com/en/latest/License.html).

## Network data

<!-- start rlf-networks -->

_Roseau Load Flow_ ships with a sample of 20 low-voltage and 20 medium-voltage feeder networks. Each
network is provided with its summer and winter load points.
_Roseau Load Flow_ ships with a sample of 20 low-voltage and 20 medium-voltage feeder networks. Each network is provided
with its summer and winter load points.

To go further, you can also use
[these 150 distribution networks](https://www.data.gouv.fr/fr/datasets/departs-hta-representatifs-pour-lanalyse-des-reseaux-de-distribution-francais/),
Expand All @@ -74,5 +73,4 @@ This software is developed by [Roseau Technologies](https://www.roseautechnologi

Follow us on:
[![Linkedin](https://i.sstatic.net/gVE0j.png) LinkedIn](https://www.linkedin.com/company/roseau-technologies/)
&nbsp;
[![GitHub](https://i.sstatic.net/tskMh.png) GitHub](https://github.com/RoseauTechnologies)
43 changes: 43 additions & 0 deletions biome.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"$schema": "https://biomejs.dev/schemas/2.2.2/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": {
"ignoreUnknown": false,
"maxSize": 2097152 // 2 MiB to accommodate the networks Catalogue.html file (1.6 MiB)
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 120,
"lineEnding": "lf"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"html": {
"formatter": {
"enabled": true // Enable experimental HTML formatting
}
}
}
1 change: 1 addition & 0 deletions doc/Bibliography.bib
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

@article{Klimek_2020,
doi = {10.21468/scipostphys.9.4.053},
url = {https://doi.org/10.21468%2Fscipostphys.9.4.053},
Expand Down
Loading