Skip to content

Releases: RoseauTechnologies/Roseau_Load_Flow

Version 0.10.0

04 Sep 10:04
382deaa
Compare
Choose a tag to compare

A lot of improvements 🎉

Important

There is a main breaking change in this version. The constructor of the class ElectricalNetwork has changed:

  • it accepts keyword arguments only.
  • it accepts the arguments lines, transformers and switches in replacement of the argument branches.
  • As a consequence,
    • the results method res_branches has been removed. Please use res_lines, res_transformers
      and res_switches methods instead.
    • the field branches does not exist anymore. Please use the fields lines, transformers and switches.
  • 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.
  • #237 Improvements of the Sphinx configuration.
  • #262 Raise a proper error when a transformer is defined with null impedance.
  • #259 The cache of the license object was not reset after the activation of a new license key.
  • #258 #261 #263 Add basic plotting functionality in the new roseau.load_flow.plotting
    module. The plot_interactive_map function plots an electrical network on an interactive map using
    the folium library and the plot_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.
  • #258 The documentation gained a new "advanced" section with a page on floating neutrals
    and a page on potential references.
  • #257 #252 Updates to the LineParameters class:
    • The method from_name_lv, deprecated since version 0.6, has been removed. It can be easily
      replaced by the from_geometry method.
    • The method from_name_mv is deprecated. A new method from_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.
  • #256 #250:
    • Accept scalar values for the powers, currents, impedances parameters of the load classes.
    • Add rlf.PositiveSequence, rlf.NegativeSequence and rlf.ZeroSequence vectors for easier
      creation of balanced quantities.
  • #255 Update the figures of loads and of voltage sources in the documentation to be compliant with the work
    of #249.
  • #254 #251 Allow passing multiple phases to potential references. The phase
    attribute of the PotentialRef is replaced by phases.
  • #249 #248 Accept scalar values for the voltages parameter of the VoltageSource class.
  • #247 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.
  • #246 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.
  • #245 #244 Fix the LineParameters.from_geometry method to not crash when passed
    unknown insulator type or None.
  • Add res_voltages to the VoltageSource class for symmetry with the other elements.
    res_voltages is always equal to the supplied voltages for a voltage source.
  • #243 Fix cross-sectional area of DGS line types created from line elements and special case
    invalid PwF line geographical coordinates table.
  • #240 Add tests for switches imported from DGS and improve warning and error messages.
  • #235 BREAKING CHANGE: The constructor of the class ElectricalNetwork has changed:
    • it accepts keyword arguments only.
    • it accepts the arguments lines, transformers and switches in replacement of the argument branches.
    • As a consequence,
      • the results method res_branches has been removed. Please use res_lines, res_transformers
        and res_switches methods instead.
      • the field branches does not exist anymore. Please use the fields lines, transformers and switches.
  • #235 Move the Switch class into its own file roseau/load_flow/models/switches.py.
  • #235 #239 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)
  • #235 The method results_to_dict now accepts the keyword-only argument full which allows the export of all
    the results of an element.
  • #235 Solve a bug concerning the accessors to the flexible powers result of flexible power loads. An unwanted
    error was raised.
  • #235 Replace the occurrences of the str.find method by the str.index function.
  • #235 The method to_graph of the class ElectricalNetwork now retrieves a graph with additional data store
    in the edges depending on the edge type: line, transformer or switch.
  • #242 Add optional data to the TransformerParameters class: manufacturer, efficiency and range.
  • #242 Fixed a bug in the unit of q_min and q_max in the constructor of FlexibleParameter.
  • #242 Add equality operator for the classes FlexibleParameter, Control and Projection.

Version 0.9.1

05 Jul 10:13
568c4d3
Compare
Choose a tag to compare

Several improvements to better support importing PowerFactory models.

  • #231 Add LineParameters.from_power_factory and TransformerParameters.from_power_factory
    methods to easily import PowerFactory lines and transformer models into Roseau Load Flow.

  • #230 Improve the algorithm for assigning potential references for DGS networks.

  • #229 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; A
      LineParameters 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 its 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...

Please refer to the Data Exchange page for more information.

Note

Windows binaries (wheels) are temporarily unavailable since version 0.9.0. If you need them, please open an issue on GitHub.

What's Changed

Full Changelog: v0.9.0...v0.9.1

Version 0.9.0

22 Jun 08:35
696b4ce
Compare
Choose a tag to compare

