Land models
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.LandModel — Type
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 discretizationvegetation::Union{Nothing, Terrarium.AbstractVegetation{NF}} where NF: Vegetation processessoil::Terrarium.AbstractSoil: Soil processessurface_energy_balance::Terrarium.AbstractSurfaceEnergyBalance: Surface energy balancesurface_hydrology::Terrarium.AbstractSurfaceHydrology: Surface hydrology schemeatmosphere::Terrarium.AbstractAtmosphere: Near-surface atmospheric conditionsconstants::PhysicalConstants: Physical constantsinitializer::Terrarium.AbstractInitializer: State variable initializer
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:
| Field | Type | Scope | Process page |
|---|---|---|---|
atmosphere | AbstractAtmosphere | Meteorological input variables | Atmosphere |
soil | AbstractSoil | Energy, water, carbon in soil | Soil processes |
surface_energy_balance | AbstractSurfaceEnergyBalance | Radiative and turbulent energy fluxes | Surface energy balance |
surface_hydrology | AbstractSurfaceHydrology | Infiltration, evapotranspiration, interception | Surface hydrology |
vegetation | Optional{AbstractVegetation} | Coupled vegetation carbon processes | Vegetation |
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.