source/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