Pumps¶
Pump object¶
The modelling of pumps in the LtmApi is defined by a list of pumps objects. The parameters in bold are required and the rest are optional. Each object must have:
Parameter |
Datatype |
Description |
|---|---|---|
name |
string |
name of pump object |
float (optional) |
Ownership of the station/pump in percent (%) |
|
average_power |
float |
Average supplied power at mean pumping head and capacity |
pump_capacity |
attribute-value pair |
x: [max, min] pumping head [m]; y: [min, max] discharge [m³/s]. Note the reverse head - discharge relation. |
upper_reservoir_reference_curve |
Reference curve for maximum volume [Mm³]. See Time dependent constraints and Reservoir. |
|
lower_reservoir_reference_curve |
Reference curve for minimum volume [Mm³]. See Time dependent constraints and Reservoir. |
|
unavailable_capacity |
Txy (optional) |
Planned capacity outage for a pump (revision) [MW] |
breakdown_unavailable_capacity |
Txy (optional) |
Unforeseen downtimes capacity outage for a pump (havari) [MW] |
comment |
string |
optional comment |
Notes to the pumps objects (see also Production discharge curve):
The highest head is the difference between HR of the reservoir where water is pumped into and the inlet of the draft tube. HR is the highest regulated level of water (masl).
The smallest head is the difference between LR of the reservoir water is pumped to and the HR of the reservoir where water is pumped from.
The pumped discharge for a given head is calculated using linear interpolation.
The attribute average_spill_energy_equivalent on the object Reservoir needs to be set with a resonable value to get resonable pumping results. Be sure to compare it to the discharge_energy_equivalent on the object Plant.
Minimal example for pumps
1{
2 "name": "pump1_upper",
3 "ownership": 100,
4 "average_power": 150,
5 "pump_capacity": {
6 "x": [110, 100],
7 "y": [47, 50]
8 },
9 "upper_reservoir_reference_curve": {
10 "timestamps": ["2023-W17", "2023-W40", "2023-W50"],
11 "scenarios": [[450, 450, 450]]
12 },
13 "lower_reservoir_reference_curve": {
14 "timestamps": ["2023-W17", "2023-W40", "2023-W50"],
15 "scenarios": [[5, 5, 5]]
16 }
17}
Below is a minimal example on how to use pumps with revisions (unavailable capacity) on pumps and plants. Unavailable capacity can be set by attribute unavailable_capacity on Plant or Pump object. Breakdown unavailable capacity can also be set in a similar manner by the breakdown_unavailable_capacity on Plant or Pump object.
Minimal example for pumps with unavailable_capacity
1{
2 "name": "pump1_upper",
3 "ownership": 100,
4 "average_power": 150,
5 "pump_capacity": {
6 "x": [110, 100],
7 "y": [47, 50]
8 },
9 "upper_reservoir_reference_curve": {
10 "timestamps": ["2023-W17", "2023-W40", "2023-W50"],
11 "scenarios": [[450, 450, 450]]
12 },
13 "lower_reservoir_reference_curve": {
14 "timestamps": ["2023-W17", "2023-W40", "2023-W50"],
15 "scenarios": [[5, 5, 5]]
16 }
17 "unavailable_capacity": {
18 "timestamps": [
19 "2023-01-02T00:00:00Z",
20 "2024-06-01T00:00:00Z",
21 "2024-12-01T00:00:00Z"
22 ],
23 "scenarios": [
24 [
25 170,
26 150,
27 0
28 ]
29 ]
30 }
31}
Pump modelling variants¶
There two types of pumps, standalone and as a part of the power plant.
Power plant with pumps¶
When the power plant has a pump, the pump is connected to the plant/bottom resevoir. The pumped hydropower plant can reverse the turbines and pumps hydro in the reverse direction.
Standalone pump¶
With a standalone pump, the pump is connected to the top reservoir.
Example¶
An example is provided here: Pumps in the LtmApi