HYPE
Loading...
Searching...
No Matches
general_functions Module Reference

Functions/Subroutines

real function, public tempfactor (temp)
real function, public halfsatconcfactor (conc, par)
real function, public moisturefactor (sm, wp, pw, thickm, satsmf, exp, thetalow, thetaupp)
real function, public exponential_moisturefactor (sm, pw, limpar, exp)
real function, public simple_rating_curve (wst, k, p, w0)
real function, public exponential_decay (timesteps, halflife)
subroutine, public sedimentation (depth, conc, vel, lim, delta)
real function, public plant_growth (up1, up2, up3, day)
real function, public sigmoid_response (x, xs, xe, ys, ye, xm)
real function, public linear_response (x, xs, xe, ys, ye)
real function, public water_density (t, s)

Detailed Description

General equations that are used by hydrological models.

Function/Subroutine Documentation

◆ exponential_decay()

real function, public general_functions::exponential_decay ( real, intent(in) timesteps,
real, intent(in) halflife )

Calculates fraction left after exponential decay with a half-life parameter.

Parameters
[in]timestepsin unit of half time
[in]halflifehalf-life of decay
Here is the call graph for this function:
Here is the caller graph for this function:

◆ exponential_moisturefactor()

real function, public general_functions::exponential_moisturefactor ( real, intent(in) sm,
real, intent(in) pw,
real, intent(in) limpar,
real, intent(in) exp )

Calculates an exponential soil moisture dependence factor.

Parameters
[in]smsoil moisture (mm)
[in]pwtotal pore wolume (mm)
[in]limparlimitation parameter of moisturefactor (mm)
[in]expexponent of moisturefactor
Here is the call graph for this function:
Here is the caller graph for this function:

◆ halfsatconcfactor()

real function, public general_functions::halfsatconcfactor ( real, intent(in) conc,
real, intent(in) par )

Calculates a concentration dependence factor Based on: half saturation function.

Parameters
[in]conccurrent concentration
[in]parhalf saturation concentration
Here is the call graph for this function:
Here is the caller graph for this function:

◆ linear_response()

real function, public general_functions::linear_response ( real, intent(in) x,
real, intent(in) xs,
real, intent(in) xe,
real, intent(in) ys,
real, intent(in) ye )

Linear function between (xs,ys) and (xe,ye) y = ys + (ye-ys)/(xe-xs))*x with xs <= x < xe.

Parameters
[in]xinput variable (e. snow depth, water level, temperature, etc)
[in]xsx value defining the start of the response function (for instance 0.)
[in]xex value defining the end of the response function (for instance 1.)
[in]ysy value at the start of the response function (for instance 0.)
[in]yey value at the end of the response function (for instance 1.)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ moisturefactor()

real function, public general_functions::moisturefactor ( real, intent(in) sm,
real, intent(in) wp,
real, intent(in) pw,
real, intent(in) thickm,
real, intent(in) satsmf,
real, intent(in) exp,
real, intent(in) thetalow,
real, intent(in) thetaupp )

Calculates a soil moisture dependence factor.

Parameters
[in]smsoil moisture (mm)
[in]wpwilting point pore wolume (mm)
[in]pwtotal pore wolume (mm)
[in]thickmthickness of soil layer (m)
[in]satsmfsaturated moisturefactor (satact)
[in]expexponent of moisturefactor (thetapow)
[in]thetalowlow(?) moisture coefficient (thetalow)
[in]thetaupphigh(?) moisture coefficient (thetaupp)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ plant_growth()

real function, public general_functions::plant_growth ( real, intent(in) up1,
real, intent(in) up2,
real, intent(in) up3,
real, intent(in) day )

Calculates a logistic growth for plant based on a three-parameter equation from SOILN.

Reference: Eckersten, H., P.-E. Jansson, and H. Johnsson 1994. SOILN model - user's manual 2nd edition, Division of Agricultural Hydrotechnics Communications 94:4, Department of Soil Sciences, Swedish University of AgriculturalSciences, 58pp, Uppsala).

Parameters
[in]up1parameter 1
[in]up2parameter 2
[in]up3parameter 3
[in]dayvariable
Here is the call graph for this function:
Here is the caller graph for this function:

◆ sedimentation()

subroutine, public general_functions::sedimentation ( real, intent(in) depth,
real, intent(in) conc,
real, intent(in) vel,
real, intent(in) lim,
real, intent(out) delta )

Calculate sedimentation from sinking velocity.

Parameters
[in]depthwater depth (m)
[in]concconcentration of substance to sedimentate (mg/L or something)
[in]velsinking velocity (m/timestep)
[in]limconcentration limit of sedimentation rate (mg/L or ?)
[out]deltasedimented amount (g/m2 or something)
Here is the caller graph for this function:

◆ sigmoid_response()

real function, public general_functions::sigmoid_response ( real, intent(in) x,
real, intent(in) xs,
real, intent(in) xe,
real, intent(in) ys,
real, intent(in) ye,
real, intent(in) xm )

Flexible sigmoid function to approximate a response function (for instance a growth or depletion curve) with well defined parameters.

References: Yin et al., Annals of Botany 91: 361-371, 2003, doi:10.1093/aob/mcg029 Pimentel et al., Hydrol. Earth Syst. Sci., 21, 805-820, 2017

The original function by Yin et al is defined using xs=0 and ys=0:

y = ye * (1 + (xe - x)/(xe - xm))(x/xe)^(xe / (xe-xm)), with 0<= xm < xe

We can generalize this to have response y between ys and ye for input variable xs to xe:

y = ys + (ye-ys)*(1 + (xet-xt)/(xet-xmt))*(xt/xet)^(xet/(xet-xmt)), with xt=x-xs, xet=xe-xs, xmt=xm-xs, and xs <= xm < xe

Parameters
[in]xinput variable (e. snow depth, water level, temperature, etc)
[in]xsx value defining the start of the response function (for instance 0.)
[in]xex value defining the end of the response function (for instance 1.)
[in]ysy value at the start of the response function (for instance 0.)
[in]yey value at the end of the response function (for instance 1.)
[in]xmx value with maximum slope of the response function (any value between xs and xe)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ simple_rating_curve()

real function, public general_functions::simple_rating_curve ( real, intent(in) wst,
real, intent(in) k,
real, intent(in) p,
real, intent(in) w0 )

Calculates momentanous flow from current water level with simple rating curve equation: Q = k*(w-w0)**p.

Parameters
[in]wstcurrent water level (m)
[in]krating curve coefficient
[in]prating curve exponent
[in]w0rating curve threshold (m)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ tempfactor()

real function, public general_functions::tempfactor ( real, intent(in) temp)
Parameters
[in]tempcurrent temperature
Here is the call graph for this function:
Here is the caller graph for this function:

◆ water_density()

real function, public general_functions::water_density ( real, intent(in) t,
real, intent(in), optional s )

Water density (kg/m3) as a function of temperature and salinity rho = rhoref * (1 - c1 * (T - Tref)^2 + c2 * S) Default equation from PROBE97 (except rhoref=1000).

Parameters
[in]twater temperature (degree Celsius)
[in]swater salinity (PSU)
Here is the call graph for this function:
Here is the caller graph for this function: