Land models

Warning

This page is a work in progress. If you have any questions or notice any errors, please raise an issue.

Overview

LandModel is a fully-coupled land surface and terrestrial ecosystem model that simulates the integrated dynamics of soil, surface hydrology, surface energy balance, vegetation, and atmospheric forcing. Conceptually, the model represents a single, homogeneous land surface tile within each grid cell with a predetermined set of processes.

arch = CPU()
grid = ColumnGrid(arch, Float32, ExponentialSpacing(N = 10)) # 10 soil layers
model = LandModel(grid) # Default configuration
integrator = initialize(model, ForwardEuler(eltype(grid)))
Integrator of LandModel{Float32, ColumnGrid{Float32, CPU, Oceananigans.Grids.RectilinearGrid{Float32, Oceananigans.Grids.Periodic, Oceananigans.Grids.Flat, Oceananigans.Grids.Bounded, Oceananigans.Grids.StaticVerticalDiscretization{OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}, OffsetArrays.OffsetVector{Float32, Vector{Float32}}}, Float32, Float32, OffsetArrays.OffsetVector{Float32, StepRangeLen{Float32, Float64, Float64, Int64}}, Nothing, CPU}}, VegetationCarbon{Float32, LUEPhotosynthesis{Float32}, MedlynStomatalConductance{Float32}, PALADYNAutotrophicRespiration{Float32}, PALADYNPhenology{Float32}, PALADYNCarbonDynamics{Float32}, PALADYNVegetationDynamics{Float32}, StaticExponentialRootDistribution{Float32}, FieldCapacityLimitedPAW{Float32}}, SoilEnergyWaterCarbon{Float32, HomogeneousStratigraphy{Float32, ConstantSoilPorosity{Float32}}, SoilEnergyBalance{Float32, Terrarium.ExplicitTwoPhaseHeatConduction, SoilEnergyTemperatureClosure, SoilThermalProperties{Float32, FreeWater, InverseQuadratic}}, SoilHydrology{Float32, RichardsEq, SoilSaturationPressureClosure, SoilHydraulicsSURFEX{Float32, BrooksCorey{FreezeCurves.SoilWaterVolume{Float32, Float32, Float32}, Float32, Float32}, UnsatKLinear{Float32}}, Nothing}, ConstantSoilCarbonDensity{Float32}}, SurfaceEnergyBalance{Float32, ImplicitSkinTemperature{Float32}, DiagnosedTurbulentFluxes{Float32}, DiagnosedRadiativeFluxes{Float32}, ConstantAlbedo{Float32}}, SurfaceHydrology{Float32, PALADYNCanopyInterception{Float32}, PALADYNCanopyEvapotranspiration{Float32, ConstantEvaporationResistanceFactor{Float32}}, DirectSurfaceRunoff{Float32}}, PrescribedAtmosphere{Float32, (:CO2,), RainSnow, LongShortWaveRadiation, Terrarium.SpecificHumidity, Terrarium.ConstantAerodynamics{Float32}, Tuple{TracerGas{Float32, :CO2}}}, DefaultInitializer{Float32}} with ForwardEuler{Float32}
├── Current time: 0.0
├── StateVariables{Float32}(clock = Clock{Float32, Float64}(time=0 seconds, iteration=0, last_Δt=Inf days), prognostic = (:carbon_vegetation, :vegetation_area_fraction, :internal_energy, :saturation_water_ice, :surface_excess_water, :skin_temperature, :canopy_water), auxiliary = (:temperature, :liquid_water_fraction, :pressure_head, :net_assimilation, :leaf_respiration, :gross_primary_production, :canopy_water_conductance, :leaf_to_air_co2_ratio, :autotrophic_respiration, :net_primary_production, :phenology_factor, :leaf_area_index, :balanced_leaf_area_index, :root_fraction, :plant_available_water, :soil_moisture_limiting_factor, :ground_temperature, :hydraulic_conductivity, :water_table, :ground_heat_flux, :surface_shortwave_up, :surface_longwave_up, :surface_net_radiation, :sensible_heat_flux, :latent_heat_flux, :canopy_water_interception, :canopy_water_removal, :saturation_canopy_water, :rainfall_ground, :evaporation_canopy, :evaporation_ground, :transpiration, :surface_runoff, :infiltration), inputs = (:daily_leaf_respiration, :stem_area_index, :air_temperature, :air_pressure, :windspeed, :specific_humidity, :rainfall, :snowfall, :surface_shortwave_down, :surface_longwave_down, :daytime_length, :CO2), namespaces = (), timestepper_cache = ())
Terrarium.LandModelType
struct LandModel{NF, GridType<:(Terrarium.AbstractLandGrid{NF}), Vegetation<:Union{Nothing, Terrarium.AbstractVegetation{NF}}, Soil<:Terrarium.AbstractSoil{NF}, SEB<:Terrarium.AbstractSurfaceEnergyBalance{NF}, Hydrology<:Terrarium.AbstractSurfaceHydrology{NF}, Atmosphere<:(Terrarium.AbstractAtmosphere{NF, PR, IR, HM, AD} where {PR<:Terrarium.AbstractPrecipitation, IR<:Terrarium.AbstractIncomingRadiation, HM<:Terrarium.AbstractHumidity, AD<:Terrarium.AbstractAerodynamics{NF}}), Initializer<:Terrarium.AbstractInitializer{NF}} <: Terrarium.AbstractLandModel{NF, GridType<:(Terrarium.AbstractLandGrid{NF})}

