model.processes.evapotranspirationΒΆ

Evapotranspiration module for ADELM.

This module simulates latent water fluxes from the land surface to the atmosphere. The scheme estimates soil evaporation and snow sublimation from soil surface energy balance and vapour pressure gradients, and calculates canopy transpiration using the Penman-Monteith formulation constrained by stomatal and aerodynamic conductance.

The module provides soil evaporation and canopy transpiration fluxes required by land surface water balance and plant water use.

Module ContentsΒΆ

FunctionsΒΆ

calculate_soil_surface_resistance

Diagnose soil surface resistance and conductance using an exponential moisture function.

calculate_soil_surface_vapour_gradient

Diagnose the soil-to-air vapour pressure gradient using a Kelvin-equation soil surface formulation.

calculate_potential_surface_evaporation

Diagnose potential soil surface evaporation using the Penman-Monteith equation.

calculate_potential_canopy_liquid_evaporation

Diagnose potential wet-canopy evaporation using a zero-surface-resistance Penman-Monteith formulation.

calculate_potential_canopy_sublimation

Diagnose potential canopy sublimation by rescaling wet-canopy evaporation by the latent heat ratio.

calculate_potential_snow_sublimation

Diagnose potential sublimation from the ground snowpack using an ice-surface Penman-Monteith formulation.

calculate_potential_canopy_transpiration

Diagnose potential canopy transpiration using the Penman-Monteith equation with stomatal resistance.

calculate_latent_heat_flux

Convert mass-based evapotranspiration fluxes to a total latent heat flux.

APIΒΆ

