Lightsim2grid

Latest version: v0.9.2

Safety actively analyzes 681775 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 6

0.9.2

--------------------------
- [ADDED] support loading a grid when everything is NOT on the same bus
(`topo_vect` used to be wrong in this case). This is especially usefull
for grid loaded with `pypowsybl`
- [ADDED] a file benchmarking the timings for running powerflow on different
grid sizes.
- [UPDATED] urls to match the new repo location
- [UPDATED] urls to match new grid2op location

0.9.1

--------------------------
- [FIXED] a bug due to wrong type (in a numpy array) for the element name which lead in turn
to a fail assertion (equality between two numpy arrays returning a bool and not an array)
- [FIXED] a bug when init a grid from pypowsybl: the wrong value was used for trafos `h` (double)
- [FIXED] a bug when init a grid from pypowsybl: wrong values for `_ls_to_orig` and `_orig_to_ls`
was set (and later used)
- [FIXED] yet another bug when init a grid from pypowsybl: the voltage in kV (not in pu)
could be set due to "wrong" labelling of the bus ids
- [FIXED] yet another bug when init a grid from pypowsybl: the ratio of the transformers
sent in lightsim2grid did not take into account the "`rated_u1` `rated_u2`" on both side
(only used on one side)
- [FIXED] yet another bug when init a grid from pypowsybl: the ratio of the transformers
sent in lightsim2grid did not take into account the ratio in the `pypow_net.get_ratio_tap_changers()`
- [ADDED] a method for the `ContingencyAnalysisCPP` class that returns, for all contingencies
in the contingency list, which will be simulated and which causes the grid to be disconnected.
- [ADDED] it is now possible to use "one substation" (voltage level) pypowsybl side is
one substation in lightsim2grid.
- [IMPROVED] removing a weird `1j * h_` when initializing powerlines and transformers. This was
part of a pandapower "hack" which is not present anymore (see
https://github.com/Grid2Op/lightsim2grid/issues/88#issue-2443299039)

0.9.0

--------------------------
- [BREAKING] installing pandapower lightsim2grid does not require anymore to install
pandapower (you can initialize `GridModel` with pypowsybl or pandapower if you want). To make it both
cleaner and clearer the function `lightsim2grid.gridmodel.init` has been removed.
Please use `lightsim2grid.gridmodel.init_from_pandapower` or
`lightsim2grid.gridmodel.init_from_pypowsybl` from now on
- [BREAKING] the previous `gridmodel.get_ptdf()` function was wrongly labelled with the
"solver" bus id and not the `gridmodel` bus id which could cause issue when it was computed
on some grid configuration. It has now been fixed (so the `gridmodel.get_ptdf` returns the
proper things). If you want the previous behaviour, you need to use `gridmodel.get_ptdf_solver()`
- [BREAKING] similarly, `gridmodel.get_Ybus()`, `gridmodel.get_dcYbus()`, `gridmodel.get_Sbus()`
and `gridmodel.get_dcSbus()` now return things in the `gridmodel` bus ordering. For the previous
behaviour you can use `gridmodel.get_Ybus_solver()`, `gridmodel.get_dcYbus_solver()`,
`gridmodel.get_Sbus_solver()` and `gridmodel.get_dcSbus_solver()`
- [BREAKING] the more rational logic above also extends to all the functions listed in the
table below:

=============================== ===================================================
Function with behaviour change Name of the new function having the same behaviour
=============================== ===================================================
gridmodel.get_ptdf() gridmodel.get_ptdf_solver()
gridmodel.get_Ybus() gridmodel.get_Ybus_solver()
gridmodel.get_dcYbus() gridmodel.get_dcYbus_solver()
gridmodel.get_Sbus() gridmodel.get_Sbus_solver()
gridmodel.get_dcSbus() gridmodel.get_dcSbus_solver()
gridmodel.get_pv() gridmodel.get_pv_solver()
gridmodel.get_pq() gridmodel.get_pq_solver()
gridmodel.get_slack_ids() gridmodel.get_slack_ids_solver()
gridmodel.get_slack_ids_dc() gridmodel.get_slack_ids_dc_solver()
gridmodel.get_slack_weights() gridmodel.get_slack_weights_solver()
gridmodel.get_V() gridmodel.get_V_solver()
gridmodel.get_Va() gridmodel.get_Va_solver()
gridmodel.get_Vm() gridmodel.get_Vm_solver()
gridmodel.get_J() gridmodel.get_J_solver()
gridmodel.get_Bf() gridmodel.get_Bf_solver()
=============================== ==================================================

- [FIXED] the `change_solver` in the `ContingencyAnalysis` did not work correctly.
More specifically the solver type used might not be correct if changed which could
lead to wrong Ybus being passed to the solver.
- [FIXED] some compatibility mode with python `3.7`
- [FIXED] a bug when "turned off" generator were not PV (slack was
"turned off" when its target P was 0. But still the slack so ends up producing something...)
- [FIXED] (consistency with pandapower) when an intial powerflow is run
to initialized an AC powerflow, the initial voltages are 1 pu (and
not `gridmodel.get_init_vm_pu()` as previously).
- [FIXED] `gridmodel.get_ptdf()` now have the
normal "gridmodel" bus id representation and not the "solver" bus ordering.
- [FIXED] `gridmodel.get_lodf()` issue wrong results in case of some
topological modification
- [FIXED] calls to methods such as `gridmodel.get_pv` or `gridmodel.get_V`
or `gridmodel.get_Ybus` could lead to severe crashes (segmentation fault)
on some (rare) cases. Now an exceptions should be thrown in these cases.
- [FIXED] basic backward compatibility is ensured and tested for legacy grid2op >= 0.9.1.post1
Not all features are tested and only 1.x versions are tested
(ie 1.1 or 1.2 but not 1.2.1, 1.2.2, 1.2.3 etc.) and only for python 3.11
- [FIXED] a bug when using `LightSimBackend` with some old (but not too old) grid2op
versions.
- [FIXED] various compatibility bugs when using old grid2op versions.
- [ADDED] it is now possible to deactivate the support for shunts by
subclassing the LightSimBackend class and setting the `shunts_data_available`
to `False`
- [IMPROVED] in the `ContingencyAnalysis` class, the underlying cpp model will now
perform an initial powerflow.
- [IMPROVED] distributed wheels are now compiled (whenever possible) with numpy 2.
This makes them compatible with both numpy 1.x.y and numpy 2.z.t versions.
- [IMPROVED] tests are now performed when lightsim2grid is compiled with
the latest clang (18) and gcc (14) versions on the CI using python 3.11

0.8.2.post1

--------------------------
- [FIXED] a "forward compatibility" issue with grid2op 1.10.2
(due to wrong usage of some internal classes when loading a pandapower grid)

0.8.2

--------------------
- [FIXED] CI was broken after migration to artifact v4, set it back to v3
(and make the names of the folder clearer)
- [FIXED] CI when using latest pandapower version (2.14) which broke some previous tests
- [ADDED] the computation of the LODF (line outage distribution factor) in
lightsim2grid
- [ADDED] some convenience functions to retrieve in a vectorized way the
buses to which each elements of a given container is connected
(*eg* `gridmodel.get_lines().get_bus_from()`)
- [ADDED] more binaries (windows `arm64` and macos `arm64`)
- [IMPROVED] remove some compilation warnings for clang
- [IMPROVED] possibility to specify generator used as slack by its name when initializing
from `pypowsybl`.
- [IMPROVED] removing some warnings when grid2op is not installed
(it should not raise any warning as lightsim2grid does not require grid2op)

0.8.1

--------------------
- [FIXED] a bug with shunts when `nb_busbar_per_sub` >= 2
- [FIXED] some bugs preventing backward compatibility
- [FIXED] an issue in the computation of gen_q when intialized with pypowsybl
(some overflow cpp side leading to infinite number in gen_q)
- [FIXED] a bug in the "containers" cpp side (wrong bus was assigned)
when elements was disconnected, which lead to wrong computations for
time series or contingency analysis.
- [FIXED] another bug in ContingencyAnalysis (cpp side) leading to wrong computation
when a powerline was disconnected
- [FIXED] some broken imports when grid2op was not installed
- [FIXED] missing "typing_extension" as required when installation
- [ADDED] some information of compilation directly in the cpp module
- [ADDED] some information of compilation available in the python `compilation_options`
module python side
- [ADDED] some convenient methods for `ContingencyAnalysis` python side (most
notably the possibility to initialize it from a `LightSimBackend` and to
change the topology of the grid)
- [ADDED] a "reward" module in lightsim2grid with custom reward
based on lightsim2grid.
- [ADDED] a class `N1ContingencyReward` that can leverage lightsim2grid to
assess the number of safe / unsafe N-1.
- [IMPROVED] time measurments in python and c++
- [IMPROVED] now test lightsim2grid with oldest grid2op version
- [IMPROVED] speed, by accelerating the reading back of the data (now read only once and then
pointers are re used)
- [IMPROVED] c++ side avoid allocating memory (which allow to gain speed python side too)
- [IMPROVED] type hinting in `LightSimBackend` for all 'public' methods (most
notably the one used by grid2op)
- [IMPROVED] now the benchmarks are more verbose (detailing some compilation options)

Page 1 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.