Hydro power¶
- The hydropower variants in LtmApi are:
Batteries (modelled as aggregated hydropower)
Detailed hydro modules¶
Detailed description of detailed hydro modules in the LTM-API. The LTM hydropower modelling use the standard hydro modules which contains both a reservoir and a hydropower plant.
In the LTM-API reservoirs and hydropower plants are two separate objects, as described in Reservoir and Plant. They can be connected to each other by the Connections object to form a LTM standard hydro module.
The definition of a minimal hydropower module specifying the energy equivalent and maximum discharge (omitting the tailrace elevation, pq-curve and volume curve) is not possible in the LtmApi. A minimal (synthetic) example in the LtmApi is provided below.
The gross head is set to 100 m
The tailrace elevation is set to 1000 m (100 m below the reservoir)
Two-point linear pq-curve from 0 MW production at 0 m3/s discharge to 10 MW production at 25 m3/s discharge
Minimal example
"reservoirs": [
{
"name": "upper_main",
"average_spill_energy_equivalent": 0.7,
"regulated_inflow_name": "ten",
"average_regulated_inflow": 50.0,
"max_discharge": 25.0,
"reference_curve": {
"timestamps": [
"2023-W17",
"2023-W40"
],
"scenarios": [
[
200,
450
]
]
},
"initial_volume": 400,
"max_volume": 500
}
],
"plants": [
{
"name": "plant",
"discharge_energy_equivalent": {
"scenarios": [
[
0.113
]
]
},
"pq_curves": {
"2024-01-01T00:00:00Z": {
"y": [
0.0,
10.0
],
"x": [
0.0,
25.0
]
}
},
"unregulated_inflow_name": "one",
"average_unregulated_inflow": 1.0,
"tailrace_elevation": 1000.0,
"gross_head": 100.0,
}
],
"connections": [
{
"from": "upper_main",
"to": "plant"
}
]
Reservoir¶
See the discription of the LTM Reservoir.
The table below shows Required Reservoir Parameters. The parameters in italics means that one of the two must be specified, where the user choose the appropriate one.
Parameter |
Datatype |
Description |
|---|---|---|
name |
string |
Object name |
average_spill_energy_equivalent |
double |
Local average energy equivalent for spills [kWh/m3]. See Energy equivalents and the importance for Pump object. |
average_regulated_inflow |
double |
Average yearly regulated Inflow [m3/s]. |
max_discharge |
double |
Global maximum discharge from the reservoir [m^3/sec]. If the pq-curve on Plant is defined for a higher discharge, the whole pq-curve is not used. |
reference_curve |
Reservoir reference curve [Mm^3] See reservoir curve here Reservoir. |
|
max_volume |
double |
Mm3 |
volume_curve |
The volume curve show the functional relationship between the elevation above sea level and the reservoir volume [m - Mm3]. See Reservoir. |
Below is a reservoir example:
"reservoirs": [
{
"name": "Example reservoir",
"average_spill_energy_equivalent": 0.12,
"average_regulated_inflow": 0.79492267,
"initial_volume": 60,
"max_discharge": 30,
"reference_curve": {
"timestamps": [
"2024-04-22T00:00:00Z",
"2024-06-03T00:00:00Z",
"2025-01-01T00:00:00Z"
],
"scenarios": [
[
0.0,
75.0,
85.0
]
]
},
"regulated_inflow": {
"#comment": "Refers to unregulated inflow label",
"external_reference": {
"type": "csv",
"filename": "constant_inflow.csv"
}
},
"volume_curve": {
"x": [
1050,
1100
],
"y": [
0,
100
]
}
}
]
The optional reservoir parameters are listed in the table below Optional Reservoir Parameters.
Parameter |
Datatype |
Description |
|---|---|---|
degree_of_regulation |
double |
Reservoir regulation degree [years]. Factor describes how many years it takes to fill the reservoir. |
reservoir_type |
Regulation or buffer reservoir. See Reservoir types. |
|
regulated_inflow |
Regulated inflow [m3/sec]. See Inflow. |
|
regulated_inflow_name |
string |
Reference to a regulated inflow time series [m3/sec]. inflow_series |
initial_volume |
double |
Reservoir volume at simulation start. [Mm3] |
gross_head |
double |
Nominal gross head [m]. See Production discharge curve |
tailrace_elevation |
double |
Tailrace elevation (utløpskote) [m]. See Production discharge curve |
max_volume_curve |
Maximal allowed volume for given points in time [Mm3] |
|
max_volume_curve_hard_limit |
bool |
Reservoir has hard upper volume limit |
min_volume_curve |
Minimum allowed volume for given points in time [Mm3] |
|
min_volume_curve_hard_limit |
bool |
Reservoir has hard lower volume limit |
max_discharge_curve |
Maximum allowed discharge for given points in time [m3/sec] |
|
max_discharge_name |
string |
Reference to a time series for maximum discharge |
max_discharge_scale |
double |
Scaling factor for the maximum discharge time series |
min_discharge_curve |
Minimum allowed discharge for given points in time [m3/sec] |
|
min_discharge_name |
string |
Reference to a time series for minimum discharge |
min_discharge_scale |
double |
Scaling factor for the minimum discharge time series |
min_bypass_curve |
Minimum allowed bypass for given points in time [m3/sec] |
|
min_bypass_name |
string |
Reference to a time series for minimum bypass |
min_bypass_scale |
double |
Scaling factor for the minimum bypass time series |
max_bypass_curve |
Maximum allowed bypass for given points in time [m3/sec] |
|
max_bypass_name |
string |
Reference to a time series for maximum bypass |
max_bypass_scale |
double |
Scaling factor for the maximum bypass time series |
hc_max_flow |
int |
Maximum flow on hydraulic couplings [m3/s] |
hc_has_gate |
int |
Hydraulic coupling has gate/hatch [m3/s] |
#comment |
string |
|
metadata |
json |
output |
module_number |
int |
output |
Plant¶
See description of LTM Plant. The required plant parameters are listed in the table below.
Parameter |
Datatype |
Description |
|---|---|---|
name |
string |
Object name |
discharge_energy_equivalent |
Local discharge energy equivalent time series, given together with turbine PQ-curves. [kWh/m^3]. Plant and Energy equivalents. |
|
pq_curves |
xyt |
PQ efficiency curves [MW - m3/s]. Production discharge curve. The highest discharge on the pq-curve restricts the discharge through the station even though the maximum discharge from the reservoir may be larger (Reservoir). |
average_unregulated_inflow |
double |
Average yearly unregulated inflow [m^3/s]. Inflow. |
gross_head |
double |
Nominal gross head (brutto fallhoyde) [m]. Gross head Hnom in Production discharge curve. Value must be >0.0. |
tailrace_elevation* |
double |
Plant tailrace elevation (utlopskote stasjon) [m] Production discharge curve. |
Below is a minimal plant example. The “yearly_inflow_profile” is a reference to the name of a defined inflow_series.
"plants": [
{
"name": "plant",
"discharge_energy_equivalent": {
"scenarios": [
[
0.12
]
]
},
"pq_curves": {
"2024-01-01T00:00:00Z": {
"y": [
0.0,
9.89
],
"x": [
0.0,
24.6
]
}
},
"average_unregulated_inflow": 0.6,
"gross_head": 40.0,
"tailrace_elevation": 1030,
"unregulated_inflow_name": "yearly_inflow_profile"
}
]
The optional plant parameters are listed in the table below. The parameters in italics means that one of the two must be specified, where the user choose the appropriate one.
Parameter |
Datatype |
Description |
|---|---|---|
unregulated_inflow |
Unregulated inflow time series [m3/sec]. Inflow. |
|
unregulated_inflow_name |
string |
reference to the name of an inflow time series. inflow_series |
double |
% |
|
max_discharge_curve |
Maximum discharge constraint [m3/sec]. Time dependent constraints. |
|
max_discharge_name |
string |
Name of time series |
max_discharge_scale |
double |
Scaling factor of the input series |
min_discharge_curve |
Minimum discharge constraint [m3/sec]. Time dependent constraints. |
|
min_discharge_name |
string |
Name of time series |
min_discharge_scale |
double |
Scaling factor of the input series |
min_bypass_curve |
Minimum bypass constraint [m3/sec]. Time dependent constraints. |
|
min_bypass_name |
string |
Name of time series |
min_bypass_scale |
double |
Scaling factor of the input series |
gross_head_max_discharge |
xy |
Maximum discharge as function of gross head [m3/s]. |
max_bypass_curve |
Maximum bypass constraint [m3/sec]. Time dependent constraints. |
|
max_bypass_name |
string |
Name of time series |
max_bypass_scale |
double |
Scaling factor of the input series |
unavailable_capacity |
MW |
|
#comment |
string |
|
metadata |
json |
User meta data: Output |
Aggregated hydropower¶
Input¶
The API expects input data to be given as a list of “aggregated_hydro_modules” objects. The aggregated hydro modules include the following input where the Parameters in bold are required and the others are optional:
Parameter |
Type |
Description |
|---|---|---|
name |
string |
Object name |
reservoir_energy |
double |
Maximum reservoir energy [MWh] |
station_power |
double |
Max station production [MW] |
unregulated_power_inflow |
Unregulated power inflow [MW], see Inflow |
|
regulated_power_inflow |
Regulated power inflow [MW], see Inflow |
|
start_reservoir_energy |
double |
Initial aggregated reservoir energy [MWh] |
upper_reservoir_limits |
Upper reservoir limits [MWh] |
|
lower_reservoir_limits |
Lower reservoir limits [MWh] |
|
upper_production_limits |
Upper production limits [MW] |
|
lower_production_limits |
Lower production limits [MW] |
|
metadata |
json |
User metadata: output |