A lot of improvements 🎉 !

  • #227 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 with phases="abc".
  • #225 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.
  • #222 #223 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.
  • #220 #221 Add LineParameters.from_open_dss and TransformerParameters.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.
  • #210 #219 Add a parameter to LineParameters.from_catalogue to choose the number
    of phases of the created line parameters object.
  • #218 Add Transformer.res_power_losses to get the total power losses in a transformer.
  • #217 Add an ID override to TransformerParameters.from_catalogue similar to
    LineParameters.from_catalogue.
  • #216 #217 BREAKING CHANGE: Rename the id parameter of TransformerParameters
    catalogue methods to name to be consistent with LineParameters.
    If you call these methods by keyword arguments, make sure to update your usage of
    TransformerParameters.from_catalogue(id="xxx") to TransformerParameters.from_catalogue(name="xxx").
  • #212 BREAKING CHANGE: Modify the constructor of TransformerParameters to take the z2
    and ym parameters directly instead of the open and short circuit tests parameters. You can still
    create an object from these tests using the from_open_and_short_circuit_tests constructor. This
    change comes with other changes to TransformerParameters, notably:
    • The z2, ym, k, and orientation are now always available as attributes on the instance
    • The to_zyk method is deprecated in favour of the direct attribute access on the instance. This
      method will be removed in a future version
    • The parameters i0, p0, psc, and vsc are now optional. They return None for instances
      created using z2 and ym directly
    • The JSON representation of TransformerParameters has changed, but it is still compatible with
      the old representation.

What's Changed

Full Changelog: v0.8.1...v0.9.0

Version 0.8.1

11 Apr 16:30
b1c37f6
Compare
Choose a tag to compare

A correction and documentation improvement:

  • #214 Solve a bug in the engine when using delta connected flexible loads.
  • #213 Better detection of poorly connected elements as described in #209. It raises a proper error
    message.
  • #211 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)

What's Changed

Full Changelog: v0.8.0...v0.8.1

Version 0.8.0

19 Mar 14:35
b3073d2
Compare
Choose a tag to compare

Here comes the version 0.8.0 of Roseau Load Flow 🎉
The main changes are:

  • The three-phase transformer model had issues that are now solved.
  • A flexible power load can now have a zero power. This is useful for time-series simulations.

The detailed modifications are listed here:

  • #207 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.
  • #206 #187 Un-deprecate results_to_dict/json methods and remove deprecated
    results_from_dict/json methods.
  • #205 #200 Fix error when propagating the potentials from a voltage source with fewer phases
    than the bus.
  • #204 #193 Remove restrictions on geometry types. Allow specifying the CRS of the geometries.
  • #203 #186 Detect invalid element overrides when connecting a new element with the
    same ID and type of an existing element.
  • #202 #188 Explicitly prevent instantiation of abstract classes.
  • #201 #185 Add type attribute to the load classes and rename branches branch_type
    attribute to type for consistency. Please replace branch.branch_type by branch.type in your code.
    In addition, loads data frames gained two new columns:
    1. type indicating the load type: constant-(power, current, impedance);
    2. and flexible indicating if the load is flexible.
  • #197 Fix a bug in three-phase transformer models that led to excessive reactive power flow in the transformer.
  • #199 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.
  • #198 Simplify the storage of the transformer catalogues. This is an internal change that should not have
    effects on user code.
  • #196 #194 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.
  • #195 Use latexindent.pl to automatically indent LaTeX files in the documentation.
  • #192 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.
  • #184 Improve the documentation to have a better SEO (sitemap, metadata and canonical URLs). The navigation
    menu has also been improved.
  • #183 #181 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.
  • #182 Improve the error message when trying to access results on the network before running the load flow.
  • #189 Allow flexible loads to have a null active theoretical power.

What's Changed

Full Changelog: v0.7.0...v0.8.0

Version 0.7.0

08 Feb 15:29
221105e
Compare
Choose a tag to compare

Important

Starting with this version, Roseau Load Flow is no longer supplied as a SaaS. The software is
available as a standalone Python library. Please contact us at [email protected] in order to get a license key.

