Soil Moisture
The soil_moisture module contains all functions related to soil moisture data components, as outlined by Yang et al.[1].
- wet_bulb_temperature_inst(t_air_i, t_dew_i)
Computes the instantaneous wet bulb temperature.
- Parameters:
t_air_i (float) – instantaneous air temperature, \(T_{a}\) [C]
t_dew_i (float) – instantaneous dew point temperature, \(Td_{a}\) [C]
- Returns:
t_wet_i – instantaneous wet bulb temperature, \(Tw_{a}\) [C]
- Return type:
float
- wet_bulb_temperature_inst_new(t_air_i, qv_i, p_air_i)
Computes the instantaneous wet bulb temperature based on Stull, Roland. “Wet-bulb temperature from relative humidity and air temperature.” Journal of applied meteorology and climatology 50.11 (2011): 2267-2269.
- Parameters:
t_air_i (float) – instantaneous air temperature, \(T_{a}\) [C]
qv_i (float) – instantaneous specific humidity, \(q_{v,i}\) [kg/kg]
p_air_i (float) – instantaneous air pressure, \(P_{i}\) [mbar]
- Returns:
t_wet_i – instantaneous wet bulb temperature, \(Tw_{a}\) [C]
- Return type:
float
- dew_point_temperature_inst(vp_i)
Computes the instantaneous dew point temperature.
- Parameters:
vp_i (float) – instantaneous vapour pressure, \(e_{a}\) [mbar]
- Returns:
t_dew_i – instantaneous dew point temperature, \(Td_{a}\) [K]
- Return type:
float
- dew_point_temperature_coarse_inst(vp_i)
Computes the instantaneous dew point temperature.
- Parameters:
vp_i (float) – instantaneous vapour pressure, \(e_{a}\) [mbar]
- Returns:
t_dew_coarse_i – instantaneous dew point temperature, \(Td_{a}\) [K]
- Return type:
float
- psi_m(y)
Computes the stability correction for momentum based on Brutsaert[2].
\[\begin{split}\Psi_{M}(y) = & \ln(a+y)-3by^{\frac{1}{3}} + \\ & \frac{ba^{\frac{1}{3}}}{2}\ln[\frac{(1+x)^{2}}{(1-x+x^{2})}] + \\ & \sqrt{3}ba^{\frac{1}{3}}\arctan[\frac{(2x-1)}{\sqrt{3}}]+\Psi_{0}\end{split}\]where the following constants are used
\(a\) = 0.33
\(b\) = 0.41
in which:
\[x = (\frac{y}{a})^{\frac{1}{3}}\]and:
\[y = \frac{-(z-d)}{L}\]where \(L\) is the monin obukhov length defined by
ETLook.unstable.monin_obukhov_length(), \(z\) and \(d\) are the measurement height and displacement height respectively. All aforementioned parameters are different for the bare soil and full canopy solutions.The symbol \(\Psi_{0}\) denotes a constant of integration, given by
\[\Psi_{0}=-\ln({a}) + \sqrt{3} \cdot b \cdot a^{\frac{1}{3}} \cdot \frac{\pi}{6}\]Notes
This function should not be used as an input function for a ETLook tool. This function is used internally by
aerodynamical_resistance_bare()andaerodynamical_resistance_full()andwind_speed_soil().
- psi_h(y)
Computes the stability correction for momentum based on Brutsaert[2].
\[\Psi_{H}(y)=[\frac{(1-d)}{n}]\ln{\frac{(c+y^n)}{c}}\]where the following constants are used
\(c\) = 1.00
\(d\) = 0.057
\(n\) = 0.78
in which
\[y = \frac{-(z-d)}{L}\]where \(L\) is the monin obukhov length defined by
ETLook.unstable.monin_obukhov_length(), \(z\) and \(d\) are the measurement height and displacement height respectively. All aforementioned parameters are different for the bare soil and full canopy solutions.Notes
This function should not be used as an input function for a tool. This function is used internally by
aerodynamical_resistance_bare()andaerodynamical_resistance_full()andwind_speed_soil().
- initial_friction_velocity_inst(u_b_i, z0m, disp, z_b=100)
Computes the initial instantaneous friction velocity without stability corrections.
\[u_{*}=\frac{k \cdot u_{b}}{\ln\left(\frac{z_{b}-d}{z_{0,m}}\right)}\]- Parameters:
u_b_i (float) – instantaneous wind speed at blending height, \(u_{b}\) [m s-1]
z0m (float) – surface roughness, \(z_{0,m}\) [m]
disp (float) – displacement height, \(d\) [m]
z_b (float) – blending height, \(z_{b}\) [m]
- Returns:
u_star_i_init – initial estimate of the instantaneous friction velocity, \(u_{*,i}\) [m s-1]
- Return type:
float
- atmospheric_emissivity_inst(vp_i, t_air_k_i)
Computes the atmospheric emissivity according to Brutsaert[3].
\[\varepsilon_{a}=a\left(\frac{e_{a}}{T_{a}}\right)^{b}\]where the following constants are used
\(a\) = 1.24
\(b\) = 1/7
- Parameters:
vp_i (float) – instantaneous vapour pressure, \(e_{a}\) [mbar]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
- Returns:
emiss_atm_i – instantaneous atmospheric emissivity, \(\varepsilon_{a}\) [-]
- Return type:
float
- net_radiation_bare(ra_hor_clear_i, emiss_atm_i, t_air_k_i, lst, r0_bare=0.38)
Computes the net radiation for the bare soil with zero evaporation.
\[Q_{bare}^{*}=\left(1-\alpha_{0,bare}\right)S_{d}+\varepsilon_{s} \cdot \varepsilon_{a} \cdot \sigma \cdot T_{a}^{4}-\varepsilon_{s} \cdot \sigma \cdot T_{s}^{4}\]- Parameters:
ra_hor_clear_i (float) – Total clear-sky irradiance on a horizontal surface, \(S_{d}\) [W/m2]
emiss_atm_i (float) – instantaneous atmospheric emissivity, \(\varepsilon_{a}\) [-]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
lst (float) – surface temperature, \(T_{0}\) [K]
r0_bare (float) – dry bare soil surface albedo, \(\alpha_{0, bare}\) [-]
- Returns:
rn_bare – net radiation bare soil, \(Q^*_{bare}\) [Wm-2]
- Return type:
float
- net_radiation_full(ra_hor_clear_i, emiss_atm_i, t_air_k_i, lst, r0_full=0.18)
Computes the net radiation at full canopy with zero evaporation.
\[Q_{full}^{*}=\left(1-\alpha_{0,full}\right) \cdot S_{d}+\varepsilon_{c} \cdot \varepsilon_{a} \cdot \sigma \cdot T_{a}^{4}-\varepsilon_{c} \cdot \sigma \cdot T_{s}^{4}\]- Parameters:
ra_hor_clear_i (float) – Total clear-sky irradiance on a horizontal surface, \(ra_hor_clear_i\) [W/m2]
emiss_atm_i (float) – instantaneous atmospheric emissivity, \(P\) [-]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
lst (float) – surface temperature, \(T_{0}\) [K]
r0_full (float) – surface albedo full vegetation, \(\alpha_{0, full}\) [-]
- Returns:
rn_full – net radiation full vegetation, \(Q^*_{full}\) [Wm-2]
- Return type:
float
- sensible_heat_flux_bare(rn_bare, fraction_h_bare=0.65)
Computes the bare soil sensible heat flux.
\[H_{bare} = H_{f, bare} \cdot Q^*_{bare}\]- Parameters:
rn_bare (float) – net radiation bare soil, \(Q^*_{bare}\) [Wm-2]
fraction_h_bare (float) – fraction of H of net radiation bare soil, \(H_{f, bare}\) [-]
- Returns:
h_bare – sensible heat flux bare soil, \(H_{bare}\) [Wm-2]
- Return type:
float
- sensible_heat_flux_full(rn_full, fraction_h_full=0.95)
Computes the full canopy sensible heat flux.
\[H_{full} = H_{f, full} \cdot Q^*_{full}\]- Parameters:
rn_full (float) – net radiation full vegetation, \(Q^*_{full}\) [Wm-2]
fraction_h_full (float) – fraction of H of net radiation full vegetation, \(H_{f, full}\) [-]
- Returns:
h_full – sensible heat flux full vegetation, \(H_{full}\) [Wm-2]
- Return type:
float
- wind_speed_blending_height_bare(u_i, z0m_bare=0.001, z_obs=10, z_b=100)
Computes the wind speed at blending height \(u_{b}\) [m/s] using the logarithmic wind profile.
\[u_{b}=\frac{u_{obs} \cdot \ln\left(\frac{z_{b}}{z_{0,m}}\right)} {\ln\left(\frac{z_{obs}}{z_{0,m}}\right)}\]- Parameters:
u_i (float) – instantaneous wind speed at observation height, \(u_{obs}\) [m/s]
z_obs (float) – observation height of wind speed, \(z_{obs}\) [m]
z_b (float) – blending height, \(z_{b}\) [m]
z0m_bare (float) – surface roughness bare soil, \(z_{0,m}\) m
- Returns:
u_b_i_bare – instantaneous wind speed at blending height for bare soil, \(u_{b,i,bare}\) [m/s]
- Return type:
float
- wind_speed_blending_height_full_inst(u_i, z0m_full=0.1, z_obs=10, z_b=100)
Computes the wind speed at blending height \(u_{b}\) [m/s] using the logarithmic wind profile.
\[u_{b}=\frac{u_{obs} \cdot \ln\left(\frac{z_{b}}{z_{0,m}}\right)} {\ln\left(\frac{z_{obs}}{z_{0,m}}\right)}\]- Parameters:
u_i (float) – instantaneous wind speed at observation height, \(u_{obs}\) [m/s]
z_obs (float) – observation height of wind speed, \(z_{obs}\) [m]
z_b (float) – blending height, \(z_{b}\) [m]
z0m_full (float) – surface roughness vegetation, \(z_{0,m}\) [m]
- Returns:
u_b_i_full – instantaneous wind speed at blending height for full vegetation, \(u_{b,i,full}\) [m s-1]
- Return type:
float
- friction_velocity_full_inst(u_b_i_full, z0m_full=0.1, disp_full=0.667, z_b=100)
Like
initial_friction_velocity_inst()but with full vegetation parameters.- Parameters:
u_b_i_full (float) – instantaneous wind speed blending height for full vegetation, \(u_{b,d}\) [m s-1]
z0m_full (float) – surface roughness vegetation, \(z_{0,m,b}\) [m]
disp_full (float) – displacement height vegetation, \(d^{b}\) [m]
z_b (float) – blending height, \(z_b\) [m]
- Returns:
u_star_i_full – instantaneous friction velocity vegetation, \(u_{f}^{*}\) [m s-1]
- Return type:
float
- friction_velocity_bare_inst(u_b_i_bare, z0m_bare=0.001, disp_bare=0.0, z_b=100)
Like
initial_friction_velocity_inst()but with bare soil parameters.- Parameters:
u_b_i_bare (float) – instantaneous wind speed blending height bare soil, \(u_{b,d}\) [W m-2]
z0m_bare (float) – surface roughness bare soil, \(z_{0,m,b}\) [m]
disp_bare (float) – displacement height bare soil, \(d^{b}\) [m]
z_b (float) – blending height, \(z_b\) [m]
- Returns:
u_star_i_bare – instantaneous friction velocity bare soil, \(u_{b}^{*}\) [m s-1]
- Return type:
float
- monin_obukhov_length_bare(h_bare, ad_i, u_star_i_bare, t_air_k_i)
Like
unstable.monin_obukhov_length()but with bare soil parameters.- Parameters:
h_bare (float) – sensible heat flux for dry bare soil, \(H_{b,d}\) [W m-2]
ad_i (float) – instantaneous air density, \(\rho\) [k g m-3]
u_star_i_bare (float) – instantaneous friction velocity bare soil, \(u^{*}_{b}\) [m s-1]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
- Returns:
L_bare – monin obukhov length dry vegetation, \(L_{b,d}\) [m]
- Return type:
float
- monin_obukhov_length_full(h_full, ad_i, u_star_i_full, t_air_k_i)
Like
unstable.monin_obukhov_length()but with full canopy parameters.- Parameters:
h_full (float) – sensible heat flux for dry full vegetation, \(H_{f,d}\) [W m-2]
ad_i (float) – instantaneous air density, \(\rho\) [k g m-3]
u_star_i_full (float) – instantaneous friction velocity vegetation, \(u^{*}_{b}\) [m s-1]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
- Returns:
L_full – monin obukhov length dry vegetation, \(L_{f,d}\) [m]
- Return type:
float
- aerodynamical_resistance_forced_convection_full(u_i, L_full, z0m_full=0.1, disp_full=0.667, z_obs=10)
Computes the aerodynamical resistance for a full canopy, Eq A1 from Sanchez.
\[\begin{split}z_{1} &= \frac{z_{obs}-d}{z_{0,m}} \\ z_{2} &= \frac{z_{obs}-d}{L} \\ z_{3} &= \frac{z_{0,m}}{L} \\ z_{4} &= \frac{z_{obs}-d}{\frac{z_{0,m}}{7}} \\ z_{5} &= \frac{\frac{z_{0,m}}{7}}{L} \\ r_{a,c} &= \frac{(\ln(z_{1})-\phi_{m}(-z_{2})+\phi_{m}(-z_{3})) \cdot (\ln(z_{4})-\phi_{h}(-z_{2})+\phi_{h}(-z_{5}))}{k^{2} \cdot u}\end{split}\]- Parameters:
u_i (float) – instantaneous wind speed at observation height, \(u_{obs}\) [m/s]
z_obs (float) – observation height of wind speed, \(z_{obs}\) [m]
disp_full (float) – displacement height, \(d\) [m]
z0m_full (float) – surface roughness, \(z_{0,m}\) [m]
L_full (float) – monin obukhov length, \(L\) [m]
- Returns:
rac – aerodynamical resistance canopy, \(r_{a,c}\) [sm-1]
- Return type:
float
- aerodynamical_resistance_forced_convection_bare(u_i, L_bare, z0m_bare=0.001, disp_bare=0.0, z_obs=10)
Computes the aerodynamical resistance for a dry bare soil.
\[\begin{split}z_{1} &= \frac{z_{obs}-d}{z_{0,b,m}} \\ z_{2} &= \frac{z_{obs}-d}{L_{b}} \\ r_{a,a} &= \frac{(\ln(z_{1})-\phi_{m}(-z_{2})) \cdot (\ln(z_{1})-\phi_{h}(-z_{2}))}{k^{2} \cdot u} \\\end{split}\]- Parameters:
u_i (float) – instantaneous wind speed at observation height, \(u_{obs}\) [m/s]
z_obs (float) – observation height of wind speed, \(z_{obs}\) [m]
disp_bare (float) – displacement height, \(d\) [m]
z0m_bare (float) – surface roughness, \(z_{0,b,m}\) [m]
L_bare (float) – monin obukhov length, \(L_{b}\) [m]
- Returns:
raa – aerodynamical resistance dry surface, \(r_{a,a}\) [sm-1]
- Return type:
float
- wind_speed_soil_inst(u_i, L_bare, z_obs=10)
Computes the instantaneous wind speed at soil surface.
\[u_{i,s}=u_{obs} \cdot \frac{\ln\left(\frac{z_{obs}}{z_{0}}\right)} {\ln\left(\frac{z_{obs}}{z_{0,s}}\right)-\psi_{m}\left(\frac{-z_{0}}{L}\right)}\]- Parameters:
u_i (float) – wind speed at observation height, \(u_{obs}\) [m/s]
z_obs (float) – observation height of wind speed, \(z_{obs}\) [m]
L_bare (float) – monin obukhov length, \(L\) [m]
- Returns:
u_i_soil – instantaneous wind speed just above soil surface, \(u_{i,s}\) [ms-1]
- Return type:
float
- maximum_temperature_full(ra_hor_clear_i, emiss_atm_i, t_air_k_i, ad_i, rac, r0_full=0.18)
Computes the maximum temperature under fully vegetated conditions.
\[T_{c,max}=\frac{\left(1-\alpha_{c}\right) S_{d}+\varepsilon_{c}\varepsilon_{a}\sigma T_{a}^{4}-\varepsilon_{c}\sigma T_{a}^{4}}{4\varepsilon_{s}\sigma T_{a}^{3}+\rho C_{p}/r_{a,c}}+T_{a}\]- Parameters:
ra_hor_clear_i (float) – Total clear-sky irradiance on a horizontal surface, \(ra_hor_clear_i\) [W/m2]
emiss_atm_i (float) – instantaneous atmospheric emissivity, \(P\) [-]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
rac (float) – aerodynamic resistance canopy, \(r_{a,c}\) [sm-1]
ad_i (float) – instantaneous air density, \(\rho\) [kg m-3]
r0_full (float) – surface albedo full vegetation cover, \(\alpha_{0, full}\) [-]
- Returns:
t_max_full – maximum temperature at full vegetation cover, \(T_{c,max}\) [K]
- Return type:
float
- maximum_temperature_bare(ra_hor_clear_i, emiss_atm_i, t_air_k_i, ad_i, raa, ras, r0_bare=0.38)
Computes the maximum temperature under dry bare soil conditions.
\[T_{s,max}=\frac{\left(1-\alpha_{s}\right)S_{d}+\varepsilon_{s}\varepsilon_{a}\sigma T_{a}^{4}-\varepsilon_{s}\sigma T_{a}^{4}}{4\varepsilon_{s}\sigma T_{a}^{3}+ \rho C_{p}/\left[\left(r_{a,a}+r_{a,s}\right)\left(1-G/R_{n,s}\right)\right]}+T_{a}\]- Parameters:
ra_hor_clear_i (float) – Total clear-sky irradiance on a horizontal surface, \(ra_hor_clear_i\) [W/m2]
emiss_atm_i (float) – instantaneous atmospheric emissivity, \(P\) [-]
t_air_k_i (float) – instantaneous air temperature, \(T_{a}\) [K]
ad_i (float) – instantaneous air density, \(\rho\) [kg m-3]
raa (float) – aerodynamical resistance, \(r_{a,a}\) [sm-1]
ras (float) – aerodynamical resistance, \(r_{a,s}\) [sm-1]
r0_bare (float) – dry bare soil surface albedo, \(\alpha_{0, bare}\) [-]
- Returns:
t_max_bare – maximum temperature at bare soil, \(T_{c,max}\) [K]
- Return type:
float
- maximum_temperature(t_max_bare, t_max_full, vc)
Computes the maximum temperature at dry conditions.
\[T_{0,max} = c_{veg} \cdot (T_{c,max}-T_{s,max})+T_{s,max}\]- Parameters:
t_max_bare (float) – maximum temperature at bare soil, \(T_{s,max}\) [K]
t_max_full (float) – maximum temperature at full dry vegetation, \(T_{c,max}\) [K]
vc (float) – vegetation cover, \(c_{veg}\) [-]
- Returns:
lst_max – maximum temperature at dry conditions, \(T_{0,max}\) [K]
- Return type:
float
- minimum_temperature(t_wet_k_i, t_air_k_i, vc)
Computes the maximum temperature at dry conditions.
\[T_{0,min} = c_{veg} \cdot (T_{a,i}-T_{w})+T_{w}\]- Parameters:
t_wet_k_i (float) – minimum temperature at bare soil, \(T_{s,max}\) [K]
t_air_k_i (float) – minimum temperature at full vegetation, \(T_{c,max}\) [K]
vc (float) – vegetation cover, \(c_{veg}\) [-]
- Returns:
lst_min – minimum temperature at wet conditions, \(T_{0,min}\) [K]
- Return type:
float
- soil_moisture_from_maximum_temperature(lst_max, lst, lst_min)
Computes the relative root zone soil moisture based on estimates of maximum temperature and wet bulb temperature and measured land surface temperature.
\[\Theta = \frac{T_{0}-T_{0,min}}{T_{0,max}-T_{0,min}}\]- Parameters:
lst (float) – land surface temperature, \(T_{0}\) [K]
lst_max (float) – maximum temperature at dry conditions, \(T_{0,max}\) [K]
lst_min (float) – minimum temperature at wet conditions, \(T_{0, min}\) [K]
- Returns:
se_root – relative root zone soil moisture (based on LST), \(\Theta\) [%]
- Return type:
float
- aerodynamical_resistance_forced_convection_soil(u_i_soil)
Computes the aerodynamical resistance of the soil
Eq A7 from Sanchez.
\[r_{a,s}=\frac{1}{\left(0.0025T_{dif}^{\frac{1}{3}}+0.012u_{i,s}\right)}\]- Parameters:
u_i_soil (float) – instantaneous wind speed just above soil surface \(u_{i,s}\) [m s-1]
- Returns:
ras_forced – forced aerodynamical resistance \(r_{a,s}\) [sm-1]
- Return type:
float
- aerodynamical_resistance_free_convection_bare(h_bare, t_air_k_i, ad_i, z0m_bare=0.001)
Calculates the aerodynamic resistance in the case of free convection for bare soil.
Based on equation 15 from: https://journals.ametsoc.org/view/journals/apme/31/9/1520-0450_1992_031_1096_emlst_2_0_co_2.xml
- Parameters:
h_bare (float) – sensible heat flux bare soil \(H_{bare}\) [Wm-2]
t_air_k_i (float) – instantaneous air temperature \(T_{a}\) [K]
ad_i (float) – instantaneous air density \(\rho\) [k g m-3]
z0m_bare (float) – surface roughness bare soil \(z_{0,m}\) [m]
- Returns:
rah_bare_free – aerodynamic resistance soil \(r_{a,a}\) [sm-1]
- Return type:
float
- aerodynamical_resistance_free_convection_full(h_full, t_air_k_i, ad_i, z0m_full=0.1)
Calculates the aerodynamic resistance in the case of free convection for the canopy.
Based on equation 15 from: https://journals.ametsoc.org/view/journals/apme/31/9/1520-0450_1992_031_1096_emlst_2_0_co_2.xml
- Parameters:
h_full (float) – sensible heat flux full canopy \(H_{full}\) [Wm-2]
t_air_k_i (float) – instantaneous air temperature \(T_{a}\) [K]
ad_i (float) – instantaneous air density \(\rho\) [k g m-3]
z0m_full (float) – surface roughness full canopy \(z_{0,m}\) [m]
- Returns:
rah_full_free – aerodynamic resistance canopy \(r_{a,c}\) [sm-1]
- Return type:
float
- aerodynamical_resistance_bare(raa_forced, ras_forced, rah_bare_free=inf)
Computes the aerodynamical resistance for a dry bare soil.
This function takes the minimum of forced and free convection
- Parameters:
raa_forced (float) – forced aerodynamical resistance dry surface \(r_{a,a}\) [sm-1]
ras_forced (float) – forced aerodynamical resistance \(r_{a,s}\) [sm-1]
rah_bare_free (float) – aerodynamic resistance soil \(r_{a,a}\) [sm-1]
- Returns:
rah_bare – aerodynamical resistance bare soil \(r_{a,h} bare\) [sm-1]
- Return type:
float
- aerodynamical_resistance_full(rac_forced, rah_full_free=inf)
Computes the aerodynamical resistance for a full canopy.
This function takes the minimum of forced and free convection
- Parameters:
rac_forced (float) – forced aerodynamical resistance canopy \(r_{a,c}\) [sm-1]
rah_full_free (float) – aerodynamic resistance soil \(r_{a,a}\) [sm-1]
- Returns:
rah_full – aerodynamical resistance canopy \(r_{a,h} canopy\) [sm-1]
- Return type:
float