volume_right_lp.cpp file
Implementation of VolumeRightLP methods.
Implements LP formulation for volume-based water rights. Uses StorageLP base class for the rights-volume balance and SDDP state variable coupling (Tilmant's "dummy reservoir").
The volume right is NOT part of the hydrological topology — it tracks accumulated right volumes in a separate ledger.
Balance equation
efin(b) = efin(b-1) + fcr × dur(b) × saving(b) / escale
- fcr × dur(b) × extraction(b) / escale
The volume starts at emax (full rights entitlement) and decrements as extraction occurs (depletion model). Economy VolumeRights (purpose="economy") use the saving variable to receive deposits of unused rights (PLP: IVESN/IVERN/IVAPN).
At reset_month, eini is re-provisioned:
- With bound_rule: eini = evaluate_bound_rule(reservoir_volume) (PLP: DerRiego = Base + Σ(Factor_i × Zone_Volume_i))
- Without bound_rule: eini = emax (simple full reprovision)
Efficiency is 1.0 — rights are consumed 1:1 without loss.
Namespaces
- namespace gtopt