This release includes:

  • Fix a bug in the engine: it was impossible to change the parameters of center-tapped and single phase transformers.
  • #179 Fix a bug in the propagation of potentials when a center-tapped transformer is used without neutral at the primary side.
  • #178 #176 Merge the results_to_json, results_from_json, results_to_dict and results_from_dict methods of the ElectricalNetwork and Elements classes into the methods to_json, from_json, to_dict and from_dict respectively. The old results_ methods are deprecated and will be removed in a future release. The new methods will include the results by default, but you can pass include_results=False to exclude them.
  • #175 #174 Fix JSON serialization of network with line parameters created from the catalogue.
  • #173 Remove the conda installation option.

It also includes all the modifications of the alpha release #171 :

  • #168 #166 Fix initial potentials' propagation.
  • #167 #161 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 method LineParameters.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.
  • #167 The class LineParameters now takes optional arguments line_type, conductor_type, insulator_type and section. These parameters are accessible as properties. They are filled automatically when creating a line from the catalogue or from a geometry.
  • #167 Replace all print_catalogue() methods by get_catalogue() methods that return a data frame instead of printing the catalogue to the console.
  • #167 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.
  • #167 #122 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.
  • #163 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 an auth argument.
    • To activate the license, you need to call roseau.load_flow.activate_license("MY LICENSE KEY") or set the environment variable ROSEAU_LOAD_FLOW_LICENSE_KEY (preferred) before calling ElectricalNetwork.solve_load_flow(). More information in the documentation.
    • Several methods on the FlexibleParameter class that previously required auth are changed. Make sure to follow the documentation to update your code.
  • #163 #158 Fix ElectricalNetwork.res_transformers returning an empty dataframe when max_power is not set.
  • #163 Several unused exception codes were removed. An EMPTY_NETWORK code was added to indicate that a network is being created with no elements.
  • #163 Remove the ElectricalNetwork.res_info attribute. ElectricalNetwork.solve_load_flow() now returns the tuple (number of iterations, residual).
  • #163 Remove the Bus.clear_short_circuits() and ElectricalNetwork.clear_short_circuits() methods. It is currently not possible to clear short-circuits from the network.
  • #163 Improve performance of network creation and results access.
  • #163 Attributes phases and bus are now read-only on all elements.
  • #151 Require Python 3.10 or newer.

What's Changed

Full Changelog: v0.6.0...v0.7.0

Version 0.7.0-alpha

24 Jan 09:04
a407fda
Compare
Choose a tag to compare
Version 0.7.0-alpha Pre-release
Pre-release

Important

Starting with version 0.7.0, Roseau Load Flow will no longer be supplied as a SaaS. The software will
be available as a standalone Python library. Please contact us at [email protected] in order to get a license key.

  • #168 #166 Fix initial potentials' propagation.
  • #167 #161 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 method
    LineParameters.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.
  • #167 The class LineParameters now takes optional arguments line_type, conductor_type,
    insulator_type and section. These parameters are accessible as properties. They are filled
    automatically when creating a line from the catalogue or from a geometry.
  • #167 Replace all print_catalogue() methods by get_catalogue() methods that return a
    data frame instead of printing the catalogue to the console.
  • #167 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.
  • #167 #122 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.
  • #163 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 an auth argument.
    • To activate the license, you need to call roseau.load_flow.activate_license("MY LICENSE KEY")
      or set the environment variable ROSEAU_LOAD_FLOW_LICENSE_KEY (preferred) before calling
      ElectricalNetwork.solve_load_flow(). More information in the documentation.
    • Several methods on the FlexibleParameter class that previously required auth are changed. Make
      sure to follow the documentation to update your code.
  • #163 #158 Fix ElectricalNetwork.res_transformers returning an empty dataframe
    when max_power is not set.
  • #163 Several unused exception codes were removed. An EMPTY_NETWORK code was added to indicate
    that a network is being created with no elements.
  • #163 Remove the ElectricalNetwork.res_info attribute. ElectricalNetwork.solve_load_flow() now
    returns the tuple (number of iterations, residual).
  • #163 Remove the Bus.clear_short_circuits() and ElectricalNetwork.clear_short_circuits()
    methods. It is currently not possible to clear short-circuits from the network.
  • #163 Improve performance of network creation and results access.
  • #163 Attributes phases and bus are now read-only on all elements.
  • #151 Require Python 3.10 or newer.

Version 0.6.0

29 Nov 11:00
6eb6507
Compare
Choose a tag to compare

Note

This is the last release to support Python 3.9!

