Changelog¶
Version 0.10.0¶
A wheel for Python 3.13 is available.
The wheels for Windows are now available. The problem was the same as the one of the issue 28551 of the Matplotlib repository.
PR237 Improvements of the Sphinx configuration.
PR262 Raise a proper error when a transformer is defined with null impedance.
PR259 The cache of the license object was not reset after the activation of a new license key.
PR258 PR261 PR263 Add basic plotting functionality in the new
roseau.load_flow.plotting
module. Theplot_interactive_map
function plots an electrical network on an interactive map using the folium library and theplot_voltage_phasors
function plots the voltage phasors of a bus, load or source in the complex plane. The revamped plotting section of the documentation demonstrates the plotting functionalities available in Roseau Load Flow with examples.PR258 The documentation gained a new “advanced” section with a page on floating neutrals and a page on potential references.
PR257 GH252 Updates to the
LineParameters
class:The method
from_name_lv
, deprecated since version 0.6, has been removed. It can be easily replaced by thefrom_geometry
method.The method
from_name_mv
is deprecated. A new methodfrom_coiffier_model
is added with the same functionality and more flexibility. The new method computes the ampacity of the line based on Coiffier’s model and works with different numbers of phases.
-
Accept scalar values for the
powers
,currents
,impedances
parameters of the load classes.Add
rlf.PositiveSequence
,rlf.NegativeSequence
andrlf.ZeroSequence
vectors for easier creation of balanced quantities.
PR255 Update the figures of loads and of voltage sources in the documentation to be compliant with the work of PR249.
PR254 GH251 Allow passing multiple phases to potential references. The
phase
attribute of thePotentialRef
is replaced byphases
.PR249 GH248 Accept scalar values for the
voltages
parameter of theVoltageSource
class.PR247 Add
connect_neutral
parameter to the loads and sources constructor to specify if the neutral is to be connected to the bus’s neutral or to be left floating. This allows loads connected to the same bus to have different neutral connections. The default behavior remains the same as before where the neutral is connected when the bus has a neutral and floating otherwise.PR246 Improvements to the
rlf.converters
module:Fix
series_phasor_to_sym
function with series that have different phases per element.Make
calculate_voltages
take array-like potentials.Improve typing of several functions.
PR245 GH244 Fix the
LineParameters.from_geometry
method to not crash when passedunknown
insulator type orNone
.Add
res_voltages
to theVoltageSource
class for symmetry with the other elements.res_voltages
is always equal to the suppliedvoltages
for a voltage source.PR243 Fix cross-sectional area of DGS line types created from line elements and special case invalid PwF line geographical coordinates table.
PR240 Add tests for switches imported from DGS and improve warning and error messages.
PR235 BREAKING CHANGE: The constructor of the class
ElectricalNetwork
has changed:it accepts keyword arguments only.
it accepts the arguments
lines
,transformers
andswitches
in replacement of the argumentbranches
.As a consequence,
the results method
res_branches
has been removed. Please useres_lines
,res_transformers
andres_switches
methods instead.the field
branches
does not exist anymore. Please use the fieldslines
,transformers
andswitches
.
PR235 Move the
Switch
class into its own fileroseau/load_flow/models/switches.py
.PR235 PR239 The JSON file format number is upgraded to the version 2. All the files in version 0 or 1 can still be read. Please upgrade them manually using the following code:
path = "my_json_file.json" ElectricalNetwork.from_json(path).to_json(path)
PR235 The method
results_to_dict
now accepts the keyword-only argumentfull
which allows the export of all the results of an element.PR235 Solve a bug concerning the accessors to the flexible powers result of flexible power loads. An unwanted error was raised.
PR235 Replace the occurrences of the
str.find
method by thestr.index
function.PR235 The method
to_graph
of the classElectricalNetwork
now retrieves a graph with additional data store in the edges depending on the edge type: line, transformer or switch.PR242 Add optional data to the
TransformerParameters
class: manufacturer, efficiency and range.PR242 Fixed a bug in the unit of
q_min
andq_max
in the constructor ofFlexibleParameter
.PR242 Add equality operator for the classes
FlexibleParameter
,Control
andProjection
.
Version 0.9.1¶
Note
The wheels for Windows are temporarily unavailable anymore. If you need them, please post an issue on GitHub.
PR231 Add
LineParameters.from_power_factory
andTransformerParameters.from_power_factory
methods to easily import PowerFactory lines and transformer models into Roseau Load Flow.PR230 Improve the algorithm for assigning potential references for DGS networks.
PR229 Several fixes and improvements to the PowerFactory import:
Update the “Export Definition Folder” bundled with Roseau Load Flow as a pfd file;
Support lines with missing type ID. This is the case when the
TypLne
objects are inherited from an external library in PowerFactory and not included in the project being exported; ALineParameters
object is automatically created for these lines;Support “General Load (
ElmLod
)” elements;Preserve Geometry information on buses and branches;
Improve handling of phases of several elements. Previously, phases were hard-coded.
Fix the unit of the power of static generators;
Fix the re-sizing of the matrices of line types without neutral elements;
Fix the total power of “MV Loads (
ElmLodmv
)” to take into account the generation power;Fix all loads to no longer ignore the scale factor of the power;
Fix the sign of the reactive power of MV and LV loads
Fix the ground connection to the source bus
And many more…
Version 0.9.0¶
PR227 Sources and loads are now allowed to have floating neutrals. This means that a load/source with
phases="abcn"
can now be connected to a bus withphases="abc"
.PR225 The
calculate_voltages
function now accepts and return pint quantities.MacOS wheels for roseau-load-flow-engine are now published on PyPI. This means that
pip install roseau-load-flow
should now work on macOS.Added support for running in Google Colab documents.
Fixed a bug in license checks caching on Windows.
Added support for Numpy 2.0.
GH222 PR223
from_catalogue()
methods of the electrical network and transformer and line parameters now perform “full match” comparison on textual inputs. If you need the old behavior, use regular expression wild cards.*
in the input string.GH220 PR221 Add
LineParameters.from_open_dss
andTransformerParameters.from_open_dss
methods to easily import OpenDSS lines and transformer models into Roseau Load Flow. More information is available in the documentation of these methods.GH210 PR219 Add a parameter to
LineParameters.from_catalogue
to choose the number of phases of the created line parameters object.PR218 Add
Transformer.res_power_losses
to get the total power losses in a transformer.PR217 Add an ID override to
TransformerParameters.from_catalogue
similar toLineParameters.from_catalogue
.GH216 PR217 BREAKING CHANGE: Rename the
id
parameter ofTransformerParameters
catalogue methods toname
to be consistent withLineParameters
. If you call these methods by keyword arguments, make sure to update your usage ofTransformerParameters.from_catalogue(id="xxx")
toTransformerParameters.from_catalogue(name="xxx")
.PR212 BREAKING CHANGE: Modify the constructor of
TransformerParameters
to take thez2
andym
parameters directly instead of the open and short circuit tests parameters. You can still create an object from these tests using thefrom_open_and_short_circuit_tests
constructor. This change comes with other changes toTransformerParameters
, notably:The
z2
,ym
,k
, andorientation
are now always available as attributes on the instanceThe
to_zyk
method is deprecated in favour of the direct attribute access on the instance. This method will be removed in a future versionThe parameters
i0
,p0
,psc
, andvsc
are now optional. They return None for instances created usingz2
andym
directlyThe JSON representation of
TransformerParameters
has changed, but it is still compatible with the old representation.
Version 0.8.1¶
GH214 Solve a bug in the engine when using delta connected flexible loads.
PR213 Better detection of poorly connected elements as described in GH209. It raises a proper error message.
PR211 Several improvements of the documentation:
Add Open Graph metadata to the documentation page.
Error on the susceptance unit in the tables of the
LineParameters
’ catalogue.Replot the networks of the catalogue (add a
H1
title, use the Raleway font, only plot the lines to add their parameters id in the tooltip)
Version 0.8.0¶
PR207 Fix a bug in the zig-zag three-phase transformer model that led to incorrect active power flow in the transformer. The bug affected the 50 kVA transformers that have the type
Yzn11
in the catalogue.PR206 GH187 Un-deprecate
results_to_dict/json
methods and remove deprecatedresults_from_dict/json
methods.PR205 GH200 Fix error when propagating the potentials from a voltage source with fewer phases than the bus.
PR204 GH193 Remove restrictions on geometry types. Allow specifying the CRS of the geometries.
PR203 GH186 Detect invalid element overrides when connecting a new element with the same ID and type of an existing element.
PR202 GH188 Explicitly prevent instantiation of abstract classes.
PR201 GH185 Add
type
attribute to the load classes and rename branchesbranch_type
attribute totype
for consistency. Please replacebranch.branch_type
bybranch.type
in your code. In addition, loads data frames gained two new columns:type
indicating the load type: constant-(power
,current
,impedance
);and
flexible
indicating if the load is flexible.
PR197 Fix a bug in three-phase transformer models that led to excessive reactive power flow in the transformer.
PR199 Add Schneider Electric EcoDesign transformers to the catalogue. These are tagged with the AA0Ak efficiency class. Other internal data have been added to the catalogue for testing purposes.
PR198 Simplify the storage of the transformer catalogues. This is an internal change that should not have effects on user code.
PR196 GH194 Improve the error message when accessing
res_flexible_powers
on a non-flexible load and relax the flexible parameters plotting methods to accept an array-like of voltages.PR195 Use
latexindent.pl
to automatically indent LaTeX files in the documentation.PR192 Speed up results access by up to 3x using several optimization techniques. This is especially noticeable in timeseries simulations and when accessing results of large networks.
PR184 Improve the documentation to have a better SEO (sitemap, metadata and canonical URLs). The navigation menu has also been improved.
PR183 GH181 Update the networks catalogue to better represent the real networks. LV loads are made single-phase, MV sources are connected in delta, and MV buses lost their neutral. Voltage, current, and power limits are added to the buses, lines, and transformers. The line parameters IDs are also updated to match the new line parameters catalogue.
PR182 Improve the error message when trying to access results on the network before running the load flow.
PR189 Allow flexible loads to have a null active theoretical power.
Version 0.7.0¶
Important
Starting with version 0.7.0, Roseau Load Flow is no longer supplied as a SaaS. The software is now available as a standalone Python library.
The documentation is moved from GitHub Pages to https://roseau-load-flow.roseautechnologies.com/.
Fix a bug in the engine: it was impossible to change the parameters of center-tapped and single phase transformers.
PR179 Fix a bug in the propagation of potentials when a center-tapped transformer is used without neutral at the primary side.
PR178 GH176 Merge the
results_to_json
,results_from_json
,results_to_dict
andresults_from_dict
methods of theElectricalNetwork
andElement
s classes into the methodsto_json
,from_json
,to_dict
andfrom_dict
respectively. The oldresults_
methods are deprecated and will be removed in a future release. The new methods will include the results by default, but you can passinclude_results=False
to exclude them.PR175 GH174 Fix JSON serialization of network with line parameters created from the catalogue.
PR173 Remove the conda installation option.
PR167 GH161 Add a catalogue of lines using the IEC standards. You can use the method
LineParameters.get_catalogue()
to get a data frame of the available lines and the methodLineParameters.from_catalogue()
to create a line from the catalogue. Several line types, conductor material, and insulation types have been updated. Physical constants have been updated to match the IEC standards where applicable.PR167 The class
LineParameters
now takes optional argumentsline_type
,conductor_type
,insulator_type
andsection
. These parameters are accessible as properties. They are filled automatically when creating a line from the catalogue or from a geometry.PR167 Replace all
print_catalogue()
methods byget_catalogue()
methods that return a data frame instead of printing the catalogue to the console.PR167 Enumeration classes no longer have a
from_string
method, you can call the enumeration class directly with the string value to get the corresponding enumeration member. Case-insensitive behavior is preserved.PR167 GH122 Add checks on line height and diameter in the
LineParameters.from_geometry()
alternative constructor. This method will try to guess a default conductor and insulation type if none is provided.PR163 BREAKING CHANGE: roseau-load-flow is no longer a SaaS project. Starting with version 0.7.0, the software is distributed as a standalone Python package. You need a license to use it for commercial purposes. See the documentation for more details. This comes with a huge performance improvement but requires a breaking change to the API:
The
ElectricalNetwork.solve_load_flow()
method no longer takes anauth
argument.To activate the license, you need to call
roseau.load_flow.activate_license("MY LICENSE KEY")
or set the environment variableROSEAU_LOAD_FLOW_LICENSE_KEY
(preferred) before callingElectricalNetwork.solve_load_flow()
. More information in the documentation.Several methods on the
FlexibleParameter
class that previously requiredauth
are changed. Make sure to follow the documentation to update your code.
PR163 GH158 Fix
ElectricalNetwork.res_transformers
returning an empty dataframe when max_power is not set.PR163 Several unused exception codes were removed. An
EMPTY_NETWORK
code was added to indicate that a network is being created with no elements.PR163 Remove the
ElectricalNetwork.res_info
attribute.ElectricalNetwork.solve_load_flow()
now returns the tuple (number of iterations, residual).PR163 Remove the
Bus.clear_short_circuits()
andElectricalNetwork.clear_short_circuits()
methods. It is currently not possible to clear short-circuits from the network.PR163 Improve performance of network creation and results access.
PR163 Attributes
phases
andbus
are now read-only on all elements.PR151 Require Python 3.10 or newer.
Version 0.6.0¶
PR149 GH145 Add custom pint wrapper for better handling of pint arrays.
PR148 GH122 deprecate
LineParameters.from_name_lv()
in favor of the more genericLineParameters.from_geometry()
. The method will be removed in a future release.PR142 GH136 Add
Bus.res_voltage_unbalance()
method to get the Voltage Unbalance Factor (VUF) as defined by the IEC standard IEC 61000-3-14.PR141 GH137 Add
ElectricalNetwork.to_graph()
to get anetworkx.Graph
object representing the electrical network for graph theory studies. Install with the"graph"
extra to get networkx.ElectricalNetwork
also gained a newbuses_clusters
property that returns a list of sets of IDs of buses that are connected by a line or a switch. This can be useful to isolate parts of the network for localized analysis. For example, to study a LV subnetwork of a MV feeder. Alternatively, to get the cluster certain bus belongs to, you can useBus.get_connected_buses()
.PR141 Add official support for Python 3.12. This is the last release to support Python 3.9.
PR138 Add network constraints for analysis of the results.
Buses can define minimum and maximum voltages. Use
bus.res_violated
to see if the bus has over- or under-voltage.Lines can define a maximum current. Use
line.res_violated
to see if the loading of any of the line’s cables is too high.Transformers can define a maximum power. Use
transformer.res_violated
to see if the transformer loading is too high.The new fields also appear in the data frames of the network.
PR133 GH126 Add Qmin and Qmax limits of flexible parameters.
PR132 GH101 Document extra utilities including converters and constants.
PR131 GH127 Improve the documentation of the flexible loads.
Add the method
compute_powers
method to theFlexibleParameter
class to compute the resulting flexible powers for a given theoretical power and a list of voltage norms.Add the
plot_control_p
,plot_control_q
andplot_pq
methods to theFlexibleParameter
class to plot the control curves and control trajectories.Add the extra
plot
to installmatplotlib
alongsideroseau-load-flow
.
PR131 Correction of a bug in the error message of the powers setter method.
PR130 Mark some internal attributes as private, they were previously marked as public.
PR128 Add the properties
z_line
,y_shunt
andwith_shunt
to theLine
class.PR125 Speed-up build of conda workflow using mamba.
Version 0.5.0¶
PR121 GH68 Improvements of the
LineParameters
constructor:Delete the
LineModel
classSimplify the
from_dict
methodRename and refactor the method
from_lv_exact
intofrom_geometry
.Add documentation for the
LineParameters
alternative constructors.Rename
InsulationType
intoInsulatorType
.Allow the letter “U” for “Underground” line type (only “S” for “Souterrain” in French was accepted). The same with the letter “O” for “Overhead” line type (only “A” for “Aérien” in French was accepted).
Remove the field
"model"
from the JSON serialization ofLineParameters
.
PR120 Fix phases of flexible power results.
PR119 Add explicit error message for singular jacobian.
-
Add a catalogue of three-phase MV/LV distribution transformers.
Remove the class method
TransformerParameters.from_name
.
PR117 Add prettier to pre-commit
-
Add a catalogue of networks.
Add a plotting page to the documentation.
-
Reformat the tutorials in the documentation.
Split the “Advanced” tutorial in several smaller files.
Remove the Docker installation option.
PR114 Use Pint >=0.21 to have the percent unit.
PR113 Raise an error when accessing the results of disconnected elements.
PR112 Make the geometry serialization optional.
PR106 Improvements for non-euclidean projections.
PR104 Remove
roseau.load_flow.utils.BranchType
.GH99 Add
Line.res_series_currents
andLine.res_shunt_currents
properties to get the currents in the series and shunt components of lines. Also addedElectricalNetwork.res_lines
that contains the series losses and currents of all the lines in the network. The propertyElectricalNetwork.res_lines_losses
was removed.GH100 Fix the
Yz
transformers.PR97 Add the model section to the documentation.
-
Add single-phase transformer.
Add center-tapped transformer.
Remove the
roseau.load_flow.utils.TransformerType
enumeration.
PR93 Add short-circuit computation.
-
Add the changelog in the documentation.
Use Node.js 20 in the Dockerfile.
Correction of a dead link in the README.
Version 0.4.0¶
Version 0.3.0¶
Every network elements have an
id
which must be unique among the same type of elements.The argument
n
(number of ports) have been replaced by aphase(s)
argument which can be for instancean
,abc
,abcn
,ca
, etc.The classes
SimplifiedLine
andShuntLine
have been merged into a single classLine
whose behaviour depends on the providedLineParameters
.The classes
DeltaDeltaTransformer
,DeltaWyeTransformer
,DeltaZigzagTransformer
,WyeDeltaTransformer
,WyeWyeTransformer
andWyeZigzagTransformer
have been replaced by an uniqueTransformer
class whose behaviour depends on the providedTransformerParameter
.The classes
LineCharacteristics
andTransformerCharacteristics
have been renamed intoLineParameters
andTransformerParameters
.The classes
AdmittanceLoad
andDeltaAdmittanceLoad
have been removed. Please useImpedanceLoad
instead, with the desiredphases
argument.The classes
DeltaImpedanceLoad
andDeltaPowerLoad
have been removed. Please use the classesImpedanceLoad
andPowerLoad
instead withphases="abc"
.The class
FlexibleLoad
have been removed. Please use the newflexible_params
argument of thePowerLoad
class constructor.The
VoltageSource
is not anymore a subclass of the classBus
. It can now be connected to a bus just like a load.All elements are aware of the network they belong to. It helps the user to avoid mistakes (connecting elements from different networks). It also allows showing user warnings when accessing to outdated results.
All properties retrieving results are now prefixed by
res_
.Additional results per elements:
res_potentials
,res_voltages
,res_series_losses
,res_lie_losses
, etc.Pandas Data frame results: now, every result can be retrieved in Pandas Data frame from the
ElectricalNetwork
instance. These methods are also prefixed byres_
.Every physical input can be given as quantities (magnitude and unit) using the
Q_
class.Every result (except Pandas data frame) are quantities (magnitude and unit).
Elements can all be serialized as JSON.
Results of an
ElectricalNetwork
can be serialized as JSON and read from a JSON file.The documentation has been improved.