Source code for eml_urban_hydro_model.rho
import numpy as np
from .type_models.rho_parameters import RhoParameters
[docs]
def rho(s: np.ndarray, params: RhoParameters) -> np.ndarray | float:
Z_soil = params.n * params.model_params.vegetation_params.Z_root # grass root depth[cm]
eta_w = params.model_params.E_w / Z_soil # normalized maximum evapotranspiration [-/day]
eta = params.model_params.E_max / Z_soil
m = (
params.Ks / (Z_soil * (np.exp(params.beta * (1 - params.s_fc)) - 1))
if (params.s_fc != 1)
else params.Ks / Z_soil
)
if s <= params.s_h:
return 0
elif params.s_h < s <= params.s_w:
return eta_w * (s - params.s_h) / (params.s_w - params.s_h)
elif params.s_w < s <= params.s_s:
return eta_w + (eta - eta_w) * (s - params.s_w) / (params.s_s - params.s_w)
elif params.s_s < s <= params.s_fc:
return eta
else:
return eta + m * (np.exp(params.beta * (s - params.s_fc)) - 1)
# return eta + heavy/Z_soil