gtopt/turbine.hpp file

Defines the Turbine structure representing a hydroelectric turbine.

This module defines the Turbine structure which couples a hydraulic waterway to an electrical generator, converting water flow [m³/s] into electrical power [MW].

Conversion relationship

power [MW] = conversion_rate [MW·s/m³] × flow [m³/s]

Variable efficiency (hydraulic head)

When main_reservoir is set, the turbine's conversion rate can vary with the reservoir volume (hydraulic head). The piecewise-linear efficiency curve is provided by a matching ReservoirProductionFactor element. During SDDP forward iterations the conversion-rate LP coefficient is updated based on the current reservoir volume.

Connection modes

A turbine connects to the water system via one of:

  • waterway — traditional mode: reads water flow from a waterway variable in the junction balance LP.
  • flow — simplified mode: reads discharge directly from a Flow element's fixed schedule. No junctions or waterways needed. Useful for simple run-of-river (pasada) units.

When flow is set, waterway is ignored. The turbine's power constraint becomes: power ≤ discharge[block] × conversion_rate. Aperture updates automatically change the flow discharge, so the turbine power bound varies correctly across scenarios.

JSON Example (waterway mode)

{
  "uid": 1,
  "name": "t1",
  "waterway": "w1_2",
  "generator": "g_hydro",
  "conversion_rate": 0.0025,
  "capacity": 100,
  "main_reservoir": "res1"
}

JSON Example (flow mode — pasada)

{
  "uid": 2,
  "name": "t_pasada",
  "flow": "f_river",
  "generator": "g_pasada",
  "conversion_rate": 1.0
}

Fields that accept a number/array/string value can hold:

  • A scalar constant
  • A 1-D inline array indexed by [stage]
  • A filename string referencing a Parquet/CSV schedule in input_directory/Turbine/

Namespaces

namespace gtopt

Classes

struct gtopt::Turbine
Hydroelectric turbine converting water flow into electrical power.