Fluxes

class pyfuse.FluxBase(parameters, options)[source]

Base class for the fluxes to be used by all fluxes used in the model representation

Basically a flux is a calculated process giving an output based on the states on a particular moment This base-class is used add specific methods for extraction of information (todo)

Since for one model run, parameters and options are constant, when setting-up the model, all fluxes are loaded and pars dictionary is directed

Information when adding a new flux option:
  • need to add elif in the calc of the flux
  • create new method (+ adding in general list!)

Evapotranspiration

class pyfuse.Evaporation(parameters, options)[source]
Class for Evapotranspiration fluxes calculation, with 2 implemented options:
  1. sequential: upper layer is first evaporating and the remaining is extracted from the lower layer
  2. root-weight: the amount of roots (parameter r1) defines the relative evaporation
Information when adding a new flux option:
  • need to add elif in the calc
  • create new method (+ adding in general list!)
Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options

Methods

calc(STATES,FLUXES) The calc method picks the correct definition based on the options dictionary defined by the mode structure
sequential(STATES,FLUXES) Sequential calculation of the evapotranspiration. First the upper layer is evaporating, wherafter the lower layer is evaporating. In the case of two tension reservoirs in the upper layer, e1 and e2 are extracted from those two storages. For the surface option, e1 is evaporation from the surface storage, e2, the upper tension storage Model States: dependent of the upper and lower configuration, one or more of: S1TA, S1TB, S1T, S2T, S1F, S2T Model Parameters: be, S1Tmax, S2Tmax Fluxes returned: e1, e2, e_all
root-weight(STATES,FLUXES) root-weight calculation of the evapotranspiration. First the upper layer is evaporating based on the r1 rootweight and the lower layer is evaporating based on (1-r1). In the case of two tension reservoirs in the upper layer, e1 and e2 are extracted from those two storages. For the surface option, r1 parameter is related to the surface storage and (1-r1) to the upper tension storage Model States: dependent of the upper and lower configuration, one or more of: S1TA, S1TB, S1T, S2T, S1F, S2T Model Parameters: be, S1Tmax, S2Tmax, r1 (r2 = 1-r1) Fluxes returned: e1, e2, e_all

Percolation

class pyfuse.Percolation(parameters, options)[source]
Class for Percolation fluxes calculation, with 5 implemented options:
  1. perc_w2sat: percolation from the entire upper layer storage
  2. perc_f2sat: percolation from the free upper layer storage
  3. perc_lower: percolation based on the lower layer storage
  4. perc_nodrain: no percolation, but infiltration (direct splitting overland; Hymod)
  5. perc_tresh: percolation based on both layers
Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options

Methods

calc(STATES,FLUXES) The calc method picks the correct definition based on the options dictionary defined by the mode structure
perc_tresh(STATES,FLUXES) Treshold calculation of the percolation. When using surface storage, percolation is linear related to the surface storage and the upper layer tension storage, in all other cases the tension storage of the lower layer influences the amount of percolation Model States: S1F, S2T (or S1T when surface1_1 option in upper layer) Model Parameters: tg, S1Fmax, S2Tmax (or S1Tmax when surface1_1 option in upper layer) Fluxes updated: q12
perc_nodrain(STATES,FLUXES) Hymod approach, with separating of the excess runoff in baseflow and surface component. The baseflow component is here identified by the percolation and the lower layer is conceptualized as baseflow routing. Model States: none, since purely dependent from qsx-FLUX Model Parameters: alfah Fluxes updated: q12
perc_w2sat(STATES,FLUXES) Percolation in function of the upper layer soil storage, with in general large values for parameter c to limit drainage below field capacity. Model States: S1 Model Parameters: S1max, c Fluxes updated: q12
perc_f2sat(STATES,FLUXES) Percolation in function of the free upper layer soil storage, with in general values for parameter c close to unity. Model States: S1F Model Parameters: ku,S1Fmax,c Fluxes updated: q12
perc_lower(STATES,FLUXES) Percolation in function of the free upper layer soil storage, with in general values for parameter c close to unity. Model States: S1F, S2 Model Parameters: S1Fmax, alfa, S2max, psi qbsat is calculated in function of the selected lower layer option Fluxes updated: q12
calc_Qbsat()[source]

