Hydro Production Function Models
Purpose
Section titled “Purpose”This spec defines the hydro generation constraint models supported by Cobre, which relate turbined flow and reservoir storage to electrical output. Two models are available during training (policy construction): constant productivity and FPHA. A third model — linearized head — is available only during simulation (policy evaluation) as a higher-fidelity enhancement. The choice among training models trades off accuracy vs. computational cost, and can vary by stage per hydro.
All decision variables use rate units (MW, m³/s) — see the Variable Units Convention in system elements. For variable definitions see notation conventions; for LP integration see LP formulation; for hydro element descriptions see system elements.
1. Constant Productivity Model
Section titled “1. Constant Productivity Model”The simplest model assumes a linear relationship:
where (MW per m³/s) is the hydro productivity for stage :
with:
- = turbine efficiency (typically 0.85–0.92), from the hydro object’s
efficiencyfield - = reference net head (meters), typically at 65% storage, varying by stage
Per-stage productivity: the productivity coefficient is authored per (hydro, stage) rather than per plant. A plant can therefore carry a stage-varying constant productivity — useful when the reference head differs between near-term and far-future stages of the same study, or when the constant model is being used as a coarse approximation that needs different operating points across the horizon. Section 5.1 describes how that per-(hydro, stage) value is resolved at load time.
LP treatment: 1 equality constraint per hydro per block. The generation variable is fully determined by — no free generation variable is needed. Simple and fast, but ignores head variation with storage within a stage.
Data requirements: a per-stage productivity scalar per hydro plant. No geometry or hyperplane data needed.
2. FPHA (Função de Produção Hidrelétrica Aproximada)
Section titled “2. FPHA (Função de Produção Hidrelétrica Aproximada)”For accurate modeling of hydroelectric generation, FPHA (Aproximate Hydropower Production Function) captures the nonlinear relationship between storage, flow, spillage, and generation through a piecewise-linear approximation.
2.1 Notation Mapping
Section titled “2.1 Notation Mapping”This section uses consistent notation with the LP formulation. The following table maps Cobre symbols to equivalent Portuguese terminology for practitioners familiar with DECOMP/DESSEM/NEWAVE:
| Cobre | Portuguese (practitioner reference) | Description | Units |
|---|---|---|---|
| FPH | Hydro production function | MW | |
| Reservoir storage | hm³ | ||
| Turbined flow | m³/s | ||
| / | Spillage | m³/s | |
| GH | Hydro generation | MW | |
| (montante) | Forebay (upstream) level | m | |
| (jusante) | Tailrace (downstream) level | m | |
| (líquida) | Net head | m | |
| (perda hidráulica) | Hydraulic losses | m | |
| Total downstream outflow | m³/s |
2.2 Exact Production Function
Section titled “2.2 Exact Production Function”The exact hydroelectric production function relates generation to the operating state:
where:
- = reservoir storage volume (hm³)
- = turbined flow (m³/s)
- = spillage flow (m³/s)
- = net head (m), clamped to
- (MW·s/m⁴), with constant efficiency per plant (default 1.0)
The net head is computed as:
clamped to , where:
- = forebay (upstream reservoir) level as function of storage
- = tailrace (downstream channel) level as function of total outflow
- = hydraulic head losses (from the factor or constant model)
Why linearization is needed: is nonlinear in due to the bilinear product , nonlinear topology functions and , and flow-dependent hydraulic losses. For LP formulation, Cobre approximates with a set of linear hyperplanes.
2.3 Topology Functions
Section titled “2.3 Topology Functions”Cobre uses tabular data with linear interpolation for the forebay curve — more transparent and easier to validate against surveyed data than polynomial fits.
The upstream water level is read from the volume-height curve in hydro_geometry.parquet. For storage where :
The downstream water level depends on total outflow. Three representations are supported:
Polynomial model (type: "polynomial"):
Piecewise-linear model (type: "piecewise"): tabular breakpoints with linear interpolation between points.
Piecewise-quartic families (exact tailrace): an optional per-plant tailrace table provides piecewise degree-4 polynomial segments (evaluated via Horner’s method), grouped into backwater families keyed by the downstream reservoir’s reference forebay level — see §2.3.1.
Total downstream flow in LP: (turbined flow + spillage). For FPHA fitting, spillage is fixed at when building the generation cloud; the lateral-flow secant (§2.7) captures the spillage correction per plane.
2.3.1 Piecewise-Quartic Tailrace Families (Backwater Coupling)
Section titled “2.3.1 Piecewise-Quartic Tailrace Families (Backwater Coupling)”When plants are hydraulically close, plant ‘s tailrace level depends on the downstream reservoir’s forebay. An optional per-plant tailrace table provides piecewise-quartic tailrace segments: the flow domain is split into contiguous segments, each a degree-4 polynomial
evaluated via Horner’s method for numerical stability. C0 continuity between segments is enforced to ~1 mm. These segments are grouped into backwater families keyed by the downstream reservoir’s reference forebay level (, in metres). At fitting time, the active family is linearly interpolated by the downstream plant’s resolved stage reference level — clamped to the calibrated level range, never extrapolated. Plants with a single keyless family (no backwater coupling) evaluate that family directly regardless of the downstream level. Plants without a tailrace table use the entity-level polynomial or piecewise-linear tailrace.
Hydraulic Losses
Section titled “Hydraulic Losses hlossh_{loss}hloss”Two models are supported:
Factor model — proportional to gross head:
where is typically 0.01–0.05 (1–5% losses).
Constant model — fixed head loss:
2.4 Productivity
Section titled “2.4 Productivity”The specific productivity (MW per (m³/s · m)) converts hydraulic power to electrical power:
so the exact production is in MW. Cobre uses constant efficiency per plant.
FPHA plants author directly — not a single scalar productivity . The equivalent productivity at the reference operating point is derived from and the VHA geometry; the derivation is documented in section 5.1.
2.5 FPHA Hyperplanes
Section titled “2.5 FPHA Hyperplanes”The FPHA approximation replaces the nonlinear production function with a set of linear hyperplanes that form a concave outer approximation of the exact surface. Each hyperplane defines an upper bound on generation:
Physical interpretation of coefficients:
| Coefficient | Sign | Meaning |
|---|---|---|
| > 0 | Intercept (MW at zero storage, flow, spillage) | |
| ≥ 0 | Higher storage → higher forebay → more generation | |
| ≥ 0 | More turbined flow → more generation | |
| ≤ 0 | More spillage → higher tailrace → less net head |
Source of hyperplanes: planes are either pre-computed (read from fpha_hyperplanes.parquet) or computed from topology data during preprocessing. The computed fit is described in §2.6.
2.6 Computed FPHA Fitting Pipeline
Section titled “2.6 Computed FPHA Fitting Pipeline”The computed-FPHA path produces hyperplanes from topology data in four stages: convex-hull fit → correction → lateral-flow secant → optional plane reduction. The fit is resolved per production-model entry (per season or stage range), so planes can differ across the horizon for the same plant. Results are expanded to per-stage hyperplane rows.
2.6.1 Grid and Cloud
Section titled “2.6.1 Grid and Cloud”The fitter evaluates the exact production function on a uniform two-dimensional grid over the fitting window, with spillage and lateral flow . The grid has:
- Volume axis:
volume_discretization_pointsuniformly spaced values spanning the fitting window (default 5 points). The window is set by the optionalfitting_windowblock insidefpha_config(absolutevolume_min_hm3/volume_max_hm3or percentile bounds), defaulting to the plant’s full forebay storage range. It is distinct fromreference_volume(§5.1), which fixes an operating point, not this window. - Flow axis:
turbine_discretization_pointsuniformly spaced values spanning (default 5 points). The axis starts at , where generation is zero; this zero-flow column anchors the lower closure of the cloud and eliminates the need for any synthetic closing point.
Each cloud point is capped at the plant’s installed capacity . Spillage is not a cloud dimension — it is fixed at zero throughout.
Run-of-river plants: when the plant has a single fitting volume (), two volume samples ~1% of useful storage apart are synthesized to keep the 3-D hull non-degenerate. The resulting residual is then snapped to exactly 0, enforcing the correct run-of-river semantics ().
Determinism: the cloud points and the hull output are canonically sorted, so the fitted hyperplanes are bit-identical regardless of input ordering and MPI rank count.
2.6.2 Convex Hull
Section titled “2.6.2 Convex Hull”The 3-D convex hull of the cloud is computed via the qhull library. The upper-envelope facets — those whose outward normal has a positive generation component — are selected. Each is read as . The result is a concave outer approximation (the smallest concave function lying above ); non-concave regions of fall inside the hull and their facets drop out. Near-parallel coplanar facets arising from hull triangulation are deduplicated by exact coefficient comparison.
2.6.3 Least-Squares Correction
Section titled “2.6.3 Least-Squares αFPHA\alpha_{FPHA}αFPHA Correction”The raw hull envelope is optimistic where is non-concave and pessimistic where it is concave. A single scalar corrects the bias by minimising the mean-squared error between and the exact over the spill grid:
Key properties:
- The regression uses the pointwise minimum over the raw hull planes as , because the LP applies planes as for every , so the binding cap is the minimum, not the maximum.
- The regression is over the spill grid only — adding a spillage axis would pull toward the larger-deviation spill region and degrade the no-spill operating region.
- scales the whole affine function ( alike), not just the intercept. This is why (the old intercept-only shrink).
- may be greater or less than 1 (an MSE balance, not a one-sided shrink). Validation requires . A degenerate denominator (all-zero production) yields the neutral .
- Validation also requires , , .
Fit-quality diagnostic: after the full pipeline, the relative mean-absolute-deviation of the emitted min-envelope vs the exact over the spill grid is computed. A warning is emitted (in canonical plant/stage order) when it exceeds 5% — typically indicating a strongly non-concave surface that no single can track well.
Precomputed input: when using source: "precomputed", hyperplanes are read directly from fpha_hyperplanes.parquet. That file retains a kappa column (defaulting to 1.0); for precomputed planes it is still applied as an intercept-only scale () and is validated to lie in . Only the computed path retired — there the whole-affine correction above replaces it.
2.7 Lateral-Flow Secant
Section titled “2.7 Lateral-Flow Secant”Spillage raises the tailrace level, lowering net head and generation. The coefficient for each plane is fit by a per-plane 1-D ordinary-least-squares secant of generation vs lateral flow (in the current default: own spillage ) over 9 evenly-spaced samples of , evaluated at the plane’s representative (active-maximum) operating point:
where MLT is the long-term mean inflow (m³/s). The representative operating point for each plane is the spill grid point where that plane is the active (tightest) upper bound and attains the largest generation — the operating region the plane actually governs. The secant samples the uncapped production function (not clipped at installed capacity ), so the spillage sensitivity is read from the raw head curve and is not flattened wherever the capacity ceiling binds — unlike the cloud and the regression (§2.6), which both use the capacity-capped output.
Sign: (more lateral flow raises the tailrace, reduces generation). Near-zero slopes of either sign are snapped to exactly 0 to protect LP column scaling from near-zero structural coefficients.
Default lateral axis: own spillage (). The more general composition (upstream defluences, post-incremental inflows with participation factors) is a deferred future extension.
2.8 Similar-Hyperplane Reduction
Section titled “2.8 Similar-Hyperplane Reduction”An optional post-fit step merges consecutive near-parallel or near-coincident planes into their mean hyperplane to shrink the LP. Two mutually-exclusive methods are supported, configured via an fpha_plane_reduction block:
- Angle (
method: angle, tolerance in degrees): merge consecutive pairs whose normal-vector angle satisfies (strict). Fully deterministic from coefficients. - Distance (
method: distance, tolerance in percent + sample count): merge consecutive pairs whose normalised mean-squared generation difference . Uses a deterministically-seeded PRNG (seeded from stable plant/stage/plane-pair identity, never from wall clock or MPI rank), so results are bit-identical across input ordering and rank count.
Origin-plane invariant: the plane through the origin (, generating zero power at zero turbining) is never merged. This guarantees the zero-generation floor.
Off by default: no reduction is applied unless an fpha_plane_reduction block is present in the production-models config.
2.9 LP Integration
Section titled “2.9 LP Integration”Final FPHA Constraint
Section titled “Final FPHA Constraint”For each hydro using FPHA, block , and plane :
The coefficients are already -scaled — there is no separate pre-scaling step. These are hard constraints — no slack variables. Feasibility is ensured through the turbined_cost regularization mechanism (see section 2.10).
Average Storage Computation
Section titled “Average Storage Computation”The average storage over the stage:
where is the incoming storage LP variable (pinned to via column bounds — see LP Formulation §4a) and is end-of-stage storage. Both are LP variables, so appears in the FPHA constraint with coefficient . The LP solver automatically accounts for this in the reduced cost of the pinned column.
Generation as Independent Variable
Section titled “Generation as Independent Variable”When using FPHA, the generation variable is not directly computed from turbined flow. Instead:
- Generation is a free LP variable bounded by (user-defined bounds from
hydros.json) - FPHA constraints (one per plane ) provide upper bounds relating generation to storage, flow, and spillage
- The optimizer maximizes generation subject to FPHA constraints
- At optimum, generation lies on one of the FPHA hyperplane facets
Key insight: Because minimizing cost includes maximizing hydro generation (which has zero fuel cost), the optimizer naturally pushes generation to the FPHA surface boundary. The turbined_cost regularization (section 2.10) ensures the solution lies on the boundary rather than at an interior point.
2.10 Turbined Cost
Section titled “2.10 Turbined Cost”A small regularization cost is applied to the turbined flow variable of every hydro in the objective:
This cost must satisfy for each plant. The rule serves two purposes.
For hydros using the FPHA production model, the regularization keeps the solver on the FPHA surface boundary rather than at an interior point: without it, the optimizer could find degenerate solutions where turbined flow and spillage are both artificially high (with net generation unchanged), because the FPHA surface has a flat region where increasing and simultaneously can maintain the same . The penalty making every unit of turbined flow carry a small additional cost collapses the degenerate interior region.
For hydros using constant productivity, the same regularization is applied uniformly so that the LP tie-breaks (turbined, spillage) decompositions consistently with NEWAVE. Applying it uniformly rather than only under FPHA matters on cases that mix the two production models: a constant-productivity plant that paid nothing on the turbine column would diverge from the reference model. Plants using linearized_head (simulation-only, see section 3) are not subject to this regularization during training because training uses only constant_productivity and fpha; during simulation, the cost is irrelevant because no policy is being constructed.
For the full penalty taxonomy and priority ordering, see Penalty System.
2.11 Impact on Benders Cuts
Section titled “2.11 Impact on Benders Cuts”The FPHA formulation affects water value computation. Because the incoming storage variable appears in the FPHA constraint (via , section 2.9), the FPHA hyperplane duals contribute to the marginal value of incoming storage. However, the implementation does not require manually combining duals from the water balance and FPHA constraints. Instead, pinning to by column bounds (see LP Formulation §4a) makes its reduced cost capture the total sensitivity automatically — the LP solver propagates the FPHA contribution through .
The cut coefficient for storage is simply the reduced cost of the pinned column:
This dual implicitly includes the water balance contribution (), the FPHA contribution (), and any generic constraint contributions — all resolved by the LP solver without explicit dual combination.
For the complete cut coefficient computation, see cut management.
Model Transition Considerations
Section titled “Model Transition Considerations”When a hydro transitions between production models across stages:
| Transition | Cut Interpretation | Action |
|---|---|---|
| Constant → FPHA | Cuts at stage use constant model | Cut valid but conservative |
| FPHA → Constant | Stage backward pass uses constant | May overestimate value |
| FPHA → FPHA (different params) | Parameters change | Cuts remain valid if conservative |
Recommendation: When using stage-dependent FPHA configuration, ensure the FPHA at stage is at least as conservative as stage for cut validity.
3. Linearized Head Model (Simulation-Only Enhancement)
Section titled “3. Linearized Head Model (Simulation-Only Enhancement)”An intermediate model between constant productivity and full FPHA that captures first-order head variation with storage:
where:
- are linearization coefficients derived from
- (normalization at reference volume)
3.1 Why Simulation-Only
Section titled “3.1 Why Simulation-Only”The product is a bilinear term — both and are LP variables. To maintain LP linearity, the standard approach fixes from the previous SDDP iteration (or from a reference volume on the first iteration), converting the constraint to a linear equality. However, this means the LP constraint coefficients change between iterations: the effective productivity is different after each forward pass updates the storage trajectory.
This violates a foundational assumption of SDDP: each stage must have a fixed LP structure across all iterations. Benders cuts generated under one linearization point encode dual information about a specific LP. When the LP changes (because changed), previously generated cuts are not guaranteed to be valid — they may cut off the true optimal solution or produce inconsistent value function approximations. This breaks the convergence guarantees of the algorithm.
During simulation, linearized head is safe because simulation executes a single forward pass through the policy — there are no cuts being accumulated, no convergence to verify. The model provides a higher-fidelity generation estimate than constant productivity without the preprocessing cost of fitting FPHA hyperplanes.
3.2 Simulation Use Case
Section titled “3.2 Simulation Use Case”The linearized head model fills a practical gap in the simulation step:
- More accurate than constant productivity: Captures how reservoir level affects generation — important for plants with significant head variation that are modeled with
constant_productivityduring training for computational reasons - Cheaper than FPHA: Requires only the Volume-Height-Area curve (
hydro_geometry.parquet), no hyperplane fitting - Single constraint: One equality constraint per hydro per block, compared to inequality constraints for FPHA
Typical use: plants where full FPHA accuracy is justified for near-term training stages but far-future stages use constant_productivity during training, then linearized_head during simulation for improved analytics.
3.3 Data Requirements
Section titled “3.3 Data Requirements”productivity_mw_per_m3s from hydros.json plus hydro_geometry.parquet for the Volume-Height-Area curve.
4. Model Selection Guidelines
Section titled “4. Model Selection Guidelines”Training (Policy Construction)
Section titled “Training (Policy Construction)”Only constant_productivity and fpha are valid during training. The linearized head model is excluded because it changes the LP between iterations (see section 3.1).
| Scenario | Recommended Model | Rationale |
|---|---|---|
| High-head storage reservoirs | FPHA | Significant head variation (>20%) |
| Large storage variation plants | FPHA | Operating across wide volume range |
| Run-of-river plants | FPHA or Constant | Hull now supports run-of-river |
| Initial algorithm testing | Constant productivity | Fast iteration, debug focus |
| Near-term stages | FPHA | Accuracy for operational decisions |
| Far-future stages | Constant productivity | Computational efficiency |
Simulation (Policy Evaluation)
Section titled “Simulation (Policy Evaluation)”All three models are available during simulation. The linearized head model is particularly useful as a simulation-only upgrade for plants that used constant_productivity during training:
| Scenario | Recommended Model | Rationale |
|---|---|---|
| Plants trained with FPHA | FPHA | Consistency with training model |
| Plants trained with constant, low head variation | Constant productivity | No benefit from head correction |
| Plants trained with constant, significant head variation | Linearized head | Better analytics without FPHA fitting cost |
| Post-optimization validation | Compare all models | Verify approximation quality |
The production model may vary by stage or by season per hydro, configured via the stage_ranges and seasonal selection modes in hydro_production_models.json.
5. Energy-Conversion Quantities
Section titled “5. Energy-Conversion Quantities”The three production models of sections 1–3 describe how generation depends on the operating state. For accounting purposes — natural-inflow energy (ENA), stored reservoir energy (EARM), and per-stage MW/MWh reporting — Cobre reduces each plant’s production model to a small set of per-(hydro, stage) scalars at a representative operating point. These scalars are computed once at study setup and reused on every stage of every scenario.
5.1 Equivalent Productivity
Section titled “5.1 Equivalent Productivity ρeq\rho_{eq}ρeq”The equivalent productivity (MW per m³/s) is the single-scalar productivity that the plant would carry at the reference operating point . The derivation depends on the active generation model at stage :
| Generation model | derivation |
|---|---|
constant_productivity | A per-(hydro, stage) numeric value authored by the case — see “Authoring sources” below. |
linearized_head | A per-(hydro, stage) numeric value authored by the case — same resolution as constant_productivity. |
fpha | , where is the net head computed from the VHA geometry (section 2.3) at the reference point. FPHA hydros do not author a separate scalar in the production-models input — it is derived. A parquet-level override is still accepted (see “FPHA override path”). |
Reference volume: the reference operating volume is declared by a single reference_volume field in the production-model config entry (stage_range or seasonal). The field takes exactly one of two forms: an absolute volume_hm3 value, or a percentile (fraction of useful volume between and ); when absent it defaults to 65% of useful volume. This single field is the source of truth for the derivation above and for the reservoir reference level at which the computed-FPHA piecewise-quartic tailrace families are interpolated (§2.3.1 — a plant’s reference volume sets the downstream forebay level seen by the plant immediately upstream). It does not set the computed-FPHA volume fitting window : that window is configured separately by the optional fitting_window block inside fpha_config (§2.6.1), defaulting to the plant’s full forebay storage range.
The reference flow is typically set at installed turbine capacity.
Authoring sources for non-FPHA hydros
Section titled “Authoring sources for non-FPHA hydros”Two complementary inputs supply for constant_productivity and linearized_head plants:
- Range-level productivity in the hydro production models input. Each
stage_rangeorseasonalentry may carry a singleproductivity_mw_per_m3svalue that applies to every stage the entry covers. This is the natural authoring shape for “this productivity is the same for the next five stages” — declarative, low-volume. - Per-stage productivity in the hydro energy productivity input (a per-row table indexed by
(hydro_id, stage_id)). Each row may name a specific stage or carry a per-hydro default (nostage_idset). This is the natural authoring shape for “this productivity changes every stage” — tabular, high-volume.
Either source — but not both for the same (hydro, stage) — may supply the value. The contract is symmetric with the generic-constraint authoring contract: a declarative JSON file owns model selection plus range-level values, and a tabular parquet file owns per-stage numerical refinement.
Resolution order
Section titled “Resolution order”For a non-FPHA hydro at study stage , the value of is resolved in this order:
- A per-stage row in the energy-productivity input whose
stage_idmatches exactly. - A per-hydro default row in the energy-productivity input (no
stage_idset) for hydro . - The
productivity_mw_per_m3svalue from the matchingstage_rangeorseasonalentry in the production-models input.
The first three options are mutually exclusive at load time (see “Conflict and coverage” below), so this ordering is descriptive rather than a precedence in the sense of “earlier source overrides later”; it is the order in which the resolver consults sources, stopping at the first hit.
Conflict and coverage
Section titled “Conflict and coverage”Two load-time invariants are enforced:
- Conflict: when the per-stage parquet row (or the per-hydro default) and the production-models JSON entry both supply a value for the same , the case is rejected at load time. The error names both files and the offending .
- Coverage: when neither source supplies a value for some study stage of a non-FPHA hydro , the case is rejected at load time. The error names the offending pair.
A coverage failure never reaches the dispatch pipeline — it is caught alongside the other case-validation rules. This is the same boundary discipline used elsewhere in the load pipeline: structural problems surface as load-time errors, never as deeper dispatch-time panics.
FPHA override path
Section titled “FPHA override path”For FPHA hydros, is derived from VHA geometry and at the reference operating point. The per-stage energy-productivity input remains available as an override: if a row supplies a value for an FPHA , it replaces the derived value. The production-models JSON file does not accept productivity_mw_per_m3s for FPHA — that field is rejected at parse time. FPHA hydros are therefore exempt from the non-FPHA conflict and coverage rules.
Zero as planned-outage marker
Section titled “Zero as planned-outage marker”A resolved is accepted for non-FPHA hydros and a resolved is accepted for FPHA hydros. Both are interpreted as a planned outage for the affected stage: the LP uses these scalars as multipliers (never divisors), so zero productivity produces zero generation cleanly without any divide-by-zero or feasibility hazard. The same relaxation applies to the parquet override, the parquet column, and the JSON range-level productivity. Negative values are still rejected at load time as nonsensical.
This relaxation lets real-world cases mark a plant as out-of-service for specific stages without the case author needing to remove it from the system definition, restructure the cascade, or work around a strict-positivity check.
5.2 Accumulated Cascade Productivity
Section titled “5.2 Accumulated Cascade Productivity ρacum\rho_{acum}ρacum”The accumulated productivity (MW per m³/s) is the energy that one m³/s of incremental inflow into plant contributes once it is routed through plant and every plant downstream of along the cascade:
The sum is taken in topological order over the cascade (see system elements for the cascade topology). Plants with no downstream successors have . The accumulation is per-stage because each summand can vary by stage.
5.3 Inflow and Storage in Energy Units
Section titled “5.3 Inflow and Storage in Energy Units”converts hydraulic quantities to energy units that downstream reporting expects:
Incremental inflow energy (MW):
This is the rate-form natural energy inflow in MW. Stagewise energy (MWh) is recovered by multiplying by block duration in hours.
Stored reservoir energy (MWh):
The conversion factor converts hm³ to m³ and seconds to hours so that storage in hm³ multiplied by productivity in MW/(m³/s) yields MWh.
These quantities do not enter the LP — they are accounting outputs derived from the LP solution. Their methodology relevance is that they make the production model auditable in the same energy units used by the load forecast and the cost objective.
5.4 Why a Scalar Reduction Exists at All
Section titled “5.4 Why a Scalar Reduction Exists at All”The full FPHA production function (section 2) is multi-dimensional and concave; constant productivity is a scalar but per-plant; linearized head is bilinear in . None of these can be summed across a cascade or scaled by inflow without a reference operating point. The energy-conversion scalars resolve this: each model is reduced to one number per (hydro, stage), at one operating point, and that number is what the cascade-summation, ENA, and EARM formulas above can consume uniformly. The LP continues to enforce the full production model — the scalar reduction is for accounting, not for dispatch.
6. Data Requirements Summary
Section titled “6. Data Requirements Summary”| Data Source | Required Fields | Used For |
|---|---|---|
| Hydro plant entity | tailrace (polynomial, piecewise, or piecewise-quartic families) | computation |
| Hydro plant entity | hydraulic_losses (factor or constant) | computation |
| Hydro plant entity | efficiency (constant) | Turbine efficiency |
| Hydro plant entity | specific_productivity_mw_per_m3s_per_m (FPHA) | for derivation (§5.1) |
| Hydro plant entity | Cascade topology (downstream pointer) | topological sum (§5.2) |
| Hydro production models input | Range-level productivity per stage_range / seasonal entry (non-FPHA, optional) | for sections 1 and 3 (§5.1 authoring source 1) |
| Hydro production models input | reference_volume per stage_range / seasonal entry (absolute or percentile) | for the energy-conversion reduction (§5.1) and the tailrace backwater reference level (§2.3.1) |
| Hydro production models input | FPHA fitting_window per stage_range / seasonal entry (absolute or percentile bounds, optional) | Computed-FPHA volume grid (§2.6.1) |
| Hydro production models input | FPHA fitting configuration and optional fpha_plane_reduction block | Grid sizes, plane reduction method (§2.6–§2.8) |
| Hydro energy productivity input | Per-(hydro, stage) equivalent_productivity_mw_per_m3s | override (§5.1 authoring source 2 + FPHA override path) |
| Hydro geometry | volume_hm3, height_m | interpolation (§2.3) |
| Pre-fitted FPHA planes | (plus kappa column retained for back-compat, defaults to 1.0) | Optional alternative to in-process fitting |
For non-FPHA hydros, the per-(hydro, stage) productivity coefficient is resolved from exactly one of the two authoring sources listed in §5.1: range-level productivity in the production-models input, or per-stage productivity in the energy-productivity input. Supplying a value from both for the same is rejected at load time; supplying neither for any study stage of a non-FPHA hydro is also rejected at load time.
For FPHA hydros, the production-models input does not accept a productivity scalar — is derived from VHA geometry and unless the energy-productivity input supplies an override.
Cross-References
Section titled “Cross-References”- Notation conventions — variable and set definitions (, , , , )
- System elements — hydro plant element description, decision variables, Variable Units Convention
- LP formulation — how production constraints integrate into the assembled LP
- Penalty system —
turbined_costregularization, penalty priority ordering - Cut management — Benders cut generation affected by FPHA dual variables
- Equipment formulations — thermal and hydro equipment constraint patterns