Fluxnet simulations with the full land model: snow, soil, canopy

In the SoilCanopyModel tutorial, we demonstrated how to run the an integrated model with a soil and canopy component at the US-MOz fluxnet site. Here we add in a snow component, and run the site at the Niwot Ridge site instead. The forcing data was obtained from AmeriFlux FLUXNET: https://doi.org/10.17190/AMF/1871141 Citation: Peter D. Blanken, Russel K. Monson, Sean P. Burns, David R. Bowling, Andrew A. Turnipseed (2022), AmeriFlux FLUXNET-1F US-NR1 Niwot Ridge Forest (LTER NWT1), Ver. 3-5, AmeriFlux AMP, (Dataset). https://doi.org/10.17190/AMF/1871141

The focus of this tutorial is to learn the steps towards setting up and running an integrated simulation, and less on the parameterization choices. As such, the default parameters are implicitly set. To experiment with modularity in the parameters and parameterizations, please see the canopy parameterizations tutorial or the soiil parameterizations tutorial.

Preliminary Setup

using Dates
import ClimaParams as CP
using ClimaDiagnostics
using ClimaLand
using ClimaLand.Domains: Column
using ClimaLand.Simulations
import ClimaLand.Parameters as LP
using DelimitedFiles
import ClimaLand.FluxnetSimulations as FluxnetSimulations
using CairoMakie, ClimaAnalysis, GeoMakie, Poppler_jll, Printf, StatsBase
import ClimaLand.LandSimVis as LandSimVis;

Define the floating point precision desired (64 or 32 bit), and get the parameter set holding constants used across CliMA Models.

const FT = Float32;
earth_param_set = LP.LandParameters(FT);

We will use prescribed atmospheric and radiative forcing from the US-NR1 tower. We also read in the MODIS LAI and let that vary in time in a prescribed manner.

site_ID = "US-NR1";
site_ID_val = FluxnetSimulations.replace_hyphen(site_ID)
:US_NR1

Get the latitude and longitude in degrees, as well as the time offset in hours of local time from UTC

(; time_offset, lat, long) =
    FluxnetSimulations.get_location(FT, Val(site_ID_val));

Get the height of the sensors in m

(; atmos_h) = FluxnetSimulations.get_fluxtower_height(FT, Val(site_ID_val));

Set a start and stop date of the simulation in UTC, as well as a timestep in seconds

(start_date, stop_date) =
    FluxnetSimulations.get_data_dates(site_ID, time_offset)
Δt = 450.0;

Setup the domain for the model. This corresponds to a column of 2m in depth, with 10 equally spaced layers. The lat and long are provided so that we can look up default parameters for this location using the default ClimaLand parameter maps.

zmin = FT(-2) # in m
zmax = FT(0) # in m
domain = Column(; zlim = (zmin, zmax), nelements = 10, longlat = (long, lat));

Forcing data for the site - this uses our interface for working with Fluxnet data

forcing = FluxnetSimulations.prescribed_forcing_fluxnet(
    site_ID,
    lat,
    long,
    time_offset,
    atmos_h,
    start_date,
    earth_param_set,
    FT,
);

LAI for the site - this uses our interface for working with MODIS data.

modis_lai_ncdata_path = ClimaLand.Artifacts.modis_lai_multiyear_paths(;
    start_date,
    end_date = stop_date,
)
LAI = ClimaLand.prescribed_lai_modis(
    modis_lai_ncdata_path,
    domain.space.surface,
    start_date,
);

Setup the integrated model

We want to simulate the canopy-soil-snow system together, so the model type LandModel is chosen. Here we use the highest level model constructor, which uses default parameters, and parameterizations, for the soil, snow, and canopy models.

