gtopt/reservoir_discharge_limit_lp.hpp file

LP representation of a ReservoirDischargeLimit constraint.

The ReservoirDischargeLimitLP class provides the LP formulation for volume-dependent discharge limits. For each (scenario, stage) pair it creates:

  1. A free qeh variable (stage-average hourly discharge [m³/s])
  2. Per-block averaging constraints linking block flows to qeh: qeh - (dur_b / dur_stage) × flow_b = 0
  3. A stage-level inequality (volume-dependent discharge cap):

    qeh - slope * energy_scale * 0.5 * eini
        - slope * energy_scale * 0.5 * efin  <= intercept

When the ReservoirDischargeLimit has multiple piecewise segments, update_lp() selects the active segment based on the reservoir volume from the previous solve and updates the LP constraint coefficients/RHS.

Namespaces

namespace gtopt

Classes

struct gtopt::ReservoirDischargeLimitLP::RDLState
Tracks current LP state for coefficient updates.
class gtopt::ReservoirDischargeLimitLP
LP wrapper for ReservoirDischargeLimit constraints.