Soil Biogeochemistry
This component model is available for use, but is still under development and is not yet fully debugged. Note that errors in this component do not propagate back to other component models.
Model Structure
ClimaLand.Soil.Biogeochemistry.SoilCO2Model — Type
SoilCO2ModelA model for simulating the production and transport of CO₂ in the soil with dynamic source and diffusion terms.
ClimaLand v1: SoilCO2 is still under testing; in particular, in global runs, an instability appears in some columns, and the prognostic equation does not enforce the positivity of CO2.
parameters: the parameter setdomain: the soil domain, using ClimaCore.Domainsboundary_conditions: the boundary conditions, of type NamedTuplesources: A tuple of sources, each of type AbstractSourcedrivers: DriversΔt: Model timestep in seconds (used for the O2_f tendency limiter); pass FT(0) to disable the hard cap
Parameter Structure
ClimaLand.Soil.Biogeochemistry.SoilCO2ModelParameters — Type
SoilCO2ModelParameters{FT <: AbstractFloat, PSE}A struct for storing parameters of the SoilCO2Model.
All of these parameters are currently treated as global constants.
D_ref: Diffusion coefficient for CO₂ in air at standard temperature and pressure (m² s⁻¹)D_ref_o2: Diffusion coefficient for O₂ in air at standard temperature and pressure (m² s⁻¹)D_liq: Diffusivity of soil C substrate in liquid (unitless)V_ref_sx: Maximum respiration rate at Trefsx (kg C m-3 s-1)T_ref_sx: Reference temperature for the centered Arrhenius form (K)Ea_sx: Activation energy (J mol-1)kM_sx: Michaelis constant (kg C m-3)kM_o2: Michaelis constant for O2 (m3 m-3)O2_f_atm: Volumetric fraction of O₂ in atmospheric air (reference value for boundary condition), dimensionlessD_oa: Diffusion coefficient of oxygen in air, dimensionlessp_sx: Fraction of soil carbon that is considered soluble, dimensionlessM_C: Molar mass of carbon (kg/mol)M_O2: Molar mass of oxygen (kg/mol)K_H_co2_298: Henry's law constant for CO2 at 298K (mol/(m³·Pa))dln_K_H_co2_dT: Temperature coefficient for CO2 Henry's law (K)K_H_o2_298: Henry's law constant for O2 at 298K (mol/(m³·Pa))dln_K_H_o2_dT: Temperature coefficient for O2 Henry's law (K)T_ref_henry: Reference temperature for Henry's law (K), Sander (2015)T_exp_diffusivity: Temperature exponent for free-air gas diffusivity correction (dimensionless), Ryan et al. (2018)earth_param_set: Physical constants used Clima-wide
ClimaLand.Soil.Biogeochemistry.SoilCO2ModelParameters — Method
SoilCO2ModelParameters(toml_dict::CP.ParamDict)SoilCO2ModelParameters provides a constructor using the TOML dict. Keywords arguments can be used to directly override any parameters.
Model-specific Types
ClimaLand.Soil.Biogeochemistry.MicrobeProduction — Type
MicrobeProduction{FT} <: AbstractCarbonSource{FT}Struct for the microbe production of CO2, appearing as a source term in the differential equation.
ClimaLand.Soil.Biogeochemistry.SoilCO2FluxBC — Type
SoilCO2FluxBC <: ClimaLand.AbstractBCA container holding the CO2 flux boundary condition, which is a function f(p,t), where p is the auxiliary state vector.
ClimaLand.Soil.Biogeochemistry.SoilCO2StateBC — Type
SoilCO2StateBC <: ClimaLand.AbstractBCA container holding the CO2 state boundary condition (kg C m⁻³ air-equivalent), which is a function f(p,t), where p is the auxiliary state vector.
ClimaLand.Soil.Biogeochemistry.AtmosCO2StateBC — Type
AtmosCO2StateBC <: ClimaLand.AbstractBCSet the CO2 concentration to the atmospheric one. Stores physical constants needed for the boundary flux calculation.
R: Universal gas constant (J/(mol·K))M_C: Molar mass of carbon (kg/mol)
ClimaLand.Soil.Biogeochemistry.AtmosO2StateBC — Type
AtmosO2StateBC{FT} <: ClimaLand.AbstractBCSet the O2 mass concentration to the atmospheric one. Stores physical constants needed for the boundary flux calculation.
R: Universal gas constant (J/(mol·K))M_O2: Molar mass of oxygen (kg/mol)O2_f_atm: Atmospheric O2 volumetric fraction (dimensionless)
ClimaLand.Soil.Biogeochemistry.AbstractSoilDriver — Type
AbstractSoilDriverAn abstract type for drivers of soil CO2 production and diffusion. These are soil temperature, soil moisture, root carbon, soil organic matter and microbe carbon, and atmospheric pressure. Soil temperature and moisture, as well as soc, vary in space (horizontally and vertically) and time. Atmospheric pressure vary in time (defined at the surface only, not with depth).
ClimaLand.Soil.Biogeochemistry.SoilDrivers — Type
SoilDriversA container which passes in the soil drivers to the biogeochemistry model. These drivers are either of type Prescribed (for standalone mode) or Prognostic (for running with a prognostic model for soil temp and moisture).
met: Soil temperature and moisture drivers - Prescribed or Prognosticatmos: Prescribed or coupled atmospheric variables
ClimaLand.Soil.Biogeochemistry.PrescribedMet — Type
PrescribedMet <: AbstractSoilDriverA container which holds the prescribed functions for soil temperature and moisture.
This is meant for use when running the biogeochemistry model in standalone mode, without a prognostic soil model.
temperature: The temperature of the soil, of the form f(z::FT,t) where FT <: AbstractFloatvolumetric_liquid_fraction: Soil moisture, of the form f(z::FT,t) FT <: AbstractFloatν: Soil porosity (m³ m⁻³)θ_a100: Air-filled porosity at soil water potential of -100 cm H₂O (~ 10 Pa)b: Absolute value of the slope of the line relating log(ψ) versus log(S) (unitless)
Functions of State
ClimaLand.Soil.Biogeochemistry.volumetric_air_content — Function
volumetric_air_content(θ_w::FT,
ν::FT,
) where {FT}Computes the volumetric air content (θ_a) in the soil, which is related to the total soil porosity (ν) and volumetric soil water content (θ_w = θ_l+θ_i).
Note: The effectiveporosity function provides numerical stability when θa approaches zero by accounting for dissolved gas in liquid water.
ClimaLand.Soil.Biogeochemistry.co2_diffusivity — Function
co2_diffusivity(
T_soil::FT,
θ_w::FT,
P_sfc::FT,
θ_a100::FT,
b::FT,
ν::FT,
params::SoilCO2ModelParameters{FT},
) where {FT}Computes the diffusivity of CO₂ within the soil (D).
First, D0 is computed using the temperature within the soil (T_soil in K) and pressure at the surface of the soil (P_sfc in Pa), using reference values of T_ref and P_ref (273 K and 101325 Pa). Here, θ_a is the volumetric air content and θ_a100 is the volumetric air content at a soil water potential of 100cm, and b is the pore size distribution of the soil.
This parameterization is from Ryan et al., GMD 11, 1909-1928, 2018, https://doi.org/10.5194/gmd-11-1909-2018.
ClimaLand.Soil.Biogeochemistry.o2_diffusivity — Function
o2_diffusivity(
T_soil::FT,
θ_w::FT,
P_sfc::FT,
θ_a100::FT,
b::FT,
ν::FT,
params::SoilCO2ModelParameters{FT},
) where {FT}Effective diffusivity of O₂ in soil (m² s⁻¹). Uses the same Ryan/Moldrup parameterization as co2_diffusivity but with params.D_ref_o2, the O₂ reference diffusivity in free air at standard conditions (≈ 1.67×10⁻⁵ m² s⁻¹, Davidson et al., 2012).
ClimaLand.Soil.Biogeochemistry.microbe_source — Function
microbe_source(T_soil::FT,
θ_l::FT,
Csom::FT,
O2_avail::FT,
params::SoilCO2ModelParameters{FT}
) where {FT}Computes the CO₂ production in the soil by microbes, in depth and time (kg C / m^3/s), using the Dual Arrhenius Michaelis Menten model (Davidson et al., 2012). O2_avail is a dimensionless O₂ availability metric that accounts for tortuosity effects.
The Arrhenius term is written in centered form, Vmax = Vrefsx * exp(-Easx/R * (1/Tsoil - 1/Trefsx)), so that Vrefsx (the rate at Trefsx) and Easx (the temperature sensitivity) are approximately orthogonal under calibration. This is algebraically equivalent to the uncentered form Vmax = αsx * exp(-Easx/(R·Tsoil)) with αsx = Vrefsx * exp(Easx/(R·Trefsx)).
ClimaLand.Soil.Biogeochemistry.o2_availability — Function
o2_availability(O2_f::FT,
θ_a::FT,
D_oa::FT,
) where {FT}Computes the dimensionless O₂ availability for microbial kinetics using the Millington-Quirk tortuosity model.
The O2 availability accounts for diffusion limitations in porous media: O2avail = Doa * O2f * θa^(4/3)
where:
- O2_f: volumetric fraction of O2 in air (dimensionless, ~0.21)
- θ_a: volumetric air content (m³ air / m³ soil)
- D_oa: oxygen diffusion coefficient in air (dimensionless)
- θ_a^(4/3): Millington-Quirk tortuosity factor
This is used in Michaelis-Menten kinetics for microbial respiration.
ClimaLand.Soil.Biogeochemistry.o2_concentration — Function
o2_concentration(O2_f::FT,
T_soil::FT,
P_sfc::FT,
params::SoilCO2ModelParameters{FT},
) where {FT}Computes the O₂ mass concentration in air (kg O2/m³ air) from the volumetric fraction O2_f, using the ideal gas law.
The O2 mass concentration in the air phase is: ρO2air = O2f * P * MO2 / (R * T)
where:
- O2_f : volumetric fraction of O2 in air (dimensionless, ~0.21)
- P: pressure (Pa)
- M_O2: molar mass of O2 (kg/mol) - from parameters
- R: universal gas constant (J/(mol·K)) - from ClimaParams
- T: temperature (K)
Note: This returns concentration per m³ of air, not per m³ of soil. For diffusion in soil, the effective concentration per m³ of soil would be θa * ρO2_air, but that multiplication is handled separately in the diffusion equation.
ClimaLand.Soil.Biogeochemistry.o2_fraction_from_concentration — Function
o2_fraction_from_concentration(ρ_O2_air::FT,
T_soil::FT,
P_sfc::FT,
params::SoilCO2ModelParameters{FT},
) where {FT}Computes the O₂ volumetric fraction (dimensionless) from the O₂ mass concentration in air, using the ideal gas law. This is the inverse of o2_concentration.
The O2 volumetric fraction is: O2f =ρO2air * R * T / (P * MO2)
where:
- ρO2air: O2 mass concentration in air (kg O2/m³ air)
- P: pressure (Pa)
- M_O2: molar mass of O2 (kg/mol) - from parameters
- R: universal gas constant (J/(mol·K)) - from ClimaParams
- T: temperature (K)
ClimaLand.Soil.Biogeochemistry.henry_constant — Function
henry_constant(K_H_298::FT, dln_K_H_dT::FT, T::FT, T_ref::FT) where {FT}Compute temperature-dependent Henry's law constant using van 't Hoff equation. Returns K_H in mol/(m³·Pa).
The temperature dependence follows: KH(T) = KH(Tref) * exp[dlnKHdT * (1/T - 1/T_ref)]
where Tref is the Sander reference temperature (298.15 K) and dlnKHdT is the temperature coefficient.
Reference: Sander (2015), Atmos. Chem. Phys., 15, 4399-4981.
ClimaLand.Soil.Biogeochemistry.beta_gas — Function
beta_gas(K_H::FT, R::FT, T::FT) where {FT}Compute dimensionless Henry's law factor β = K_H * R * T.
This converts liquid water storage to air-equivalent storage capacity. For CO2 at 20-25°C: β ≈ 0.7-0.9 (significant buffering) For O2 at 20°C: β ≈ 0.03 (less buffering, but still helps)
Arguments:
- K_H: Henry's law constant (mol/(m³·Pa))
- R: Universal gas constant (J/(mol·K))
- T: Temperature (K)
ClimaLand.Soil.Biogeochemistry.effective_porosity — Function
effective_porosity(θ_a::FT, θ_l::FT, β::FT) where {FT}Compute effective porosity accounting for gas and dissolved storage.
θ_eff = max(θ_a + β * θ_l, θ_eff_min)When θa → 0 (saturated soil) but θl > 0, θeff remains finite, preventing blow-up in concentration calculations. A minimum floor of 1e-4 is applied for numerical stability in extreme conditions (e.g., very dry desert soils where both θa and θ_l are small).
Arguments:
- θ_a: Volumetric air content (m³/m³)
- θ_l: Volumetric liquid water content (m³/m³)
- β: Dimensionless Henry's law factor
Extendible Functions
ClimaLand.Soil.Biogeochemistry.soil_moisture — Function
soil_moisture(driver::PrognosticSoil, p, Y, t, z)Returns the volumetric liquid fraction, computed by the soil model from the prognostic liquid and ice fractions.
soil_moisture(driver::PrescribedMet, p, Y, t, z)Returns the soil moisture at location (z) and time (t) for the prescribed soil case.
ClimaLand.Soil.Biogeochemistry.soil_temperature — Function
soil_temperature(driver::PrognosticSoil, p, Y, t, z)Returns the prognostic soil temperature.
soil_temperature(driver::PrescribedMet, p, Y, t, z)Returns the soil temperature at location (z) and time (t) for the prescribed soil case.
ClimaLand.Soil.Biogeochemistry.soil_ice — Function
soil_ice(driver::PrognosticMet, p, Y, t, z)Returns the prognostic ice content from coupled soil model.
soil_ice(driver::PrescribedMet, p, Y, t, z)Returns zero ice content for prescribed soil case (standalone mode has no ice).