Help function of the percolation class, calculates the maximum baseflow in function of the lower layer options

Returns:qbsat (q0 in model description)

Interflow

class pyfuse.Interflow(parameters, options)[source]
Class for Percolation fluxes calculation, with 3 implemented options:
  1. intflwnone: no interflow (hypodermic flow)
  2. intflwsome: linear extraction of free storage
  3. intflwtresh: threshold based interflow of upper layer
Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options

Methods

calc(STATES,FLUXES) The calc method picks the correct definition based on the options dictionary defined by the mode structure
intflwnone(STATES,FLUXES) No interflow, like in TOPMODEL and ARNO/VIC Model States: none Model Parameters: none Fluxes updated: qif = 0.0
intflwsome(STATES,FLUXES) Linear interflow conceptualization from free storage Model States: S1F Model Parameters: ki, S1Fmax Fluxes updated: qif
intflwtresh(STATES,FLUXES) Linear interflow conceptualization from free storage if above threshold Model States: S1F, S2T (or S1T if surface1_1 option for upper layer) Model Parameters: ki, tif, S2Tmax (or S1Tmax if surface1_1 option for upper layer) Fluxes updated: qif

Surface

class pyfuse.Surface(parameters, options)[source]
Class for Surface fluxes calculation, with 4 implemented options:
  1. arno_x_vic: Probability distribution style (cfr.Variable Infiltration Concept)
  2. prms_varnt: PRMS model concept
  3. tmdl_param: power law transmissivity profile TOPMODEL

4. oflwtresh: surface flow when above threshold (5. testeasy: only for testing purposes)

Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options

Methods

calc(STATES,FLUXES) The calc method picks the correct definition based on the options dictionary defined by the mode structure
arno_x_vic(STATES,FLUXES) VIC conceptualization for surface storage (or Pareto distribution in Moore-PDM concept) Model States: S1 Model Parameters: S1max, b alfah if percolation based on hymod concep Fluxes updated: qsx
prms_varnt(STATES,FLUXES) PRMS conceptualization for surface storage, linea dependence, catchment conceptualized as one reservoir Model States: S1T Model Parameters: S1Tmax, Acmax alfah if percolation based on hymod concept Fluxes updated: qsx
tmdl_param(STATES,FLUXES) TOPMODEL conceptualization for surface storage, based on the topographic distribution function Model States: S2 Model Parameters: S2max, maxpow (derived), loglambda, chi, n alfah if percolation based on hymod concept Fluxes updated: qsx Implementation for FUSE [1] is not really 3-par version, but interpretation of the 1 parameter as described in [2], but are essentially the same, see utilities -> gammadistr.py file
oflwtresh(STATES,FLUXES) Threshold conceptualization for surface storage (cfr. NAM model), catchment conceptualized as one reservoir Model States: S2T (S1T when surface1_1 upper layer option) Model Parameters: ko, tof, S2Tmax (S1Tmax when surface1_1 upper layer option) alfah if percolation based on hymod concept Fluxes updated: qsx
testeasy(STATES, FLUXES)[source]

Only for testing purposes!

Base flow

class pyfuse.Baseflow(parameters, options)[source]
Class for Base Flow and lower layer calculation, with 4 implemented options:
  1. tens2pll_2: Two parallel reservoirs
  2. unlimfrc_2: Storage of unlimited size
  3. unlimpow_2: TOPMODEL adaptive version
  4. fixedsiz_2: Storage of fixed size
Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options

Methods

