Unit Hydrograph related functions
Procs
proc calc_flows(prev_quick: float; prev_slow: float; v_s: float; e_rainfall: float; area: float; tau_q: float; tau_s: float): ( float, float, float) {...}{.stdcall, exportc, dynlib, raises: [], tags: [].}
-
Calculate quick and slow flow, and outflow using a linear routing module.
Calculates flows for current time step based on previous flows and current effective rainfall.
Assumes components are in parallel.
References: https://wiki.ewater.org.au/display/SD45/IHACRES-CMD+-+SRG - Croke, B.F.W., Jakeman, A.J. 2004
- A catchment moisture deficit module for the IHACRES rainfall-runoff model, Environmental Modelling & Software, 19(1), pp. 1–5. doi: 10.1016/j.envsoft.2003.09.001
- Croke, B.F.W., Jakeman, A.J. 2005
- Corrigendum to "A Catchment Moisture Deficit module for the IHACRES rainfall-runoff model [Environ. Model. Softw. 19 (1) (2004) 1–5]" Environmental Modelling & Software, 20(7), p. 997. doi: 10.1016/j.envsoft.2004.11.004
Parameters: - prev_quick : previous quick flow in ML/day
- prev_slow : previous slow flow in ML/day
- v_s : proportional amount that goes to slow flow. $v_{s} <= 1.0$
- e_rainfall : effective rainfall for $t$
- tau_q : Time constant, quick flow $tau$ value
- tau_s : Time constant slow flow $tau$ value
- Represents the time required for the quickflow and slowflow responses to fall to $1/e$ of their initial values after an impulse of rainfall.
Returns: quickflow, slowflow, outflow in ML/day proc routing(gw_vol: float; storage_coef: float; inflow: float; flow: float; irrig_ext: float; gw_exchange: float = 0.0): (float, float) {...}{. stdcall, exportc, dynlib, raises: [], tags: [].}
-
Stream routing, taking into account groundwater interactions and water extractions.
Parameters: - gw_vol : groundwater store at t-1
- storage_coef : groundwater storage factor
- inflow : incoming streamflow (flow from previous node)
- flow : outflow for the node (local flow)
- irrig_ext : volume of irrigation extraction in ML
- gw_exchange : groundwater flux. Defaults to 0.0
- Negative values represent infiltration into aquifer
Returns: gw_store, and streamflow in ML/day proc calc_outflow(flow: float; extractions: float): float {...}{.stdcall, exportc, dynlib, raises: [], tags: [].}
-
Simple routing modifier to account for extractions.
Parameters: - flow : sum of quickflow and slowflow in ML/day
- extractions : water extractions that occurred in ML/day
Returns: (flow - extractions), minimum possible is 0.0 proc calc_ft_flows(prev_quick, prev_slow, e_rain, recharge, area, a, b: float): ( float, float, float) {...}{.stdcall, exportc, dynlib, raises: [ValueError], tags: [].}
-
Unit Hydrograph module ported from Fortran.
Parameters: - prev_quick : previous quickflow storage
- prev_slow : previous slowflow storage
- e_rain : effective rainfall in mm
- recharge : recharge amount in mm
- area : catchment area in km^2
- a : quickflow storage coefficient, inverse of :math:tau_q such that :math:a := (1/tau_q)
- b : slowflow storage coefficient, inverse of :math:tau_s such that :math:b := (1/tau_s)
Returns: quick store, slow store, outflow proc calc_ft_level(outflow: float; level_params: array[9, float]): float {...}{. stdcall, exportc, dynlib, raises: [ValueError], tags: [].}