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:
- sequential: upper layer is first evaporating and the remaining is extracted from the lower layer
- 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:
- perc_w2sat: percolation from the entire upper layer storage
- perc_f2sat: percolation from the free upper layer storage
- perc_lower: percolation based on the lower layer storage
- perc_nodrain: no percolation, but infiltration (direct splitting overland; Hymod)
- 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
Interflow¶
-
class
pyfuse.Interflow(parameters, options)[source]¶ - Class for Percolation fluxes calculation, with 3 implemented options:
- intflwnone: no interflow (hypodermic flow)
- intflwsome: linear extraction of free storage
- 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:
- arno_x_vic: Probability distribution style (cfr.Variable Infiltration Concept)
- prms_varnt: PRMS model concept
- 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
Base flow¶
-
class
pyfuse.Baseflow(parameters, options)[source]¶ - Class for Base Flow and lower layer calculation, with 4 implemented options:
- tens2pll_2: Two parallel reservoirs
- unlimfrc_2: Storage of unlimited size
- unlimpow_2: TOPMODEL adaptive version
- 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:
- rout_all1: routing the subflows combined
- no_rout: no routing
- 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