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 Brutsaert2.
\[\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 Brutsaert2.
\[\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 Brutsaert3.
\[\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
- 1
Yuting Yang, Huade Guan, Di Long, Bing Liu, Guanghua Qin, Jun Qin, and Okke Batelaan. Estimation of surface soil moisture from thermal infrared remote sensing using an improved trapezoid method. Remote Sensing, 7(7):8250–8270, 2015. URL: https://doi.org/10.3390/rs70708250.
- 2(1,2)
Wilfried Brutsaert. Aspects of bulk atmospheric boundary layer similarity under free-convective conditions. Reviews of geophysics, 37(4):439–451, 1999. URL: https://doi.org/10.1029/1999RG900013.
- 3
Wilfried Brutsaert. On a derivable formula for long-wave radiation from clear skies. Water resources research, 11(5):742–744, 1975. URL: https://doi.org/10.1029/WR011i005p00742.