Fully-coupled land model integrating atmosphere, surface energy balance, surface hydrology, vegetation, and soil processes.

Properties:

  • grid::Terrarium.AbstractLandGrid: Spatial discretization

  • vegetation::Union{Nothing, Terrarium.AbstractVegetation{NF}} where NF: Vegetation processes

  • soil::Terrarium.AbstractSoil: Soil processes

  • surface_energy_balance::Terrarium.AbstractSurfaceEnergyBalance: Surface energy balance

  • surface_hydrology::Terrarium.AbstractSurfaceHydrology: Surface hydrology scheme

  • atmosphere::Terrarium.AbstractAtmosphere: Near-surface atmospheric conditions

  • constants::PhysicalConstants: Physical constants

  • initializer::Terrarium.AbstractInitializer: State variable initializer

source
variables(model)
Variables
├─ Prognostic: 
├── carbon_vegetation [kg m^-2] on XY{Center, Center}
├── vegetation_area_fraction [-] on XY{Center, Center}
├── internal_energy [J m^-3] on XYZ{Center, Center, Center}
├── saturation_water_ice [-] on XYZ{Center, Center, Center}
├── surface_excess_water [m] on XY{Center, Center}
├── skin_temperature [°C] on XY{Center, Center}
├── canopy_water [m] on XY{Center, Center}
├─ Auxiliary: 
├── temperature [°C] on XYZ{Center, Center, Center}
├── liquid_water_fraction [-] on XYZ{Center, Center, Center}
├── pressure_head [m] on XYZ{Center, Center, Center}
├── net_assimilation [g m^-2 s^-1] on XY{Center, Center}
├── leaf_respiration [g m^-2 s^-1] on XY{Center, Center}
├── gross_primary_production [kg m^-2 s^-1] on XY{Center, Center}
├── canopy_water_conductance [m s^-1] on XY{Center, Center}
├── leaf_to_air_co2_ratio [-] on XY{Center, Center}
├── autotrophic_respiration [kg m^-2 s^-1] on XY{Center, Center}
├── net_primary_production [kg m^-2 s^-1] on XY{Center, Center}
├── phenology_factor [-] on XY{Center, Center}
├── leaf_area_index [-] on XY{Center, Center}
├── balanced_leaf_area_index [-] on XY{Center, Center}
├── root_fraction [-] on XYZ{Center, Center, Center}
├── plant_available_water [-] on XYZ{Center, Center, Center}
├── soil_moisture_limiting_factor [-] on XY{Center, Center}
├── ground_temperature [°C] on XY{Center, Center}
├── hydraulic_conductivity [m s^-1] on XYZ{Center, Center, Face}
├── water_table [m] on XY{Center, Center}
├── ground_heat_flux [W m^-2] on XY{Center, Center}
├── surface_shortwave_up [W m^-2] on XY{Center, Center}
├── surface_longwave_up [W m^-2] on XY{Center, Center}
├── surface_net_radiation [W m^-2] on XY{Center, Center}
├── sensible_heat_flux [W m^-2] on XY{Center, Center}
├── latent_heat_flux [W m^-2] on XY{Center, Center}
├── canopy_water_interception [m s^-1] on XY{Center, Center}
├── canopy_water_removal [m s^-1] on XY{Center, Center}
├── saturation_canopy_water [-] on XY{Center, Center}
├── rainfall_ground [m s^-1] on XY{Center, Center}
├── evaporation_canopy [m s^-1] on XY{Center, Center}
├── evaporation_ground [m s^-1] on XY{Center, Center}
├── transpiration [m s^-1] on XY{Center, Center}
├── surface_runoff [m s^-1] on XY{Center, Center}
├── infiltration [m s^-1] on XY{Center, Center}
├─ Inputs: 
├── daily_leaf_respiration [g m^-2 s^-1] on XY{Center, Center}
├── stem_area_index [-] on XY{Center, Center}
├── air_temperature [°C] on XY{Center, Center}
├── air_pressure [Pa] on XY{Center, Center}
├── windspeed [m s^-1] on XY{Center, Center}
├── specific_humidity [-] on XY{Center, Center}
├── rainfall [m s^-1] on XY{Center, Center}
├── snowfall [m s^-1] on XY{Center, Center}
├── surface_shortwave_down [W m^-2] on XY{Center, Center}
├── surface_longwave_down [W m^-2] on XY{Center, Center}
├── daytime_length [hr] on XY{Center, Center}
├── CO2 [ppm] on XY{Center, Center}
├─ Namespaces:

