Changelog#
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://www.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.