pypowsybl.network.Network.get_generators#

Network.get_generators(all_attributes=False, attributes=None, **kwargs)[source]#

Get a dataframe of generators.

Parameters:
  • all_attributes (bool) – flag for including all attributes in the dataframe, default is false

  • attributes (Optional[List[str]]) – attributes to include in the dataframe. The 2 parameters are mutually exclusive. If no parameter is specified, the dataframe will include the default attributes.

  • kwargs (Union[_SupportsArray[dtype[Any]], _NestedSequence[_SupportsArray[dtype[Any]]], bool, int, float, complex, str, bytes, _NestedSequence[Union[bool, int, float, complex, str, bytes]]]) – the data to be selected, as named arguments.

Returns:

the generators dataframe.

Return type:

DataFrame

Notes

The resulting dataframe, depending on the parameters, will include the following columns:

  • energy_source: the energy source used to fuel the generator

  • target_p: the target active value for the generator (in MW)

  • max_p: the maximum active value for the generator (MW)

  • min_p: the minimum active value for the generator (MW)

  • max_q: the maximum reactive value for the generator only if reactive_limits_kind is MIN_MAX (MVar)

  • min_q: the minimum reactive value for the generator only if reactive_limits_kind is MIN_MAX (MVar)

  • max_q_at_target_p (optional): the maximum reactive value for the generator for the target p specified (MVar)

  • min_q_at_target_p (optional): the minimum reactive value for the generator for the target p specified (MVar)

  • max_q_at_p (optional): the maximum reactive value for the generator at current p (MVar)

  • min_q_at_p (optional): the minimum reactive value for the generator at current p (MVar)

  • rated_s : The rated nominal power (MVA)

  • reactive_limits_kind: type of the reactive limit of the generator (can be MIN_MAX, CURVE or NONE)

  • target_v: the target voltage magnitude value for the generator (in kV)

  • target_q: the target reactive value for the generator (in MVAr)

  • voltage_regulator_on: True if the generator regulates voltage

  • regulated_element_id: the ID of the network element where voltage is regulated

  • p: the actual active production of the generator (NaN if no loadflow has been computed)

  • q: the actual reactive production of the generator (NaN if no loadflow has been computed)

  • i: the current on the load, NaN if no loadflow has been computed (in A)

  • voltage_level_id: at which substation this generator is connected

  • bus_id: bus where this generator is connected

  • bus_breaker_bus_id (optional): bus of the bus-breaker view where this generator is connected

  • node (optional): node where this generator is connected, in node-breaker voltage levels

  • connected: True if the generator is connected to a bus

  • fictitious (optional): True if the generator is part of the model and not of the actual network

This dataframe is indexed on the generator ID.

Examples

net = pp.network.create_ieee14()
net.get_generators()

will output something like:

energy_source

target_p

max_p

min_p

target_v

target_q

voltage_regulator_on

p

q

voltage_level_id

bus_id

id

B1-G

OTHER

232.4

9999.0

-9999.0

1.060

-16.9

True

NaN

NaN

VL1

VL1_0

B2-G

OTHER

40.0

9999.0

-9999.0

1.045

42.4

True

NaN

NaN

VL2

VL2_0

B3-G

OTHER

0.0

9999.0

-9999.0

1.010

23.4

True

NaN

NaN

VL3

VL3_0

B6-G

OTHER

0.0

9999.0

-9999.0

1.070

12.2

True

NaN

NaN

VL6

VL6_0

B8-G

OTHER

0.0

9999.0

-9999.0

1.090

17.4

True

NaN

NaN

VL8

VL8_0

net = pp.network.create_ieee14()
net.get_generators(all_attributes=True)

will output something like:

energy_source

target_p

max_p

min_p

target_v

target_q

voltage_regulator_on

p

q

voltage_level_id

bus_id

id

B1-G

OTHER

232.4

9999.0

-9999.0

1.060

-16.9

True

NaN

NaN

VL1

VL1_0

B2-G

OTHER

40.0

9999.0

-9999.0

1.045

42.4

True

NaN

NaN

VL2

VL2_0

B3-G

OTHER

0.0

9999.0

-9999.0

1.010

23.4

True

NaN

NaN

VL3

VL3_0

B6-G

OTHER

0.0

9999.0

-9999.0

1.070

12.2

True

NaN

NaN

VL6

VL6_0

B8-G

OTHER

0.0

9999.0

-9999.0

1.090

17.4

True

NaN

NaN

VL8

VL8_0

net = pp.network.create_ieee14()
net.get_generators(attributes=['energy_source','target_p','max_p','min_p','p','voltage_level_id','bus_id'])

will output something like:

energy_source

target_p

max_p

min_p

p

voltage_level_id

bus_id

id

B1-G

OTHER

232.4

9999.0

-9999.0

NaN

VL1

VL1_0

B2-G

OTHER

40.0

9999.0

-9999.0

NaN

VL2

VL2_0

B3-G

OTHER

0.0

9999.0

-9999.0

NaN

VL3

VL3_0

B6-G

OTHER

0.0

9999.0

-9999.0

NaN

VL6

VL6_0

B8-G

OTHER

0.0

9999.0

-9999.0

NaN

VL8

VL8_0

Warning

The “generator convention” is used for the “input” columns (target_p, max_p, min_p, target_v and target_q) while the “load convention” is used for the ouput columns (p and q).

Most of the time, this means that p and target_p will have opposite sign. This also entails that p can be lower than min_p. Actually, the relation: \(\\text{min_p} <= -p <= \\text{max_p}\) should hold.