flow

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: [].}