A new version with the following improvement/bug correction:

  • #149 #145 Add custom pint wrapper for better handling of pint arrays.
  • #148 #122 deprecate LineParameters.from_name_lv() in favour of the more generic
    LineParameters.from_geometry(). The method will be removed in a future release.
  • #142 #136 Add Bus.res_voltage_unbalance() method to get the Voltage Unbalance
    Factor (VUF) as defined by the IEC standard IEC 61000-3-14.
  • #141 #137 Add ElectricalNetwork.to_graph() to get a networkx.Graph object
    representing the electrical network for graph theory studies. Install with the "graph" extra to
    get networkx.
    ElectricalNetwork also gained a new buses_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 use Bus.get_connected_buses().
  • #141 Add official support for Python 3.12. This is the last release to support Python 3.9.
  • #138 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.
  • #133 #126 Add Qmin and Qmax limits of flexible parameters.
  • #132 #101 Document extra utilities including converters and constants.
  • #131 #127 Improve the documentation of the flexible loads.
    • Add the method compute_powers method to the FlexibleParameter 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 and plot_pq methods to the FlexibleParameter class to plot the
      control curves and control trajectories.
    • Add the extra plot to install matplotlib alongside roseau-load-flow.
  • #131 Correction of a bug in the error message of the powers setter method.
  • #130 Mark some internal attributes as private, they were previously marked as public.
  • #128 Add the properties z_line, y_shunt and with_shunt to the Line class.
  • #125 Speed-up build of conda workflow using mamba.

What's Changed

Full Changelog: v0.5.0...v0.6.0

Version 0.5.0

29 Aug 09:05
7497076
Compare
Choose a tag to compare

New version! 🎉

Main changes:

  • Short circuit computation
  • Single-phase and center- tapped transformers
  • Catalogues for networks and transformers
  • Improvement of the documentation
  • Docker image not maintained anymore

Exhaustive changelog:

  • #121 #68 Improvements of the LineParameters constructor:
    • Delete the LineModel class
    • Simplify the from_dict method
    • Rename and refactor the method from_lv_exact into from_geometry.
    • Add documentation for the LineParameters alternative constructors.
    • Rename InsulationType into InsulatorType.
    • 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 of LineParameters.
  • #120 Fix phases of flexible power results.
  • #119 Add explicit error message for singular jacobian.
  • #118 #95
    • Add a catalogue of three-phase MV/LV distribution transformers.
    • Remove the class method TransformerParameters.from_name.
  • #117 Add prettier to pre-commit
  • #116
    • Add a catalogue of networks.
    • Add a plotting page to the documentation.
  • #115
    • Reformat the tutorials in the documentation.
    • Split the "Advanced" tutorial in several smaller files.
    • Remove the Docker installation option.
  • #114 Use Pint >=0.21 to have the percent unit.
  • #113 Raise an error when accessing the results of
    disconnected elements.
  • #112 Make the geometry serialization optional.
  • #106 Improvements for non-euclidean projections.
  • #104 Remove roseau.load_flow.utils.BranchType.
  • #99 Add Line.res_series_currents
    and Line.res_shunt_currents properties to get the currents in the series and shunt components
    of lines. Also added ElectricalNetwork.res_lines that contains the series losses and currents
    of all the lines in the network. The property ElectricalNetwork.res_lines_losses was removed.
  • #100 Fix the Yz transformers.
  • #97 Add the model section to the documentation.
  • #96
    • Add single-phase transformer.
    • Add center-tapped transformer.
    • Remove the roseau.load_flow.utils.TransformerType enumeration.
  • #93 Add short-circuit computation.
  • #92
    • Add the changelog in the documentation.
    • Use NodeJs 20 in the Dockerfile.
    • Correction of a dead link in the README.

What's Changed

Full Changelog: v0.4.0...v0.5.0

Version 0.4.0

04 Jun 16:08
cfa229f
Compare
Choose a tag to compare

New features

  • Add different solving methods.
  • Increase default alpha values for flexible parameters.
  • Rename precision and final_precision to tolerance and residual
  • Rename isolation into insulation
  • Improve performances for large networks
  • Raise error for bad transformer parameters
  • Rename resolution_method into solver

Documentation

  • Correction of small errors in the documentation
  • Add some LaTeX images from the LaTeX documentation
  • Point the docs to conda-forge instead of GitHub release page
  • Add links to the website/GitHub/LinkedIn of Roseau Technologie

What's Changed

Full Changelog: v0.3.0...v0.4.0