model.processes.evapotranspiration.calculate_soil_surface_resistance(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose soil surface resistance and conductance using an exponential moisture function.

Parameters:
  • states (dict) – Required variable: soil_moisture (top layer, index 0).

  • diagnos (dict) – Required variable: snow_cover_fraction.

  • params (dict) – Required variables: soil_saturated_moisture (top layer, index 0) and soil_surface_resistance_moisture_sensitivity.

Returns:

  • diagnos (dict) – Updated variable: soil_surface_conductance.

  • debugs (dict) – Updated variable: soil_surface_resistance.

model.processes.evapotranspiration.calculate_soil_surface_vapour_gradient(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose the soil-to-air vapour pressure gradient using a Kelvin-equation soil surface formulation.

Parameters:
  • drivers (dict) – Required variables: ta_max_degC, ta_min_degC, ta_degC, and vpd_kPa.

  • diagnos (dict) – Required variable: soil_water_potential (top layer).

  • consts (dict) – Required variables: absolute_zero_offset, partial_molar_volume_of_water, and universal_gas_constant.

Returns:

  • diagnos (dict) – Updated variable: soil_to_air_vapour_pressure_gradient.

  • debugs (dict) – Updated variables: air_saturation_vapour_pressure, air_vapour_pressure, soil_surface_kelvin_exponent, soil_surface_saturation_vapour_pressure, and soil_surface_vapour_pressure.

model.processes.evapotranspiration.calculate_potential_surface_evaporation(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose potential soil surface evaporation using the Penman-Monteith equation.

\[R_{soil,net} = LW_{soil} + \frac{SW_{soil}}{86400} 10^6\]
\[N_{soil,E} = s R_{soil,net}\]
\[N_{soil,A} = \rho c_p \Delta e_{soil-air} g_{a,soil}\]
\[E_{surf,pot} = \frac{N_{soil,E} + N_{soil,A}} {\lambda \left[s + \gamma \left(1 + \frac{g_{a,soil}}{g_{ws}}\right)\right]}\]
Parameters:
  • fluxes (dict) – Required variables: soil_net_swrad_Wm2 and soil_net_lwrad_Wm2.

  • diagnos (dict) – Required variables: air_density, latent_heat_of_vaporization, psychrometric_constant, saturation_vapour_pressure_slope, soil_aerodynamic_conductance, soil_surface_conductance, and soil_to_air_vapour_pressure_gradient.

  • consts (dict) – Required variables: seconds_per_day and specific_heat_capacity_air.

Returns:

  • fluxes (dict) – Updated variable: soil_net_radiation_Wm2.

  • diagnos (dict) – Updated variable: potential_surface_evaporation.

model.processes.evapotranspiration.calculate_potential_canopy_liquid_evaporation(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose potential wet-canopy evaporation using a zero-surface-resistance Penman-Monteith formulation.

\[R_{canopy,net} = LW_{canopy} + SW_{canopy}\]
\[E_{canopy,pot} = \frac{s R_{canopy,net} + ET_{coef} g_{a,canopy}} {\lambda \left[s + \gamma\right]}\]
Parameters:
  • drivers (dict) – Required variable: vpd_kPa.

  • fluxes (dict) – Required variables: canopy_net_swrad_Wm2 and canopy_net_lwrad_Wm2.

  • diagnos (dict) – Required variables: air_density, latent_heat_of_vaporization, psychrometric_constant, saturation_vapour_pressure_slope, above_canopy_aerodynamic_conductance, and leaf_boundary_layer_conductance.

  • consts (dict) – Required variables: seconds_per_day and specific_heat_capacity_air.

Returns:

  • fluxes (dict) – Updated variable: canopy_net_radiation_Wm2.

  • diagnos (dict) – Updated variable: potential_canopy_liquid_evaporation.

model.processes.evapotranspiration.calculate_potential_canopy_sublimation(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose potential canopy sublimation by rescaling wet-canopy evaporation by the latent heat ratio.

Parameters:
  • diagnos (dict) – Required variables: potential_canopy_liquid_evaporation and latent_heat_of_vaporization.

  • consts (dict) – Required variable: latent_heat_of_sublimation.

Returns:

diagnos – Updated variable: potential_canopy_sublimation.

Return type:

dict

model.processes.evapotranspiration.calculate_potential_snow_sublimation(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose potential sublimation from the ground snowpack using an ice-surface Penman-Monteith formulation.

\[E_{sub,pot} = \frac{\Delta_{ice}\,R_{n,soil} + \rho c_p\,\Delta e_{ice}\,g_{a,soil}} {L_s\,(\Delta_{ice} + \gamma_{ice})}\]

where \(\Delta_{ice}\) is the slope of the ice saturation vapour pressure curve, \(\gamma_{ice} = \gamma\,L_v/L_s\), and \(\Delta e_{ice} = \max(0,\,e_{sat,ice} - e_{air})\).

Parameters:
  • drivers (dict) – Required variables: ta_degC and vpd_kPa.

  • fluxes (dict) – Required variable: soil_net_radiation_Wm2.

  • diagnos (dict) – Required variables: soil_aerodynamic_conductance, air_density, latent_heat_of_vaporization, psychrometric_constant, and snow_cover_fraction.

  • consts (dict) – Required variables: latent_heat_of_sublimation, seconds_per_day, and specific_heat_capacity_air.

Returns:

diagnos – Updated variable: potential_snow_sublimation.

Return type:

dict

model.processes.evapotranspiration.calculate_potential_canopy_transpiration(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Diagnose potential canopy transpiration using the Penman-Monteith equation with stomatal resistance.

Parameters:
  • drivers (dict) – Required variable: vpd_kPa.

  • fluxes (dict) – Required variables: canopy_net_swrad_Wm2 and canopy_net_lwrad_Wm2.

  • diagnos (dict) – Required variables: air_density, canopy_stomatal_conductance, air_molar_density, latent_heat_of_vaporization, psychrometric_constant, saturation_vapour_pressure_slope, above_canopy_aerodynamic_conductance, and leaf_boundary_layer_conductance.

  • consts (dict) – Required variables: seconds_per_day and specific_heat_capacity_air.

Returns:

  • fluxes (dict) – Updated variable: canopy_net_radiation_Wm2.

  • diagnos (dict) – Updated variable: potential_canopy_transpiration.

model.processes.evapotranspiration.calculate_latent_heat_flux(drivers, states, fluxes, diagnos, params, consts, errors, structure, debugs)ΒΆ

Convert mass-based evapotranspiration fluxes to a total latent heat flux.

Parameters:
  • fluxes (dict) – Required variables: canopy_transpiration_mmday, canopy_liquid_evaporation_mmday, soil_evaporation_mmday, snow_sublimation_mmday, and canopy_solid_sublimation_mmday.

  • diagnos (dict) – Required variable: latent_heat_of_vaporization.

  • consts (dict) – Required variables: latent_heat_of_sublimation and seconds_per_day.

Returns:

fluxes – Updated variable: latent_heat_flux_Wm2.

Return type:

dict