Components

LandModel integrates five major sub-processes: atmosphere, soil, surface energy balance, surface hydrology, and vegetation:

FieldTypeScopeProcess page
atmosphereAbstractAtmosphereMeteorological input variablesAtmosphere
soilAbstractSoilEnergy, water, carbon in soilSoil processes
surface_energy_balanceAbstractSurfaceEnergyBalanceRadiative and turbulent energy fluxesSurface energy balance
surface_hydrologyAbstractSurfaceHydrologyInfiltration, evapotranspiration, interceptionSurface hydrology
vegetationOptional{AbstractVegetation}Coupled vegetation carbon processesVegetation

Each component can be configured separately when constructing a LandModel. vegetation is optional and can be disabled by setting vegetation = nothing in the constructor; this corresponds to a bare ground land-atmosphere coupling. Each component of LandModel is summarized briefly below. See the linked pages for further details about each component process.

Atmosphere

The atmosphere component provides (possibly time-varying) meteorological inputs. The default implementation is PrescribedAtmosphere, which reads air temperature, humidity, wind, radiation, and precipitation from InputVariables and provides them as boundary conditions to the surface energy balance, hydrology, and vegetation components. See Atmospheric inputs for further details on the atmosphere interface.

Soil

The soil component represents the solid land surface extending from the topmost soil layer down to an arbitrary depth determined by the grid. The default configuration of LandModel uses SoilEnergyWaterCarbon which represents coupled energy, water, and carbon transport within the soil column. See Soil processes for detailed descriptions of energy, hydrology, and biogeochemistry implementations.

Surface energy balance

The surface_energy_balance component computes the energy fluxes at the land-atmosphere interface, including solar radiation, thermal radiation, and turbulent heat fluxes. The default implementation is SurfaceEnergyBalance. See Surface energy balance for details.

Surface hydrology

The surface_hydrology component manages water exchange between the atmosphere and the land surface, including canopy interception, evapotranspiration, and surface runoff partitioning. The default implementation is SurfaceHydrology. See Surface hydrology for details.

Vegetation

The vegetation component represents vegetation carbon cycling, including photosynthesis, stomatal conductance, respiration, phenology, and carbon dynamics. The default implementation is VegetationCarbon. See Vegetation for details.

Initializers

Initializers and boundary conditions

LandModel does not yet have its own dedicated boundary conditions and initializers, but it will soon! Stay tuned!