calc(STATES,FLUXES) The calc method picks the correct definition based on the options dictionary defined by the mode structure
tens2pll_2(STATES,FLUXES) Two parallel linear reservoirs used in conjunction with 2 parallel reservoirs in state equations Model States: S2FA, S2FB Model Parameters: vA, vB Fluxes updated: qbA, qbB, qb
unlimfrc_2(STATES,FLUXES) Linear or non-linear reservoir used in combination with a single reservoir of infinite size Model States: S2 Model Parameters: n, v Fluxes updated: qb
unlimpow_2(STATES,FLUXES) Non-linear reservoir used in combination with a single reservoir of infinite size; used to conceptualize the TOPMODEL parameterization of the power law transmissivity profile Model States: S2 Model Parameters: n, S2max qbsat is calculated in function of the selected lower layer option Fluxes updated: qb
fixedsiz_2(STATES,FLUXES) Linear or Non-linear reservoir used in combination with a single reservoir of fixed size Model States: S2 Model Parameters: ks, n, S2max Fluxes updated: qb

Routing

class pyfuse.Routing(parameters, options)[source]
Class for Routingof the relevant subflows with 3 options:
  1. rout_all1: routing the subflows combined
  2. no_rout: no routing
  3. rout_ind: routing the subflow indeividual
Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

Notes

TODO: make also gamma distribution based to enable also non-integer reservoir value https://github.com/cvitolo/r_fuse/blob/master/fuse/src/fuse.cpp lijn 114!

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options
ROUTLIB: dict Dictionary containting all the routing characteristics when using linear reservoirs convolution

Methods

calc(STATES,FLUXES,ROUTLIB) The calc method picks the correct definition based on the options dictionary defined by the mode structure
rout_all1(STATES,FLUXES) Routing of the sum of all subflows Model States: none, analytical solution used based on fluxes only Model Parameters: frac_future (derived from number of reservoirs and residence parameter) Fluxes updated: qgamma, qfuture, q_all
no_rout(STATES,FLUXES) No routing, subflows are summed for each time stepq_all Model States: none Model Parameters: none Fluxes updated: q_all
rout_ind(STATES,FLUXES,ROUTLIB) Individual routing of the subflows Model States: none, analytical solution used based on fluxes only Model Parameters: timeo,timei,timeb Fluxes updated: q_all, routover, routinter, routbase

Miscellaneous bucket overflow

class pyfuse.Misscell(parameters, options, solver=True)[source]

Class for miscellaneous bucket overflow fluxes as an automatic consequence of the selected options in upper and lower layer, using logistic smoothing functions to prevent from dicontinuities.

Parameters:

parameters : dictionary

Dictionary containing all the model parameters

options: dictionary

Dictionary containting all the model structure options

See also

pyFUSE.Logistic
For the logistic smoother used

Attributes

STATES: dict Dictionary containing all the model states of the current calculation time step
FLUXES: dict Dictionary containting all the fluxes structure options
calc(STATES, FLUXES)[source]

The calc method picks the correct definition based on the options dictionary defined by the mode structure

Parameters:

STATES : dictionary

Dictionary containing all the model states of the current calculation time step

FLUXES: dictionary

Dictionary containting all the fluxes structure options, updated by the flux calculation

Returns:

FLUXES: dictionary

updated values

fixedsiz_2(STATES, FLUXES)[source]
States
S2
Parameters
S2
FLUXES: dictionary
updated by the percolation calculation: qsfof
no_limit(STATES, FLUXES)[source]
States
none
Parameters
none
FLUXES: dictionary
updated by the percolation calculation: qsfof=0.0
onestate_1(STATES, FLUXES)[source]
States
S1
Parameters
S1max
FLUXES: dictionary
updated by the percolation calculation: qufof
surface1_1(STATES, FLUXES)[source]
States
S1F
Parameters
S1Fmax
FLUXES: dictionary
updated by the percolation calculation: qstof
tens2pll_2(STATES, FLUXES)[source]
States
S2T, S2FA, S2FB
Parameters
S2Tmax, S2FAmax, S2FBmax, kappa
FLUXES: dictionary
updated by the percolation calculation: qstof, qsfofa, qsfofb, qsfof
tension1_1(STATES, FLUXES)[source]
States
S1T,S1F
Parameters
S1Tmax, S1Fmax
FLUXES: dictionary
updated by the percolation calculation: qutof, qufof
tension2_1(STATES, FLUXES)[source]
States
S1TA,S1TB,S1F
Parameters
S1TAmax, S1TBmax, S1Fmax
FLUXES: dictionary
updated by the percolation calculation: qurof, qutof, qufof