Catalogues¶
In Roseau Load Flow, some classes are provided with a catalogue. This page describes how to use them.
Networks¶
Roseau Load Flow is provided with a small catalogue of MV and LV networks. These networks are available through the
class ElectricalNetwork.
Here is an interactive plot to explore them. See the Plotting page to learn how to get such interactive map.
Source of data¶
All these networks are built from open data available in France.
We also maintain a set of 150 MV feeders representative of the French distribution system at https://github.com/RoseauTechnologies/Representative_French_Power_Grids. Each feeder is modeled with its downstream LV networks. The repository also contains the cluster size that indicates how representative is each network of the French distribution system. These networks are the result of the study Representative MV feeders for the analysis of French distribution networks, made and published by Mines Paris Tech.
Inspecting the catalogue¶
This catalogue can be retrieved in the form of a dataframe using:
>>> import roseau.load_flow as rlf
>>> rlf.ElectricalNetwork.get_catalogue()
Name |
Nb buses |
Nb lines |
Nb transformers |
Nb switches |
Nb loads |
Nb sources |
Nb grounds |
Nb potential refs |
Available load points |
|---|---|---|---|---|---|---|---|---|---|
8 |
6 |
1 |
0 |
12 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
7 |
5 |
1 |
0 |
10 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
6 |
4 |
1 |
0 |
8 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
18 |
16 |
1 |
0 |
32 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
7 |
5 |
1 |
0 |
10 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
11 |
9 |
1 |
0 |
18 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
5 |
3 |
1 |
0 |
6 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
|
6 |
4 |
1 |
0 |
8 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
|
17 |
15 |
0 |
1 |
10 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
50 |
48 |
0 |
1 |
68 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
30 |
28 |
0 |
1 |
20 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
53 |
51 |
0 |
1 |
40 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
88 |
86 |
0 |
1 |
62 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
39 |
37 |
0 |
1 |
38 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
69 |
67 |
0 |
1 |
46 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
4 |
2 |
0 |
1 |
4 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
49 |
47 |
0 |
1 |
32 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
59 |
57 |
0 |
1 |
44 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
8 |
6 |
0 |
1 |
0 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
33 |
31 |
0 |
1 |
20 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
128 |
126 |
0 |
1 |
82 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
44 |
42 |
0 |
1 |
44 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
66 |
64 |
0 |
1 |
38 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
|
125 |
123 |
0 |
1 |
106 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
12 |
10 |
0 |
1 |
16 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
11 |
9 |
0 |
1 |
8 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
20 |
18 |
0 |
1 |
12 |
1 |
1 |
1 |
[‘Winter’, ‘Summer’] |
|
33 |
31 |
0 |
1 |
28 |
1 |
1 |
1 |
[‘Summer’, ‘Winter’] |
There are MV networks whose names start with “MVFeeder” and LV networks whose names with “LVFeeder”. For each network, there are two available load points:
“Winter”: it contains power loads without production.
“Summer”: it contains power loads with production and 20% of the “Winter” load.
The arguments of the method get_catalogue can be used to filter the output. If you want to get the LV networks only,
you can call:
>>> rlf.ElectricalNetwork.get_catalogue(name=r"LVFeeder.*")
Name |
Nb buses |
Nb lines |
Nb transformers |
Nb switches |
Nb loads |
Nb sources |
Nb grounds |
Nb potential refs |
Available load points |
|---|---|---|---|---|---|---|---|---|---|
LVFeeder00939 |
8 |
6 |
1 |
0 |
12 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder02639 |
7 |
5 |
1 |
0 |
10 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder04790 |
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder06713 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder06926 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder06975 |
6 |
4 |
1 |
0 |
8 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder18498 |
18 |
16 |
1 |
0 |
32 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder18769 |
7 |
5 |
1 |
0 |
10 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder19558 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder20256 |
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder23832 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder24400 |
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder27429 |
11 |
9 |
1 |
0 |
18 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder27681 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder30216 |
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder31441 |
4 |
2 |
1 |
0 |
4 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder36284 |
5 |
3 |
1 |
0 |
6 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
LVFeeder36360 |
9 |
7 |
1 |
0 |
14 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder37263 |
3 |
1 |
1 |
0 |
2 |
1 |
1 |
2 |
[‘Summer’, ‘Winter’] |
LVFeeder38211 |
6 |
4 |
1 |
0 |
8 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
A regular expression can also be used:
>>> rlf.ElectricalNetwork.get_catalogue(name=r"LVFeeder38[0-9]+")
Name |
Nb buses |
Nb lines |
Nb transformers |
Nb switches |
Nb loads |
Nb sources |
Nb grounds |
Nb potential refs |
Available load points |
|---|---|---|---|---|---|---|---|---|---|
LVFeeder38211 |
6 |
4 |
1 |
0 |
8 |
1 |
1 |
2 |
[‘Winter’, ‘Summer’] |
Getting an instance¶
You can build an ElectricalNetwork instance from the catalogue using the class method from_catalogue. The name of
the network and the name of the load point must be provided:
>>> en = rlf.ElectricalNetwork.from_catalogue(name="LVFeeder38211", load_point_name="Summer")
<ElectricalNetwork: 6 buses, 4 lines, 1 transformer, 0 switches, 8 loads, 1 source, 1 ground, 2 potential refs>
In case no or several results match the parameters, an error is raised:
>>> rlf.ElectricalNetwork.from_catalogue(name="LVFeeder38211", load_point_name="Unknown")
RoseauLoadFlowException: No load points for network 'LVFeeder38211' matching the query (load_point_name='Unknown')
have been found. Please look at the catalogue using the `get_catalogue` class method. [catalogue_not_found]
Transformers¶
Roseau Load Flow ships with a catalogue of TransformerParameters obtained from data sheets of real transformers.
Source of data¶
The available transformers data come from the following data sheets:
For Schneider-Electric EcoDesign products (AA0Ak efficiency class): Minera, Vegeta, Trihal
For France Transfo: See this document.
All data sheets can be found in the data sheets folder on GitHub
Pull requests to add other common sources are welcome!
Inspecting the catalogue¶
This catalogue can be retrieved in the form of a dataframe using:
>>> import roseau.load_flow as rlf
>>> rlf.TransformerParameters.get_catalogue()
Truncated output
Name |
Manufacturer |
Product range |
Efficiency |
Cooling class |
Vector group |
Nominal power (kVA) |
High voltage (kV) |
Low voltage (kV) |
Frequency (Hz) |
|---|---|---|---|---|---|---|---|---|---|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
500 |
15 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
Standard |
KNAN |
Dyn11 |
100 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
ReducedLosses |
AN |
Dyn11 |
250 |
20 |
0.41 |
50 |
|
Schneider Electric |
Imprego |
AN |
Iii0 |
10 |
0.23 |
0.23 |
50 |
||
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
1600 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
B0Bk |
ONAN |
Dyn11 |
1600 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
ExtraReducedLosses |
AN |
Dyn11 |
1250 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
B0Bk |
ONAN |
Dyn11 |
800 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
ExtraReducedLosses |
AN |
Dyn11 |
2000 |
20 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
AA0Ak |
KNAN |
Dyn11 |
400 |
20 |
0.41 |
50 |
|
France Transfo |
ONAN |
Dyn11 |
400 |
20 |
0.4 |
50 |
|||
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
400 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
1600 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
Standard |
AN |
Dyn11 |
1000 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
2000 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
ExtraReducedLosses |
AN |
Dyn11 |
1000 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
800 |
20 |
0.41 |
50 |
|
France Transfo |
ONAN |
Dyn11 |
630 |
20 |
0.4 |
50 |
|||
Schneider Electric |
Minera |
C0Bk |
ONAN |
Dyn11 |
1600 |
15 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
Standard |
KNAN |
Dyn11 |
800 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Dyn11 |
1250 |
15 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Dyn11 |
2000 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Dyn11 |
630 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Dyn11 |
160 |
15 |
0.41 |
50 |
|
France Transfo |
ONAN |
Dyn11 |
400 |
15 |
0.4 |
50 |
|||
Cahors |
Yellow |
A0Ak |
ONAN |
Dyn11 |
2500 |
15.75 |
0.4 |
50 |
|
France Transfo |
ONAN |
Dyn11 |
2000 |
20 |
0.4 |
50 |
|||
Cahors |
Yellow |
A0Ak |
ONAN |
Dyn11 |
250 |
15.75 |
0.4 |
50 |
|
Schneider Electric |
Vegeta |
C0Bk |
KNAN |
Dyn11 |
630 |
15 |
0.41 |
50 |
The following data are available in this table:
the name: a unique name of the transformer in the catalogue. This is usually a concatenation of the manufacturer, the product range, the efficiency class, the nominal power, the high voltage, the low voltage, and the vector group.
the manufacturer: the manufacturer of the transformer.
the product range which depends on the manufacturer
the efficiency class of the transformer. The efficiency class used in the catalogue follows the
Eco-Designrequirements as defined by theEN 50629standard.the cooling class of the transformer according to IEC 60076: (e.g.,
ONAN,KNAN,AN, etc.)the vector group of the transformer, noted vg (e.g.,
Dyn11,Yzn11,Ii0, etc.)the nominal power, noted sn.
the rated high voltage (phase-to-phase), noted uhv.
the rated no-load low voltage (phase-to-phase), noted ulv.
the nominal frequency, noted fn.
The get_catalogue method accepts arguments (in bold above) that can be used to filter the returned table. The
following command only retrieves transformer parameters of transformers with an efficiency of “A0Ak”:
>>> rlf.TransformerParameters.get_catalogue(efficiency="A0Ak")
Truncated output
Name |
Manufacturer |
Product range |
Efficiency |
Cooling class |
Vector group |
Nominal power (kVA) |
High voltage (kV) |
Low voltage (kV) |
Frequency (Hz) |
|---|---|---|---|---|---|---|---|---|---|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
100 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
160 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
250 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
315 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
400 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
500 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
630 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
800 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Dyn11 |
1000 |
20 |
0.41 |
50 |
or only transformers with a wye winding on the high voltage side (using a regular expression)
>>> rlf.TransformerParameters.get_catalogue(vg=r"Y.*")
Name |
Manufacturer |
Product range |
Efficiency |
Cooling class |
Vector group |
Nominal power (kVA) |
High voltage (kV) |
Low voltage (kV) |
Frequency (Hz) |
|---|---|---|---|---|---|---|---|---|---|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Yzn11 |
50 |
15 |
0.41 |
50 |
|
Schneider Electric |
Minera |
B0Bk |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
B0Bk |
ONAN |
Yzn11 |
50 |
15 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
C0Bk |
ONAN |
Yzn11 |
50 |
15 |
0.41 |
50 |
|
Schneider Electric |
Minera |
Standard |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
Standard |
ONAN |
Yzn11 |
50 |
15 |
0.41 |
50 |
|
SCOTECH |
ONAF |
YNd11 |
76000 |
110 |
35 |
50 |
|||
SCOTECH |
ONAN |
YNd11 |
100000 |
220 |
35 |
50 |
or only transformers meeting both criteria
>>> rlf.TransformerParameters.get_catalogue(efficiency="A0Ak", vg=r"Y.*")
Name |
Manufacturer |
Product range |
Efficiency |
Cooling class |
Vector group |
Nominal power (kVA) |
High voltage (kV) |
Low voltage (kV) |
Frequency (Hz) |
|---|---|---|---|---|---|---|---|---|---|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Yzn11 |
50 |
20 |
0.41 |
50 |
|
Schneider Electric |
Minera |
A0Ak |
ONAN |
Yzn11 |
50 |
15 |
0.41 |
50 |
Among all the possible filters, the nominal power and voltages are expected in their default unit (VA and V). You can also use the Pint library to express the values in different units. For instance, if you want to get transformer parameters with a nominal power of 3150 kVA, the following two commands return the same table:
>>> import roseau.load_flow as rlf
... rlf.TransformerParameters.get_catalogue(sn=3150e3) # in VA by default
>>> rlf.TransformerParameters.get_catalogue(sn=rlf.Q_(3150, "kVA"))
Name |
Manufacturer |
Product range |
Efficiency |
Cooling class |
Vector group |
Nominal power (kVA) |
High voltage (kV) |
Low voltage (kV) |
Frequency (Hz) |
|---|---|---|---|---|---|---|---|---|---|
France Transfo |
ONAN |
Dyn11 |
3150 |
20 |
0.4 |
50 |
|||
France Transfo |
ONAN |
Dyn11 |
3150 |
15 |
0.4 |
50 |
|||
Schneider Electric |
Minera |
AA0Ak |
ONAN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
3150 |
15 |
0.41 |
50 |
|
Schneider Electric |
Trihal |
AA0Ak |
AN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
AA0Ak |
KNAN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
C0Bk |
KNAN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
C0Bk |
KNAN |
Dyn11 |
3150 |
15 |
0.41 |
50 |
|
Schneider Electric |
Vegeta |
Standard |
KNAN |
Dyn11 |
3150 |
20 |
0.41 |
50 |
Getting an instance¶
You can build a TransformerParameters instance from the catalogue using the class method from_catalogue. You must
filter the data to get a single transformer. You can apply the same filtering technique used for the method
get_catalogue to narrow down the result to a single transformer in the catalogue.
For instance, these parameters filter the catalogue down to a single transformer parameters:
>>> rlf.TransformerParameters.from_catalogue(efficiency="A0Ak", vg=r"Y.*", uhv=15000)
<TransformerParameters: id='SE Minera A0Ak 50kVA 15/20kV(15) 410V Yzn11', vg='Yzn11', sn=50000,
uhv=15000, ulv=410, fn=50.0, p0=90.0, i0=0.005, psc=750.0, vsc=0.04, manufacturer='Schneider Electric',
range='Minera', efficiency='A0Ak', cooling='ONAN', insulation='liquid-immersed'>
The name filter can be directly used:
>>> rlf.TransformerParameters.from_catalogue(
... name="SE Minera A0Ak 50kVA 15/20kV(15) 410V Yzn11"
... )
<TransformerParameters: id='SE Minera A0Ak 50kVA 15/20kV(15) 410V Yzn11', vg='Yzn11', sn=50000,
uhv=15000, ulv=410, fn=50.0, p0=90.0, i0=0.005, psc=750.0, vsc=0.04, manufacturer='Schneider Electric',
range='Minera', efficiency='A0Ak', cooling='ONAN', insulation='liquid-immersed'>
In case no or several results match the parameters, an error is raised:
>>> rlf.TransformerParameters.from_catalogue(manufacturer="France Transfo")
RoseauLoadFlowException: Several transformers matching the query (manufacturer='France Transfo') have been found:
'FT 100kVA 15/20kV(20) 400V Dyn11', 'FT 160kVA 15/20kV(20) 400V Dyn11', 'FT 250kVA 15/20kV(20) 400V Dyn11',
'FT 315kVA 15/20kV(20) 400V Dyn11', 'FT 400kVA 15/20kV(20) 400V Dyn11', 'FT 500kVA 15/20kV(20) 400V Dyn11',
'FT 630kVA 15/20kV(20) 400V Dyn11', 'FT 800kVA 15/20kV(20) 400V Dyn11', 'FT 1000kVA 15/20kV(20) 400V Dyn11',
'FT 1250kVA 15/20kV(20) 400V Dyn11', 'FT 1600kVA 15/20kV(20) 400V Dyn11', 'FT 2000kVA 15/20kV(20) 400V Dyn11',
'FT 2500kVA 15/20kV(20) 400V Dyn11', 'FT 3150kVA [...]. [catalogue_several_found]
or if no results:
>>> rlf.TransformerParameters.from_catalogue(manufacturer="unknown")
RoseauLoadFlowException: No manufacturer matching 'unknown' has been found. Available manufacturers
are 'France Transfo', 'Schneider Electric', 'Cahors', 'SCOTECH', '', 'Pauwels', 'GBE'. [catalogue_not_found]
Lines¶
Roseau Load Flow is provided with a catalogue of line parameters. These parameters are available through the class
LineParameters.
Source of data¶
The available lines data are based on the following sources:
IEC standards including: IEC-60228, IEC-60287, IEC-60364
Technique de l’ingénieur (French technical and scientific documentation)
Inspecting the catalogue¶
This catalogue can be retrieved in the form of a dataframe using:
>>> import roseau.load_flow as rlf
>>> rlf.LineParameters.get_catalogue()
Truncated output
Name |
Line type |
Phase material |
Neutral material |
Phase insulator |
Neutral insulator |
Phase cross-section (mm²) |
Neutral cross-section (mm²) |
Phase resistance (ohm/km) |
Neutral resistance (ohm/km) |
Phase reactance (ohm/km) |
Neutral reactance (ohm/km) |
Phase susceptance (S/km) |
Neutral susceptance (S/km) |
Phase ampacity (A) |
Neutral ampacity (A) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O_AL_12 |
overhead |
al |
al |
12 |
12 |
2.69 |
2.69 |
0.407632 |
0.407632 |
2.798e-06 |
2.798e-06 |
70 |
70 |
||
O_AL_13 |
overhead |
al |
al |
13 |
13 |
2.495 |
2.495 |
0.405118 |
0.405118 |
2.8161e-06 |
2.8161e-06 |
76 |
76 |
||
O_AL_14 |
overhead |
al |
al |
14 |
14 |
2.3 |
2.3 |
0.402789 |
0.402789 |
2.8331e-06 |
2.8331e-06 |
82 |
82 |
||
O_AL_19 |
overhead |
al |
al |
19 |
19 |
1.67333 |
1.67333 |
0.393195 |
0.393195 |
2.9051e-06 |
2.9051e-06 |
103 |
103 |
||
O_AL_20 |
overhead |
al |
al |
20 |
20 |
1.59444 |
1.59444 |
0.391584 |
0.391584 |
2.9175e-06 |
2.9175e-06 |
106 |
106 |
||
O_AL_22 |
overhead |
al |
al |
22 |
22 |
1.43667 |
1.43667 |
0.38859 |
0.38859 |
2.9409e-06 |
2.9409e-06 |
113 |
113 |
||
O_AL_25 |
overhead |
al |
al |
25 |
25 |
1.2 |
1.2 |
0.384574 |
0.384574 |
2.973e-06 |
2.973e-06 |
122 |
122 |
||
O_AL_28 |
overhead |
al |
al |
28 |
28 |
1.1004 |
1.1004 |
0.381013 |
0.381013 |
3.0019e-06 |
3.0019e-06 |
130 |
130 |
||
O_AL_29 |
overhead |
al |
al |
29 |
29 |
1.0672 |
1.0672 |
0.379911 |
0.379911 |
3.011e-06 |
3.011e-06 |
132 |
132 |
||
O_AL_33 |
overhead |
al |
al |
33 |
33 |
0.9344 |
0.9344 |
0.375852 |
0.375852 |
3.045e-06 |
3.045e-06 |
142 |
142 |
||
O_AL_34 |
overhead |
al |
al |
34 |
34 |
0.9012 |
0.9012 |
0.374914 |
0.374914 |
3.0529e-06 |
3.0529e-06 |
144 |
144 |
||
O_AL_37 |
overhead |
al |
al |
37 |
37 |
0.837733 |
0.837733 |
0.372257 |
0.372257 |
3.0757e-06 |
3.0757e-06 |
152 |
152 |
||
O_AL_38 |
overhead |
al |
al |
38 |
38 |
0.8226 |
0.8226 |
0.37142 |
0.37142 |
3.0829e-06 |
3.0829e-06 |
155 |
155 |
||
O_AL_40 |
overhead |
al |
al |
40 |
40 |
0.792333 |
0.792333 |
0.369808 |
0.369808 |
3.0969e-06 |
3.0969e-06 |
160 |
160 |
||
O_AL_43 |
overhead |
al |
al |
43 |
43 |
0.746933 |
0.746933 |
0.367536 |
0.367536 |
3.1169e-06 |
3.1169e-06 |
167 |
167 |
||
O_AL_48 |
overhead |
al |
al |
48 |
48 |
0.671267 |
0.671267 |
0.36408 |
0.36408 |
3.1478e-06 |
3.1478e-06 |
180 |
180 |
||
O_AL_50 |
overhead |
al |
al |
50 |
50 |
0.641 |
0.641 |
0.362798 |
0.362798 |
3.1595e-06 |
3.1595e-06 |
185 |
185 |
||
O_AL_54 |
overhead |
al |
al |
54 |
54 |
0.6014 |
0.6014 |
0.36038 |
0.36038 |
3.1816e-06 |
3.1816e-06 |
193 |
193 |
||
O_AL_55 |
overhead |
al |
al |
55 |
55 |
0.5915 |
0.5915 |
0.359804 |
0.359804 |
3.187e-06 |
3.187e-06 |
195 |
195 |
||
O_AL_59 |
overhead |
al |
al |
59 |
59 |
0.5519 |
0.5519 |
0.357598 |
0.357598 |
3.2075e-06 |
3.2075e-06 |
203 |
203 |
The following data are available in this table:
the name. A name that contains the type of the line, the material of the conductor, the cross-section area, and optionally the insulator. It is in the form
{line_type}_{conductor_material}_{cross_section}_{insulator}.the line type. It can be
"OVERHEAD","UNDERGROUND"or"TWISTED".the conductor material for the phases and for the neutral. See the
Materialclass.the insulator for the phases and for the neutral. See the
Insulatorclass.the cross-section of the phases and neutral conductors in mm².
in addition to the following calculated physical parameters:
the phase resistance of the line in ohm/km.
the neutral resistance of the line in ohm/km.
the phase reactance of the line in ohm/km.
the neutral reactance of the line in ohm/km.
the phase susceptance of the line in S/km.
the neutral susceptance of the line in S/km.
the Phase ampacity of the line in A.
the neutral ampacity of the line in A.
The get_catalogue method accepts arguments (in bold above) that can be used to filter the returned table. The
following command only returns line parameters made of Aluminum:
>>> rlf.LineParameters.get_catalogue(material="al")
Truncated output
Name |
Line type |
Phase material |
Neutral material |
Phase insulator |
Neutral insulator |
Phase cross-section (mm²) |
Neutral cross-section (mm²) |
Phase resistance (ohm/km) |
Neutral resistance (ohm/km) |
Phase reactance (ohm/km) |
Neutral reactance (ohm/km) |
Phase susceptance (S/km) |
Neutral susceptance (S/km) |
Phase ampacity (A) |
Neutral ampacity (A) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O_AL_12 |
overhead |
al |
al |
12 |
12 |
2.69 |
2.69 |
0.407632 |
0.407632 |
2.798e-06 |
2.798e-06 |
70 |
70 |
||
O_AL_13 |
overhead |
al |
al |
13 |
13 |
2.495 |
2.495 |
0.405118 |
0.405118 |
2.8161e-06 |
2.8161e-06 |
76 |
76 |
||
O_AL_14 |
overhead |
al |
al |
14 |
14 |
2.3 |
2.3 |
0.402789 |
0.402789 |
2.8331e-06 |
2.8331e-06 |
82 |
82 |
||
O_AL_19 |
overhead |
al |
al |
19 |
19 |
1.67333 |
1.67333 |
0.393195 |
0.393195 |
2.9051e-06 |
2.9051e-06 |
103 |
103 |
||
O_AL_20 |
overhead |
al |
al |
20 |
20 |
1.59444 |
1.59444 |
0.391584 |
0.391584 |
2.9175e-06 |
2.9175e-06 |
106 |
106 |
||
O_AL_22 |
overhead |
al |
al |
22 |
22 |
1.43667 |
1.43667 |
0.38859 |
0.38859 |
2.9409e-06 |
2.9409e-06 |
113 |
113 |
||
O_AL_25 |
overhead |
al |
al |
25 |
25 |
1.2 |
1.2 |
0.384574 |
0.384574 |
2.973e-06 |
2.973e-06 |
122 |
122 |
||
O_AL_28 |
overhead |
al |
al |
28 |
28 |
1.1004 |
1.1004 |
0.381013 |
0.381013 |
3.0019e-06 |
3.0019e-06 |
130 |
130 |
||
O_AL_29 |
overhead |
al |
al |
29 |
29 |
1.0672 |
1.0672 |
0.379911 |
0.379911 |
3.011e-06 |
3.011e-06 |
132 |
132 |
||
O_AL_33 |
overhead |
al |
al |
33 |
33 |
0.9344 |
0.9344 |
0.375852 |
0.375852 |
3.045e-06 |
3.045e-06 |
142 |
142 |
or only lines with a cross-section of 240 mm²
>>> rlf.LineParameters.get_catalogue(section=240)
Name |
Line type |
Phase material |
Neutral material |
Phase insulator |
Neutral insulator |
Phase cross-section (mm²) |
Neutral cross-section (mm²) |
Phase resistance (ohm/km) |
Neutral resistance (ohm/km) |
Phase reactance (ohm/km) |
Neutral reactance (ohm/km) |
Phase susceptance (S/km) |
Neutral susceptance (S/km) |
Phase ampacity (A) |
Neutral ampacity (A) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O_AL_240 |
overhead |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.313518 |
0.313518 |
3.6823e-06 |
3.6823e-06 |
490 |
490 |
||
O_CU_240 |
overhead |
cu |
cu |
240 |
240 |
0.0775 |
0.0775 |
0.313518 |
0.313518 |
3.6823e-06 |
3.6823e-06 |
630 |
630 |
||
O_AM_240 |
overhead |
am |
am |
240 |
240 |
0.14525 |
0.14525 |
0.313518 |
0.313518 |
3.6823e-06 |
3.6823e-06 |
490 |
490 |
||
U_AL_240 |
underground |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
428 |
428 |
||
U_CU_240 |
underground |
cu |
cu |
240 |
240 |
0.0775 |
0.0775 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
549 |
549 |
||
U_AM_240 |
underground |
am |
am |
240 |
240 |
0.14525 |
0.14525 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
428 |
428 |
||
T_AL_240 |
twisted |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
409 |
409 |
||
T_CU_240 |
twisted |
cu |
cu |
240 |
240 |
0.0775 |
0.0775 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
538 |
538 |
||
T_AM_240 |
twisted |
am |
am |
240 |
240 |
0.14525 |
0.14525 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
409 |
409 |
or only lines meeting both criteria
>>> rlf.LineParameters.get_catalogue(material="al", section=240)
Name |
Line type |
Phase material |
Neutral material |
Phase insulator |
Neutral insulator |
Phase cross-section (mm²) |
Neutral cross-section (mm²) |
Phase resistance (ohm/km) |
Neutral resistance (ohm/km) |
Phase reactance (ohm/km) |
Neutral reactance (ohm/km) |
Phase susceptance (S/km) |
Neutral susceptance (S/km) |
Phase ampacity (A) |
Neutral ampacity (A) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O_AL_240 |
overhead |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.313518 |
0.313518 |
3.6823e-06 |
3.6823e-06 |
490 |
490 |
||
U_AL_240 |
underground |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
428 |
428 |
||
T_AL_240 |
twisted |
al |
al |
240 |
240 |
0.125 |
0.125 |
0.0899296 |
0.0899296 |
3.69374e-05 |
3.69374e-05 |
409 |
409 |
When filtering by the cross-section area, it is expected to provide a numeric value in mm² or to use a pint quantity.
Getting an instance¶
You can build a LineParameters instance from the catalogue using the class method from_catalogue. You must filter
the data to get a single line. You can apply the same filtering technique used for the method get_catalogue to narrow
down the result to a single line in the catalogue.
For instance, these parameters filter the results down to a single line parameters:
>>> rlf.LineParameters.from_catalogue(line_type="underground", material="al", section=240)
LineParameters(id='U_AL_240')
Or you can use the name filter directly:
>>> rlf.LineParameters.from_catalogue(name="U_AL_240")
LineParameters(id='U_AL_240')
As you can see, the id of the created instance is the same as the name in the catalogue. You can override this
behaviour by passing the id parameter to from_catalogue:
>>> rlf.LineParameters.from_catalogue(name="U_AL_240", id="lp-special")
LineParameters(id='lp-special')
Line parameters created from the catalogue are 3-phase without a neutral by default. It is possible to create line
parameters with different numbers of phases using the nb_phases parameter.
>>> rlf.LineParameters.from_catalogue(name="U_AL_240").z_line.shape
(3, 3)
>>> # For 3-phase with neutral lines
... rlf.LineParameters.from_catalogue(name="U_AL_240", nb_phases=4).z_line.shape
(4, 4)
>>> # For single-phase lines
... rlf.LineParameters.from_catalogue(name="U_AL_240", nb_phases=2).z_line.shape
(2, 2)
In case no or several results match the parameters, an error is raised:
>>> rlf.LineParameters.from_catalogue(name=r"U_AL.*")
RoseauLoadFlowException: Several line parameters matching the query (name='U_AL.*') have been found:
'U_AL_19', 'U_AL_20', 'U_AL_22', 'U_AL_25', 'U_AL_28', 'U_AL_29', 'U_AL_33', 'U_AL_34', 'U_AL_37',
'U_AL_38', 'U_AL_40', 'U_AL_43', 'U_AL_48', 'U_AL_50', 'U_AL_54', 'U_AL_55', 'U_AL_59', 'U_AL_60',
'U_AL_69', 'U_AL_70', 'U_AL_74', 'U_AL_75', 'U_AL_79', 'U_AL_80', 'U_AL_90', 'U_AL_93', 'U_AL_95',
'U_AL_100', 'U_AL_116', 'U_AL_117', 'U_AL_120', 'U_AL_147', 'U_AL_148', 'U_AL_150', 'U_AL_228',
'U_AL_240', 'U_AL_288'. [catalogue_several_found]
or if no results:
>>> rlf.LineParameters.from_catalogue(name="unknown")
RoseauLoadFlowException: No name matching 'unknown' has been found. Available names are 'O_AL_12',
'O_AL_13', 'O_AL_14', 'O_AL_19', 'O_AL_20', 'O_AL_22', 'O_AL_25', 'O_AL_28', 'O_AL_29', 'O_AL_33',
'O_AL_34', 'O_AL_37', 'O_AL_38', 'O_AL_40', 'O_AL_43', 'O_AL_48', 'O_AL_50', 'O_AL_54', 'O_AL_55',
'O_AL_59', 'O_AL_60', 'O_AL_69', 'O_AL_70', 'O_AL_74', 'O_AL_75', 'O_AL_79', 'O_AL_80', 'O_AL_90',
'O_AL_93', 'O_AL_95', 'O_AL_100', 'O_AL_116', 'O_AL_117', 'O_AL_120', 'O_AL_147', 'O_AL_148', 'O_AL_150',
'O_AL_228', 'O_AL_240', 'O_AL_288', 'O_CU_3', 'O_CU_7', 'O_CU_12', 'O_CU_13', [...]. [catalogue_not_found]