land_model = LandModel{FT}(forcing, LAI, earth_param_set, domain, Δt);
set_ic! = FluxnetSimulations.make_set_fluxnet_initial_conditions(
    site_ID,
    start_date,
    time_offset,
    land_model,
);
output_vars = ["swu", "lwu", "shf", "lhf", "swe", "swc", "si"]
diagnostics = ClimaLand.default_diagnostics(
    land_model,
    start_date;
    output_writer = ClimaDiagnostics.Writers.DictWriter(),
    output_vars,
    average_period = :hourly,
);
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: overwriting diagnostic `epa` entry containing fields
│ ("nothing", "epa", "Energy per unit ground area", "energy_per_area", "J m^-2", "Vertically integrated volumetric energy per area")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `wvpa` entry containing fields
│ ("nothing", "wvpa", "Water volume per unit ground area", "water_volume_per_area", "m^3 m^-2", "Vertically integrated volumetric water per area")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `epac` entry containing fields
│ ("nothing", "epac", "Energy per unit ground area change", "energy_per_area_change", "J m^-2", "Expected change in vertically integrated volumetric energy per area")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `wvpac` entry containing fields
│ ("nothing", "wvpac", "Water volume per unit ground area change", "water_volume_per_area_change", "m^3 m^-2", "Expected change in vertically integrated volumetric water per area")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swa` entry containing fields
│ ("nothing", "swa", "Shortwave Albedo", "sw_albedo", "", "The fraction of downwelling shortwave radiation reflected by the land surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rn` entry containing fields
│ ("nothing", "rn", "Net Radiation", "net_radiation", "W m^-2", "Difference between downwelling and upwelling shortwave and longwave radiation at the land surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `tsfc` entry containing fields
│ ("nothing", "tsfc", "Bucket Surface Temperature", "surface_temperature", "K", "Temperature of the bucket-land surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lhf` entry containing fields
│ ("nothing", "lhf", "Latent Heat Flux", "latent_heat_flux", "W m^-2", "Exchange of energy at the land-atmosphere interface due to water evaporation or sublimation.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rae` entry containing fields
│ ("nothing", "rae", "Aerodynamic Resistance", "aerodynamic_resistance", "m s^-1", "Effiency of turbulent transport controlling the land-atmosphere exchange of sensible and latent heat.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `shf` entry containing fields
│ ("nothing", "shf", "Sensible Heat Flux", "sensible_heat_flux", "W m^-2", "Exchange of energy at the land-atmosphere interface due to temperature difference.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `vflux` entry containing fields
│ ("nothing", "vflux", "Liquid water evaporation", "vapor_flux", "m s^-1", "Flux of water from the land surface to the atmosphere. E.g., evaporation or sublimation.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rhosfc` entry containing fields
│ ("nothing", "rhosfc", "Surface Air Density", "surface_air_density", "kg m^−3", "Density of air at the land-atmosphere interface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `tsoil` entry containing fields
│ ("nothing", "tsoil", "Soil temperature", "soil_temperature", "K", "Soil temperature at multiple soil depth. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `wsoil` entry containing fields
│ ("nothing", "wsoil", "subsurface Water Storage", "subsurface_water_storage", "m", "Soil water content.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `wsfc` entry containing fields
│ ("nothing", "wsfc", "Surface Water Content", "surface_water_content", "m", "Water at the soil surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `ssfc` entry containing fields
│ ("nothing", "ssfc", "Snow Water Equivalent", "snow_water_equivalent", "m", "Snow at the soil surface, expressed in water equivalent.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `sif` entry containing fields
│ ("nothing", "sif", "Solar Induced Fluorescence", "solar_induced_fluorescence", "W m^-2", "The fluorescence of leaves induced by solar radiation at 755nm. This quantity is correlated with photosynthesis activity.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `ra` entry containing fields
│ ("nothing", "ra", "Autotrophic Respiration", "autotrophic_respiration", "mol CO2 m^-2 s^-1", "The canopy autotrophic respiration, the sum of leaves, stems and roots respiration.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `gs` entry containing fields
│ ("nothing", "gs", "Stomatal Conductance", "stomatal_conductance", "mol H2O m^-2 s^-1", "The conductance of leaves. This depends on stomatal opening. It varies with factors such as soil moisture or atmospheric water demand.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `trans` entry containing fields
│ ("nothing", "trans", "Canopy Transpiration", "canopy_transpiration", "m s^-1", "The water evaporated from the canopy due to leaf transpiration (flux of water volume, m^3 of water per m^2 of ground).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `clhf` entry containing fields
│ ("nothing", "clhf", "Canopy Latent Heat Flux", "canopy_latent_heat_flux", "W m^-2", "The energy used for canopy transpiration.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `cshf` entry containing fields
│ ("nothing", "cshf", "Canopy Sensible Heat Flux", "canopy_sensible_heat_flux", "W m^-2", "The energy used for canopy temperature change.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lwp` entry containing fields
│ ("nothing", "lwp", "Leaf Water Potential", "leaf_water_potential", "m", "The water potential of a leaf.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `far` entry containing fields
│ ("nothing", "far", "Root flux per ground area", "root_flux_per_ground_area", "m s^-1", "Flux of water volume per m^2 of root per second, multiplied by the area index (root area/ground area).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lai` entry containing fields
│ ("nothing", "lai", "Leaf area Index", "leaf_area_index", "m^2 m^-2", "The area index of leaves, expressed in surface area of leaves per surface area of ground.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `msf` entry containing fields
│ ("nothing", "msf", "Moisture Stress Factor", "moisture_stress_factor", "", "Sensitivity of plants conductance to soil water content. Unitless")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rai` entry containing fields
│ ("nothing", "rai", "Root area Index", "root_area_index", "m^2 m^-2", "The area index of roots, expressed in surface area of roots per surface area of ground.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `sai` entry containing fields
│ ("nothing", "sai", "Stem area Index", "stem_area_index", "m^2 m^-2", "The area index of stems, expressed in surface area of stems per surface area of ground.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `gpp` entry containing fields
│ ("nothing", "gpp", "Gross Primary Productivity", "gross_primary_productivity", "mol CO2 m^-2 s^-1", "Net photosynthesis (carbon assimilation) of the canopy. This is equivalent to leaf net assimilation scaled to the canopy level.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `an` entry containing fields
│ ("nothing", "an", "Leaf Net Photosynthesis", "leaf_net_photosynthesis", "mol CO2 m^-2 s^-1", "Net photosynthesis (carbon assimilation) of a leaf, computed for example by the Farquhar model.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rd` entry containing fields
│ ("nothing", "rd", "Leaf Respiration", "leaf_dark_respiration", "mol CO2 m^-2 s^-1", "Leaf respiration, called dark respiration because usually measured in the abscence of radiation.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `vcmax25` entry containing fields
│ ("nothing", "vcmax25", "Vcmax25", "vcmax25", "mol CO2 m^-2 s^-1", "The parameter vcmax at 25 degree celsius. Important for the Farquhar model of leaf photosynthesis.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `nir` entry containing fields
│ ("nothing", "nir", "Near Infrared Radiation", "near_infrared_radiation", "mol photons m^-2 s^-1", "The amount of near infrared radiation reaching the canopy.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `anir` entry containing fields
│ ("nothing", "anir", "Absorbed Near Infrared Radiation", "absorbed_near_infrared_radiation", "mol photons m^-2 s^-1", "The amount of near infrared radiation absorbed by the canopy.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rnir` entry containing fields
│ ("nothing", "rnir", "Reflected Near Infrared Radiation", "reflected_near_infrared_radiation", "mol photons m^-2 s^-1", "The amount of near infrared radiation reflected by the canopy.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `tnir` entry containing fields
│ ("nothing", "tnir", "Transmitted Near Infrared Radiation", "transmitted_near_infrared_radiation", "mol photons m^-2 s^-1", "The amount of near infrared radiation transmitted by the canopy.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `par` entry containing fields
│ ("nothing", "par", "Photosynthetically Active Radiation", "photosynthetically_active_radiation", "mol photons m^-2 s^-1", "The subset of total radiation that activates photosynthesis reaching the canopy.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `apar` entry containing fields
│ ("nothing", "apar", "Absorbed Photosynthetically Active Radiation", "absorbed_photosynthetically_active_radiation", "mol photons m^-2 s^-1", "The amount of photosynthetically active radiation absorbed by the leaf. The rest if reflected or transmitted.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rpar` entry containing fields
│ ("nothing", "rpar", "Reflected Photosynthetically Active Radiation", "reflected_photosynthetically_active_radiation", "mol photons m^-2 s^-1", "The amount of photosynthetically active radiation reflected by leaves.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `tpar` entry containing fields
│ ("nothing", "tpar", "Transmitted Photosynthetically Active Radiation", "transmitted_photosynthetically_active_radiation", "mol photons m^-2 s^-1", "The amount of photosynthetically active radiation transmitted by leaves.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lwn` entry containing fields
│ ("nothing", "lwn", "Net Longwave Radiation", "net_longwave_radiation", "W m^-2", "The net (down minus up) longwave radiation at the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swn` entry containing fields
│ ("nothing", "swn", "Net Shortwave Radiation", "net_shortwave_radiation", "W m^-2", "The net (down minus up) shortwave radiation at the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `soc` entry containing fields
│ ("nothing", "soc", "Soil organic carbon", "soil_organic_carbon", "kg C m^-3", "Mass of organic carbon per volume of soil. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `airp` entry containing fields
│ ("nothing", "airp", "Air pressure", "air_pressure", "Pa", "The air pressure.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `rain` entry containing fields
│ ("nothing", "rain", "Rainfall", "rainfall", "m s^-1", "Precipitation of liquid water volume (m^3 of water per m^2 of ground per second).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lwd` entry containing fields
│ ("nothing", "lwd", "Down Longwave Radiation", "down_longwave_radiation", "W m^-2", "The downwelling longwave radiation at the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swd` entry containing fields
│ ("nothing", "swd", "Shortwave Radiation Downwards", "down_shortwave_radiation", "W m^-2", "The downwelling shortwave radiation at the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `snow` entry containing fields
│ ("nothing", "snow", "Snowfall", "snowfall", "m s^-1", "The precipitation of snow in liquid water volume (m^3 of water per m^2 of ground per second).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `precip` entry containing fields
│ ("nothing", "precip", "Total precipitation", "total_precipitation", "kg m^-2 s^-1", "The total flux from precipitation in kg of water per m^2 of ground per second).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `tair` entry containing fields
│ ("nothing", "tair", "Air Temperature (K)", "tair", "K", "The air temperature at the lowest level of the atmosphere (coupled) or 2m level (prescribed).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `qsfc` entry containing fields
│ ("nothing", "qsfc", "Surface Specific Humidity", "surface_specific_humidity", "", "Ratio of water vapor mass to total moist air parcel mass.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `ws` entry containing fields
│ ("nothing", "ws", "Wind Speed", "wind_speed", "m s^-1", "The average wind speed.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `infil` entry containing fields
│ ("nothing", "infil", "Infiltration", "infiltration", "m s^-1", "The flux of liquid water volume into the soil (m^3 of water per m^2 of ground per second).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `salb` entry containing fields
│ ("nothing", "salb", "Soil Albedo", "surface albedo", "", "The mean of PAR and NIR albedo, which are calculated as α_soil_band = α_band_dry * (1 - S_e) + α_band_wet * S_e.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `shc` entry containing fields
│ ("nothing", "shc", "Soil Hydraulic Conductivity", "soil_hydraulic_conductivity", "m s^-1", "Soil hydraulic conductivity. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `stc` entry containing fields
│ ("nothing", "stc", "Soil Thermal Conductivity", "soil_thermal_conductivity", "W m^-1 K^-1", "Soil thermal conductivity. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swp` entry containing fields
│ ("nothing", "swp", "Soil Water Potential", "soil_water_potential", "Pa", "Soil water potential. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `soilrn` entry containing fields
│ ("nothing", "soilrn", "Soil Net Radiation", "soil_net_radiation", "W m^-2", "Net radiation at the soil surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `soillhf` entry containing fields
│ ("nothing", "soillhf", "Soil Latent Heat Flux", "soil_Latent_Heat_Flux", "W m^-2", "Soil latent heat flux, the amount of liquid water evaporated by the soil, expressed in energy units (W m^-2).")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `soilshf` entry containing fields
│ ("nothing", "soilshf", "Soil Sensible Heat Flux", "soil_sensible_Heat_Flux", "W m^-2", "Soil sensible heat flux, the amount of energy exchanged between the soil and atmosphere to change the temperature of the soil.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `hr` entry containing fields
│ ("nothing", "hr", "Heterotrophic Respiration", "heterotrophic_respiration", "mol m^-2 s^-1", "The CO2 efflux at the soil surface due to microbial decomposition of soil organic matter. This is not necessarily equal to CO2 production by microbes, as co2 diffusion through the soil pores takes time.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `scd` entry containing fields
│ ("nothing", "scd", "Soil CO2 Diffusivity", "soil_co2_diffusivity", "m^2 s^-1", "The diffusivity of CO2 in the porous phase of the soil. Depends on soil texture, moisture, and temperature. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `scms` entry containing fields
│ ("nothing", "scms", "Soil CO2 Microbial Source", "soil_co2_microbial_source", "kg C m^-3 s^-1", "The production of CO2 by microbes in the soil. Vary by layers of soil depth. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `lwu` entry containing fields
│ ("nothing", "lwu", "Longwave Radiation Up", "longwave_radiation_up", "W m^-2", "Upwelling longwave radiation.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swu` entry containing fields
│ ("nothing", "swu", "Shortwave Radiation Up", "shortwave_radiation_up", "W m^-2", "Upwelling shortwave radiation")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `et` entry containing fields
│ ("nothing", "et", "Evapotranspiration", "evapotranspiration", "kg m^-2 s^-1", "Total flux of water mass out of the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `er` entry containing fields
│ ("nothing", "er", "Ecosystem Respiration", "ecosystem respiration", "mol CO2 m^-2 s^-1", "Total respiration flux out of the surface.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `sr` entry containing fields
│ ("nothing", "sr", "Surface Runoff", "surface_runoff", "m s^-1", "Water runoff at the surface, this is the water flowing horizontally above the ground.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `ssr` entry containing fields
│ ("nothing", "ssr", "Subsurface Runoff", "subsurface_runoff", "m s^-1", "Water runoff from below the surface")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `ct` entry containing fields
│ ("nothing", "ct", "Canopy Temperature", "canopy_temperature", "K", "Canopy temperature.")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `sco2` entry containing fields
│ ("nothing", "sco2", "Soil CO2", "soil_co2", "kg C m^3", "Concentration of CO2 in the porous air space of the soil. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swc` entry containing fields
│ ("nothing", "swc", "Soil Water Content", "soil_water_content", "m^3 m^-3", "The volume of soil water per volume of soil. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `iwc` entry containing fields
│ ("nothing", "iwc", "Integrated Soil Water Mass in first 10cm", "soil_10cm_water_mass", "kg/m^2", "The integrated water mass to a depth of 10cm")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `si` entry containing fields
│ ("nothing", "si", "Soil Ice", "soil_ice", "m^3 m^-3", "The volume of soil ice per volume of soil. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `sie` entry containing fields
│ ("nothing", "sie", "Soil Internal Energy", "soil_internal_energy", "W m^-2", "The energy per volume of soil. (depth resolved)")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `swe` entry containing fields
│ ("nothing", "swe", "Snow water equivalent", "snow_water_equivalent", "m", "The height of liquid water if all snow melted")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `snd` entry containing fields
│ ("nothing", "snd", "Snow depth", "snow_depth", "m", "The snow depth")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60
┌ Warning: overwriting diagnostic `snowc` entry containing fields
│ ("nothing", "snowc", "Snow cover fraction", "snow_cover_fraction", "", "The snow cover fraction")
└ @ ClimaLand.Diagnostics ~/work/ClimaLand.jl/ClimaLand.jl/src/diagnostics/diagnostic.jl:60

How often we want to update the forcing.

data_dt = Second(FluxnetSimulations.get_data_dt(site_ID));
updateat = Array(start_date:data_dt:stop_date);

Now we can construct the simulation object and solve it.

simulation = Simulations.LandSimulation(
    start_date,
    stop_date,
    Δt, # seconds
    land_model;
    set_ic!,
    updateat,
    user_callbacks = (),
    diagnostics,
);
solve!(simulation);
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123
┌ Warning: Regridding 2D data onto a 2D space with LatLongZ coordinates.
└ @ ClimaUtilitiesClimaCoreInterpolationsExt.InterpolationsRegridderExt ~/.julia/packages/ClimaUtilities/dyRr2/ext/InterpolationsRegridderExt.jl:123

Plotting results

LandSimVis.make_diurnal_timeseries(
    simulation;
    short_names = ["shf", "lhf", "swu", "lwu"],
    spinup_date = start_date + Day(20),
    plot_name = "US_NR1_diurnal_timeseries.pdf",
);

LandSimVis.make_timeseries(
    simulation;
    short_names = ["swc", "si", "swe"],
    spinup_date = start_date + Day(20),
    plot_name = "US_NR1_variable_timeseries.pdf",
);


This page was generated using Literate.jl.