Skip to content
SindbadTEM.Processes Module
julia
Processes

The core module for defining and implementing models and approaches of ecosystem processes in the SINDBAD framework.

Purpose:

The Processes module provides the infrastructure for defining and implementing terrestrial ecosystem models within the SINDBAD framework. It includes tools for process definition, parameter management, and method implementation. All SINDBAD models inherit from LandEcosystem and implement standardized methods for model execution.

Dependencies:

  • SindbadTEM: Provides the core SINDBAD models and types, including LandEcosystem and purpose function.

  • FieldMetadata: Enables metadata annotations for model parameters (bounds, units, timescale, descriptions).

  • Parameters: Provides the @with_kw macro for keyword argument construction.

Included Files:

The module dynamically includes all process implementations from subdirectories under src/Processes/.

Each process directory follows the convention:

  • A main process file: Processes/<process>/<process>.jl defining the abstract process type

  • One or more approach files: Processes/<process>/<process>_*.jl implementing specific approaches

Key processes include:

  • Carbon cycle processes (GPP, respiration, allocation, turnover)

  • Water cycle processes (evapotranspiration, runoff, soil water)

  • Vegetation processes (LAI, fAPAR, phenology)

  • And many more ecosystem processes

Notes:

  • All models must implement at least one of the following methods: define, precompute, compute, or update.

  • Parameters should use metadata macros (@bounds, @describe, @units, @timescale) for proper documentation and validation.

  • Processes should follow SINDBAD modeling conventions for consistency and maintainability.

  • The module provides getModelDocString and getApproachDocString helpers for automatic documentation generation of models and approaches.

Examples:

julia
julia> using SindbadTEM.Processes

julia> # Define a new process
julia> abstract type MyProcess <: LandEcosystem end

julia> purpose(::Type{MyProcess}) = "Description of my process."

julia> # Define an approach with parameters (example structure)
julia> # @bounds @describe @units @timescale @with_kw struct MyProcess_v1{T} <: MyProcess
julia> #     param1::T = 1.0 | (0.0, 2.0) | "Description" | "units" | "timescale"
julia> # end

julia> # Implement required methods (example)
julia> # function define(params::MyProcess_v1, forcing, land, helpers)
julia> #     # Initialize arrays and variables
julia> #     return land
julia> # end
source

Processes (models + approaches) ​

EVI ​

SindbadTEM.Processes.EVI Type
julia
Enhanced Vegetation Index

Approaches

  • EVI_constant: Sets EVI as a constant value.

  • EVI_forcing: Gets EVI from forcing data.

source
EVI approaches
SindbadTEM.Processes.EVI_constant Type

Sets EVI as a constant value.

Parameters

  • Fields
    • constant_EVI: 1.0 ∈ [0.0, 1.0] => EVI (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.EVI: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :EVI) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for EVI_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: cleaned up the code

Created by

  • skoirala | @dr-ko
source

View Source


LAI ​

SindbadTEM.Processes.LAI Type
julia
Leaf Area Index

Approaches

  • LAI_cVegLeaf: LAI as a function of cVegLeaf and SLA.

  • LAI_constant: sets LAI as a constant value.

  • LAI_forcing: Gets LAI from forcing data.

source
LAI approaches
SindbadTEM.Processes.LAI_cVegLeaf Type

LAI as a function of cVegLeaf and SLA.

Parameters

  • Fields
    • SLA: 0.016 ∈ [0.01, 0.024] => specific leaf area (units: m^2.gC^-1 @ all timescales)

Methods:

compute:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • states.frac_vegetation: fractional coverage of grid with vegetation

  • Outputs

    • states.LAI: leaf area index

    • states.LAI_grid: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :LAI_grid) for information on how to add the variable to the catalog.

    • diagnostics.SLA: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :SLA) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for LAI_cVegLeaf.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 05.05.2020 [sbesnard]

Created by

  • sbesnard
source

Calculated using:

julia
Inputs: :pools => :cEco, :states => :frac_vegetation
Outputs: :states => :LAI, :states => :LAI_grid, :diagnostics => :SLA

View Source


NDVI ​

SindbadTEM.Processes.NDVI Type
julia
Normalized Difference Vegetation Index.

Approaches

  • NDVI_constant: Sets NDVI as a constant value.

  • NDVI_forcing: Gets NDVI from forcing data.

source
NDVI approaches
SindbadTEM.Processes.NDVI_constant Type

Sets NDVI as a constant value.

Parameters

  • Fields
    • constant_NDVI: 1.0 ∈ [0.0, 1.0] => NDVI (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.NDVI: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :NDVI) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for NDVI_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 29.04.2020 [sbesnard]: new module

Created by

  • sbesnard
source

View Source


NDWI ​

SindbadTEM.Processes.NDWI Type
julia
Normalized Difference Water Index.

Approaches

  • NDWI_constant: Sets NDWI as a constant value.

  • NDWI_forcing: Gets NDWI from forcing data.

source
NDWI approaches
SindbadTEM.Processes.NDWI_constant Type

Sets NDWI as a constant value.

Parameters

  • Fields
    • constant_NDWI: 1.0 ∈ [0.0, 1.0] => NDWI (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.NDWI: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :NDWI) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for NDWI_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 29.04.2020 [sbesnard]: new module

Created by

  • sbesnard
source

View Source


NIRv ​

SindbadTEM.Processes.NIRv Type
julia
Near-infrared reflectance of terrestrial vegetation.

Approaches

  • NIRv_constant: Sets NIRv as a constant value.

  • NIRv_forcing: Gets NIRv from forcing data.

source
NIRv approaches
SindbadTEM.Processes.NIRv_constant Type

Sets NIRv as a constant value.

Parameters

  • Fields
    • constant_NIRv: 1.0 ∈ [0.0, 1.0] => NIRv (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.NIRv: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :NIRv) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for NIRv_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 29.04.2020 [sbesnard]: new module

Created by

  • sbesnard
source

View Source


PET ​

SindbadTEM.Processes.PET Type
julia
Potential evapotranspiration.

Approaches

  • PET_Lu2005: Calculates PET using Lu et al. (2005) method.

  • PET_PriestleyTaylor1972: Calculates PET using Priestley-Taylor (1972) method.

  • PET_forcing: Gets PET from forcing data.

source
PET approaches
SindbadTEM.Processes.PET_Lu2005 Type

Calculates PET using Lu et al. (2005) method.

Parameters

  • Fields
    • α: 1.26 ∈ [0.1, 2.0] => calibration constant: α = 1.26 for wet or humid (unitless @ all timescales)

    • svp_1: 0.2 ∈ [-Inf, Inf] => saturation vapor pressure temperature curve parameter 1 (unitless @ all timescales)

    • svp_2: 0.00738 ∈ [-Inf, Inf] => saturation vapor pressure temperature curve parameter 2 (unitless @ all timescales)

    • svp_3: 0.8072 ∈ [-Inf, Inf] => saturation vapor pressure temperature curve parameter 3 (unitless @ all timescales)

    • svp_4: 7.0 ∈ [-Inf, Inf] => saturation vapor pressure temperature curve parameter 4 (unitless @ all timescales)

    • svp_5: 0.000116 ∈ [-Inf, Inf] => saturation vapor pressure temperature curve parameter 5 (unitless @ all timescales)

    • sh_cp: 0.001013 ∈ [-Inf, Inf] => specific heat of moist air at constant pressure (1.013 kJ/kg/°C) (units: MJ/kg/°C @ all timescales)

    • elev: 0.0 ∈ [0.0, 8848.0] => elevation (units: m @ all timescales)

    • pres_sl: 101.29 ∈ [0.0, 101.3] => atmospheric pressure at sea level (units: kpa @ all timescales)

    • pres_elev: 0.01055 ∈ [-Inf, Inf] => rate of change of atmospheric pressure with elevation (units: kpa/m @ all timescales)

    • λ_base: 2.501 ∈ [-Inf, Inf] => latent heat of vaporization (units: MJ/kg @ all timescales)

    • λ_airT: 0.002361 ∈ [-Inf, Inf] => rate of change of latent heat of vaporization with temperature (units: MJ/kg/°C @ all timescales)

    • γ_resistance: 0.622 ∈ [-Inf, Inf] => ratio of canopy resistance to atmospheric resistance (unitless @ all timescales)

    • Δt: 2.0 ∈ [-Inf, Inf] => time delta for calculation of G (units: day @ all timescales)

    • G_base: 4.2 ∈ [-Inf, Inf] => base groundheat flux (unitless @ all timescales)

Methods:

define:

  • Inputs

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.
  • Outputs

    • fluxes.PET: potential evapotranspiration

    • states.Tair_prev: air temperature in the previous time step

compute:

  • Inputs

    • forcing.f_rn: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rn) for information on how to add the variable to the catalog.

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.

    • states.Tair_prev: air temperature in the previous time step

  • Outputs

    • fluxes.PET: potential evapotranspiration

    • states.Tair_prev: air temperature in the previous time step

precompute, update methods are not defined

End of getModelDocString-generated docstring for PET_Lu2005.jl. Check the Extended help for user-defined information.


Extended help

References

  • Lu

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :forcing => :f_rn, :forcing => :f_airT, :states => :Tair_prev
Outputs: :fluxes => :PET, :states => :Tair_prev

View Source


WUE ​

SindbadTEM.Processes.WUE Type
julia
Water Use Efficiency (WUE).

Approaches

  • WUE_Farquhar1980: Calculates WUE as a function of WUE at zero VPD, daily mean VPD, and a CO₂ effect proportional to ambient CO₂.

  • WUE_Medlyn2011: Calculates WUE as a function of daytime mean VPD and ambient CO₂, following Medlyn et al. (2011).

  • WUE_VPDDay: Calculates WUE as a function of WUE at 1 hPa and daily mean VPD.

  • WUE_VPDDayCo2: Calculates WUE as a function of WUE at 1 hPa daily mean VPD and linear CO₂ relationship.

  • WUE_constant: Sets WUE as a constant value.

  • WUE_expVPDDayCo2: Calculates WUE as a function of WUE at 1 hPa, daily mean VPD, and an exponential CO₂ relationship.

source
WUE approaches
SindbadTEM.Processes.WUE_Farquhar1980 Type

Calculates WUE as a function of WUE at zero VPD, daily mean VPD, and a CO₂ effect proportional to ambient CO₂.

Parameters

  • Fields
    • WUE_base: 9.2 ∈ [2.0, 20.0] => WUE at zero VPD and the reference ambient CO2 (units: gC/mmH2O @ all timescales)

    • κ: 0.4 ∈ [0.06, 0.7] => sensitivity of WUE to VPD (units: kPa-1 @ all timescales)

    • ref_ambient_CO2: 380.0 ∈ [-Inf, Inf] => ambient CO2 at which the CO2 effect is one (units: ppm @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_VPD_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_VPD_day) for information on how to add the variable to the catalog.

    • states.ambient_CO2: ambient co2 concentration

  • Outputs

    • diagnostics.WUENoCO2: water use efficiency of the ecosystem without CO2 effect

    • diagnostics.WUE: water use efficiency of the ecosystem

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for WUE_Farquhar1980.jl. Check the Extended help for user-defined information.


Extended help

The CO2 effect is ambient_CO2 / ref_ambient_CO2. With a fixed ratio χ of leaf internal to ambient CO2, assimilation is g_s Ca (1 - χ) and transpiration is 1.6 g_s VPD, so WUE grows in proportion to Ca. This is the assumption of gppVPD_Farquhar1980, whose ref_ambient_CO2 should have the same value. The effect has no free parameter. ref_ambient_CO2 is not meant to be calibrated, since only its ratio to WUE_base is identifiable.

The VPD effect exp(-κ VPD) is empirical, with VPD in kPa and κ in kPa-1, so WUE_base is WUE at zero VPD. At a fixed χ, theory gives WUE proportional to 1 / VPD, and with the optimal χ of Medlyn et al. (2011) it gives Ca / (1.6 (g1 sqrt(VPD) + VPD)). The exponential stays finite at low VPD and decays more weakly, and κ is calibrated against transpiration and evapotranspiration. CO2 and VPD act on WUE independently, as in both theoretical forms.

With gpp_coupled and transpiration_coupled, demand limited transpiration is gpp / WUE and varies with VPD as exp(-(κ_gpp - κ) VPD), where κ_gpp is the VPD sensitivity of GPP. Transpiration then rises with VPD only when κ is larger than κ_gpp. With gppVPD_Farquhar1980, κ_gpp is scaled down at higher CO2.

WUE is gpp over transpiration, in gC per mm of water, so it does not depend on the model time step.

References

  • Farquhar, G. D., von Caemmerer, S., & Berry, J. A. (1980). A biochemical model of photosynthetic CO2 assimilation in leaves of C3 species. Planta, 149, 78-90.

  • Medlyn, B. E., Duursma, R. A., Eamus, D., et al. (2011). Reconciling the optimal and empirical approaches to modelling stomatal conductance. Global Change Biology, 17, 2134-2144.

Versions

  • 1.0 on 03.11.2026 [skoirala | @dr-ko]

  • 1.1 on 05.11.2026 [skoirala | @dr-ko]: renamed from WUE_expVPDDayCo2Linear, and WUE_one_hpa renamed to WUE_base, since exp(-κ VPD) is one at zero VPD.

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :forcing => :f_VPD_day, :states => :ambient_CO2
Outputs: :diagnostics => :WUENoCO2, :diagnostics => :WUE

View Source


ambientCO2 ​

SindbadTEM.Processes.ambientCO2 Type
julia
Ambient CO₂ concentration.

Approaches

  • ambientCO2_constant: Sets ambient CO₂ to a constant value.

  • ambientCO2_forcing: Gets ambient CO₂ from forcing data.

source
ambientCO2 approaches
SindbadTEM.Processes.ambientCO2_constant Type

Sets ambient CO₂ to a constant value.

Parameters

  • Fields
    • constant_ambient_CO2: 400.0 ∈ [200.0, 5000.0] => atmospheric CO2 concentration (units: ppm @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.ambient_CO2: ambient co2 concentration

define, compute, update methods are not defined

End of getModelDocString-generated docstring for ambientCO2_constant.jl. Check the Extended help for user-defined information.


Extended help

This function assigns a constant value of ambient CO2 concentration to the land model state. The value is derived from the constant_ambient_CO2 parameter defined in the ambientCO2_constant structure.

References

  • None

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

View Source


autoRespiration ​

SindbadTEM.Processes.autoRespiration Type
julia
Autotrophic respiration for growth and maintenance.

Approaches

  • autoRespiration_Thornley2000A: Calculates autotrophic maintenance and growth respiration using Thornley and Cannell (2000) Model A, where maintenance respiration is prioritized.

  • autoRespiration_Thornley2000B: Calculates autotrophic maintenance and growth respiration using Thornley and Cannell (2000) Model B, where growth respiration is prioritized.

  • autoRespiration_Thornley2000C: Calculates autotrophic maintenance and growth respiration using Thornley and Cannell (2000) Model C, which includes growth, degradation, and resynthesis.

  • autoRespiration_none: Sets autotrophic respiration fluxes to 0.

source
autoRespiration approaches
SindbadTEM.Processes.autoRespiration_Thornley2000A Type

Calculates autotrophic maintenance and growth respiration using Thornley and Cannell (2000) Model A, where maintenance respiration is prioritized.

Parameters

  • Fields
    • RMN: 0.009085714285714286 ∈ [0.0009085714285714285, 0.09085714285714286] => Nitrogen efficiency rate of maintenance respiration (units: gC/gN/day @ day timescale)

    • YG: 0.75 ∈ [0.0, 1.0] => growth yield coefficient, or growth efficiency. Loosely: (1-YG)*GPP is growth respiration (units: gC/gC @ all timescales)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.k_respiration_maintain: metabolism rate for maintenance respiration

    • diagnostics.k_respiration_maintain_su: metabolism rate for maintenance respiration to be used in old analytical solution to steady state

    • fluxes.auto_respiration_growth: growth respiration per vegetation pool

    • fluxes.auto_respiration_maintain: maintenance respiration per vegetation pool

    • fluxes.c_eco_efflux: losss of carbon from (live) vegetation pools due to autotrophic respiration

compute:

  • Inputs

    • diagnostics.k_respiration_maintain: metabolism rate for maintenance respiration

    • diagnostics.k_respiration_maintain_su: metabolism rate for maintenance respiration to be used in old analytical solution to steady state

    • fluxes.c_eco_efflux: losss of carbon from (live) vegetation pools due to autotrophic respiration

    • fluxes.auto_respiration_growth: growth respiration per vegetation pool

    • fluxes.auto_respiration_maintain: maintenance respiration per vegetation pool

    • pools.cEco: carbon content of cEco pool(s)

    • pools.cVeg: carbon content of cVeg pool(s)

    • fluxes.gpp: gross primary prorDcutivity

    • diagnostics.CN_ratio_cVeg: carbon to nitrogen ratio in the vegetation pools

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

    • diagnostics.auto_respiration_f_airT: effect of air temperature on autotrophic respiration. 0: no decomposition, >1 increase in decomposition rate

  • Outputs

    • diagnostics.k_respiration_maintain: metabolism rate for maintenance respiration

    • diagnostics.k_respiration_maintain_su: metabolism rate for maintenance respiration to be used in old analytical solution to steady state

    • fluxes.auto_respiration_growth: growth respiration per vegetation pool

    • fluxes.auto_respiration_maintain: maintenance respiration per vegetation pool

    • fluxes.c_eco_efflux: losss of carbon from (live) vegetation pools due to autotrophic respiration

precompute, update methods are not defined

End of getModelDocString-generated docstring for autoRespiration_Thornley2000A.jl. Check the Extended help for user-defined information.


Extended help

References

  • Amthor, J. S. (2000), The McCree-de Wit-Penning de Vries-Thornley respiration paradigms: 30 years later, Ann Bot-London, 86[1], 1-20. Ryan, M. G. (1991), Effects of Climate Change on Plant Respiration, Ecol Appl, 1[2], 157-167.

  • Thornley, J. H. M., & M. G. R. Cannell [2000], Modelling the components of plant respiration: Representation & realism, Ann Bot-London, 85[1] 55-67.

Versions

  • 1.0 on 06.05.2022 [ncarvalhais/skoirala]: cleaned up the code

Created by

  • ncarvalhais

Notes

  • Questions - practical - leave raAct per pool; | make a field land.fluxes.ra that has all the autotrophic respiration components together?
source

Calculated using:

julia
Inputs: :diagnostics => :k_respiration_maintain, :diagnostics => :k_respiration_maintain_su, :fluxes => :c_eco_efflux, :fluxes => :auto_respiration_growth, :fluxes => :auto_respiration_maintain, :pools => :cEco, :pools => :cVeg, :fluxes => :gpp, :diagnostics => :CN_ratio_cVeg, :diagnostics => :c_allocation, :diagnostics => :auto_respiration_f_airT
Outputs: :diagnostics => :k_respiration_maintain, :diagnostics => :k_respiration_maintain_su, :fluxes => :auto_respiration_growth, :fluxes => :auto_respiration_maintain, :fluxes => :c_eco_efflux

View Source


autoRespirationAirT ​

SindbadTEM.Processes.autoRespirationAirT Type
julia
Effect of air temperature on autotrophic respiration.

Approaches

  • autoRespirationAirT_Q10: Calculates the effect of air temperature on maintenance respiration using a Q10 function.

  • autoRespirationAirT_none: No air temperature effect on autotrophic respiration.

source
autoRespirationAirT approaches
SindbadTEM.Processes.autoRespirationAirT_Q10 Type

Calculates the effect of air temperature on maintenance respiration using a Q10 function.

Parameters

  • Fields
    • Q10: 2.0 ∈ [1.05, 3.0] => Q10 parameter for maintenance respiration (unitless @ all timescales)

    • ref_airT: 20.0 ∈ [0.0, 40.0] => Reference temperature for the maintenance respiration (units: °C @ all timescales)

    • Q10_base: 10.0 ∈ [-Inf, Inf] => base temperature difference (units: °C @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.auto_respiration_f_airT: effect of air temperature on autotrophic respiration. 0: no decomposition, >1 increase in decomposition rate

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for autoRespirationAirT_Q10.jl. Check the Extended help for user-defined information.


Extended help

References

  • Amthor, J. S. (2000), The McCree-de Wit-Penning de Vries-Thornley respiration paradigms: 30 years later, Ann Bot-London, 86[1], 1-20.

  • Ryan, M. G. (1991), Effects of Climate Change on Plant Respiration, Ecol Appl, 1[2], 157-167.

  • Thornley, J. H. M., & M. G. R. Cannell [2000], Modelling the components of plant respiration: Representation & realism, Ann Bot-London, 85[1] 55-67.

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: clean up

Created by

  • ncarvalhais

Notes

source

Calculated using:

julia
Inputs: :forcing => :f_airT
Outputs: :diagnostics => :auto_respiration_f_airT

View Source


cAllocation ​

SindbadTEM.Processes.cAllocation Type
julia
Allocation fraction of NPP to different vegetation pools.

Approaches

  • cAllocation_Friedlingstein1999: Dynamically allocates carbon based on LAI, moisture, and nutrient availability, following Friedlingstein et al. (1999).

  • cAllocation_GSI: Dynamically allocates carbon based on temperature, water, and radiation stressors following the GSI approach.

  • cAllocation_fixed: Sets carbon allocation to each pool using fixed allocation parameters.

  • cAllocation_none: Sets carbon allocation to 0.

source
cAllocation approaches
SindbadTEM.Processes.cAllocation_Friedlingstein1999 Type

Dynamically allocates carbon based on LAI, moisture, and nutrient availability, following Friedlingstein et al. (1999).

Parameters

  • Fields
    • so: 0.3 ∈ [0.0, 1.0] => fractional carbon allocation to stem for non-limiting conditions (units: fractional @ all timescales)

    • ro: 0.3 ∈ [0.0, 1.0] => fractional carbon allocation to root for non-limiting conditions (units: fractional @ all timescales)

    • rel_Y: 2.0 ∈ [1.0, Inf] => normalization parameter (units: dimensionless @ all timescales)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

    • cAllocation.cVeg_names: name of vegetation carbon pools used for carbon allocation

    • cAllocation.cVeg_nzix: number of pools/layers in each vegetation carbon component

    • cAllocation.cVeg_zix: number of pools/layers in each vegetation carbon component

    • cAllocation.c_allocation_to_veg: carbon allocation to each vvegetation pool

compute:

  • Inputs

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

    • cAllocation.cVeg_nzix: number of pools/layers in each vegetation carbon component

    • cAllocation.cVeg_zix: number of pools/layers in each vegetation carbon component

    • cAllocation.c_allocation_to_veg: carbon allocation to each vvegetation pool

    • diagnostics.c_allocation_f_W_N: effect of water and nutrient on carbon allocation. 1: no stress, 0: complete stress

    • diagnostics.c_allocation_f_LAI: effect of LAI on carbon allocation. 1: no stress, 0: complete stress

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • pools.cVegRoot: carbon content of cVegRoot pool(s)

    • pools.cVegWood: carbon content of cVegWood pool(s)

    • pools.cVegLeaf: carbon content of cVegLeaf pool(s)

  • Outputs

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocation_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :diagnostics => :c_allocation, :cAllocation => :cVeg_nzix, :cAllocation => :cVeg_zix, :cAllocation => :c_allocation_to_veg, :diagnostics => :c_allocation_f_W_N, :diagnostics => :c_allocation_f_LAI, :constants => :z_zero, :constants => :o_one, :pools => :cVegRoot, :pools => :cVegWood, :pools => :cVegLeaf
Outputs: :diagnostics => :c_allocation

View Source


cAllocationLAI ​

SindbadTEM.Processes.cAllocationLAI Type
julia
Estimates allocation to the leaf pool given light limitation constraints to photosynthesis, using LAI dynamics.

Approaches

  • cAllocationLAI_Friedlingstein1999: Estimates the effect of light limitation on carbon allocation via LAI, based on Friedlingstein et al. (1999).

  • cAllocationLAI_none: Sets the LAI effect on allocation to 1 (no effect).

source
cAllocationLAI approaches
SindbadTEM.Processes.cAllocationLAI_Friedlingstein1999 Type

Estimates the effect of light limitation on carbon allocation via LAI, based on Friedlingstein et al. (1999).

Parameters

  • Fields
    • kext: 0.5 ∈ [0.0, 1.0] => extinction coefficient of LAI effect on allocation (unitless @ all timescales)

    • min_f_LAI: 0.1 ∈ [0.0, 1.0] => minimum LAI effect on allocation (unitless @ all timescales)

    • max_f_LAI: 1.0 ∈ [0.0, 1.0] => maximum LAI effect on allocation (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • states.LAI: leaf area index
  • Outputs

    • diagnostics.c_allocation_f_LAI: effect of LAI on carbon allocation. 1: no stress, 0: complete stress

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationLAI_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :states => :LAI
Outputs: :diagnostics => :c_allocation_f_LAI

View Source


cAllocationNutrients ​

SindbadTEM.Processes.cAllocationNutrients Type
julia
Pseudo-effect of nutrients on carbon allocation.

Approaches

  • cAllocationNutrients_Friedlingstein1999: Calculates pseudo-nutrient limitation based on Friedlingstein et al. (1999).

  • cAllocationNutrients_none: Sets the pseudo-nutrient limitation to 1 (no effect).

source
cAllocationNutrients approaches
SindbadTEM.Processes.cAllocationNutrients_Friedlingstein1999 Type

Calculates pseudo-nutrient limitation based on Friedlingstein et al. (1999).

Parameters

  • Fields
    • min_L: 0.1 ∈ [0.0, 1.0] => (unitless @ all timescales)

    • max_L: 1.0 ∈ [0.0, 1.0] => (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • states.PAW: amount of water available for transpiration per soil layer

    • properties.∑w_awc: total amount of water available for vegetation/transpiration

    • diagnostics.c_allocation_f_soilW: effect of soil moisture on carbon allocation. 1: no stress, 0: complete stress

    • diagnostics.c_allocation_f_soilT: effect of soil temperature on carbon allocation. 1: no stress, 0: complete stress

    • fluxes.PET: potential evapotranspiration

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • cAllocationNutrients.c_allocation_f_W_N: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cAllocationNutrients, :c_allocation_f_W_N) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationNutrients_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Notes

  • "There is no explicit estimate of soil mineral nitrogen in the version of CASA used for these simulations. As a surrogate; we assume that spatial variability in nitrogen mineralization & soil organic matter decomposition are identical [Townsend et al. 1995]. Nitrogen availability; N; is calculated as the product of the temperature & moisture abiotic factors used in CASA for the calculation of microbial respiration [Potter et al. 1993]." in Friedlingstein et al., 1999.#

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :states => :PAW, :properties => :∑w_awc, :diagnostics => :c_allocation_f_soilW, :diagnostics => :c_allocation_f_soilT, :fluxes => :PET, :constants => :z_zero, :constants => :o_one
Outputs: :cAllocationNutrients => :c_allocation_f_W_N

View Source


cAllocationRadiation ​

SindbadTEM.Processes.cAllocationRadiation Type
julia
Effect of radiation on carbon allocation.

Approaches

  • cAllocationRadiation_GSI: Calculates the radiation effect on allocation using the GSI method.

  • cAllocationRadiation_RgPot: Calculates the radiation effect on allocation using potential radiation instead of actual radiation.

  • cAllocationRadiation_gpp: Sets the radiation effect on allocation equal to that for GPP.

  • cAllocationRadiation_none: Sets the radiation effect on allocation to 1 (no effect).

source
cAllocationRadiation approaches
SindbadTEM.Processes.cAllocationRadiation_GSI Type

Calculates the radiation effect on allocation using the GSI method.

Parameters

  • Fields
    • τ_rad: 0.02 ∈ [0.001, 1.0] => temporal change rate for the light-limiting function (unitless @ all timescales)

    • slope_rad: 1.0 ∈ [0.01, 200.0] => slope parameters of a logistic function based on mean daily y shortwave downward radiation (unitless @ all timescales)

    • base_rad: 10.0 ∈ [0.0, 100.0] => inflection point parameters of a logistic function based on mean daily y shortwave downward radiation (unitless @ all timescales)

Methods:

define:

  • Inputs

    • None
  • Outputs

    • diagnostics.c_allocation_f_cloud_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_allocation_f_cloud_prev) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_PAR: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_PAR) for information on how to add the variable to the catalog.

    • diagnostics.c_allocation_f_cloud_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_allocation_f_cloud_prev) for information on how to add the variable to the catalog.

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_allocation_f_cloud: effect of cloud on carbon allocation. 1: no stress, 0: complete stress

    • diagnostics.c_allocation_f_cloud_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_allocation_f_cloud_prev) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationRadiation_GSI.jl. Check the Extended help for user-defined information.


Extended help

References

  • Forkel M, Carvalhais N, Schaphoff S, von Bloh W, Migliavacca M, Thurner M, Thonicke K [2014] Identifying environmental controls on vegetation greenness phenology through model–data integration. Biogeosciences, 11, 7025–7050.

  • Forkel, M., Migliavacca, M., Thonicke, K., Reichstein, M., Schaphoff, S., Weber, U., Carvalhais, N. (2015). Codominant water control on global interannual variability and trends in land surface phenology & greenness.

  • Jolly, William M., Ramakrishna Nemani, & Steven W. Running. "A generalized, bioclimatic index to predict foliar phenology in response to climate." Global Change Biology 11.4 [2005]: 619-632.

Versions

  • 1.0 on 12.01.2020 [skoirala | @dr-ko]

Created by

  • ncarvalhais, sbesnard, skoirala
source

Calculated using:

julia
Inputs: :forcing => :f_PAR, :diagnostics => :c_allocation_f_cloud_prev, :constants => :z_zero, :constants => :o_one
Outputs: :diagnostics => :c_allocation_f_cloud, :diagnostics => :c_allocation_f_cloud_prev

View Source


cAllocationSoilT ​

SindbadTEM.Processes.cAllocationSoilT Type
julia
Effect of soil temperature on carbon allocation.

Approaches

  • cAllocationSoilT_Friedlingstein1999: Calculates the partial temperature effect on decomposition and mineralization based on Friedlingstein et al. (1999).

  • cAllocationSoilT_gpp: Sets the temperature effect on allocation equal to that for GPP.

  • cAllocationSoilT_gppGSI: Calculates the temperature effect on allocation as for GPP using the GSI approach.

  • cAllocationSoilT_none: Sets the temperature effect on allocation to 1 (no effect).

source
cAllocationSoilT approaches
SindbadTEM.Processes.cAllocationSoilT_Friedlingstein1999 Type

Calculates the partial temperature effect on decomposition and mineralization based on Friedlingstein et al. (1999).

Parameters

  • Fields
    • min_f_soilT: 0.5 ∈ [0.0, 1.0] => minimum allocation coefficient from temperature stress (unitless @ all timescales)

    • max_f_soilT: 1.0 ∈ [0.0, 1.0] => maximum allocation coefficient from temperature stress (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • diagnostics.c_eco_k_f_soilT: effect of soil temperature on heterotrophic respiration respiration. 0: no decomposition, >1 increase in decomposition
  • Outputs

    • diagnostics.c_allocation_f_soilT: effect of soil temperature on carbon allocation. 1: no stress, 0: complete stress

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationSoilT_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :diagnostics => :c_eco_k_f_soilT
Outputs: :diagnostics => :c_allocation_f_soilT

View Source


cAllocationSoilW ​

SindbadTEM.Processes.cAllocationSoilW Type
julia
Effect of soil moisture on carbon allocation.

Approaches

  • cAllocationSoilW_Friedlingstein1999: Calculates the partial moisture effect on decomposition and mineralization based on Friedlingstein et al. (1999).

  • cAllocationSoilW_gpp: Sets the moisture effect on allocation equal to that for GPP.

  • cAllocationSoilW_gppGSI: Calculates the moisture effect on allocation as for GPP using the GSI approach.

  • cAllocationSoilW_none: Sets the moisture effect on allocation to 1 (no effect).

source
cAllocationSoilW approaches
SindbadTEM.Processes.cAllocationSoilW_Friedlingstein1999 Type

Calculates the partial moisture effect on decomposition and mineralization based on Friedlingstein et al. (1999).

Parameters

  • Fields
    • min_f_soilW: 0.5 ∈ [0.0, 1.0] => minimum value for moisture stressor (unitless @ all timescales)

    • max_f_soilW: 0.8 ∈ [0.0, 1.0] => maximum value for moisture stressor (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • diagnostics.c_eco_k_f_soilW: effect of soil moisture on carbon decomposition rate. 1: no stress, 0: complete stress
  • Outputs

    • diagnostics.c_allocation_f_soilW: effect of soil moisture on carbon allocation. 1: no stress, 0: complete stress

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationSoilW_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :diagnostics => :c_eco_k_f_soilW
Outputs: :diagnostics => :c_allocation_f_soilW

View Source


cAllocationTreeFraction ​

SindbadTEM.Processes.cAllocationTreeFraction Type
julia
Adjusts carbon allocation according to tree cover.

Approaches

  • cAllocationTreeFraction_Friedlingstein1999: Adjusts allocation coefficients according to the fraction of trees to herbaceous plants and fine to coarse root partitioning.
source
cAllocationTreeFraction approaches
SindbadTEM.Processes.cAllocationTreeFraction_Friedlingstein1999 Type

Adjusts allocation coefficients according to the fraction of trees to herbaceous plants and fine to coarse root partitioning.

Parameters

  • Fields
    • frac_fine_to_coarse: 1.0 ∈ [0.0, 1.0] => carbon fraction allocated to fine roots (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • None
  • Outputs

    • cAllocationTreeFraction.cVeg_names_for_c_allocation_frac_tree: name of vegetation carbon pools used in tree fraction correction for carbon allocation

compute:

  • Inputs

    • states.frac_tree: fractional coverage of grid with trees

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

    • cAllocationTreeFraction.cVeg_names_for_c_allocation_frac_tree: name of vegetation carbon pools used in tree fraction correction for carbon allocation

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

precompute, update methods are not defined

End of getModelDocString-generated docstring for cAllocationTreeFraction_Friedlingstein1999.jl. Check the Extended help for user-defined information.


Extended help

References

  • Friedlingstein; P.; G. Joel; C.B. Field; & I.Y. Fung; 1999: Toward an allocation scheme for global terrestrial carbon models. Glob. Change Biol.; 5; 755-770; doi:10.1046/j.1365-2486.1999.00269.x.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :states => :frac_tree, :diagnostics => :c_allocation, :cAllocationTreeFraction => :cVeg_names_for_c_allocation_frac_tree, :constants => :z_zero, :constants => :o_one
Outputs: :diagnostics => :c_allocation

View Source


cBiomass ​

SindbadTEM.Processes.cBiomass Type
julia
Computes aboveground biomass (AGB).

Approaches

  • cBiomass_simple: Calculates AGB simply as the sum of wood and leaf carbon pools.

  • cBiomass_treeGrass: Considers the tree-grass fraction to include different vegetation pools while calculating AGB. For Eddy Covariance sites with tree cover, AGB = leaf + wood biomass. For grass-only sites, AGB is set to the wood biomass, which is constrained to be near 0 after optimization.

  • cBiomass_treeGrass_cVegReserveScaling: Same as cBiomass_treeGrass.jl, but includes scaling for the relative fraction of the reserve carbon to not allow for large reserve compared to the rest of the vegetation carbol pool.

  • cBiomass_vegType: Same as cBiomass_treeGrass_cVegReserveScaling, but selects herbaceous vegetation from land.states.veg_type_name being :herb instead of from frac_tree.

source
cBiomass approaches
SindbadTEM.Processes.cBiomass_simple Type

Calculates AGB simply as the sum of wood and leaf carbon pools.

Parameters

  • None

Methods:

compute:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • states.aboveground_biomass: carbon content on the cVegWood component

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cBiomass_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

Created by

source

Calculated using:

julia
Inputs: :pools => :cEco
Outputs: :states => :aboveground_biomass

View Source


cCropHarvest ​

SindbadTEM.Processes.cCropHarvest Type
julia
Carbon loss due to harvest events.

Approaches

  • cCropHarvest_simple: This is used for crop and Crop harvest events. Moves carbon to export and decomposable pools, according to their respective carbon flow target pools, during harvest events.
source
cCropHarvest approaches
SindbadTEM.Processes.cCropHarvest_simple Type

This is used for crop and Crop harvest events. Moves carbon to export and decomposable pools, according to their respective carbon flow target pools, during harvest events.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

  • Outputs

    • diagnostics.c_Crop_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Crop_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_Crop_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Flow) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • diagnostics.c_Crop_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Crop_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.frac_crop_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_crop_harvest_intensity) for information on how to add the variable to the catalog.

    • diagnostics.frac_crop_harvest_efficiency: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_crop_harvest_efficiency) for information on how to add the variable to the catalog.

    • diagnostics.is_crop_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :is_crop_harvested) for information on how to add the variable to the catalog.

    • pools.cEco: carbon content of cEco pool(s)

    • states.c_remain: amount of carbon to keep in the ecosystem vegetation pools in case of disturbances

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • models.c_model: a base carbon cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every carbon model realization

    • diagnostics.c_Crop_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Flow) for information on how to add the variable to the catalog.

  • Outputs

    • diagnostics.c_Crop_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Crop_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_Crop_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Crop_Harvest_Flow) for information on how to add the variable to the catalog.

    • diagnostics.actual_crop_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :actual_crop_harvest_intensity) for information on how to add the variable to the catalog.

    • diagnostics.cCropProducts: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :cCropProducts) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cCropHarvest_simple.jl. Check the Extended help for user-defined information.


Extended help

Created by - Nuno | nunocarvalhais

source

Calculated using:

julia
Inputs: :diagnostics => :c_Crop_Harvest_Product, :diagnostics => :c_Crop_Harvest_Mortality, :diagnostics => :frac_crop_harvest_intensity, :diagnostics => :frac_crop_harvest_efficiency, :diagnostics => :is_crop_harvested, :pools => :cEco, :states => :c_remain, :cCycleBase => :c_giver, :cCycleBase => :c_taker, :constants => :z_zero, :constants => :o_one, :models => :c_model, :diagnostics => :c_Crop_Harvest_Flow
Outputs: :diagnostics => :c_Crop_Harvest_Product, :diagnostics => :c_Crop_Harvest_Mortality, :diagnostics => :c_Crop_Harvest_Flow, :diagnostics => :actual_crop_harvest_intensity, :diagnostics => :cCropProducts

View Source


cCropHarvestEfficiency ​

SindbadTEM.Processes.cCropHarvestEfficiency Type
julia
Appropriation of carbon for crop products.

Approaches

  • cCropHarvestEfficiency_constant: To determine globally constant fractions of crop harvest efficiency and intensity. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the crop that would not die during harvest. Efficiency reflects how much of the killed cVegPools is removed from the system, turned into crop products.

  • cCropHarvestEfficiency_forcing: Load the harvest fraction efficiency from the forcing. Harvest fraction efficiency is the proportion of the cVegPool killed for crops that is abstracted from the system.

  • cCropHarvestEfficiency_none: No crop harvest efficiency.

source
cCropHarvestEfficiency approaches
SindbadTEM.Processes.cCropHarvestEfficiency_constant Type

To determine globally constant fractions of crop harvest efficiency and intensity. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the crop that would not die during harvest. Efficiency reflects how much of the killed cVegPools is removed from the system, turned into crop products.

Parameters

  • Fields
    • constant_frac_crop_harvest_efficiency: 0.8 ∈ [0.0, 0.99] => Fraction of the harvestable killed vegetation carbon pools that is removed from an ecosystem in a harvest event (units: fraction @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • diagnostics.frac_crop_harvest_efficiency: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_crop_harvest_efficiency) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cCropHarvestEfficiency_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 26.08.2026 [sol]

Created by

  • sol
source

View Source


cCropHarvestEvent ​

SindbadTEM.Processes.cCropHarvestEvent Type

Approaches

  • cCropHarvestEvent_forcing:

  • cCropHarvestEvent_none:

source
cCropHarvestEvent approaches
SindbadTEM.Processes.cCropHarvestEvent_forcing Type

Parameters

  • None

Methods:

compute:

  • Inputs

    • forcing.f_is_crop_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_is_crop_harvested) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.is_crop_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :is_crop_harvested) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cCropHarvestEvent_forcing.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 31.08.2026 [sol]

Created by

  • sol
source

Calculated using:

julia
Inputs: :forcing => :f_is_crop_harvested
Outputs: :diagnostics => :is_crop_harvested

View Source


cCropHarvestIntensity ​

SindbadTEM.Processes.cCropHarvestIntensity Type
julia
Appropriation of carbon for crop products.

Approaches

  • cCropHarvestIntensity_constant: To determine globally constant fractions of crop harvest efficiency and intensity. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the crop that would not die during harvest. Intensity reflects how much of the killed cVegPools is removed from the system, turned into crop products.

  • cCropHarvestIntensity_forcing: Load the harvest intensity fraction from the forcing. Harvest fraction intensity is the proportion of the cVegPools that is killed during a harvest event.

  • cCropHarvestIntensity_none: No crop harvest.

source
cCropHarvestIntensity approaches
SindbadTEM.Processes.cCropHarvestIntensity_constant Type

To determine globally constant fractions of crop harvest efficiency and intensity. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the crop that would not die during harvest. Intensity reflects how much of the killed cVegPools is removed from the system, turned into crop products.

Parameters

  • Fields
    • constant_frac_crop_harvest_intensity: 0.9 ∈ [0.0, 0.99] => Fraction of the harvestable vegetation live carbon pools carbon pools that is killed by the harvest event (units: fraction @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • diagnostics.frac_crop_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_crop_harvest_intensity) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cCropHarvestIntensity_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 26.08.2026 [sol]

Created by

  • sol
source

View Source


cCycle ​

SindbadTEM.Processes.cCycle Type
julia
Compute fluxes and changes (cycling) of carbon pools.

Approaches

  • cCycle_simple: Carbon cycle with components based on the cCycleBase approach, including carbon allocation, transfers, and turnover rates.
source
cCycle approaches
SindbadTEM.Processes.cCycle_simple Type

Carbon cycle with components based on the cCycleBase approach, including carbon allocation, transfers, and turnover rates.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • fluxes.c_eco_flow: flow of carbon to a given carbon pool from other carbon pools

    • fluxes.c_eco_influx: net influx from allocation and efflux (npp) to each (live) carbon pool

    • fluxes.c_eco_out: outflux of carbon from each carbol pool

    • fluxes.c_eco_npp: npp of each carbon pool

    • fluxes.zero_c_eco_flow: helper for resetting c_eco_flow in every time step

    • fluxes.zero_c_eco_influx: helper for resetting c_eco_influx in every time step

    • states.cEco_prev: ecosystem carbon content of the previous time step

    • pools.ΔcEco: change in water storage in cEco pool(s)

compute:

  • Inputs

    • diagnostics.c_allocation: fraction of gpp allocated to different (live) carbon pools

    • diagnostics.c_eco_k: decomposition rate of carbon per pool

    • diagnostics.c_flow_A_vec: fraction of the carbon loss fron a (giver) pool that flows to a (taker) pool

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

    • fluxes.c_eco_efflux: losss of carbon from (live) vegetation pools due to autotrophic respiration

    • fluxes.c_eco_flow: flow of carbon to a given carbon pool from other carbon pools

    • fluxes.c_eco_influx: net influx from allocation and efflux (npp) to each (live) carbon pool

    • fluxes.c_eco_out: outflux of carbon from each carbol pool

    • fluxes.c_eco_npp: npp of each carbon pool

    • fluxes.zero_c_eco_flow: helper for resetting c_eco_flow in every time step

    • fluxes.zero_c_eco_influx: helper for resetting c_eco_influx in every time step

    • pools.cEco: carbon content of cEco pool(s)

    • pools.cVeg: carbon content of cVeg pool(s)

    • pools.ΔcEco: change in water storage in cEco pool(s)

    • states.cEco_prev: ecosystem carbon content of the previous time step

    • fluxes.gpp: gross primary prorDcutivity

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • models.c_model: a base carbon cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every carbon model realization

    • cCycleBase.zix_cNonVeg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cNonVeg) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cNatural: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cNatural) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cHeterotrophic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cHeterotrophic) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cProducts: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cProducts) for information on how to add the variable to the catalog.

  • Outputs

    • pools.cEco: carbon content of cEco pool(s)

    • fluxes.nee: net ecosystem carbon exchange for the ecosystem. negative value indicates carbon sink.

    • fluxes.npp: net primary prorDcutivity

    • fluxes.auto_respiration: carbon loss due to autotrophic respiration

    • fluxes.eco_respiration: carbon loss due to ecosystem respiration

    • fluxes.hetero_respiration: carbon loss due to heterotrophic respiration

    • fluxes.product_respiration: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :product_respiration) for information on how to add the variable to the catalog.

    • fluxes.nbp: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :nbp) for information on how to add the variable to the catalog.

    • fluxes.c_eco_efflux: losss of carbon from (live) vegetation pools due to autotrophic respiration

    • fluxes.c_eco_flow: flow of carbon to a given carbon pool from other carbon pools

    • fluxes.c_eco_influx: net influx from allocation and efflux (npp) to each (live) carbon pool

    • fluxes.c_eco_out: outflux of carbon from each carbol pool

    • fluxes.c_eco_npp: npp of each carbon pool

    • states.cEco_prev: ecosystem carbon content of the previous time step

    • pools.ΔcEco: change in water storage in cEco pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for cCycle_simple.jl. Check the Extended help for user-defined information.


Extended help

References

  • Potter; C. S.; J. T. Randerson; C. B. Field; P. A. Matson; P. M. Vitousek; H. A. Mooney; & S. A. Klooster. 1993. Terrestrial ecosystem production: A process model based on global satellite & surface data. Global Biogeochemical Cycles. 7: 811-841.

Versions

  • 1.0 on 28.02.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :diagnostics => :c_allocation, :diagnostics => :c_eco_k, :diagnostics => :c_flow_A_vec, :diagnostics => :c_flow_ME_vec, :diagnostics => :c_flow_QP_vec, :fluxes => :c_eco_efflux, :fluxes => :c_eco_flow, :fluxes => :c_eco_influx, :fluxes => :c_eco_out, :fluxes => :c_eco_npp, :fluxes => :zero_c_eco_flow, :fluxes => :zero_c_eco_influx, :pools => :cEco, :pools => :cVeg, :pools => :ΔcEco, :states => :cEco_prev, :fluxes => :gpp, :cCycleBase => :c_flow_order, :cCycleBase => :c_giver, :cCycleBase => :c_taker, :models => :c_model, :cCycleBase => :zix_cNonVeg, :cCycleBase => :zix_cNatural, :cCycleBase => :zix_cHeterotrophic, :cCycleBase => :zix_cProducts
Outputs: :pools => :cEco, :fluxes => :nee, :fluxes => :npp, :fluxes => :auto_respiration, :fluxes => :eco_respiration, :fluxes => :hetero_respiration, :fluxes => :product_respiration, :fluxes => :nbp, :fluxes => :c_eco_efflux, :fluxes => :c_eco_flow, :fluxes => :c_eco_influx, :fluxes => :c_eco_out, :fluxes => :c_eco_npp, :states => :cEco_prev, :pools => :ΔcEco

View Source


cCycleBase ​

SindbadTEM.Processes.cCycleBase Type
julia
Defines the base properties of the carbon cycle components. For example, components of carbon pools, their turnover rates, and flow matrix.

Approaches

  • cCycleBase_CASA: Structure and properties of the carbon cycle components used in the CASA approach.

  • cCycleBase_GSI: Structure and properties of the carbon cycle components as needed for a dynamic phenology-based carbon cycle in the GSI approach.

  • cCycleBase_MGMT: Same as GSI, additionally allowing for scaling of turnover parameters based on plant forms.

source
cCycleBase approaches
SindbadTEM.Processes.cCycleBase_CASA Type

Structure and properties of the carbon cycle components used in the CASA approach.

Parameters

  • Fields
    • k_c_rootfine_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-vegetation-type turnover rate of fine roots (units: year-1 @ year timescale)

    • k_c_rootcoarse_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-vegetation-type turnover rate of coarse roots (units: year-1 @ year timescale)

    • k_c_wood_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-vegetation-type turnover rate of wood (units: year-1 @ year timescale)

    • k_c_leaf_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-vegetation-type turnover rate of leaves (units: year-1 @ year timescale)

    • k_c_litfast_scalar: 1.0 ∈ [0.25, 4] => scalar for turnover rate of fast litter carbon pools (units: year-1 @ year timescale)

    • k_c_litslow_scalar: 1.0 ∈ [0.25, 4] => scalar for turnover rate of slow litter carbon pools (units: year-1 @ year timescale)

    • k_c_micsurf_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-pool turnover rate of ecosystem carbon pools (units: year-1 @ year timescale)

    • k_c_micsoil_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the per-pool turnover rate of ecosystem carbon pools (units: year-1 @ year timescale)

    • k_c_soilslow_scalar: 1.0 ∈ [0.25, 4] => scalar for turnover rate of soil slow carbon pool (units: year-1 @ year timescale)

    • k_c_soilold_scalar: 1.0 ∈ [0.25, 4] => scalar for turnover rate of soil old carbon pool (units: year-1 @ year timescale)

    • α_k_cVeg: 1.0 ∈ [0.25, 4.0] => scalar for turnover rate of all vegetation carbon pools; it has no timescale, since it scales the original pool level k. (units: - @ all timescales)

    • α_k_cLit: 1.0 ∈ [0.25, 4] => scalar for turnover rate of all litter carbon pools; it has no timescale, since it scales the original pool level k. (units: - @ all timescales)

    • α_k_cSoil: 1.0 ∈ [0.25, 4] => scalar for turnover rate of all soil carbon pools; it has no timescale, since it scales the original pool level k. (units: - @ all timescales)

    • α_k_cMic: 1.0 ∈ [0.25, 4] => scalar for turnover rate of all microbial carbon pools; it has no timescale, since it scales the original pool level k. (units: - @ all timescales)

    • CN_ratio_scalar: 1.0 ∈ [0.25, 4.0] => scalar for the vegetation carbon-to-nitrogen ratio (units: - @ all timescales)

    • eff_cLit_to_cMicSurf: 0.4 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of litter decomposition into the surface microbial pool. (units: fraction @ all timescales)

    • eff_cLitRootFine_to_cMicSoil: 0.45 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of fine-root litter decomposition into the soil microbial pool. (units: fraction @ all timescales)

    • eff_cLitRootCoarse_to_cMicSoil: 0.4 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of coarse-root litter decomposition into the soil microbial pool. (units: fraction @ all timescales)

    • eff_cLit_to_cSoilSlow: 0.6 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of structural and woody litter decomposition into the slow soil pool. (units: fraction @ all timescales)

    • eff_cLitRootFine_to_cSoilSlow: 0.55 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of fine-root structural litter decomposition into the slow soil pool. (units: fraction @ all timescales)

    • eff_cMicSurf_to_cSoilSlow: 0.4 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of surface microbial turnover into the slow soil pool. (units: fraction @ all timescales)

    • eff_cSoil_to_cMicSoil: 0.45 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of slow and old soil decomposition returning to the soil microbial pool. (units: fraction @ all timescales)

    • eff_cSoilSlow_to_cSoilOld: 0.45 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of slow soil decomposition stabilized into old soil carbon. (units: fraction @ all timescales)

    • c_remain_scalar: 1.0 ∈ [0.1, 10.0] => scalar for the per-vegetation-type minimum remaining carbon after disturbance (units: - @ all timescales)

    • k_hilo_scalar: 1.0 ∈ [-Inf, Inf] => timescale factor for split of high and low turnover rates (units: - @ year timescale)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • vegClass.veg_type_class_map: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:vegClass, :veg_type_class_map) for information on how to add the variable to the catalog.

  • Outputs

    • diagnostics.CN_ratio_cVeg: carbon to nitrogen ratio in the vegetation pools

    • diagnostics.c_eco_k_base: base carbon decomposition rate of the carbon pools

    • diagnostics.c_flow_A_vec: fraction of the carbon loss fron a (giver) pool that flows to a (taker) pool

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

    • diagnostics.rootfine_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :rootfine_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.leaf_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :leaf_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.rootcoarse_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :rootcoarse_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.wood_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :wood_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.c_remain_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_remain_per_vegtype) for information on how to add the variable to the catalog.

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.pool_names: cEco_index => pool_name pair for each carbon pool – informational only, for inspecting land.cCycleBase; no process matches pools by this

    • cCycleBase.flow_edges: flow_order => (giver_name => taker_name) pair for each carbon flow, in flow-vector order – informational only, for inspecting land.cCycleBase; no process matches flows by this

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cNonVeg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cNonVeg) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cNatural: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cNatural) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cHeterotrophic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cHeterotrophic) for information on how to add the variable to the catalog.

    • cCycleBase.zix_cProducts: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cProducts) for information on how to add the variable to the catalog.

    • models.c_model: a base carbon cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every carbon model realization

precompute:

  • Inputs

    • diagnostics.CN_ratio_cVeg: carbon to nitrogen ratio in the vegetation pools

    • diagnostics.c_eco_k_base: base carbon decomposition rate of the carbon pools

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

    • diagnostics.rootfine_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :rootfine_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.leaf_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :leaf_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.rootcoarse_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :rootcoarse_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.wood_age_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :wood_age_per_vegtype) for information on how to add the variable to the catalog.

    • diagnostics.c_remain_per_vegtype: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_remain_per_vegtype) for information on how to add the variable to the catalog.

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • states.veg_type_name: vegetation type class of the pixel, the single source of vegetation type for downstream processes

  • Outputs

    • diagnostics.CN_ratio_cVeg: carbon to nitrogen ratio in the vegetation pools

    • diagnostics.c_eco_k_base: base carbon decomposition rate of the carbon pools

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

    • states.c_remain: amount of carbon to keep in the ecosystem vegetation pools in case of disturbances

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • cCycleBase.k_hilo_lit_split: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :k_hilo_lit_split) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for cCycleBase_CASA.jl. Check the Extended help for user-defined information.


Extended help

Pool topology

The 22 giver-to-taker links of this approach are declared as CASA_FLOW_EDGES in poolConfigurations/CASA.jl, and the pools they name as poolStructure(CASA) beside it. cFlowMatrix(cCycleBase_CASA, pool_names) returns them as a [taker, giver] matrix of flow indices, and plotCarbonFlows draws them.

Microbial efficiency

precompute carries CASA's static microbial-carbon-transfer-efficiency table as ordinary bounded parameters (eff_cLit_to_cMicSurf and the other seven) and writes them into c_flow_ME_vec, giving CASA a realistic default with no cMicrobialEfficiency approach selected. Only the soil-microbial pool's texture response is left out; select cMicrobialEfficiencycMic_texture for it. This lives in precompute, not define, since the eff_* fields are optimizable parameters and define runs once ever.

Turnover rate and carbon-to-nitrogen ratio

k_c_scalar, CN_ratio_scalar, and the four *_age_scalar fields are likewise resolved in precompute: define only allocates the zero-initialized c_eco_k_base/CN_ratio_cVeg arrays and the flow topology, and precompute writes their actual values by pool name via @rep_elem (the land arrays are immutable SVectors). CASA_TAU_NON_VEG_POOLS/CASA_CN_ratio (in poolConfigurations/CASA.jl) carry the fixed per-pool turnover-time and C:N-ratio data; only the scalars are optimizable.

The four vegetation-compartment pools' turnover (cVegRootFine, cVegRootCoarse, cVegWood, cVegLeaf) is not in CASA_TAU_NON_VEG_POOLS: it varies by land.states.veg_type_name. define re-keys CVEG_ROOTFINE_AGE_PER_VEGTYPE/CVEG_LEAF_AGE_PER_VEGTYPE/ CVEG_ROOTCOARSE_AGE_PER_VEGTYPE/CVEG_WOOD_AGE_PER_VEGTYPE (ParamsForVegClasses.jl) onto the experiment's resolved vegClass classification via getParamsPerVegType, and precompute looks the pixel's veg_type_name up in each and applies the matching *_age_scalar through getKfromTau.

k_c_scalar and the four *_age_scalar fields declare "year" as their timescale, so getTypedModel/getParameters rescale their default and bounds to the model's configured timestep before a run starts.

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 28.05.2022 [skoirala | @dr-ko]: migrate to julia

  • 1.1 on 04.09.2026 [skoirala]: allocate c_flow_ME_vec here; remove the dead c_flow_MEQP_array parameter and the transcribed c_flow_A_array

  • 1.2 on 09.09.2026 [skoirala]: fold cMicrobialEfficiency_CASA's 8 static constants in as parameters, applied to c_flow_ME_vec in define; remove the now-duplicate cMicrobialEfficiency_CASA and its three per-group factors

  • 1.3 on 10.09.2026 [skoirala]: key the four *_age_per_PFT fields by canonical PFT name instead of position; replace with fixed named lookups plus bounded scalar multipliers

  • 1.4 on 10.09.2026 [skoirala]: port onto the working cCycleBase_GSI_PlantForm.jl pattern (this approach had never been run end to end): annk becomes CASA_ANNK plus annk_scalar; the ME-table and turnover computation move from define to precompute; replace bulk .=/tuple-indexed assignment with @rep_elem loops (land.diagnostics arrays are immutable SVectors); allocate c_eco_k_base

  • 1.5 on 10.09.2026 [skoirala]: move meCASAFlowsLitter/meCASAFlowsSoil here from cMicrobialEfficiencycLit/cSoil, their only caller

  • 1.6 on 10.09.2026 [skoirala]: move the *_age_per_PFT tables to the consolidated vegTypeParamCatalog.jl; the four *_age_scalar fields stay here, still unwired into precompute

  • 1.7 on 11.09.2026 [skoirala]: rename CASA_ANNK to CASA_TAU_NON_VEG_POOLS (turnover time, not rate) and annk_scalar to k_c_scalar; replace the 4-element p_CN_ratio_cVeg with the full-coverage CASA_CN_ratio table plus CN_ratio_scalar; freeze prior behavior as cCycleBase_CASA_Legacy; define's c_model now packs params itself rather than a fresh instance; rename the four *_age_scalar fields to the k_c_* convention

  • 1.8 on 11.09.2026 [skoirala]: fix a pre-existing bug (never exercised end to end, see 1.4): k_c_scalar had no declared timescale, so turnover was never rescaled to the model's timestep; declaring "year" fixes it

  • 1.9 on 11.09.2026 [skoirala]: wire the four *_age_scalar fields into precompute (dead since 1.6); vegetation-compartment turnover now varies by veg_type_name via getParamsPerVegType; declare "year" timescale on the four scalars; freeze prior behavior as cCycleBase_CASA_Legacy

  • 2.0 on 15.09.2026 [skoirala]: replace the flat c_remain parameter with c_remain_scalar, following the per-vegetation-type pattern of the turnover ages above (C_REMAIN_PER_VEGTYPE, getParamForVegType)

Created by

  • ncarvalhais
source

View Source


cCycleConsistency ​

SindbadTEM.Processes.cCycleConsistency Type
julia
Consistency and sanity checks in carbon allocation and transfers.

Approaches

  • cCycleConsistency_simple: Checks consistency in the cCycle vector, including c_allocation and cFlow.
source
cCycleConsistency approaches
SindbadTEM.Processes.cCycleConsistency_simple Type

Checks consistency in the cCycle vector, including c_allocation and cFlow.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

  • Outputs

    • cCycleConsistency.giver_lower_unique: unique indices of carbon pools whose flow is >0 below the diagonal in carbon flow matrix

    • cCycleConsistency.giver_upper_unique: unique indices of carbon pools whose flow is >0 above the diagonal in carbon flow matrix

precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for cCycleConsistency_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 12.05.2022: skoirala: julia implementation

Created by

  • sbesnard
source

View Source


cCycleDisturbance ​

SindbadTEM.Processes.cCycleDisturbance Type
julia
Disturbance of the carbon cycle pools.

Approaches

  • cCycleDisturbance_simple: Moves carbon in vegetation pools to their non-vegetation carbon-flow target pools during disturbance events while allowing a parameterized fraction of the reserve pool to survive.
source
cCycleDisturbance approaches
SindbadTEM.Processes.cCycleDisturbance_simple Type

Moves carbon in vegetation pools to their non-vegetation carbon-flow target pools during disturbance events while allowing a parameterized fraction of the reserve pool to survive.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • None

compute:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • models.c_model: a base carbon cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every carbon model realization

  • Outputs

    • pools.cEco: carbon content of cEco pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for cCycleDisturbance_simple.jl. Check the Extended help for user-defined information.


Extended help

This approach is called ImplicitResprout because post-disturbance recovery is represented implicitly through survival of a fraction frac_reserve_survival of cVegReserve, rather than through an explicit resprouting via seed pools. The non-surviving fraction follows the existing vegetation-to-litter flow pathways. frac_reserve_survival = 0 reduces to NoRecovery for the reserve pool, while frac_reserve_survival = 1 gives complete reserve survival.

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

Versions

  • 1.0 on 23.04.2021 [skoirala | @dr-ko]

  • 1.0 on 23.04.2021 [skoirala | @dr-ko]

  • 1.1 on 29.11.2021 [skoirala | @dr-ko]: moved the scaling parameters to ccyclebase_gsi [land.diagnostics.ηA & land.diagnostics.ηH]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :pools => :cEco, :models => :c_model
Outputs: :pools => :cEco

View Source


cCycleManagement ​

SindbadTEM.Processes.cCycleManagement Type
julia
Agriculture and forestry

Approaches

  • cCycleManagement_none: No management.

  • cCycleManagement_simple: This is used for crop and forestry harvest events. Moves carbon to export and decomposable pools, according to their respective carbon flow target pools, during harvest events.

source
cCycleManagement approaches
SindbadTEM.Processes.cCycleManagement_none Type

No management.

Parameters

  • None

Methods:

define, precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for cCycleManagement_none.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 26.08.2026 [sol]

Created by

  • sol
source

View Source


cDieBack ​

SindbadTEM.Processes.cDieBack Type
julia
Disturbance of the carbon cycle pools.

Approaches

  • cDieBack_ImplicitResprout: Unspecified mortality. Could be a storm. Moves carbon in vegetation pools to their non-vegetation carbon-flow target pools during disturbance events while allowing a parameterized fraction of the reserve pool to survive.
source
cDieBack approaches
SindbadTEM.Processes.cDieBack_ImplicitResprout Type

Unspecified mortality. Could be a storm. Moves carbon in vegetation pools to their non-vegetation carbon-flow target pools during disturbance events while allowing a parameterized fraction of the reserve pool to survive.

Parameters

  • Fields
    • frac_reserve_survival: 1.0 ∈ [0.0, 1.0] => fraction of the reserve carbon pools that survives upon a disturbance (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_disturbance_mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_flow) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_efflux: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_efflux) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.zix_cHeterotrophic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cHeterotrophic) for information on how to add the variable to the catalog.

    • pools.cEco: carbon content of cEco pool(s)

    • states.c_remain: amount of carbon to keep in the ecosystem vegetation pools in case of disturbances

    • constants.z_zero: a helper type stable 0 to be used across all models

    • diagnostics.c_f_cVeg_dieOff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_f_cVeg_dieOff) for information on how to add the variable to the catalog.

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

    • diagnostics.c_disturbance_mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_flow) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_efflux: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_efflux) for information on how to add the variable to the catalog.

  • Outputs

    • diagnostics.c_disturbance_mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_flow) for information on how to add the variable to the catalog.

    • diagnostics.c_disturbance_efflux: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_disturbance_efflux) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cDieBack_ImplicitResprout.jl. Check the Extended help for user-defined information.


Extended help

This approach is called ImplicitResprout because post-disturbance recovery is represented implicitly through survival of a fraction frac_reserve_survival of cVegReserve, rather than through an explicit resprouting via seed pools. The non-surviving fraction follows the existing vegetation-to-litter flow pathways. frac_reserve_survival = 0 reduces to NoRecovery for the reserve pool, while frac_reserve_survival = 1 gives complete reserve survival.

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

Versions

  • 1.0 on 23.04.2021 [skoirala | @dr-ko]

  • 1.0 on 23.04.2021 [skoirala | @dr-ko]

  • 1.1 on 29.11.2021 [skoirala | @dr-ko]: moved the scaling parameters to ccyclebase_gsi [land.diagnostics.ηA & land.diagnostics.ηH]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :cCycleBase => :c_flow_order, :cCycleBase => :c_giver, :cCycleBase => :c_taker, :cCycleBase => :zix_cHeterotrophic, :pools => :cEco, :states => :c_remain, :constants => :z_zero, :diagnostics => :c_f_cVeg_dieOff, :diagnostics => :c_flow_QP_vec, :diagnostics => :c_disturbance_mortality, :diagnostics => :c_disturbance_flow, :diagnostics => :c_disturbance_efflux
Outputs: :diagnostics => :c_disturbance_mortality, :diagnostics => :c_disturbance_flow, :diagnostics => :c_disturbance_efflux

View Source


cFire ​

SindbadTEM.Processes.cFire Type
julia
Carbon loss due to fire disturbance events.

Approaches

  • cFire_simple: This is used for vegetation die-off and fire disturbance events. Moves carbon in reserve pool to slow litter pool, and all other carbon pools except reserve pool to their respective carbon flow target pools during disturbance events.
source
cFire approaches
SindbadTEM.Processes.cFire_simple Type

This is used for vegetation die-off and fire disturbance events. Moves carbon in reserve pool to slow litter pool, and all other carbon pools except reserve pool to their respective carbon flow target pools during disturbance events.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_fire_mortality: total carbon lost by each vegetation pool to fire or die-off, the combusted part plus the flow to litter and soil

    • diagnostics.c_fire_efflux: carbon of each pool combusted by fire and emitted to the atmosphere

    • diagnostics.c_fire_flow: carbon of vegetation killed by fire or die-off but not combusted, received by each litter and soil pool

compute:

  • Inputs

    • diagnostics.c_f_cVeg_dieOff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_f_cVeg_dieOff) for information on how to add the variable to the catalog.

    • diagnostics.c_fire_mortality: total carbon lost by each vegetation pool to fire or die-off, the combusted part plus the flow to litter and soil

    • diagnostics.c_fire_efflux: carbon of each pool combusted by fire and emitted to the atmosphere

    • diagnostics.c_fire_flow: carbon of vegetation killed by fire or die-off but not combusted, received by each litter and soil pool

    • diagnostics.c_fire_fba: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_fire_fba) for information on how to add the variable to the catalog.

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

    • diagnostics.c_Fire_cci: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Fire_cci) for information on how to add the variable to the catalog.

    • diagnostics.c_Fire_k: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Fire_k) for information on how to add the variable to the catalog.

    • pools.cEco: carbon content of cEco pool(s)

    • states.c_remain: amount of carbon to keep in the ecosystem vegetation pools in case of disturbances

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.zix_cHeterotrophic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cHeterotrophic) for information on how to add the variable to the catalog.

    • constants.z_zero: a helper type stable 0 to be used across all models

  • Outputs

    • fluxes.cFireTotal: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :cFireTotal) for information on how to add the variable to the catalog.

    • diagnostics.c_fire_mortality: total carbon lost by each vegetation pool to fire or die-off, the combusted part plus the flow to litter and soil

    • diagnostics.c_fire_efflux: carbon of each pool combusted by fire and emitted to the atmosphere

    • diagnostics.c_fire_flow: carbon of vegetation killed by fire or die-off but not combusted, received by each litter and soil pool

precompute, update methods are not defined

End of getModelDocString-generated docstring for cFire_simple.jl. Check the Extended help for user-defined information.


Extended help

Created by - Nuno | nunocarvalhais

source

Calculated using:

julia
Inputs: :diagnostics => :c_f_cVeg_dieOff, :diagnostics => :c_fire_mortality, :diagnostics => :c_fire_efflux, :diagnostics => :c_fire_flow, :diagnostics => :c_fire_fba, :diagnostics => :c_flow_QP_vec, :diagnostics => :c_Fire_cci, :diagnostics => :c_Fire_k, :pools => :cEco, :states => :c_remain, :cCycleBase => :c_flow_order, :cCycleBase => :c_giver, :cCycleBase => :c_taker, :cCycleBase => :zix_cHeterotrophic, :constants => :z_zero
Outputs: :fluxes => :cFireTotal, :diagnostics => :c_fire_mortality, :diagnostics => :c_fire_efflux, :diagnostics => :c_fire_flow

View Source


cFireBurnedArea ​

SindbadTEM.Processes.cFireBurnedArea Type
julia
Accounts for carbon emissions due to fire

Approaches

  • cFireBurnedArea_forcing: Uses fire forcing data to calculate emissions.

  • cFireBurnedArea_none: No fire forcing, and therefore, no fire emissions.


Extended help

Approaches:

  • none: no fire forcing, no emissions

  • forcing: uses fire forcing data to calculate emissions

Created by

  • Nuno | nunocarvalhais
source
cFireBurnedArea approaches
SindbadTEM.Processes.cFireBurnedArea_forcing Type

Uses fire forcing data to calculate emissions.

Parameters

  • None

Methods:

define:

  • Inputs

    • forcing.f_burnt_area: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_burnt_area) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.c_fire_fba: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_fire_fba) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_burnt_area: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_burnt_area) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.c_fire_fba: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_fire_fba) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cFireBurnedArea_forcing.jl. Check the Extended help for user-defined information.


Extended help

Created by

  • Nuno | nunocarvalhais
source

Calculated using:

julia
Inputs: :forcing => :f_burnt_area
Outputs: :diagnostics => :c_fire_fba

View Source


cFireCombustionCompleteness ​

SindbadTEM.Processes.cFireCombustionCompleteness Type
julia
Accounts for carbon emissions due to fire, combustion completeness.

Approaches

  • cFireCombustionCompleteness_none: No fire forcing, no emissions

  • cFireCombustionCompleteness_vanDerWerf2006: Uses the van der Werf et al. (2006) method to calculate combustion completeness.


Extended help

Approaches:

  • none: no fire forcing, no emissions

  • vanDerWerf2006: uses the van der Werf et al. (2006) method to calculate combustion completeness.

Created by

  • Nuno | nunocarvalhais
source
cFireCombustionCompleteness approaches
SindbadTEM.Processes.cFireCombustionCompleteness_none Type

No fire forcing, no emissions

Parameters

  • None

Methods:

define, precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for cFireCombustionCompleteness_none.jl. Check the Extended help for user-defined information.


Extended help

Created by

  • Nuno | nunocarvalhais
source

View Source


cFireMortality ​

SindbadTEM.Processes.cFireMortality Type
julia
Disturbance of the carbon cycle pools due to fire.

Approaches

  • cFireMortality_none: No fire mortality, no emissions

  • cFireMortality_vanDerWerf2004: Uses the van der Werf et al. (2004) method to calculate fire mortality.

Approaches:

  • none

  • vanDerWerf2004: uses the van der Werf et al. (2004) method to calculate fire mortality.

Created by - Nuno | nunocarvalhais

source
cFireMortality approaches
SindbadTEM.Processes.cFireMortality_none Type

No fire mortality, no emissions

Parameters

  • None

Methods:

define, precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for cFireMortality_none.jl. Check the Extended help for user-defined information.


Extended help

Created by - Nuno | nunocarvalhais

source

View Source


cFlow ​

SindbadTEM.Processes.cFlow Type
julia
Transfer rates for carbon flow between different vegetation pools.

Approaches

  • cFlow_GSI: Carbon transfer rates related to vegetation pools.

  • cFlow_GSIMP: Carbon transfer rates related to vegetation pools.

source
cFlow approaches
SindbadTEM.Processes.cFlow_GSI Type

Carbon transfer rates related to vegetation pools.

Parameters

  • None

Methods:

compute:

  • Inputs

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • diagnostics.c_eco_k: decomposition rate of carbon per pool

    • diagnostics.c_flow_A_vec: fraction of the carbon loss fron a (giver) pool that flows to a (taker) pool

  • Outputs

    • diagnostics.c_flow_A_vec: fraction of the carbon loss fron a (giver) pool that flows to a (taker) pool

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cFlow_GSI.jl. Check the Extended help for user-defined information.


Extended help

The reserve-pool exchange and leaf/root shedding this approach models are located by pool membership (edgesBetween), not by naming an exact <giver>_to_<taker> edge, so the same code applies unchanged whether Leaf's shedding lands in one pool (GSI's cLitFast) or several (CASA's cLitLeafFast/cLitLeafSlow), and whether a reserve pool exists at all: an absent one (CASA has none) makes every reserve-related edge lookup return no matches, so those terms simply contribute nothing rather than erroring or silently mismatching the wrong edge.

References

Versions

  • 1.0 on 13.01.2020 [sbesnard]

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: changes with stressors & smoothing as well as handling the activation of leaf/root to reserve | reserve to leaf/root switches. Adjustment of total flow rates [cTau] of relevant pools

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: move code from dyna. Add table etc.

  • 1.2 on 10.09.2026 [skoirala]: edge selection generalized from exact c_flow_named_edges.<giver>_to_<taker> name lookups (which errored on any pool structure without a literal edge of that exact name, e.g. CASA's absent cVegReserve or its split cLitLeafFast/cLitLeafSlow in place of cLitFast) to edgesBetween, a giver/taker pool-membership match

Created by

  • ncarvalhais, sbesnard, skoirala

Notes

source

Calculated using:

julia
Inputs: :cCycleBase => :c_giver, :cCycleBase => :c_taker, :diagnostics => :c_eco_k, :diagnostics => :c_flow_A_vec
Outputs: :diagnostics => :c_flow_A_vec

View Source


cFlowLitterfall ​

SindbadTEM.Processes.cFlowLitterfall Type
julia
Vegetation carbon loss rates to litter, including background turnover and phenological shedding.

Approaches

  • cFlowLitterfall_CASA: Seasonally distributes CASA vegetation turnover into leaf and fine-root litterfall using LAI dynamics. NOT TESTED

  • cFlowLitterfall_GSI: .

  • cFlowLitterfall_none: .

source
cFlowLitterfall approaches
SindbadTEM.Processes.cFlowLitterfall_CASA Type

Seasonally distributes CASA vegetation turnover into leaf and fine-root litterfall using LAI dynamics. NOT TESTED

Parameters

  • Fields
    • max_min_LAI: 12.0 ∈ [11.0, 13.0] => maximum value for the minimum LAI for litter scalars (units: m2/m2 @ all timescales)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • states.LAI: leaf area index

  • Outputs

    • diagnostics.leaf_shedding_frac: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :leaf_shedding_frac) for information on how to add the variable to the catalog.

    • diagnostics.root_shedding_frac: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :root_shedding_frac) for information on how to add the variable to the catalog.

    • states.LAI13: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :LAI13) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • states.LAI: leaf area index

    • states.LAI13: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :LAI13) for information on how to add the variable to the catalog.

  • Outputs

    • None

precompute, update methods are not defined

End of getModelDocString-generated docstring for cFlowLitterfall_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; J. T. Randerson; C. B. Field; P. A. Matson; P. M. Vitousek; H. A. Mooney; & S. A. Klooster. 1993. Terrestrial ecosystem production: A process model based on global satellite & surface data. Global Biogeochemical Cycles. 7: 811-841.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

  • 1.0 on 12.01.2020 [sbesnard]

  • 1.1 on 05.11.2020 [skoirala | @dr-ko]: speedup

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :states => :LAI, :states => :LAI13

View Source


cFlowReserves ​

SindbadTEM.Processes.cFlowReserves Type
julia
Internal vegetation carbon transfers to and from reserve pools.

Approaches

  • cFlowReserves_GSI: Carbon transfer rates between pools based on the GSI approach, using stressors such as soil moisture, temperature, and light.

  • cFlowReserves_none: .

source
cFlowReserves approaches
SindbadTEM.Processes.cFlowReserves_GSI Type

Carbon transfer rates between pools based on the GSI approach, using stressors such as soil moisture, temperature, and light.

Parameters

  • Fields
    • slope_leaf_root_to_reserve: 0.14 ∈ [0.033, 0.33] => Leaf-Root to Reserve (units: fraction @ day timescale)

    • slope_reserve_to_leaf_root: 0.14 ∈ [0.033, 0.33] => Reserve to Leaf-Root (units: fraction @ day timescale)

    • f_τ: 0.03 ∈ [0.01, 0.1] => contribution factor for current stressor (units: fraction @ day timescale)

Methods:

compute:

  • Inputs

    • diagnostics.slope_eco_stressor: potential rate of change in ecosystem stress on carbon flow
  • Outputs

    • None

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cFlowReserves_GSI.jl. Check the Extended help for user-defined information.


Extended help

The reserve-pool exchange and leaf/root shedding this approach models are located by pool membership (edgesBetween), not by naming an exact <giver>_to_<taker> edge, so the same code applies unchanged whether Leaf's shedding lands in one pool (GSI's cLitFast) or several (CASA's cLitLeafFast/cLitLeafSlow), and whether a reserve pool exists at all: an absent one (CASA has none) makes every reserve-related edge lookup return no matches, so those terms simply contribute nothing rather than erroring or silently mismatching the wrong edge.

References

Versions

  • 1.0 on 13.01.2020 [sbesnard]

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: changes with stressors & smoothing as well as handling the activation of leaf/root to reserve | reserve to leaf/root switches. Adjustment of total flow rates [cTau] of relevant pools

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: move code from dyna. Add table etc.

  • 1.2 on 10.09.2026 [skoirala]: edge selection generalized from exact c_flow_named_edges.<giver>_to_<taker> name lookups (which errored on any pool structure without a literal edge of that exact name, e.g. CASA's absent cVegReserve or its split cLitLeafFast/cLitLeafSlow in place of cLitFast) to edgesBetween, a giver/taker pool-membership match

Created by

  • ncarvalhais, sbesnard, skoirala

Notes

source

Calculated using:

julia
Inputs: :diagnostics => :slope_eco_stressor

View Source


cFlowStress ​

SindbadTEM.Processes.cFlowStress Type
julia
Carbon transfer stressor from environmental factors.

Approaches

  • cFlowStress_GSI: Carbon transfer rates between pools based on the GSI approach, using stressors such as soil moisture, temperature, and light.

  • cFlowStress_none: .

source
cFlowStress approaches
SindbadTEM.Processes.cFlowStress_GSI Type

Carbon transfer rates between pools based on the GSI approach, using stressors such as soil moisture, temperature, and light.

Parameters

  • Fields
    • f_τ: 0.03 ∈ [0.01, 0.1] => contribution factor for current stressor (units: fraction @ day timescale)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)

    • properties.∑w_sat: total amount of water in the soil at saturation

  • Outputs

    • diagnostics.eco_stressor_prev: ecosystem stress on carbon flow in the previous time step

    • diagnostics.slope_eco_stressor_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :slope_eco_stressor_prev) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_rg_pot: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rg_pot) for information on how to add the variable to the catalog.

    • diagnostics.eco_stressor_prev: ecosystem stress on carbon flow in the previous time step

    • diagnostics.slope_eco_stressor_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :slope_eco_stressor_prev) for information on how to add the variable to the catalog.

  • Outputs

    • None

precompute, update methods are not defined

End of getModelDocString-generated docstring for cFlowStress_GSI.jl. Check the Extended help for user-defined information.


Extended help

The reserve-pool exchange and leaf/root shedding this approach models are located by pool membership (edgesBetween), not by naming an exact <giver>_to_<taker> edge, so the same code applies unchanged whether Leaf's shedding lands in one pool (GSI's cLitFast) or several (CASA's cLitLeafFast/cLitLeafSlow), and whether a reserve pool exists at all: an absent one (CASA has none) makes every reserve-related edge lookup return no matches, so those terms simply contribute nothing rather than erroring or silently mismatching the wrong edge.

References

Versions

  • 1.0 on 13.01.2020 [sbesnard]

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: changes with stressors & smoothing as well as handling the activation of leaf/root to reserve | reserve to leaf/root switches. Adjustment of total flow rates [cTau] of relevant pools

  • 1.1 on 05.02.2021 [skoirala | @dr-ko]: move code from dyna. Add table etc.

  • 1.2 on 10.09.2026 [skoirala]: edge selection generalized from exact c_flow_named_edges.<giver>_to_<taker> name lookups (which errored on any pool structure without a literal edge of that exact name, e.g. CASA's absent cVegReserve or its split cLitLeafFast/cLitLeafSlow in place of cLitFast) to edgesBetween, a giver/taker pool-membership match

  • 1.3 on 11.10.2026 [skoirala]: stressor and its smoothing memory are held, and the slope set to zero, during completely dark time steps (f_rg_pot of zero)

Created by

  • ncarvalhais, sbesnard, skoirala

Notes

source

Calculated using:

julia
Inputs: :forcing => :f_rg_pot, :diagnostics => :eco_stressor_prev, :diagnostics => :slope_eco_stressor_prev

View Source


cForestryHarvest ​

SindbadTEM.Processes.cForestryHarvest Type
julia
Carbon loss due to harvest events.

Approaches

  • cForestryHarvest_simple: This is used for crop and forestry harvest events. Moves carbon to export and decomposable pools, according to their respective carbon flow target pools, during harvest events.
source
cForestryHarvest approaches
SindbadTEM.Processes.cForestryHarvest_simple Type

This is used for crop and forestry harvest events. Moves carbon to export and decomposable pools, according to their respective carbon flow target pools, during harvest events.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

  • Outputs

    • diagnostics.c_Wood_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Wood_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_Wood_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Flow) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • diagnostics.c_Wood_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Wood_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.frac_wood_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_wood_harvest_intensity) for information on how to add the variable to the catalog.

    • diagnostics.frac_wood_harvest_efficiency: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_wood_harvest_efficiency) for information on how to add the variable to the catalog.

    • diagnostics.is_wood_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :is_wood_harvested) for information on how to add the variable to the catalog.

    • pools.cEco: carbon content of cEco pool(s)

    • states.c_remain: amount of carbon to keep in the ecosystem vegetation pools in case of disturbances

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • models.c_model: a base carbon cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every carbon model realization

    • diagnostics.c_Wood_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Flow) for information on how to add the variable to the catalog.

  • Outputs

    • diagnostics.c_Wood_Harvest_Product: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Product) for information on how to add the variable to the catalog.

    • diagnostics.c_Wood_Harvest_Mortality: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Mortality) for information on how to add the variable to the catalog.

    • diagnostics.c_Wood_Harvest_Flow: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_Wood_Harvest_Flow) for information on how to add the variable to the catalog.

    • diagnostics.actual_wood_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :actual_wood_harvest_intensity) for information on how to add the variable to the catalog.

    • diagnostics.cWoodProducts: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :cWoodProducts) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cForestryHarvest_simple.jl. Check the Extended help for user-defined information.


Extended help

Created by - Nuno | nunocarvalhais

source

Calculated using:

julia
Inputs: :diagnostics => :c_Wood_Harvest_Product, :diagnostics => :c_Wood_Harvest_Mortality, :diagnostics => :frac_wood_harvest_intensity, :diagnostics => :frac_wood_harvest_efficiency, :diagnostics => :is_wood_harvested, :pools => :cEco, :states => :c_remain, :cCycleBase => :c_giver, :cCycleBase => :c_taker, :constants => :z_zero, :constants => :o_one, :models => :c_model, :diagnostics => :c_Wood_Harvest_Flow
Outputs: :diagnostics => :c_Wood_Harvest_Product, :diagnostics => :c_Wood_Harvest_Mortality, :diagnostics => :c_Wood_Harvest_Flow, :diagnostics => :actual_wood_harvest_intensity, :diagnostics => :cWoodProducts

View Source


cForestryHarvestEfficiency ​

SindbadTEM.Processes.cForestryHarvestEfficiency Type
julia
Appropriation of carbon for wood products.

Approaches

  • cForestryHarvestEfficiency_constant: To determine globally constant fractions of wood harvest efficiency and intensity from forestry activities. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the wood / forest that would not die during harvest. Efficiency reflects how much of the killed cVegPools is removed from the system, turned into wood products.

  • cForestryHarvestEfficiency_forcing: Load the harvest fraction efficiency from the forcing. Harvest fraction efficiency is the proportion of the cVegPool killed by forestry activities that is abstracted from the system.

  • cForestryHarvestEfficiency_none: No forestry wood harvest efficiency.

source
cForestryHarvestEfficiency approaches
SindbadTEM.Processes.cForestryHarvestEfficiency_constant Type

To determine globally constant fractions of wood harvest efficiency and intensity from forestry activities. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the wood / forest that would not die during harvest. Efficiency reflects how much of the killed cVegPools is removed from the system, turned into wood products.

Parameters

  • Fields
    • constant_frac_wood_harvest_efficiency: 0.8 ∈ [0.0, 0.99] => Fraction of the killed harvestable vegetation carbon pools that is removed from an ecosystem in a harvest event (units: fraction @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • diagnostics.frac_wood_harvest_efficiency: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_wood_harvest_efficiency) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cForestryHarvestEfficiency_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 26.08.2026 [sol]

Created by

  • sol
source

View Source


cForestryHarvestEvent ​

SindbadTEM.Processes.cForestryHarvestEvent Type

Approaches

  • cForestryHarvestEvent_forcing:

  • cForestryHarvestEvent_none:

source
cForestryHarvestEvent approaches
SindbadTEM.Processes.cForestryHarvestEvent_forcing Type

Parameters

  • None

Methods:

compute:

  • Inputs

    • forcing.f_is_wood_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_is_wood_harvested) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.is_wood_harvested: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :is_wood_harvested) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cForestryHarvestEvent_forcing.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 31.08.2026 [sol]

Created by

  • sol
source

Calculated using:

julia
Inputs: :forcing => :f_is_wood_harvested
Outputs: :diagnostics => :is_wood_harvested

View Source


cForestryHarvestIntensity ​

SindbadTEM.Processes.cForestryHarvestIntensity Type
julia
Appropriation of carbon for wood products.

Approaches

  • cForestryHarvestIntensity_constant: To determine globally constant fractions of wood harvest efficiency and intensity from forestry. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the wood/forest that would not die during harvest. Intensity reflects how much of the killed cVegPools is removed from the system, turned into wood/forestry products.

  • cForestryHarvestIntensity_forcing: Load the harvest intensity fraction from the forcing. Harvest fraction intensity is the proportion of the cVegPools that is killed during a harvest event.

  • cForestryHarvestIntensity_none: No wood / forestry harvest.

source
cForestryHarvestIntensity approaches
SindbadTEM.Processes.cForestryHarvestIntensity_constant Type

To determine globally constant fractions of wood harvest efficiency and intensity from forestry. Intensity reflects how much of the live cVegPools is killed/damaged during a harvest event; in an area basis, this would reflect a portion of the wood/forest that would not die during harvest. Intensity reflects how much of the killed cVegPools is removed from the system, turned into wood/forestry products.

Parameters

  • Fields
    • constant_frac_wood_harvest_intensity: 0.9 ∈ [0.0, 0.99] => Fraction of the harvestable vegetation live carbon pools carbon pools that is killed by the harvest event (units: fraction @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • diagnostics.frac_wood_harvest_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :frac_wood_harvest_intensity) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cForestryHarvestIntensity_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 26.08.2026 [sol]

Created by

  • sol
source

View Source


cMicrobialEfficiency ​

SindbadTEM.Processes.cMicrobialEfficiency Type
julia
Assemble the flow-specific microbial carbon-transfer efficiency of litter and soil decomposition from the per-pool-group factors. The diagnostic c_flow_ME_vec is aligned with c_flow_order/c_giver/c_taker and represents the old CASA p_E efficiency term.

Approaches

  • cMicrobialEfficiency_constant: A single constant microbial carbon-transfer efficiency for every decomposition flow, whichever pool group it leaves.

  • cMicrobialEfficiency_sum: Combines the litter, microbial, and soil pool-group controls of microbial carbon-transfer efficiency.


Extended help

cMicrobialEfficiency fills in c_flow_ME_vec, a flow-aligned diagnostic containing one efficiency value for each active carbon transfer defined by c_flow_order, c_giver, and c_taker. The vector itself is allocated neutral, one per flow, by cCycleBase, so cCycle reads a valid efficiency even when no cMicrobialEfficiency model is selected.

Vegetation-to-vegetation and vegetation-to-litter transfers are not microbial decomposition and therefore keep that neutral efficiency of one. In the legacy SINDBAD CASA implementation, the corresponding quantity was p_E_vec.

The efficiency splits by the pool group the carbon leaves, each a process of its own:

cMicrobialEfficiency_sum combines the three, the way cQualityPartition_mult combines the quality-partition factors and cTau_mult the decomposition-rate stressors.

cMicrobialEfficiency_constant bypasses the factors instead of combining them: one constant on every decomposition transfer, whichever group it leaves. Leaving cMicrobialEfficiency out of the model structure keeps every transfer at the neutral efficiency of one.

CASA does not need a third: cCycleBase_CASA itself carries the 14 statically-known CASA transfers as ordinary bounded parameters and writes them into c_flow_ME_vec in define. Only the soil-microbial pool's texture response, driven by st_clay/st_silt, still needs one: select cMicrobialEfficiencycMic_texture.

Notes:

  • Split by giver pool group rather than by control, since a group is a pool-name prefix and so well defined on every pool structure.

  • Within each group, _none, _constant and _texture find their transfers through zix and so hold on any structure. CASA's exact, per-edge treatment has no group-factor form; it lives entirely in cCycleBase_CASA's own parameters instead.

source
cMicrobialEfficiency approaches
SindbadTEM.Processes.cMicrobialEfficiency_constant Type

A single constant microbial carbon-transfer efficiency for every decomposition flow, whichever pool group it leaves.

Parameters

  • Fields
    • constant_MicEff: 0.5 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of every decomposition flow, whichever pool group it leaves. (units: fraction @ all timescales)

Methods:

precompute:

  • Inputs

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.zix_cHeterotrophic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :zix_cHeterotrophic) for information on how to add the variable to the catalog.

  • Outputs

    • diagnostics.c_flow_ME_vec: fraction of the carbon leaving a (giver) pool along each of its outgoing transfers that is retained by the (taker) pool rather than respired; allocated as one per flow by cCycleBase and filled in by cMicrobialEfficiency

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cMicrobialEfficiency_constant.jl. Check the Extended help for user-defined information.


Extended help

constant_MicEff is written into every active transfer whose giver is a litter, microbial or soil carbon pool. Transfers leaving vegetation keep the neutral efficiency of one, since litterfall is not microbial decomposition.

Set it to zero for the endpoint where all decomposed carbon respires and none is retained by the receiving pool.

This is the one-parameter alternative to composing the three pool-group factors through cMicrobialEfficiency_sum. It ignores them, so it can be selected whether or not they are, and it is equivalent to selecting _constant with the same value in all three groups.

References

Versions

  • 1.0 on 04.09.2026 [skoirala]

Created by

  • skoirala
source

View Source


cMicrobialEfficiencycLit ​

SindbadTEM.Processes.cMicrobialEfficiencycLit Type
julia
Microbial carbon-transfer efficiency of the decomposition flows leaving the litter pools.

Approaches

  • cMicrobialEfficiencycLit_constant: A single constant microbial carbon-transfer efficiency for every transfer leaving the litter pools.

  • cMicrobialEfficiencycLit_none: Applies no control from the litter pools: the transfers leaving them keep an efficiency of one.

  • cMicrobialEfficiencycLit_texture: Texture-dependent microbial carbon-transfer efficiency for every transfer leaving the litter pools.


Extended help

cMicrobialEfficiencycLit provides c_flow_ME_f_cLit, a flow-aligned factor of the microbial carbon-transfer efficiency with one entry per active carbon transfer, in the same order as c_flow_order, c_giver and c_taker.

The factor is one everywhere except on the transfers leaving the litter pools, and cMicrobialEfficiency_sum combines it with the other two pool-group factors to form c_flow_ME_vec. No other factor touches a cLit giver, which is what lets the three be combined.

Every pool structure has litter pools, so this factor is active on all of them: the ten CASA litter transfers under CASA, and the two aggregated cLitFast/cLitSlow transfers into slow soil under the GSI structures.

_none, _constant and _texture decide which transfers are theirs from helpers.pools.zix.cLit, so they need no edge list and hold on any pool structure. CASA's own per-pathway litter table lives in cCycleBase_CASA as defaults instead of a group factor here.

source
cMicrobialEfficiencycLit approaches
SindbadTEM.Processes.cMicrobialEfficiencycLit_constant Type

A single constant microbial carbon-transfer efficiency for every transfer leaving the litter pools.

Parameters

  • Fields
    • constant_MicEff_cLit: 0.5 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of every decomposition flow leaving a litter pool. (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_ME_f_cLit: litter pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the litter pools, and is one on every other transfer

precompute:

  • Inputs

    • diagnostics.c_flow_ME_f_cLit: litter pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the litter pools, and is one on every other transfer

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

  • Outputs

    • diagnostics.c_flow_ME_f_cLit: litter pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the litter pools, and is one on every other transfer

compute, update methods are not defined

End of getModelDocString-generated docstring for cMicrobialEfficiencycLit_constant.jl. Check the Extended help for user-defined information.


Extended help

constant_MicEff_cLit is written into every active transfer whose giver is one of the litter pools. Set it to zero for the behaviour where all carbon decomposing out of this group respires rather than arriving in the receiving pool.

References

Versions

  • 1.0 on 04.09.2026 [skoirala]

Created by

  • skoirala
source

View Source


cMicrobialEfficiencycMic ​

SindbadTEM.Processes.cMicrobialEfficiencycMic Type
julia
Microbial carbon-transfer efficiency of the flows leaving the microbial pools.

Approaches

  • cMicrobialEfficiencycMic_constant: A single constant microbial carbon-transfer efficiency for every transfer leaving the microbial pools.

  • cMicrobialEfficiencycMic_none: Applies no control from the microbial pools: the transfers leaving them keep an efficiency of one.

  • cMicrobialEfficiencycMic_texture: Texture-dependent microbial carbon-transfer efficiency for every transfer leaving the microbial pools.


Extended help

cMicrobialEfficiencycMic provides c_flow_ME_f_cMic, a flow-aligned factor of the microbial carbon-transfer efficiency with one entry per active carbon transfer, in the same order as c_flow_order, c_giver and c_taker.

The factor is one everywhere except on the transfers leaving the microbial pools, and cMicrobialEfficiency_sum combines it with the other two pool-group factors to form c_flow_ME_vec. No other factor touches a cMic giver, which is what lets the three be combined.

Only CASA has explicit microbial pools. Under the GSI structures zix.cMic is empty, no flow matches, and this factor stays neutral with no special case, because microbial mediation there is folded into the litter and soil transfers.

_none, _constant and _texture decide which transfers are theirs from helpers.pools.zix.cMic, so they need no edge list and hold on any pool structure. CASA's own fixed surface-pathway constant lives in cCycleBase_CASA as a default instead of a group factor here; _texture is the group-wide texture response, applied uniformly to every cMic transfer rather than singling out the soil-microbial pool the way CASA's original table did.

source
cMicrobialEfficiencycMic approaches
SindbadTEM.Processes.cMicrobialEfficiencycMic_constant Type

A single constant microbial carbon-transfer efficiency for every transfer leaving the microbial pools.

Parameters

  • Fields
    • constant_MicEff_cMic: 0.45 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of every flow leaving a microbial pool. (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_ME_f_cMic: microbial pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the microbial pools, where the soil texture response acts, and is one on every other transfer

precompute:

  • Inputs

    • diagnostics.c_flow_ME_f_cMic: microbial pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the microbial pools, where the soil texture response acts, and is one on every other transfer

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

  • Outputs

    • diagnostics.c_flow_ME_f_cMic: microbial pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the microbial pools, where the soil texture response acts, and is one on every other transfer

compute, update methods are not defined

End of getModelDocString-generated docstring for cMicrobialEfficiencycMic_constant.jl. Check the Extended help for user-defined information.


Extended help

constant_MicEff_cMic is written into every active transfer whose giver is one of the microbial pools. Set it to zero for the behaviour where all carbon decomposing out of this group respires rather than arriving in the receiving pool.

References

Versions

  • 1.0 on 04.09.2026 [skoirala]

Created by

  • skoirala
source

View Source


cMicrobialEfficiencycSoil ​

SindbadTEM.Processes.cMicrobialEfficiencycSoil Type
julia
Microbial carbon-transfer efficiency of the decomposition flows leaving the soil carbon pools.

Approaches

  • cMicrobialEfficiencycSoil_constant: A single constant microbial carbon-transfer efficiency for every transfer leaving the soil carbon pools.

  • cMicrobialEfficiencycSoil_none: Applies no control from the soil carbon pools: the transfers leaving them keep an efficiency of one.

  • cMicrobialEfficiencycSoil_texture: Texture-dependent microbial carbon-transfer efficiency for every transfer leaving the soil carbon pools.


Extended help

cMicrobialEfficiencycSoil provides c_flow_ME_f_cSoil, a flow-aligned factor of the microbial carbon-transfer efficiency with one entry per active carbon transfer, in the same order as c_flow_order, c_giver and c_taker.

The factor is one everywhere except on the transfers leaving the soil carbon pools, and cMicrobialEfficiency_sum combines it with the other two pool-group factors to form c_flow_ME_vec. No other factor touches a cSoil giver, which is what lets the three be combined.

Every pool structure has soil pools, so this factor is active on all of them: the three CASA soil transfers under CASA, and cSoilSlow into cSoilOld alone under the GSI structures.

_none, _constant and _texture decide which transfers are theirs from helpers.pools.zix.cSoil, so they need no edge list and hold on any pool structure. CASA's own per-pathway soil table lives in cCycleBase_CASA as defaults instead of a group factor here.

source
cMicrobialEfficiencycSoil approaches
SindbadTEM.Processes.cMicrobialEfficiencycSoil_constant Type

A single constant microbial carbon-transfer efficiency for every transfer leaving the soil carbon pools.

Parameters

  • Fields
    • constant_MicEff_cSoil: 0.45 ∈ [0.0, 1.0] => Microbial carbon-transfer efficiency of every decomposition flow leaving a soil carbon pool. (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_ME_f_cSoil: soil pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the soil carbon pools, and is one on every other transfer

precompute:

  • Inputs

    • diagnostics.c_flow_ME_f_cSoil: soil pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the soil carbon pools, and is one on every other transfer

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

  • Outputs

    • diagnostics.c_flow_ME_f_cSoil: soil pool control of the microbial carbon-transfer efficiency, per active carbon transfer; sets the efficiency of the transfers leaving the soil carbon pools, and is one on every other transfer

compute, update methods are not defined

End of getModelDocString-generated docstring for cMicrobialEfficiencycSoil_constant.jl. Check the Extended help for user-defined information.


Extended help

constant_MicEff_cSoil is written into every active transfer whose giver is one of the soil carbon pools. Set it to zero for the behaviour where all carbon decomposing out of this group respires rather than arriving in the receiving pool.

References

Versions

  • 1.0 on 04.09.2026 [skoirala]

Created by

  • skoirala
source

View Source


cQualityPartition ​

SindbadTEM.Processes.cQualityPartition Type
julia
Determine the fraction of carbon flowing between labile and recalcitrant pools.

Approaches

  • cQualityPartition_equal: Use a neutral carbon-quality partition: every giver divides its carbon equally among its active outgoing transfers to non-vegetation pools, with no preference for any pathway.

  • cQualityPartition_mult: Combines the cVeg, cLit, cMic, and cSoil giver-group controls of the carbon-quality partition by multiplication.


Extended help

cQualityPartition fills in c_flow_QP_vec, a diagnostic vector with one entry for every active carbon transfer defined by c_flow_order, c_giver, and c_taker in the selected carbon-cycle structure. The vector itself is allocated neutral, one per flow, by cCycleBase, so cCycle reads a valid partition even when no cQualityPartition model is selected.

The process separates carbon-quality/routing effects from the transfer-rate calculation itself. In the legacy SINDBAD CASA implementation, the corresponding quantity was p_F_vec.

The partition splits along four independent controls, each of which owns a disjoint giver pool group and is a process of its own, named after that group the way cMicrobialEfficiency's factors are:

cQualityPartition_mult multiplies the four factors, the way cTau_mult multiplies the decomposition-rate stressors. There is no self-contained single-table alternative: composing cQualityPartitioncVeg_vegQualityTraits, cQualityPartitioncLit_vegQualityTraits, cQualityPartitioncMic_texture and cQualityPartitioncSoil_texture through cQualityPartition_mult reproduces the old CASA table exactly, so the separate cQualityPartition_CASA approach that used to declare it in one table was removed.

source
cQualityPartition approaches
SindbadTEM.Processes.cQualityPartition_equal Type

Use a neutral carbon-quality partition: every giver divides its carbon equally among its active outgoing transfers to non-vegetation pools, with no preference for any pathway.

Parameters

  • None

Methods:

precompute:

  • Inputs

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

  • Outputs

    • diagnostics.c_flow_QP_vec: fraction of the carbon loss from a (giver) pool that is routed along each of its outgoing transfers by carbon quality; allocated as one per flow by cCycleBase and filled in by cQualityPartition

define, compute, update methods are not defined

End of getModelDocString-generated docstring for cQualityPartition_equal.jl. Check the Extended help for user-defined information.


Extended help

This approach introduces no labile/recalcitrant preference: each giver splits its carbon equally over its active outgoing flows to non-vegetation pools. Flows whose taker is a vegetation pool are not modified by quality partitioning. A giver with a single non-vegetation outgoing flow keeps the neutral partition of one, while a giver with several non-vegetation outgoing flows conserves mass across them.

The vector itself is allocated neutral by cCycleBase, so leaving cQualityPartition out of the model structure entirely gives every flow a partition of one. That differs from selecting this approach, which still splits multi-outflow givers.

Versions

  • 1.0 on 27.08.2026 [sol]

  • 1.1 on 04.09.2026 [skoirala]: c_flow_QP_vec allocated by cCycleBase; split moved to precompute

  • 1.2 on 14.09.2026 [s&s]: TO SIMPLIFY - simplify and tidy up

Created by

  • sol
source

View Source


cQualityPartitioncLit ​

SindbadTEM.Processes.cQualityPartitioncLit Type
julia
Effect of litter lignin content on the carbon-quality partition: the split of structural and woody litter decomposition between the slow soil pool and the microbial pools.

Approaches

  • cQualityPartitioncLit_constant: Sets the lignin control of the carbon-quality partition to uniform constants for structural and woody litter.

  • cQualityPartitioncLit_equal: .

  • cQualityPartitioncLit_vegQualityTraits: Lignin control of the carbon-quality partition, read directly from vegQualityTraits so the partition always matches the litter chemistry actually in use.


Extended help

cQualityPartitioncLit provides c_flow_QP_f_cLit, a flow-aligned factor of the carbon-quality partition. The approach operates on flows whose giver belongs to cLit and uses land.cCycleBase.c_flow_taker_turnover_rank to select the fast or slow taker without identifying takers by pool name.

For each flow, c_flow_taker_turnover_rank is 1 for the faster of two non-vegetation takers, -1 for the slower taker, and 0 when the flow is not a two-taker quality partition. Lignin controls the slow share, while its complement is the fast share. The existing structural-versus-woody litter distinction remains a giver-side ecological distinction because those two litter classes use different lignin fractions; it is independent of identifying the taker.

cQualityPartition_mult multiplies this factor with the cVeg, cMic and cSoil factors to form c_flow_QP_vec.

source
cQualityPartitioncLit approaches
SindbadTEM.Processes.cQualityPartitioncLit_constant Type

Sets the lignin control of the carbon-quality partition to uniform constants for structural and woody litter.

Parameters

  • Fields
    • frac_lignin_struct: 0.3 ∈ [0.0, 1.0] => lignin as a fraction of structural litter carbon (units: fraction @ all timescales)

    • frac_lignin_wood: 0.4 ∈ [0.0, 1.0] => lignin fraction of woody litter (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_QP_f_cLit: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cLit) for information on how to add the variable to the catalog.

precompute:

  • Inputs

    • diagnostics.c_flow_QP_f_cLit: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cLit) for information on how to add the variable to the catalog.

    • diagnostics.c_eco_k_base: base carbon decomposition rate of the carbon pools

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • cCycleBase.k_hilo_lit_split: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :k_hilo_lit_split) for information on how to add the variable to the catalog.

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_flow_QP_f_cLit: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cLit) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for cQualityPartitioncLit_constant.jl. Check the Extended help for user-defined information.


Extended help

Use this approach to prescribe the two lignin fractions directly instead of reading them from vegQualityTraits or varying them with PFT class. The defaults are those of vegQualityTraits_constant's lignin fields.

References

  • Potter, C. S., Randerson, J. T., Field, C. B., Matson, P. A., Vitousek, P. M., Mooney, H. A., & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite and surface data. Global Biogeochemical Cycles, 7(4), 811-841.

Versions

  • 1.0 on 04.09.2026 [skoirala]: as cQualityPartitionLignin_constant

  • 2.0 on 10.09.2026 [skoirala]: renamed/relocated into cQualityPartitioncLit

Created by

  • skoirala
source

View Source


cQualityPartitioncMic ​

SindbadTEM.Processes.cQualityPartitioncMic Type
julia
Effect of soil texture on the carbon-quality partition: the split of soil-microbial decomposition between stabilization into old soil carbon and the remaining pathway.

Approaches

  • cQualityPartitioncMic_constant: Sets the stabilization of soil-microbial decomposition into old soil carbon to a uniform constant.

  • cQualityPartitioncMic_equal: .

  • cQualityPartitioncMic_texture: Clay-dependent stabilization of soil-microbial decomposition into old soil carbon, as modeled in CASA.


Extended help

cQualityPartitioncMic provides c_flow_QP_f_cMic, a flow-aligned factor of the carbon-quality partition. The approach operates on flows whose giver belongs to cMic and uses land.cCycleBase.c_flow_taker_turnover_rank to select the fast or slow share without identifying a particular taker pool by name.

For each flow, c_flow_taker_turnover_rank is 1 for the faster of two non-vegetation takers, -1 for the slower taker, and 0 when the flow is not a two-taker quality partition. The soil-stabilization fraction is therefore assigned as slowPart; its complement is fastPart.

cQualityPartition_mult multiplies this factor with the cVeg, cLit and cSoil factors to form c_flow_QP_vec.

source
cQualityPartitioncMic approaches
SindbadTEM.Processes.cQualityPartitioncMic_constant Type

Sets the stabilization of soil-microbial decomposition into old soil carbon to a uniform constant.

Parameters

  • Fields
    • frac_cMicSoil_to_cSoilOld: 0.003 ∈ [0.0, 1.0] => fraction of soil-microbial decomposition partitioned to old soil carbon (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_QP_f_cMic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cMic) for information on how to add the variable to the catalog.

precompute:

  • Inputs

    • diagnostics.c_flow_QP_f_cMic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cMic) for information on how to add the variable to the catalog.

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_flow_QP_f_cMic: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cMic) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for cQualityPartitioncMic_constant.jl. Check the Extended help for user-defined information.


Extended help

Use this approach to prescribe the stabilization fraction directly instead of deriving it from clay content. The default is the intercept of cQualityPartitioncMic_texture, which is what that approach returns on a soil with no clay.

References

  • Potter, C. S., Randerson, J. T., Field, C. B., Matson, P. A., Vitousek, P. M., Mooney, H. A., & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite and surface data. Global Biogeochemical Cycles, 7(4), 811-841.

Versions

  • 1.0 on 04.09.2026 [skoirala]: as the cMicSoil half of cQualityPartitionSoilProperties_constant

  • 2.0 on 10.09.2026 [skoirala]: split off into its own cQualityPartitioncMic factor

Created by

  • skoirala
source

View Source


cQualityPartitioncSoil ​

SindbadTEM.Processes.cQualityPartitioncSoil Type
julia
Effect of soil texture on the carbon-quality partition: the split of slow-soil decomposition between stabilization into old soil carbon and the remaining pathway.

Approaches

  • cQualityPartitioncSoil_constant: Sets the stabilization of slow-soil decomposition into old soil carbon to a uniform constant.

  • cQualityPartitioncSoil_equal: .

  • cQualityPartitioncSoil_texture: Clay-dependent stabilization of slow-soil decomposition into old soil carbon, as modeled in CASA.


Extended help

cQualityPartitioncSoil provides c_flow_QP_f_cSoil, a flow-aligned factor of the carbon-quality partition with one entry per active carbon transfer, in the same order as c_flow_order, c_giver and c_taker.

The factor is one everywhere except on the flows leaving cSoilSlow, in land.cCycleBase.c_flow_qp_groups.cSoil: clay-rich soils stabilize a larger share of decomposing slow-soil carbon into the old soil pool. cQualityPartition_mult multiplies this factor with the cVeg, cLit and cMic factors to form c_flow_QP_vec.

c_flow_qp_groups.cSoil is derived once, from the resolved flow topology, by deriveQPGroups (cCycleBase/poolConfigurations/poolConfigurations.jl): it is the (stabilized_positions, other_positions) pair for the giver named cSoilSlow, present only when that giver has more than one outgoing edge. On a structure where cSoilSlow has only a single outflow – such as GSI, where cSoilSlow feeds only cSoilOld – this resolves to an empty group and simply keeps its neutral partition of one on that flow.

Named after the giver pool group it owns (cSoil), the way cMicrobialEfficiencycLit/cMic/cSoil are. This and cQualityPartitioncMic used to be combined into one process, cQualityPartitionSoilProperties, which mixed the cSoilSlow and cMicSoil giver groups; splitting them apart keeps every cQualityPartition factor strictly single-giver-group, as cMicrobialEfficiency's already are.

This is the partition counterpart of cTauSoilProperties, which carries the texture control of decomposition rates.

source
cQualityPartitioncSoil approaches
SindbadTEM.Processes.cQualityPartitioncSoil_constant Type

Sets the stabilization of slow-soil decomposition into old soil carbon to a uniform constant.

Parameters

  • Fields
    • frac_cSoilSlow_to_cSoilOld: 0.003 ∈ [0.0, 1.0] => fraction of slow-soil decomposition partitioned to old soil carbon (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_QP_f_cSoil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cSoil) for information on how to add the variable to the catalog.

precompute:

  • Inputs

    • diagnostics.c_flow_QP_f_cSoil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cSoil) for information on how to add the variable to the catalog.

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_flow_QP_f_cSoil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cSoil) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for cQualityPartitioncSoil_constant.jl. Check the Extended help for user-defined information.


Extended help

Use this approach to prescribe the stabilization fraction directly instead of deriving it from clay content. The default is the intercept of cQualityPartitioncSoil_texture, which is what that approach returns on a soil with no clay.

References

  • Potter, C. S., Randerson, J. T., Field, C. B., Matson, P. A., Vitousek, P. M., Mooney, H. A., & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite and surface data. Global Biogeochemical Cycles, 7(4), 811-841.

Versions

  • 1.0 on 04.09.2026 [skoirala]: as the cSoilSlow half of cQualityPartitionSoilProperties_constant

  • 2.0 on 10.09.2026 [skoirala]: split off into its own cQualityPartitioncSoil factor

Created by

  • skoirala
source

View Source


cQualityPartitioncVeg ​

SindbadTEM.Processes.cQualityPartitioncVeg Type
julia
Effect of the metabolic litter fraction on the carbon-quality partition: the split of leaf and fine-root litterfall between the metabolic and structural litter pools.

Approaches

  • cQualityPartitioncVeg_constant: Sets the metabolic litter fraction of the carbon-quality partition to a uniform constant.

  • cQualityPartitioncVeg_equal: .

  • cQualityPartitioncVeg_vegQualityTraits: Metabolic litter fraction of the carbon-quality partition, read directly from vegQualityTraits so the partition always matches the litter chemistry actually in use.


Extended help

cQualityPartitioncVeg provides c_flow_QP_f_cVeg, a flow-aligned factor of the carbon-quality partition. The approach operates on flows whose giver belongs to cVeg and uses land.cCycleBase.c_flow_taker_turnover_rank to select the fast or slow share without identifying takers by pool name.

For each flow, c_flow_taker_turnover_rank is 1 for the faster of two non-vegetation takers, -1 for the slower taker, and 0 when the flow is not a two-taker quality partition. A rank of zero therefore leaves the flow neutral (QP = 1), including GSI transfers to vegetation and one-taker litterfall.

The individual approaches only determine fastPart and slowPart (for example, from the metabolic litter fraction); the same rank-based equation is then applied to every cVeg flow.

source
cQualityPartitioncVeg approaches
SindbadTEM.Processes.cQualityPartitioncVeg_constant Type

Sets the metabolic litter fraction of the carbon-quality partition to a uniform constant.

Parameters

  • Fields
    • lit_frac_metabolic: 0.85 ∈ [0.0, 1.0] => fraction of leaf and fine-root litterfall routed to the metabolic litter pools (units: fraction @ all timescales)

Methods:

define:

  • Inputs

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • pools.cEco: carbon content of cEco pool(s)

  • Outputs

    • diagnostics.c_flow_QP_f_cVeg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cVeg) for information on how to add the variable to the catalog.

precompute:

  • Inputs

    • diagnostics.c_flow_QP_f_cVeg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cVeg) for information on how to add the variable to the catalog.

    • cCycleBase.c_flow_order: order of pooling while calculating the carbon flow

    • cCycleBase.c_giver: index of the source carbon pool for a given flow

    • cCycleBase.c_taker: index of the receiving carbon pool for a given flow

    • cCycleBase.c_flow_taker_turnover_rank: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cCycleBase, :c_flow_taker_turnover_rank) for information on how to add the variable to the catalog.

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_flow_QP_f_cVeg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_flow_QP_f_cVeg) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for cQualityPartitioncVeg_constant.jl. Check the Extended help for user-defined information.


Extended help

Use this approach to hold the metabolic/structural split of leaf and fine-root litterfall at a prescribed value instead of reading it from vegQualityTraits or varying it with PFT class. The default of 0.85 is the CASA intercept, which vegQualityTraits_vegType returns when litter contains no lignin.

References

  • Potter, C. S., Randerson, J. T., Field, C. B., Matson, P. A., Vitousek, P. M., Mooney, H. A., & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite and surface data. Global Biogeochemical Cycles, 7(4), 811-841.

Versions

  • 1.0 on 04.09.2026 [skoirala]: as cQualityPartitionMetabolicFraction_constant

  • 2.0 on 10.09.2026 [skoirala]: renamed/relocated into cQualityPartitioncVeg

Created by

  • skoirala
source

View Source


cTau ​

SindbadTEM.Processes.cTau Type
julia
Actual decomposition/turnover rates of all carbon pools considering the effect of stressors.

Approaches

  • cTau_mult: Combines all effects that change the turnover rates by multiplication.

  • cTau_none: Sets the decomposition/turnover rates of all carbon pools to 0, i.e., no carbon decomposition and flow.

source
cTau approaches
SindbadTEM.Processes.cTau_mult Type

Combines all effects that change the turnover rates by multiplication.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_eco_k: decomposition rate of carbon per pool

compute:

  • Inputs

    • diagnostics.c_eco_k_f_veg_props: effect of veg_props on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.c_eco_k_f_soilW: effect of soil moisture on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.c_eco_k_f_soilT: effect of soil temperature on heterotrophic respiration respiration. 0: no decomposition, >1 increase in decomposition

    • diagnostics.c_eco_k_f_soil_props: effect of soil_props on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.c_eco_k_base: base carbon decomposition rate of the carbon pools

    • diagnostics.c_eco_k: decomposition rate of carbon per pool

  • Outputs

    • diagnostics.c_eco_k: decomposition rate of carbon per pool

precompute, update methods are not defined

End of getModelDocString-generated docstring for cTau_mult.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais

Notes:

source

Calculated using:

julia
Inputs: :diagnostics => :c_eco_k_f_veg_props, :diagnostics => :c_eco_k_f_soilW, :diagnostics => :c_eco_k_f_soilT, :diagnostics => :c_eco_k_f_soil_props, :diagnostics => :c_eco_k_base, :diagnostics => :c_eco_k
Outputs: :diagnostics => :c_eco_k

View Source


cTauSoilProperties ​

SindbadTEM.Processes.cTauSoilProperties Type
julia
Effect of soil texture on soil decomposition rates

Approaches

  • cTauSoilProperties_CASA: Compute soil texture effects on turnover rates [k] of cMicSoil

  • cTauSoilProperties_none: Set soil texture effects to ones (ineficient, should be pix zix_mic)

source
cTauSoilProperties approaches
SindbadTEM.Processes.cTauSoilProperties_CASA Type

Compute soil texture effects on turnover rates [k] of cMicSoil

Parameters

  • Fields
    • TEXTEFFA: 0.75 ∈ [0.0, 1.0] => effect of soil texture on turnove times (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_eco_k_f_soil_props: effect of soil_props on carbon decomposition rate. 1: no stress, 0: complete stress

compute:

  • Inputs

    • diagnostics.c_eco_k_f_soil_props: effect of soil_props on carbon decomposition rate. 1: no stress, 0: complete stress

    • properties.st_clay: fraction of clay content in the soil

    • properties.st_silt: fraction of silt content in the soil per layer

  • Outputs

    • diagnostics.c_eco_k_f_soil_props: effect of soil_props on carbon decomposition rate. 1: no stress, 0: complete stress

precompute, update methods are not defined

End of getModelDocString-generated docstring for cTauSoilProperties_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais
source

Calculated using:

julia
Inputs: :diagnostics => :c_eco_k_f_soil_props, :properties => :st_clay, :properties => :st_silt
Outputs: :diagnostics => :c_eco_k_f_soil_props

View Source


cTauSoilT ​

SindbadTEM.Processes.cTauSoilT Type
julia
Effect of soil temperature on decomposition rates.

Approaches

  • cTauSoilT_Q10: Effect of soil temperature on decomposition rates using a Q10 function.

  • cTauSoilT_none: Sets the effect of soil temperature on decomposition rates to 1 (no temperature effect).

source
cTauSoilT approaches
SindbadTEM.Processes.cTauSoilT_Q10 Type

Effect of soil temperature on decomposition rates using a Q10 function.

Parameters

  • Fields
    • Q10: 1.4 ∈ [1.05, 3.0] => (unitless @ all timescales)

    • ref_airT: 30.0 ∈ [0.01, 40.0] => (units: °C @ all timescales)

    • Q10_base: 10.0 ∈ [-Inf, Inf] => base temperature difference (units: °C @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.c_eco_k_f_soilT: effect of soil temperature on heterotrophic respiration respiration. 0: no decomposition, >1 increase in decomposition

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for cTauSoilT_Q10.jl. Check the Extended help for user-defined information.


Extended help

References

  • Davidson, E. A. and Janssens, I. A. (2006). Temperature sensitivity of soil carbon decomposition and feedbacks to climate change. Nature, 440, 165–173. https://doi.org/10.1038/nature04514

  • Frøseth, R. B. and Bleken, M. A. (2015). Effect of low temperature and soil type on the decomposition rate of soil organic carbon and clover leaves, and related priming effect. Soil Biology and Biochemistry, 80, 156–166. https://doi.org/10.1016/j.soilbio.2014.10.004

  • Dehaen, E. M., Burke, E. J., Chadburn, S. E., Kaduk, J., Sitch, S., Smith, N. D., and Gallego-Sala, A. V. (2025). Drivers of soil heterotrophic respiration in tropical peatlands: a review to inform peat carbon accumulation modelling. Frontiers in Geochemistry, 3, 1492386. https://doi.org/10.3389/fgeoc.2025.1492386

Versions

  • 1.0 on 12.01.2020 [sbesnard]

Created by

  • ncarvalhais

Notes

source

Calculated using:

julia
Inputs: :forcing => :f_airT
Outputs: :diagnostics => :c_eco_k_f_soilT

View Source


cTauSoilW ​

SindbadTEM.Processes.cTauSoilW Type
julia
Effect of soil moisture on decomposition rates.

Approaches

  • cTauSoilW_CASA: Effect of soil moisture on decomposition rates as modeled in CASA, using the belowground moisture effect (BGME) from the Century model.

  • cTauSoilW_GSI: Effect of soil moisture on decomposition rates based on the GSI approach.

  • cTauSoilW_none: Sets the effect of soil moisture on decomposition rates to 1 (no moisture effect).

source
cTauSoilW approaches
SindbadTEM.Processes.cTauSoilW_CASA Type

Effect of soil moisture on decomposition rates as modeled in CASA, using the belowground moisture effect (BGME) from the Century model.

Parameters

  • Fields
    • Aws: 1.0 ∈ [0.001, 1000.0] => curve (expansion/contraction) controlling parameter (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)

    • pools.cEco: carbon content of cEco pool(s)

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_eco_k_f_soilW: effect of soil moisture on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.fsoilW: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :fsoilW) for information on how to add the variable to the catalog.

    • diagnostics.fsoilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :fsoilW_prev) for information on how to add the variable to the catalog.

    • cTauSoilW.soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cTauSoilW, :soilW_prev) for information on how to add the variable to the catalog.

    • cTauSoilW.timesteps_per_month: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cTauSoilW, :timesteps_per_month) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • diagnostics.c_eco_k_f_soilW: effect of soil moisture on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.fsoilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :fsoilW_prev) for information on how to add the variable to the catalog.

    • cTauSoilW.soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cTauSoilW, :soilW_prev) for information on how to add the variable to the catalog.

    • cTauSoilW.timesteps_per_month: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cTauSoilW, :timesteps_per_month) for information on how to add the variable to the catalog.

    • pools.soilW: water storage in soilW pool(s)

    • fluxes.rain: amount of precipitation in liquid form

    • fluxes.PET: potential evapotranspiration

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.c_eco_k_f_soilW: effect of soil moisture on carbon decomposition rate. 1: no stress, 0: complete stress

    • diagnostics.fsoilW: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :fsoilW) for information on how to add the variable to the catalog.

    • diagnostics.fsoilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :fsoilW_prev) for information on how to add the variable to the catalog.

    • cTauSoilW.soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:cTauSoilW, :soilW_prev) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cTauSoilW_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

  • 1.1 on 11.10.2026 [skoirala]: ported the vectorized BGME code to a per time step scalar form, with the previous total soil water kept in land.cTauSoilW and the time steps per month taken from the model time step

Created by

  • ncarvalhais

Notesthe BGME is used as a scalar dependent on soil moisture; as the sum of soil moisture for all layers. This can be partitioned into different soil layers in the soil & affect independently the decomposition processes of pools that are at the surface & deeper in the soils.

source

Calculated using:

julia
Inputs: :diagnostics => :c_eco_k_f_soilW, :diagnostics => :fsoilW_prev, :cTauSoilW => :soilW_prev, :cTauSoilW => :timesteps_per_month, :pools => :soilW, :fluxes => :rain, :fluxes => :PET, :constants => :z_zero, :constants => :o_one
Outputs: :diagnostics => :c_eco_k_f_soilW, :diagnostics => :fsoilW, :diagnostics => :fsoilW_prev, :cTauSoilW => :soilW_prev

View Source


cTauVegProperties ​

SindbadTEM.Processes.cTauVegProperties Type
julia
Effect of vegetation properties on soil decomposition rates.

Approaches

  • cTauVegProperties_CASA: Effect of litter lignin content on the decomposition rates of the structural litter pools, as modeled in CASA.

  • cTauVegProperties_none: Sets the effect of vegetation properties on decomposition rates to 1 (no vegetation effect).

source
cTauVegProperties approaches
SindbadTEM.Processes.cTauVegProperties_CASA Type

Effect of litter lignin content on the decomposition rates of the structural litter pools, as modeled in CASA.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.cEco: carbon content of cEco pool(s)
  • Outputs

    • diagnostics.c_eco_k_f_veg_props: effect of veg_props on carbon decomposition rate. 1: no stress, 0: complete stress

precompute:

  • Inputs

    • diagnostics.c_eco_k_f_veg_props: effect of veg_props on carbon decomposition rate. 1: no stress, 0: complete stress

    • properties.lit_k_f_lignin: multiplicative effect of lignin content on the decomposition rate of the structural litter pools; one means no effect

  • Outputs

    • diagnostics.c_eco_k_f_veg_props: effect of veg_props on carbon decomposition rate. 1: no stress, 0: complete stress

compute, update methods are not defined

End of getModelDocString-generated docstring for cTauVegProperties_CASA.jl. Check the Extended help for user-defined information.


Extended help

The approach applies lit_k_f_lignin, published by the vegQualityTraits process, to the structural litter pools cLitLeafSlow and cLitRootFineSlow.

This approach previously owned the whole lignin calculation, with seven parameters of its own. Those now live in vegQualityTraits, so the lignin chemistry is declared once and shared with cQualityPartition, which needs the same quantities.

It also previously contained a PFT-dependent turnover block that derived c_eco_τ from a per-pool AGE. That block was a partial MATLAB translation which read p.cCycleBase and p.vegProperties, neither of which exists in SINDBAD, and packed a c_eco_τ that was never assigned, so the approach could not run at all. It has been removed rather than guessed at; turnover rates come from cTau and its cTauSoilT/cTauSoilW/cTauLAI factors.

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 12.01.2020 [sbesnard]

  • 2.0 on 04.09.2026 [skoirala]: lignin properties moved to the lignin process; dead turnover block removed

  • 2.1 on 09.09.2026 [skoirala]: metabolicFraction and lignin merged into vegQualityTraits

Created by

  • ncarvalhais
source

View Source


cVegetationDieOff ​

SindbadTEM.Processes.cVegetationDieOff Type
julia
Fraction of vegetation pools that die off.

Approaches

  • cVegetationDieOff_forcing: Get the fraction of vegetation that die off from forcing data.

  • cVegetationDieOff_none: Set the fraction of vegetation that die off to zero.

source
cVegetationDieOff approaches
SindbadTEM.Processes.cVegetationDieOff_forcing Type

Get the fraction of vegetation that die off from forcing data.

Parameters

  • None

Methods:

define:

  • Inputs

    • forcing.f_dist_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_dist_intensity) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.c_f_cVeg_dieOff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_f_cVeg_dieOff) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_dist_intensity: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_dist_intensity) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.c_f_cVeg_dieOff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :c_f_cVeg_dieOff) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for cVegetationDieOff_forcing.jl. Check the Extended help for user-defined information.


Extended help

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

Versions

  • 1.0 on summer 2024

Created by:

  • Nuno
source

Calculated using:

julia
Inputs: :forcing => :f_dist_intensity
Outputs: :diagnostics => :c_f_cVeg_dieOff

View Source


capillaryFlow ​

SindbadTEM.Processes.capillaryFlow Type
julia
Capillary flux of water from lower to upper soil layers (upward soil moisture movement).

Approaches

  • capillaryFlow_VanDijk2010: Computes the upward capillary flux of water through soil layers using the Van Dijk (2010) method.
source
capillaryFlow approaches
SindbadTEM.Processes.capillaryFlow_VanDijk2010 Type

Computes the upward capillary flux of water through soil layers using the Van Dijk (2010) method.

Parameters

  • Fields
    • max_frac: 0.95 ∈ [0.02, 0.98] => max fraction of soil moisture that can be lost as capillary flux (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • fluxes.soil_capillary_flux: soil capillary flux per layer

compute:

  • Inputs

    • properties.k_fc: hydraulic conductivity of soil at field capacity per layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.idx_soilW_end: index of the deepest soil layer with non-zero thickness, which exchanges water with groundwater

    • fluxes.soil_capillary_flux: soil capillary flux per layer

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.soil_capillary_flux: soil capillary flux per layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for capillaryFlow_VanDijk2010.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :properties => :k_fc, :properties => :w_sat, :properties => :idx_soilW_end, :fluxes => :soil_capillary_flux, :pools => :soilW, :pools => :ΔsoilW, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :soil_capillary_flux, :pools => :ΔsoilW

View Source


constants ​

SindbadTEM.Processes.constants Type
julia
Defines constants and variables that are independent of model structure.

Approaches

  • constants_numbers: Includes constants for numbers such as 1 to 10.
source
constants approaches
SindbadTEM.Processes.constants_numbers Type

Includes constants for numbers such as 1 to 10.

Parameters

  • None

Methods:

define:

  • Inputs

    • None
  • Outputs

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • constants.t_two: a type stable 2

    • constants.t_three: a type stable 3

precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for constants_numbers.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 14.05.2025 [skoirala]

Created by

  • skoirala
source

View Source


deriveVariables ​

SindbadTEM.Processes.deriveVariables Type
julia
Derives additional variables based on other SINDBAD models and saves them into land.deriveVariables.

Approaches

  • deriveVariables_simple: Incudes derivation of few variables that may be commonly needed for optimization against some datasets.
source
deriveVariables approaches
SindbadTEM.Processes.deriveVariables_simple Type

Incudes derivation of few variables that may be commonly needed for optimization against some datasets.

Parameters

  • None

Methods:

define, precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for deriveVariables_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 19.07.2023 [skoirala | @dr-ko]:

Created by

  • skoirala | @dr-ko
source

View Source


drainage ​

SindbadTEM.Processes.drainage Type
julia
Drainage flux of water from upper to lower soil layers.

Approaches

  • drainage_dos: Drainage flux based on an exponential function of soil moisture degree of saturation.

  • drainage_kUnsat: Drainage flux based on unsaturated hydraulic conductivity.

  • drainage_wFC: Drainage flux based on overflow above field capacity.

source
drainage approaches
SindbadTEM.Processes.drainage_dos Type

Drainage flux based on an exponential function of soil moisture degree of saturation.

Parameters

  • Fields
    • dos_exp: 1.5 ∈ [0.1, 3.0] => exponent of non-linearity for dos influence on drainage in soil (unitless @ all timescales)

    • n24: 1.0 ∈ [-Inf, Inf] => Time scale (day to hour) Parameters (unitless @ day timescale)

Methods:

define:

  • Inputs

    • pools.ΔsoilW: change in water storage in soilW pool(s)
  • Outputs

    • fluxes.drainage: soil moisture drainage per soil layer

compute:

  • Inputs

    • fluxes.drainage: soil moisture drainage per soil layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.soil_β: beta parameter of soil per layer

    • properties.w_fc: amount of water in the soil at field capacity per layer

    • properties.idx_soilW_end: index of the deepest soil layer with non-zero thickness, which exchanges water with groundwater

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.drainage: soil moisture drainage per soil layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for drainage_dos.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :fluxes => :drainage, :properties => :w_sat, :properties => :soil_β, :properties => :w_fc, :properties => :idx_soilW_end, :pools => :soilW, :pools => :ΔsoilW, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :drainage, :pools => :ΔsoilW

View Source


evaporation ​

SindbadTEM.Processes.evaporation Type
julia
Bare soil evaporation.

Approaches

  • evaporation_Snyder2000: Bare soil evaporation using the relative drying rate of soil following Snyder (2000).

  • evaporation_bareFraction: Bare soil evaporation from the non-vegetated fraction of the grid as a linear function of soil moisture and potential evaporation.

  • evaporation_demandSupply: Bare soil evaporation using a demand-supply limited approach.

  • evaporation_fAPAR: Bare soil evaporation from the non-absorbed fAPAR (as a proxy for vegetation fraction) and potential evaporation.

  • evaporation_none: Bare soil evaporation set to 0.

  • evaporation_vegFraction: Bare soil evaporation from the non-vegetated fraction and potential evaporation.

source
evaporation approaches
SindbadTEM.Processes.evaporation_Snyder2000 Type

Bare soil evaporation using the relative drying rate of soil following Snyder (2000).

Parameters

  • Fields
    • α: 1.0 ∈ [0.5, 1.5] => scaling factor for PET to account for maximum bare soil evaporation (unitless @ all timescales)

    • β: 3.0 ∈ [1.0, 5.0] => soil moisture resistance factor for soil evapotranspiration (units: mm^0.5 @ all timescales)

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • fluxes.sPET_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :sPET_prev) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • fluxes.PET: potential evapotranspiration

    • fluxes.sPET_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :sPET_prev) for information on how to add the variable to the catalog.

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.sET: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :sET) for information on how to add the variable to the catalog.

    • fluxes.sPET_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :sPET_prev) for information on how to add the variable to the catalog.

    • fluxes.evaporation: evaporation from the first soil layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for evaporation_Snyder2000.jl. Check the Extended help for user-defined information.


Extended help

References

  • Snyder, R. L., Bali, K., Ventura, F., & Gomez-MacPherson, H. (2000). Estimating evaporation from bare - nearly bare soil. Journal of irrigation & drainage engineering, 126[6], 399-403.

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: transfer from to accommodate land.states.fAPAR

Created by

  • mjung

  • skoirala | @dr-ko

source

Calculated using:

julia
Inputs: :states => :fAPAR, :pools => :soilW, :pools => :ΔsoilW, :fluxes => :PET, :fluxes => :sPET_prev, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :sET, :fluxes => :sPET_prev, :fluxes => :evaporation, :pools => :ΔsoilW

View Source


evapotranspiration ​

SindbadTEM.Processes.evapotranspiration Type
julia
Evapotranspiration.

Approaches

  • evapotranspiration_simple: calculates evapotranspiration as a simple linear function of soil moisture

  • evapotranspiration_sum: Evapotranspiration as a sum of all potential components

source
evapotranspiration approaches
SindbadTEM.Processes.evapotranspiration_simple Type

calculates evapotranspiration as a simple linear function of soil moisture

Parameters

  • Fields
    • k_evapotranspiration: 0.001 ∈ [0.001, 0.1] => evapotranspiration supplyrate (units: day-1 @ day timescale)

    • d_evapotranspiration: 0.01 ∈ [0.001, 0.98] => evapotranspiration demand rate (units: - @ day timescale)

    • mj_to_mm: 2.45 ∈ [-Inf, Inf] => conversion factor from MJ to mm (units: MJ/mm @ all timescales)

Methods:

compute:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • forcing.f_rn: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rn) for information on how to add the variable to the catalog.

  • Outputs

    • fluxes.evapotranspiration: total land evaporation including soil evaporation, vegetation transpiration, snow sublimation, and interception loss

    • pools.ΔsoilW: change in water storage in soilW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for evapotranspiration_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 16.12.2025 [skoirala]

Created by

  • skoirala
source

Calculated using:

julia
Inputs: :pools => :soilW, :pools => :ΔsoilW, :forcing => :f_rn
Outputs: :fluxes => :evapotranspiration, :pools => :ΔsoilW

View Source


fAPAR ​

SindbadTEM.Processes.fAPAR Type
julia
Fraction of absorbed photosynthetically active radiation.

Approaches

  • fAPAR_EVI: fAPAR as a linear function of EVI.

  • fAPAR_LAI: fAPAR as a function of LAI.

  • fAPAR_LAIBareFrac: fAPAR of the vegetated area as a function of LAI, and fAPAR of the grid cell scaled by the vegetation fraction

  • fAPAR_cVegLeaf: fAPAR based on the carbon pool of leaves, specific leaf area (SLA), and kLAI.

  • fAPAR_cVegLeafBareFrac: fAPAR of the vegetated area based on the carbon pool of leaves, and fAPAR of the grid cell scaled by the vegetation fraction.

  • fAPAR_constant: Sets fAPAR as a constant value.

  • fAPAR_forcing: Gets fAPAR from forcing data.

  • fAPAR_vegFraction: fAPAR as a linear function of vegetation fraction.

source
fAPAR approaches
SindbadTEM.Processes.fAPAR_EVI Type

fAPAR as a linear function of EVI.

Parameters

  • Fields
    • EVI_to_fAPAR_c: 0.0 ∈ [-0.2, 0.3] => intercept of the linear function (unitless @ all timescales)

    • EVI_to_fAPAR_m: 1.0 ∈ [0.5, 5] => slope of the linear function (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • states.EVI: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :EVI) for information on how to add the variable to the catalog.
  • Outputs

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for fAPAR_EVI.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :states => :EVI
Outputs: :states => :fAPAR

View Source


frozenFraction ​

SindbadTEM.Processes.frozenFraction Type
julia
Frozen fraction of the soil

Approaches

  • frozenFraction_forcing: Gets frozen fraction from forcing
source
frozenFraction approaches
SindbadTEM.Processes.frozenFraction_forcing Type

Gets frozen fraction from forcing

Parameters

  • None

Methods:

precompute:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • states.frac_frozen_soil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :frac_frozen_soil) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_frac_frozen_soil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_frac_frozen_soil) for information on how to add the variable to the catalog.
  • Outputs

    • states.frac_frozen_soil: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :frac_frozen_soil) for information on how to add the variable to the catalog.

define, update methods are not defined

End of getModelDocString-generated docstring for frozenFraction_forcing.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 04.08.2026 [skoirala]

Created by

  • skoirala
source

Calculated using:

julia
Inputs: :forcing => :f_frac_frozen_soil
Outputs: :states => :frac_frozen_soil

View Source


getPools ​

SindbadTEM.Processes.getPools Type
julia
Retrieves the amount of water at the beginning of the time step.

Approaches

  • getPools_simple: Simply take throughfall as the maximum available water.
source
getPools approaches
SindbadTEM.Processes.getPools_simple Type

Simply take throughfall as the maximum available water.

Parameters

  • None

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

compute:

  • Inputs

    • fluxes.rain: amount of precipitation in liquid form

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

  • Outputs

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

precompute, update methods are not defined

End of getModelDocString-generated docstring for getPools_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 19.11.2019 [skoirala | @dr-ko]: added the documentation & cleaned the code, added json with development stage

Created by

  • mjung

  • ncarvalhais

  • skoirala | @dr-ko

source

Calculated using:

julia
Inputs: :fluxes => :rain, :states => :WBP
Outputs: :states => :WBP

View Source


gpp ​

SindbadTEM.Processes.gpp Type
julia
Gross Primary Productivity (GPP).

Approaches

  • gpp_coupled: GPP based on transpiration supply and water use efficiency (coupled).

  • gpp_min: GPP with potential scaled by the minimum stress scalar of demand and supply for uncoupled model structures.

  • gpp_mult: GPP with potential scaled by the product of stress scalars of demand and supply for uncoupled model structures.

  • gpp_neuralNetwork: GPP predicted directly by a pretrained neural network model. define, precompute, and compute for this approach are implemented in the SindbadFluxExt package extension (activates once using Flux is loaded alongside using Sindbad).

  • gpp_none: Sets GPP to 0.

  • gpp_transpirationWUE: GPP based on transpiration and water use efficiency.

source
gpp approaches
SindbadTEM.Processes.gpp_coupled Type

GPP based on transpiration supply and water use efficiency (coupled).

Parameters

  • None

Methods:

compute:

  • Inputs

    • diagnostics.transpiration_supply: total amount of water available in soil for transpiration

    • diagnostics.gpp_f_soilW: effect of soil moisture on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_demand: demand driven gross primary prorDuctivity

    • diagnostics.WUE: water use efficiency of the ecosystem

  • Outputs

    • fluxes.gpp: gross primary prorDcutivity

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for gpp_coupled.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]

Created by

  • mjung

  • skoirala | @dr-ko

Notes

source

Calculated using:

julia
Inputs: :diagnostics => :transpiration_supply, :diagnostics => :gpp_f_soilW, :diagnostics => :gpp_demand, :diagnostics => :WUE
Outputs: :fluxes => :gpp

View Source


gppAirT ​

SindbadTEM.Processes.gppAirT Type
julia
Effect of temperature on GPP: 1 indicates no temperature stress, 0 indicates complete stress.

Approaches

  • gppAirT_CASA: Temperature effect on GPP based as implemented in CASA.

  • gppAirT_De2025: Using Ranit's corrected approach, i.e. 1 + exp(x) ^ 2 instead of 1 + exp(x^2)

  • gppAirT_GSI: Temperature effect on GPP based on the GSI implementation of LPJ.

  • gppAirT_MOD17: Temperature effect on GPP based on the MOD17 model.

  • gppAirT_Maekelae2008: Temperature effect on GPP based on Maekelae (2008).

  • gppAirT_TEM: Temperature effect on GPP based on the TEM model.

  • gppAirT_Wang2014: Temperature effect on GPP based on Wang (2014).

  • gppAirT_none: Sets temperature stress on GPP to 1 (no stress).

source
gppAirT approaches
SindbadTEM.Processes.gppAirT_CASA Type

Temperature effect on GPP based as implemented in CASA.

Parameters

  • Fields
    • opt_airT: 25.0 ∈ [5.0, 35.0] => check in CASA code (units: °C @ all timescales)

    • opt_airT_A: 0.2 ∈ [0.01, 0.3] => increasing slope of sensitivity (unitless @ all timescales)

    • opt_airT_B: 0.3 ∈ [0.01, 0.5] => decreasing slope of sensitivity (unitless @ all timescales)

    • exp_airT: 10.0 ∈ [9.0, 11.0] => reference for exponent of sensitivity (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_airT_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT_day) for information on how to add the variable to the catalog.

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.gpp_f_airT: effect of air temperature on gpp. 1: no stress, 0: complete stress

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for gppAirT_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

  • Carvalhais; N.; Reichstein; M.; Seixas; J.; Collatz; G. J.; Pereira; J. S.; Berbigier; P. & Rambal, S. (2008). Implications of the carbon cycle steady state assumption for biogeochemical modeling performance & inverse parameter retrieval. Global Biogeochemical Cycles, 22[2].

  • Potter, C., Klooster, S., Myneni, R., Genovese, V., Tan, P. N., & Kumar, V. (2003). Continental-scale comparisons of terrestrial carbon sinks estimated from satellite data & ecosystem modeling 1982–1998. Global & Planetary Change, 39[3-4], 201-213.

  • Potter; C. S.; Randerson; J. T.; Field; C. B.; Matson; P. A.; Vitousek; P. M.; Mooney; H. A. & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite & surface data. Global Biogeochemical Cycles, 7[4], 811-841.

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: documentation & clean up

Created by

  • ncarvalhais

Notes

source

Calculated using:

julia
Inputs: :forcing => :f_airT_day, :constants => :o_one
Outputs: :diagnostics => :gpp_f_airT

View Source


gppDemand ​

SindbadTEM.Processes.gppDemand Type
julia
Combined effect of environmental demand on GPP.

Approaches

  • gppDemand_min: Demand GPP as the minimum of all stress scalars (most limiting factor).

  • gppDemand_mult: Demand GPP as the product of all stress scalars.

  • gppDemand_none: Sets the scalar for demand GPP to 1 and demand GPP to 0.

source
gppDemand approaches
SindbadTEM.Processes.gppDemand_min Type

Demand GPP as the minimum of all stress scalars (most limiting factor).

Parameters

  • None

Methods:

define:

  • Inputs

    • forcing.f_VPD_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_VPD_day) for information on how to add the variable to the catalog.

    • pools.soilW: water storage in soilW pool(s)

  • Outputs

    • diagnostics.gpp_climate_stressors: a collection of all gpp climate stressors including light, temperature, radiation, and vpd

compute:

  • Inputs

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

    • diagnostics.gpp_f_cloud: effect of cloud on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_potential: potential gross primary prorDcutivity

    • diagnostics.gpp_f_light: effect of light on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_climate_stressors: a collection of all gpp climate stressors including light, temperature, radiation, and vpd

    • diagnostics.gpp_f_airT: effect of air temperature on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_f_vpd: effect of vpd on gpp. 1: no stress, 0: complete stress

  • Outputs

    • diagnostics.gpp_f_climate: effect of climate on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_demand: demand driven gross primary prorDuctivity

precompute, update methods are not defined

End of getModelDocString-generated docstring for gppDemand_min.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: documentation & clean up

Created by

  • ncarvalhais

Notes

source

Calculated using:

julia
Inputs: :states => :fAPAR, :diagnostics => :gpp_f_cloud, :diagnostics => :gpp_potential, :diagnostics => :gpp_f_light, :diagnostics => :gpp_climate_stressors, :diagnostics => :gpp_f_airT, :diagnostics => :gpp_f_vpd
Outputs: :diagnostics => :gpp_f_climate, :diagnostics => :gpp_demand

View Source


gppDiffRadiation ​

SindbadTEM.Processes.gppDiffRadiation Type
julia
Effect of diffuse radiation (Cloudiness scalar) on GPP: 1 indicates no diffuse radiation effect, 0 indicates complete effect.

Approaches

  • gppDiffRadiation_De2025_Enhancement: Cloudiness as an enhancement of GPP potential, 1 + α CI^μ, with values of 1 at CI = 0 and 1 + α at CI = 1.

  • gppDiffRadiation_GSI: Cloudiness scalar (radiation diffusion) on GPP potential based on the GSI implementation of LPJ.

  • gppDiffRadiation_Turner2006: Cloudiness scalar (radiation diffusion) on GPP potential based on Turner (2006).

  • gppDiffRadiation_Turner2006Exp: Cloudiness scalar (radiation diffusion) on GPP potential based on Turner (2006), with a power-law response to the scaled cloudiness index.

  • gppDiffRadiation_Wang2015: Cloudiness scalar (radiation diffusion) on GPP potential based on Wang (2015).

  • gppDiffRadiation_none: Sets the cloudiness scalar (radiation diffusion) for GPP potential to 1.

source
gppDiffRadiation approaches
SindbadTEM.Processes.gppDiffRadiation_De2025_Enhancement Type

Cloudiness as an enhancement of GPP potential, 1 + α CI^μ, with values of 1 at CI = 0 and 1 + α at CI = 1.

Parameters

  • Fields
    • α: 0.4 ∈ [0.0, 2.0] => relative enhancement of LUE at CI = 1 over LUE at CI = 0 (unitless @ all timescales)

    • μ: 1.0 ∈ [0.2, 5.0] => shape exponent of the response to cloudiness index (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • diagnostics.gpp_f_cloud: effect of cloud on gpp. 1: no stress, 0: complete stress

compute:

  • Inputs

    • forcing.f_rg: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rg) for information on how to add the variable to the catalog.

    • forcing.f_rg_pot: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rg_pot) for information on how to add the variable to the catalog.

    • constants.z_zero: a helper type stable 0 to be used across all models

  • Outputs

    • diagnostics.gpp_f_cloud: effect of cloud on gpp. 1: no stress, 0: complete stress

define, update methods are not defined

End of getModelDocString-generated docstring for gppDiffRadiation_De2025_Enhancement.jl. Check the Extended help for user-defined information.


Extended help

gpp_f_cloud = 1 + α * CI^μ, where CI = 1 - f_rg/f_rg_pot is the cloudiness index. CI = 0 gives 1 and CI = 1 gives 1 + α. μ < 1 makes the enhancement saturate under light cloud, μ = 1 is linear, and μ > 1 limits it to heavy cloud.

The scalar exceeds 1, so it suits gppDemand_mult. With gppDemand_min it is never the minimum and has no effect. Under this framing gpp_potential is the clear sky potential, not the maximum under diffuse light.

Reported enhancements of overcast over clear sky LUE at equal PAR are 6 to 33% for forests in Alton et al. (2007), 12 to 80% across 38 FLUXNET sites in Alton (2008), and 30 to 45% for winter wheat in van Diepen et al. (2025). Observed CI only spans about 0.25 under clear sky to 0.83 under overcast in van Diepen et al. (2025), so with μ = 1 these enhancements need α of about 0.1 to 2.1, which sets the bounds of α.

References

  • Alton, P. B., North, P. R., & Los, S. O. (2007). The impact of diffuse sunlight on canopy light-use efficiency, gross photosynthetic product and net ecosystem exchange in three forest biomes. Global Change Biology, 13[4], 776-787.

  • Alton, P. B. (2008). Reduced carbon sequestration in terrestrial ecosystems under overcast skies compared to clear skies. Agricultural and Forest Meteorology, 148[10], 1641-1653.

  • Gu, L., Baldocchi, D. D., Wofsy, S. C., Munger, J. W., Michalsky, J. J., Urbanski, S. P., & Boden, T. A. (2003). Response of a deciduous forest to the Mount Pinatubo eruption: enhanced photosynthesis. Science, 299[5615], 2035-2038. DOI: 10.1126/science.1078366

  • Knohl, A., & Baldocchi, D. D. (2008). Effects of diffuse radiation on canopy gas exchange processes in a forest ecosystem. Journal of Geophysical Research: Biogeosciences, 113, G02023. DOI: 10.1029/2007JG000663

  • van Diepen, K. H. H., Kaiser, E., Hartogensis, O. K., Graf, A., Vilà-Guerau de Arellano, J., & Moene, A. F. (2025). When do clouds and aerosols lead to higher canopy photosynthesis? Agricultural and Forest Meteorology, 370, 110597. DOI: 10.1016/j.agrformet.2025.110597

  • Mercado, L. M., Bellouin, N., Sitch, S., Boucher, O., Huntingford, C., Wild, M., & Cox, P. M. (2009). Impact of changes in diffuse radiation on the global land carbon sink. Nature, 458[7241], 1014-1017. DOI: 10.1038/nature07949

Versions

  • 1.0 on 27.10.2026 [skoirala | @dr-ko]: variant of gppDiffRadiation_exp with cloudiness as an enhancement

Created by

  • skoirala
source

Calculated using:

julia
Inputs: :forcing => :f_rg, :forcing => :f_rg_pot, :constants => :z_zero
Outputs: :diagnostics => :gpp_f_cloud

View Source


gppDirRadiation ​

SindbadTEM.Processes.gppDirRadiation Type
julia
Effect of direct radiation (light effect) on GPP: 1 indicates no direct radiation effect, 0 indicates complete effect.

Approaches

  • gppDirRadiation_Maekelae2008: Light saturation scalar (light effect) on GPP potential based on Maekelae (2008).

  • gppDirRadiation_none: Sets the light saturation scalar (light effect) on GPP potential to 1.

source
gppDirRadiation approaches
SindbadTEM.Processes.gppDirRadiation_Maekelae2008 Type

Light saturation scalar (light effect) on GPP potential based on Maekelae (2008).

Parameters

  • Fields
    • γ: 0.002 ∈ [0.0, 0.05] => empirical light response parameter (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_PAR: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_PAR) for information on how to add the variable to the catalog.

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

  • Outputs

    • diagnostics.gpp_f_light: effect of light on gpp. 1: no stress, 0: complete stress

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for gppDirRadiation_Maekelae2008.jl. Check the Extended help for user-defined information.


Extended help

References

  • Mäkelä, A., Pulkkinen, M., Kolari, P., et al. (2008). Developing an empirical model of stand GPP with the LUE approachanalysis of eddy covariance data at five contrasting conifer sites in Europe. Global change biology, 14[1], 92-108.

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: documentation & clean up

Created by

  • mjung

  • ncarvalhais

Notes

  • γ is between [0.007 0.05], median !0.04 [m2/mol] in Maekelae et al 2008.
source

Calculated using:

julia
Inputs: :forcing => :f_PAR, :states => :fAPAR
Outputs: :diagnostics => :gpp_f_light

View Source


gppPotential ​

SindbadTEM.Processes.gppPotential Type
julia
Potential GPP based on maximum instantaneous radiation use efficiency.

Approaches

  • gppPotential_Monteith: Potential GPP based on radiation use efficiency model/concept of Monteith.
source
gppPotential approaches
SindbadTEM.Processes.gppPotential_Monteith Type

Potential GPP based on radiation use efficiency model/concept of Monteith.

Parameters

  • Fields
    • εmax: 1.0 ∈ [0.632, 3.2] => Maximum Radiation Use Efficiency (units: gC/MJ @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_PAR: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_PAR) for information on how to add the variable to the catalog.
  • Outputs

    • diagnostics.gpp_potential: potential gross primary prorDcutivity

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for gppPotential_Monteith.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: documentation & clean up

Created by

  • mjung

  • ncarvalhais

Notes

  • no crontrols for fPAR | meteo factors

  • set the potential GPP as maxRUE * f_PAR [gC/m2/dat]

  • usually GPP = e_max x f[clim] x FAPAR x f_PAR here GPP = GPPpot x f[clim] x FAPAR GPPpot = e_max x f_PAR f[clim] & FAPAR are [maybe] calculated dynamically

source

Calculated using:

julia
Inputs: :forcing => :f_PAR
Outputs: :diagnostics => :gpp_potential

View Source


gppSoilW ​

SindbadTEM.Processes.gppSoilW Type
julia
Effect of soil moisture on GPP: 1 indicates no soil water stress, 0 indicates complete stress.

Approaches

  • gppSoilW_CASA: Soil moisture stress on GPP potential based on base stress and the relative ratio of PET and PAW (CASA).

  • gppSoilW_GSI: Soil moisture stress on GPP potential based on the GSI implementation of LPJ.

  • gppSoilW_Horn: Soil moisture stress on GPP using Horn and Schulz (2011a) filtered-moisture sigmoid response.

  • gppSoilW_Keenan2009: Soil moisture stress on GPP potential based on Keenan (2009).

  • gppSoilW_Stocker2020: Soil moisture stress on GPP potential based on Stocker (2020).

  • gppSoilW_none: Sets soil moisture stress on GPP potential to 1 (no stress).

source
gppSoilW approaches
SindbadTEM.Processes.gppSoilW_CASA Type

Soil moisture stress on GPP potential based on base stress and the relative ratio of PET and PAW (CASA).

Parameters

  • Fields
    • base_f_soilW: 0.2 ∈ [0, 1] => base water stress (unitless @ all timescales)

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • diagnostics.gpp_f_soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :gpp_f_soilW_prev) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.

    • diagnostics.gpp_f_soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :gpp_f_soilW_prev) for information on how to add the variable to the catalog.

    • states.PAW: amount of water available for transpiration per soil layer

    • fluxes.PET: potential evapotranspiration

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • diagnostics.OmBweOPET: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :OmBweOPET) for information on how to add the variable to the catalog.

    • diagnostics.gpp_f_soilW: effect of soil moisture on gpp. 1: no stress, 0: complete stress

    • diagnostics.gpp_f_soilW_prev: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :gpp_f_soilW_prev) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for gppSoilW_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

  • Forkel; M.; Carvalhais; N.; Schaphoff; S.; v. Bloh; W.; Migliavacca; M. Thurner; M.; & Thonicke; K.: Identifying environmental controls on vegetation greenness phenology through model–data integration Biogeosciences; 11; 7025–7050; https://doi.org/10.5194/bg-11-7025-2014;2014.

Versions

  • 1.1 on 22.01.2021 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko

Notes

source

Calculated using:

julia
Inputs: :forcing => :f_airT, :diagnostics => :gpp_f_soilW_prev, :states => :PAW, :fluxes => :PET, :constants => :z_zero, :constants => :o_one
Outputs: :diagnostics => :OmBweOPET, :diagnostics => :gpp_f_soilW, :diagnostics => :gpp_f_soilW_prev

View Source


gppVPD ​

SindbadTEM.Processes.gppVPD Type
julia
Effect of vapor pressure deficit (VPD) on GPP: 1 indicates no VPD stress, 0 indicates complete stress.

Approaches

  • gppVPD_Farquhar1980: VPD stress on GPP potential based on Maekelae (2008), with the CO₂ effect of light limited C3 photosynthesis of Farquhar et al. (1980).

  • gppVPD_MOD17: VPD stress on GPP potential based on the MOD17 model.

  • gppVPD_Maekelae2008: VPD stress on GPP potential based on Maekelae (2008).

  • gppVPD_PRELES: VPD stress on GPP potential based on Maekelae (2008) and includes the CO₂ effect based on the PRELES model.

  • gppVPD_expco2: VPD stress on GPP potential based on Maekelae (2008) and includes the CO₂ effect.

  • gppVPD_none: Sets VPD stress on GPP potential to 1 (no stress).

source
gppVPD approaches
SindbadTEM.Processes.gppVPD_Farquhar1980 Type

VPD stress on GPP potential based on Maekelae (2008), with the CO₂ effect of light limited C3 photosynthesis of Farquhar et al. (1980).

Parameters

  • Fields
    • κ: 0.4 ∈ [0.06, 0.7] => sensitivity of GPP to VPD at the reference ambient CO2 (units: kPa-1 @ all timescales)

    • χ: 0.7 ∈ [0.4, 0.9] => ratio of leaf internal to ambient CO2 (unitless @ all timescales)

    • ref_ambient_CO2: 380.0 ∈ [300.0, 500.0] => ambient CO2 at which the CO2 effect is one (units: ppm @ all timescales)

    • Γ_star_25: 42.75 ∈ [-Inf, Inf] => CO2 compensation point at 25 °C (units: ppm @ all timescales)

    • ΔH_Γ_star: 37830.0 ∈ [-Inf, Inf] => activation energy of the CO2 compensation point (units: J mol-1 @ all timescales)

    • gas_constant: 8.314 ∈ [-Inf, Inf] => universal gas constant (units: J mol-1 K-1 @ all timescales)

Methods:

define:

  • Inputs

    • None
  • Outputs

    • gppVPD.T_25: 25 °C in K, the reference temperature of the CO2 compensation point Γ_star_25

    • gppVPD.T_0: 0 °C in K, to convert the air temperature for the CO2 compensation point

compute:

  • Inputs

    • forcing.f_airT_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT_day) for information on how to add the variable to the catalog.

    • forcing.f_VPD_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_VPD_day) for information on how to add the variable to the catalog.

    • states.ambient_CO2: ambient co2 concentration

    • constants.t_two: a type stable 2

    • constants.t_three: a type stable 3

    • gppVPD.T_25: 25 °C in K, the reference temperature of the CO2 compensation point Γ_star_25

    • gppVPD.T_0: 0 °C in K, to convert the air temperature for the CO2 compensation point

  • Outputs

    • diagnostics.gpp_f_co2: effect of ambient co2 on gpp relative to a reference co2. 1: at the reference co2

    • diagnostics.gpp_f_vpd: effect of vpd on gpp. 1: no stress, 0: complete stress

precompute, update methods are not defined

End of getModelDocString-generated docstring for gppVPD_Farquhar1980.jl. Check the Extended help for user-defined information.


Extended help

The CO2 effect is m(Ca) / m(ref_ambient_CO2), where m = (Ci - Γ_) / (Ci + 2Γ_) is the CO2 dependence of the light limited rate of C3 photosynthesis and Ci = χ Ca. The CO2 effect is one at ref_ambient_CO2, stays positive for Ci above Γ*, and saturates at high CO2. Its sensitivity, d ln m / d ln Ca, is about 0.4 at 400 ppm and 25 °C.

The VPD stress is exp(-κ VPD s(Ca) / s(ref_ambient_CO2)), the stress of gppVPD_Maekelae2008 scaled by s = d ln m / d ln χ = 3Γ* Ci / ((Ci - Γ_)(Ci + 2Γ_)). VPD closes stomata and lowers χ, and the relative loss of photosynthesis for a given drop of χ is s, which falls as CO2 rises. The scale is one at ref_ambient_CO2, is close to ref_ambient_CO2 / Ca when Γ* is small, and has no free parameter. It replaces the calibrated exponent c_κ of gppVPD_PRELES, which is not identifiable from the narrow CO2 range of the calibration period and extrapolates badly to the CO2 of 1700 or 1901.

Γ* follows the air temperature with the Arrhenius function of Bernacchi et al. (2001). The reference uses the same Γ*, so both factors are one at ref_ambient_CO2 at every temperature, and a higher temperature only makes GPP more sensitive to CO2.

χ and ref_ambient_CO2 are not meant to be calibrated, since both effects are close to one over the calibration period. WUE_Farquhar1980 uses the same fixed χ, under which WUE grows in proportion to Ca, and its ref_ambient_CO2 should have the same value.

The CO2 effect is that of C3 plants. C4 plants respond much less to CO2.

References

  • Farquhar, G. D., von Caemmerer, S., & Berry, J. A. (1980). A biochemical model of photosynthetic CO2 assimilation in leaves of C3 species. Planta, 149, 78-90.

  • Bernacchi, C. J., Singsaas, E. L., Pimentel, C., Portis Jr, A. R., & Long, S. P. (2001). Improved temperature response functions for models of Rubisco-limited photosynthesis. Plant, Cell & Environment, 24, 253-259.

  • Mäkelä, A., Pulkkinen, M., Kolari, P., et al. (2008). Developing an empirical model of stand GPP with the LUE approach: analysis of eddy covariance data at five contrasting conifer sites in Europe. Global Change Biology, 14, 92-108.

Versions

  • 1.0 on 02.11.2026 [skoirala | @dr-ko]

  • 1.1 on 05.11.2026 [skoirala | @dr-ko]: the CO2 dependence of the VPD stress is s(Ca) / s(ref_ambient_CO2) of the light limited rate instead of the calibrated power (Ca / ref_ambient_CO2)^c_κ.

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :forcing => :f_airT_day, :forcing => :f_VPD_day, :states => :ambient_CO2, :constants => :t_two, :constants => :t_three, :gppVPD => :T_25, :gppVPD => :T_0
Outputs: :diagnostics => :gpp_f_co2, :diagnostics => :gpp_f_vpd

View Source


groundWRecharge ​

SindbadTEM.Processes.groundWRecharge Type
julia
Groundwater recharge.

Approaches

  • groundWRecharge_dos: Groundwater recharge as an exponential function of the degree of saturation of the lowermost soil layer.

  • groundWRecharge_fraction: Groundwater recharge as a fraction of the moisture in the lowermost soil layer.

  • groundWRecharge_kUnsat: Groundwater recharge as the unsaturated hydraulic conductivity of the lowermost soil layer.

  • groundWRecharge_none: Sets groundwater recharge to 0.

source
groundWRecharge approaches
SindbadTEM.Processes.groundWRecharge_dos Type

Groundwater recharge as an exponential function of the degree of saturation of the lowermost soil layer.

Parameters

  • Fields
    • dos_exp: 1.5 ∈ [1.0, 3.0] => exponent of non-linearity for dos influence on drainage to groundwater (unitless @ all timescales)

    • n24: 1.0 ∈ [-Inf, Inf] => Time scale (day to hour) Parameters (unitless @ day timescale)

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • fluxes.gw_recharge: net groundwater recharge from the lowermost soil layer, positive => soil to groundwater

compute:

  • Inputs

    • properties.idx_soilW_end: index of the deepest soil layer with non-zero thickness, which exchanges water with groundwater

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.soil_β: beta parameter of soil per layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

    • pools.groundW: water storage in groundW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.gw_recharge: net groundwater recharge from the lowermost soil layer, positive => soil to groundwater

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for groundWRecharge_dos.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: clean up

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :properties => :idx_soilW_end, :properties => :w_sat, :properties => :soil_β, :pools => :ΔsoilW, :pools => :soilW, :pools => :ΔgroundW, :pools => :groundW, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :gw_recharge, :pools => :ΔsoilW, :pools => :ΔgroundW

View Source


groundWSoilWInteraction ​

SindbadTEM.Processes.groundWSoilWInteraction Type
julia
Groundwater-soil moisture interactions (e.g., capillary flux, water exchange).

Approaches

  • groundWSoilWInteraction_VanDijk2010: Upward flow of water from groundwater to the lowermost soil layer using the Van Dijk (2010) method.

  • groundWSoilWInteraction_gradient: Delayed/Buffer storage that gives water to the soil when the soil is dry and receives water from the soil when the buffer is low.

  • groundWSoilWInteraction_gradientNeg: Delayed/Buffer storage that does not give water to the soil when the soil is dry, but receives water from the soil when the soil is wet and the buffer is low.

  • groundWSoilWInteraction_none: Sets groundwater capillary flux to 0 for no interaction between soil moisture and groundwater.

source
groundWSoilWInteraction approaches
SindbadTEM.Processes.groundWSoilWInteraction_VanDijk2010 Type

Upward flow of water from groundwater to the lowermost soil layer using the Van Dijk (2010) method.

Parameters

  • Fields
    • max_fraction: 0.5 ∈ [0.001, 0.98] => fraction of groundwater that can be lost to capillary flux (unitless @ all timescales)

Methods:

define:

  • Inputs

    • None
  • Outputs

    • fluxes.gw_recharge: net groundwater recharge from the lowermost soil layer, positive => soil to groundwater

compute:

  • Inputs

    • properties.idx_soilW_end: index of the deepest soil layer with non-zero thickness, which exchanges water with groundwater

    • properties.k_fc: hydraulic conductivity of soil at field capacity per layer

    • properties.k_sat: hydraulic conductivity of soil at saturation per layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

    • pools.groundW: water storage in groundW pool(s)

    • pools.soilW: water storage in soilW pool(s)

    • models.unsat_k_model: name of the model used to calculate unsaturated hydraulic conductivity

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • fluxes.gw_recharge: net groundwater recharge from the lowermost soil layer, positive => soil to groundwater

  • Outputs

    • fluxes.gw_capillary_flux: capillary flux from top groundwater layer to the lowermost soil layer

    • fluxes.gw_recharge: net groundwater recharge from the lowermost soil layer, positive => soil to groundwater

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for groundWSoilWInteraction_VanDijk2010.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :properties => :idx_soilW_end, :properties => :k_fc, :properties => :k_sat, :properties => :w_sat, :pools => :ΔsoilW, :pools => :ΔgroundW, :pools => :groundW, :pools => :soilW, :models => :unsat_k_model, :constants => :z_zero, :constants => :o_one, :fluxes => :gw_recharge
Outputs: :fluxes => :gw_capillary_flux, :fluxes => :gw_recharge, :pools => :ΔsoilW, :pools => :ΔgroundW

View Source


groundWSurfaceWInteraction ​

SindbadTEM.Processes.groundWSurfaceWInteraction Type
julia
Water exchange between surface and groundwater.

Approaches

  • groundWSurfaceWInteraction_fracGradient: Moisture exchange between groundwater and surface water as a fraction of the difference between their storages.

  • groundWSurfaceWInteraction_fracGroundW: Depletion of groundwater to surface water as a fraction of groundwater storage.

source
groundWSurfaceWInteraction approaches
SindbadTEM.Processes.groundWSurfaceWInteraction_fracGradient Type

Moisture exchange between groundwater and surface water as a fraction of the difference between their storages.

Parameters

  • Fields
    • k_gw_to_suw: 0.001 ∈ [0.0001, 0.01] => maximum transfer rate between GW and surface water (units: /d @ all timescales)

Methods:

compute:

  • Inputs

    • pools.ΔsurfaceW: change in water storage in surfaceW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

    • pools.groundW: water storage in groundW pool(s)

    • pools.surfaceW: water storage in surfaceW pool(s)

  • Outputs

    • fluxes.gw_to_suw_flux: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :gw_to_suw_flux) for information on how to add the variable to the catalog.

    • pools.ΔsurfaceW: change in water storage in surfaceW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for groundWSurfaceWInteraction_fracGradient.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :pools => :ΔsurfaceW, :pools => :ΔgroundW, :pools => :groundW, :pools => :surfaceW
Outputs: :fluxes => :gw_to_suw_flux, :pools => :ΔsurfaceW, :pools => :ΔgroundW

View Source


interception ​

SindbadTEM.Processes.interception Type
julia
Interception loss.

Approaches

  • interception_Miralles2010: Interception loss according to the Gash model of Miralles, 2010.

  • interception_fAPAR: Interception loss as a fraction of fAPAR.

  • interception_none: Sets interception loss to 0.

  • interception_vegFraction: Interception loss as a fraction of vegetation cover.

source
interception approaches
SindbadTEM.Processes.interception_Miralles2010 Type

Interception loss according to the Gash model of Miralles, 2010.

Parameters

  • Fields
    • canopy_storage: 1.2 ∈ [0.4, 2.0] => Canopy storage (units: mm @ all timescales)

    • fte: 0.02 ∈ [0.02, 0.02] => fraction of trunk evaporation (unitless @ all timescales)

    • evap_rate: 0.3 ∈ [0.1, 0.5] => mean evaporation rate (units: mm/hr @ all timescales)

    • trunk_capacity: 0.02 ∈ [0.02, 0.02] => trunk capacity (units: mm @ all timescales)

    • pd: 0.02 ∈ [0.02, 0.02] => fraction rain to trunks (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

    • fluxes.rain: amount of precipitation in liquid form

    • states.rain_int: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :rain_int) for information on how to add the variable to the catalog.

  • Outputs

    • fluxes.interception: interception evaporation loss

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for interception_Miralles2010.jl. Check the Extended help for user-defined information.


Extended help

References

  • Miralles, D. G., Gash, J. H., Holmes, T. R., de Jeu, R. A., & Dolman, A. J. (2010). Global canopy interception from satellite observations. Journal of Geophysical ResearchAtmospheres, 115[D16].

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

  • 1.1 on 22.11.2019 [skoirala | @dr-ko]: handle land.states.fAPAR, rainfall intensity & rainfall

Created by

  • mjung

Notes

source

Calculated using:

julia
Inputs: :states => :WBP, :states => :fAPAR, :fluxes => :rain, :states => :rain_int
Outputs: :fluxes => :interception, :states => :WBP

View Source


percolation ​

SindbadTEM.Processes.percolation Type
julia
Percolation through the top of soil

Approaches

  • percolation_WBP: Percolation as a difference of throughfall and surface runoff loss.

  • percolation_rain: calculate percolation = rain, assuming no surface runoff losses

source
percolation approaches
SindbadTEM.Processes.percolation_WBP Type

Percolation as a difference of throughfall and surface runoff loss.

Parameters

  • None

Methods:

compute:

  • Inputs

    • pools.ΔgroundW: change in water storage in groundW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • pools.soilW: water storage in soilW pool(s)

    • pools.groundW: water storage in groundW pool(s)

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • constants.o_one: a helper type stable 1 to be used across all models

    • properties.w_sat: amount of water in the soil at saturation per layer

  • Outputs

    • fluxes.percolation: amount of moisture percolating to the top soil layer

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • pools.ΔgroundW: change in water storage in groundW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for percolation_WBP.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :pools => :ΔgroundW, :pools => :ΔsoilW, :pools => :soilW, :pools => :groundW, :states => :WBP, :constants => :o_one, :properties => :w_sat
Outputs: :fluxes => :percolation, :states => :WBP, :pools => :ΔgroundW, :pools => :ΔsoilW

View Source


rainIntensity ​

SindbadTEM.Processes.rainIntensity Type
julia
Rainfall intensity.

Approaches

  • rainIntensity_forcing: Gets rainfall intensity from forcing data.

  • rainIntensity_simple: Rainfall intensity as a linear function of rainfall amount.

source
rainIntensity approaches
SindbadTEM.Processes.rainIntensity_forcing Type

Gets rainfall intensity from forcing data.

Parameters

  • None

Methods:

compute:

  • Inputs

    • forcing.f_rain_int: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rain_int) for information on how to add the variable to the catalog.
  • Outputs

    • states.rain_int: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :rain_int) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for rainIntensity_forcing.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: creation of approach

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :forcing => :f_rain_int
Outputs: :states => :rain_int

View Source


rainSnow ​

SindbadTEM.Processes.rainSnow Type
julia
Rain and snow partitioning.

Approaches

  • rainSnow_Tair: Rain and snow partitioning based on a temperature threshold.

  • rainSnow_forcing: Sets rainfall and snowfall from forcing data, with snowfall scaled if the snowfall_scalar parameter is optimized.

  • rainSnow_rain: All precipitation is assumed to be liquid rain with 0 snowfall.

source
rainSnow approaches
SindbadTEM.Processes.rainSnow_Tair Type

Rain and snow partitioning based on a temperature threshold.

Parameters

  • Fields
    • airT_thres: 0.0 ∈ [-5.0, 5.0] => threshold for separating rain and snow (units: °C @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_rain: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rain) for information on how to add the variable to the catalog.

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.

    • pools.snowW: water storage in snowW pool(s)

    • pools.ΔsnowW: change in water storage in snowW pool(s)

  • Outputs

    • fluxes.precip: total land precipitation including snow and rain

    • fluxes.rain: amount of precipitation in liquid form

    • fluxes.snow: amount of precipitation in solid form

    • pools.ΔsnowW: change in water storage in snowW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for rainSnow_Tair.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: creation of approach

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :forcing => :f_rain, :forcing => :f_airT, :pools => :snowW, :pools => :ΔsnowW
Outputs: :fluxes => :precip, :fluxes => :rain, :fluxes => :snow, :pools => :ΔsnowW

View Source


rootMaximumDepth ​

SindbadTEM.Processes.rootMaximumDepth Type
julia
Maximum rooting depth.

Approaches

  • rootMaximumDepth_fracSoilD: Maximum rooting depth as a fraction of total soil depth.
source
rootMaximumDepth approaches
SindbadTEM.Processes.rootMaximumDepth_fracSoilD Type

Maximum rooting depth as a fraction of total soil depth.

Parameters

  • Fields
    • constant_frac_max_root_depth: 0.5 ∈ [0.1, 0.8] => root depth as a fraction of soil depth (unitless @ all timescales)

Methods:

define:

  • Inputs

    • properties.soil_layer_thickness: thickness of each soil layer
  • Outputs

    • properties.∑soil_depth: total depth of soil

precompute:

  • Inputs

    • properties.soil_layer_thickness: thickness of each soil layer
  • Outputs

    • properties.∑soil_depth: total depth of soil

    • diagnostics.max_root_depth: maximum depth of root

compute, update methods are not defined

End of getModelDocString-generated docstring for rootMaximumDepth_fracSoilD.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 21.11.2019

Created by

  • skoirala | @dr-ko
source

View Source


rootWaterEfficiency ​

SindbadTEM.Processes.rootWaterEfficiency Type
julia
Water uptake efficiency by roots for each soil layer.

Approaches

  • rootWaterEfficiency_constant: Water uptake efficiency by roots set as a constant for each soil layer.

  • rootWaterEfficiency_expCvegRoot: Water uptake efficiency by roots set according to total root carbon.

  • rootWaterEfficiency_k2Layer: Water uptake efficiency by roots set as a calibration parameter for each soil layer (for two soil layers).

  • rootWaterEfficiency_k2fRD: Water uptake efficiency by roots set as a function of vegetation fraction, and for the second soil layer, as a function of rooting depth from different datasets.

  • rootWaterEfficiency_k2fvegFraction: Water uptake efficiency by roots set as a function of vegetation fraction, and for the second soil layer, as a function of rooting depth from different datasets, which is further scaled by the vegetation fraction.

source
rootWaterEfficiency approaches
SindbadTEM.Processes.rootWaterEfficiency_constant Type

Water uptake efficiency by roots set as a constant for each soil layer.

Parameters

  • Fields
    • constant_root_water_efficiency: 0.99 ∈ [0.001, 0.999] => root fraction (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • diagnostics.root_water_efficiency: a efficiency like number that indicates the ease/fraction of soil water that can extracted by the root per layer

precompute:

  • Inputs

    • properties.cumulative_soil_depths: the depth to the bottom of each soil layer

    • diagnostics.root_water_efficiency: a efficiency like number that indicates the ease/fraction of soil water that can extracted by the root per layer

    • pools.soilW: water storage in soilW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

    • diagnostics.max_root_depth: maximum depth of root

  • Outputs

    • diagnostics.root_water_efficiency: a efficiency like number that indicates the ease/fraction of soil water that can extracted by the root per layer

compute, update methods are not defined

End of getModelDocString-generated docstring for rootWaterEfficiency_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 21.11.2019

Created by

  • skoirala | @dr-ko
source

View Source


rootWaterUptake ​

SindbadTEM.Processes.rootWaterUptake Type
julia
Root water uptake from soil.

Approaches

  • rootWaterUptake_proportion: Root uptake from each soil layer proportional to the relative plant water availability in the layer.

  • rootWaterUptake_topBottom: Root uptake from each soil layer from top to bottom, using maximul available water in each layer.

source
rootWaterUptake approaches
SindbadTEM.Processes.rootWaterUptake_proportion Type

Root uptake from each soil layer proportional to the relative plant water availability in the layer.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • fluxes.root_water_uptake: amount of water uptaken for transpiration per soil layer

compute:

  • Inputs

    • states.PAW: amount of water available for transpiration per soil layer

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • fluxes.transpiration: transpiration

    • fluxes.root_water_uptake: amount of water uptaken for transpiration per soil layer

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.root_water_uptake: amount of water uptaken for transpiration per soil layer

    • pools.ΔsoilW: change in water storage in soilW pool(s)

precompute, update methods are not defined

End of getModelDocString-generated docstring for rootWaterUptake_proportion.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 13.03.2020 [ttraut]

Created by

  • ttraut

Notes

  • assumes that the uptake from each layer remains proportional to the root fraction
source

Calculated using:

julia
Inputs: :states => :PAW, :pools => :soilW, :pools => :ΔsoilW, :fluxes => :transpiration, :fluxes => :root_water_uptake, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :root_water_uptake, :pools => :ΔsoilW

View Source


runoff ​

SindbadTEM.Processes.runoff Type
julia
Total runoff.

Approaches

  • runoff_simple: calculates runoff as a simple linear function of soil moisture

  • runoff_sum: Runoff as a sum of all potential components.

source
runoff approaches
SindbadTEM.Processes.runoff_simple Type

calculates runoff as a simple linear function of soil moisture

Parameters

  • Fields
    • k_runoff: 0.001 ∈ [0.001, 0.1] => runoff rate (units: day-1 @ day timescale)

Methods:

compute:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

  • Outputs

    • fluxes.runoff: total runoff

    • pools.ΔsoilW: change in water storage in soilW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for runoff_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 16.12.2025 [skoirala]

Created by

  • skoirala
source

Calculated using:

julia
Inputs: :pools => :soilW, :pools => :ΔsoilW
Outputs: :fluxes => :runoff, :pools => :ΔsoilW

View Source


runoffBase ​

SindbadTEM.Processes.runoffBase Type
julia
Baseflow.

Approaches

  • runoffBase_Zhang2008: Baseflow from a linear groundwater storage following Zhang (2008).

  • runoffBase_none: Sets base runoff to 0.

source
runoffBase approaches
SindbadTEM.Processes.runoffBase_Zhang2008 Type

Baseflow from a linear groundwater storage following Zhang (2008).

Parameters

  • Fields
    • k_baseflow: 0.001 ∈ [1.0e-5, 0.02] => base flow coefficient (units: day-1 @ day timescale)

Methods:

compute:

  • Inputs

    • pools.groundW: water storage in groundW pool(s)

    • pools.ΔgroundW: change in water storage in groundW pool(s)

  • Outputs

    • fluxes.base_runoff: base runoff

    • pools.ΔgroundW: change in water storage in groundW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for runoffBase_Zhang2008.jl. Check the Extended help for user-defined information.


Extended help

References

  • Zhang, Y. Q., Chiew, F. H. S., Zhang, L., Leuning, R., & Cleugh, H. A. (2008). Estimating catchment evaporation and runoff using MODIS leaf area index & the Penman‐Monteith equation. Water Resources Research, 44[10].

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

Created by

  • mjung
source

Calculated using:

julia
Inputs: :pools => :groundW, :pools => :ΔgroundW
Outputs: :fluxes => :base_runoff, :pools => :ΔgroundW

View Source


runoffInfiltrationExcess ​

SindbadTEM.Processes.runoffInfiltrationExcess Type
julia
Infiltration excess runoff.

Approaches

  • runoffInfiltrationExcess_Jung: Infiltration excess runoff as a function of rain intensity and vegetated fraction.

  • runoffInfiltrationExcess_kUnsat: Infiltration excess runoff based on unsaturated hydraulic conductivity.

  • runoffInfiltrationExcess_none: Sets infiltration excess runoff to 0.

source
runoffInfiltrationExcess approaches
SindbadTEM.Processes.runoffInfiltrationExcess_Jung Type

Infiltration excess runoff as a function of rain intensity and vegetated fraction.

Parameters

  • None

Methods:

compute:

  • Inputs

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • states.fAPAR: fraction of absorbed photosynthetically active radiation

    • properties.k_sat: hydraulic conductivity of soil at saturation per layer

    • fluxes.rain: amount of precipitation in liquid form

    • states.rain_int: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :rain_int) for information on how to add the variable to the catalog.

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • fluxes.inf_excess_runoff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :inf_excess_runoff) for information on how to add the variable to the catalog.

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for runoffInfiltrationExcess_Jung.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

  • 1.1 on 22.11.2019 [skoirala | @dr-ko]: moved from prec to dyna to handle land.states.fAPAR which is nPix, 1

Created by

  • mjung
source

Calculated using:

julia
Inputs: :states => :WBP, :states => :fAPAR, :properties => :k_sat, :fluxes => :rain, :states => :rain_int, :constants => :z_zero, :constants => :o_one
Outputs: :fluxes => :inf_excess_runoff, :states => :WBP

View Source


runoffInterflow ​

SindbadTEM.Processes.runoffInterflow Type
julia
Interflow runoff.

Approaches

  • runoffInterflow_none: Sets interflow runoff to 0.

  • runoffInterflow_residual: Interflow as a fraction of the available water balance pool.

source
runoffInterflow approaches
SindbadTEM.Processes.runoffInterflow_none Type

Sets interflow runoff to 0.

Parameters

  • None

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • fluxes.interflow_runoff: runoff loss from interflow in soil layers

precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for runoffInterflow_none.jl. Check the Extended help for user-defined information.


Extended help

source

View Source


runoffOverland ​

SindbadTEM.Processes.runoffOverland Type
julia
Total overland runoff that passes to surface storage.

Approaches

  • runoffOverland_Inf: Overland flow due to infiltration excess runoff.

  • runoffOverland_InfIntSat: Overland flow as the sum of infiltration excess, interflow, and saturation excess runoffs.

  • runoffOverland_Sat: Overland flow due to saturation excess runoff.

  • runoffOverland_none: Sets overland runoff to 0.

source
runoffOverland approaches
SindbadTEM.Processes.runoffOverland_Inf Type

Overland flow due to infiltration excess runoff.

Parameters

  • None

Methods:

compute:

  • Inputs

    • fluxes.inf_excess_runoff: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :inf_excess_runoff) for information on how to add the variable to the catalog.
  • Outputs

    • fluxes.overland_runoff: overland runoff as a fraction of incoming water

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for runoffOverland_Inf.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :fluxes => :inf_excess_runoff
Outputs: :fluxes => :overland_runoff

View Source


runoffSaturationExcess ​

SindbadTEM.Processes.runoffSaturationExcess Type
julia
Saturation excess runoff.

Approaches

  • runoffSaturationExcess_Bergstroem1992: Saturation excess runoff using the original Bergström method.

  • runoffSaturationExcess_Bergstroem1992MixedVegFraction: Saturation excess runoff using the Bergström method with separate parameters for vegetated and non-vegetated fractions.

  • runoffSaturationExcess_Bergstroem1992VegFraction: Saturation excess runoff using the Bergström method with parameters scaled by vegetation fraction.

  • runoffSaturationExcess_Bergstroem1992VegFractionFroSoil: Saturation excess runoff using the Bergström method with parameters scaled by vegetation fraction and frozen soil fraction.

  • runoffSaturationExcess_Bergstroem1992VegFractionPFT: Saturation excess runoff using the Bergström method with parameters scaled by vegetation fraction separated by different PFTs.

  • runoffSaturationExcess_Zhang2008: Saturation excess runoff as a function of incoming water and PET following Zhang (2008).

  • runoffSaturationExcess_none: Sets saturation excess runoff to 0.

  • runoffSaturationExcess_satFraction: Saturation excess runoff as a fraction of the saturated fraction of a grid-cell.

source
runoffSaturationExcess approaches
SindbadTEM.Processes.runoffSaturationExcess_Bergstroem1992 Type

Saturation excess runoff using the original Bergström method.

Parameters

  • Fields
    • β: 1.1 ∈ [0.1, 5.0] => berg exponential parameter (unitless @ all timescales)

Methods:

compute:

  • Inputs

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • properties.w_sat: amount of water in the soil at saturation per layer

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

  • Outputs

    • fluxes.sat_excess_runoff: saturation excess runoff

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for runoffSaturationExcess_Bergstroem1992.jl. Check the Extended help for user-defined information.


Extended help

References

  • Bergström, S. (1992). The HBV model–its structure & applications. SMHI.

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

  • 1.1 on 27.11.2019 [skoirala | @dr-ko]: changed to handle any number of soil layers

  • 1.2 on 10.02.2020 [ttraut]: modyfying variable name to match the new SINDBAD version

Created by

  • ttraut
source

Calculated using:

julia
Inputs: :states => :WBP, :properties => :w_sat, :pools => :soilW, :pools => :ΔsoilW
Outputs: :fluxes => :sat_excess_runoff, :states => :WBP

View Source


runoffSurface ​

SindbadTEM.Processes.runoffSurface Type
julia
Surface runoff generation.

Approaches

  • runoffSurface_Orth2013: Surface runoff directly calculated using delay coefficient for the last 60 days based on the Orth et al. (2013) method.

  • runoffSurface_Trautmann2018: Surface runoff directly calculated using delay coefficient for the last 60 days based on the Orth et al. (2013) method, but with a different delay coefficient as implemented in Trautmann et al. (2018).

  • runoffSurface_all: All overland runoff generates surface runoff.

  • runoffSurface_directIndirect: Surface runoff as the sum of the direct fraction of overland runoff and the indirect fraction of surface water storage.

  • runoffSurface_directIndirectFroSoil: Surface runoff as the sum of the direct fraction of overland runoff and the indirect fraction of surface water storage, with the direct fraction additionally dependent on the frozen fraction of the grid.

  • runoffSurface_indirect: All overland runoff is collected in surface water storage first, which in turn generates indirect surface runoff.

  • runoffSurface_none: Sets surface runoff to 0.

source
runoffSurface approaches
SindbadTEM.Processes.runoffSurface_Orth2013 Type

Surface runoff directly calculated using delay coefficient for the last 60 days based on the Orth et al. (2013) method.

Parameters

  • Fields
    • qt: 2.0 ∈ [0.5, 100.0] => delay parameter for land runoff (units: time @ all timescales)

Methods:

define:

  • Inputs

    • None
  • Outputs

    • surface_runoff.z: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:surface_runoff, :z) for information on how to add the variable to the catalog.

    • surface_runoff.Rdelay: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:surface_runoff, :Rdelay) for information on how to add the variable to the catalog.

compute:

  • Inputs

    • surface_runoff.z: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:surface_runoff, :z) for information on how to add the variable to the catalog.

    • surface_runoff.Rdelay: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:surface_runoff, :Rdelay) for information on how to add the variable to the catalog.

    • pools.surfaceW: water storage in surfaceW pool(s)

    • fluxes.overland_runoff: overland runoff as a fraction of incoming water

  • Outputs

    • fluxes.surface_runoff: total surface runoff

    • surface_runoff.Rdelay: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:surface_runoff, :Rdelay) for information on how to add the variable to the catalog.

precompute, update methods are not defined

End of getModelDocString-generated docstring for runoffSurface_Orth2013.jl. Check the Extended help for user-defined information.


Extended help

References

  • Orth, R., Koster, R. D., & Seneviratne, S. I. (2013). Inferring soil moisture memory from streamflow observations using a simple water balance model. Journal of Hydrometeorology, 14[6], 1773-1790.

  • used in Trautmann et al. 2018

Versions

  • 1.0 on 18.11.2019 [ttraut]

Created by

  • ttraut

Notes

  • how to handle 60days?!?!
source

Calculated using:

julia
Inputs: :surface_runoff => :z, :surface_runoff => :Rdelay, :pools => :surfaceW, :fluxes => :overland_runoff
Outputs: :fluxes => :surface_runoff, :surface_runoff => :Rdelay

View Source


saturatedFraction ​

SindbadTEM.Processes.saturatedFraction Type
julia
Saturated fraction of a grid-cell.

Approaches

  • saturatedFraction_none: Sets the saturated soil fraction to 0.
source
saturatedFraction approaches
SindbadTEM.Processes.saturatedFraction_none Type

Sets the saturated soil fraction to 0.

Parameters

  • None

Methods:

define:

  • Inputs

    • constants.z_zero: a helper type stable 0 to be used across all models
  • Outputs

    • states.frac_saturation: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :frac_saturation) for information on how to add the variable to the catalog.

precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for saturatedFraction_none.jl. Check the Extended help for user-defined information.


Extended help

source

View Source


snowFraction ​

SindbadTEM.Processes.snowFraction Type
julia
Snow cover fraction.

Approaches

  • snowFraction_HTESSEL: Snow cover fraction following the HTESSEL approach.

  • snowFraction_binary: Snow cover fraction using a binary approach.

  • snowFraction_none: Sets the snow cover fraction to 0.

source
snowFraction approaches
SindbadTEM.Processes.snowFraction_HTESSEL Type

Snow cover fraction following the HTESSEL approach.

Parameters

  • Fields
    • snow_cover_param: 15.0 ∈ [1.0, 100.0] => Snow Cover Parameter (units: mm @ all timescales)

Methods:

compute:

  • Inputs

    • pools.snowW: water storage in snowW pool(s)

    • pools.ΔsnowW: change in water storage in snowW pool(s)

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • states.frac_snow: fractional coverage of grid with snow

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for snowFraction_HTESSEL.jl. Check the Extended help for user-defined information.


Extended help

References

  • H-TESSEL = land surface scheme of the European Centre for Medium- Range Weather Forecasts" operational weather forecast system Balsamo et al.; 2009

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

Created by

  • mjung
source

Calculated using:

julia
Inputs: :pools => :snowW, :pools => :ΔsnowW, :constants => :o_one
Outputs: :states => :frac_snow

View Source


snowMelt ​

SindbadTEM.Processes.snowMelt Type
julia
Snowmelt.

Approaches

  • snowMelt_Tair: Snowmelt as a function of air temperature.

  • snowMelt_TairRn: Snowmelt based on temperature and net radiation when air temperature exceeds 0°C.

source
snowMelt approaches
SindbadTEM.Processes.snowMelt_Tair Type

Snowmelt as a function of air temperature.

Parameters

  • Fields
    • rate: 1.0 ∈ [0.1, 10.0] => snow melt rate (units: mm/°C/day @ day timescale)

Methods:

compute:

  • Inputs

    • forcing.f_airT: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT) for information on how to add the variable to the catalog.

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • states.frac_snow: fractional coverage of grid with snow

    • pools.snowW: water storage in snowW pool(s)

    • pools.ΔsnowW: change in water storage in snowW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

  • Outputs

    • fluxes.snow_melt: snow melt

    • fluxes.Tterm: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:fluxes, :Tterm) for information on how to add the variable to the catalog.

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • pools.ΔsnowW: change in water storage in snowW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for snowMelt_Tair.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

Created by

  • mjung

Notes

  • may not be working well for longer time scales (like for weekly | longer time scales). Warnings needs to be set accordingly.

  • may not be working well for longer time scales (like for weekly | longer time scales). Warnings needs to be set accordingly.

source

Calculated using:

julia
Inputs: :forcing => :f_airT, :states => :WBP, :states => :frac_snow, :pools => :snowW, :pools => :ΔsnowW, :constants => :z_zero
Outputs: :fluxes => :snow_melt, :fluxes => :Tterm, :states => :WBP, :pools => :ΔsnowW

View Source


soilProperties ​

SindbadTEM.Processes.soilProperties Type
julia
Soil hydraulic properties.

Approaches

  • soilProperties_Saxton1986: Soil hydraulic properties based on Saxton (1986).

  • soilProperties_Saxton2006: Soil hydraulic properties based on Saxton (2006).

source
soilProperties approaches
SindbadTEM.Processes.soilProperties_Saxton1986 Type

Soil hydraulic properties based on Saxton (1986).

Parameters

  • Fields
    • ψ_fc: 33.0 ∈ [30.0, 35.0] => matric potential at field capacity (units: kPa @ all timescales)

    • ψ_wp: 1500.0 ∈ [1000.0, 1800.0] => matric potential at wilting point (units: kPa @ all timescales)

    • ψ_sat: 0.0 ∈ [0.0, 5.0] => matric potential at saturation (units: kPa @ all timescales)

    • a1: -4.396 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • a2: -0.0715 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • a3: -0.000488 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • a4: -4.285e-5 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • b1: -3.14 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • b2: -0.00222 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • b3: -3.484e-5 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • c1: 0.332 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • c2: -0.0007251 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • c3: 0.1276 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • d1: -0.108 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • d2: 0.341 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e1: 2.778e-6 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e2: 12.012 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e3: -0.0755 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e4: -3.895 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e5: 0.03671 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e6: -0.1103 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • e7: 0.00087546 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • f1: 2.302 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n2: 2.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n24: 24.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n10: 10.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n100: 100.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n1000: 1000.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n1500: 1000.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

    • n3600: 3600.0 ∈ [-Inf, Inf] => Saxton Parameters (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • properties.sp_k_fc: calculated/input hydraulic conductivity of soil at field capacity per layer

    • properties.sp_k_sat: calculated/input hydraulic conductivity of soil at saturation per layer

    • properties.sp_k_wp: calculated/input hydraulic conductivity of soil at wilting point per layer

    • properties.sp_α: calculated/input alpha parameter of soil per layer

    • properties.sp_β: calculated/input beta parameter of soil per layer

    • properties.sp_θ_fc: calculated/input moisture content of soil at field capacity per layer

    • properties.sp_θ_sat: calculated/input moisture content of soil at saturation (porosity) per layer

    • properties.sp_θ_wp: calculated/input moisture content of soil at wilting point per layer

    • properties.sp_ψ_fc: calculated/input matric potential of soil at field capacity per layer

    • properties.sp_ψ_sat: calculated/input matric potential of soil at saturation per layer

    • properties.sp_ψ_wp: calculated/input matric potential of soil at wiliting point per layer

    • soilProperties.n100: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :n100) for information on how to add the variable to the catalog.

    • soilProperties.n1000: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :n1000) for information on how to add the variable to the catalog.

    • soilProperties.n2: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :n2) for information on how to add the variable to the catalog.

    • soilProperties.n24: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :n24) for information on how to add the variable to the catalog.

    • soilProperties.n3600: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :n3600) for information on how to add the variable to the catalog.

    • soilProperties.e1: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e1) for information on how to add the variable to the catalog.

    • soilProperties.e2: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e2) for information on how to add the variable to the catalog.

    • soilProperties.e3: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e3) for information on how to add the variable to the catalog.

    • soilProperties.e4: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e4) for information on how to add the variable to the catalog.

    • soilProperties.e5: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e5) for information on how to add the variable to the catalog.

    • soilProperties.e6: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e6) for information on how to add the variable to the catalog.

    • soilProperties.e7: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:soilProperties, :e7) for information on how to add the variable to the catalog.

    • models.unsat_k_model: name of the model used to calculate unsaturated hydraulic conductivity

precompute:

  • Inputs

    • properties.sp_α: calculated/input alpha parameter of soil per layer

    • properties.sp_β: calculated/input beta parameter of soil per layer

    • properties.sp_k_fc: calculated/input hydraulic conductivity of soil at field capacity per layer

    • properties.sp_θ_fc: calculated/input moisture content of soil at field capacity per layer

    • properties.sp_ψ_fc: calculated/input matric potential of soil at field capacity per layer

    • properties.sp_k_wp: calculated/input hydraulic conductivity of soil at wilting point per layer

    • properties.sp_θ_wp: calculated/input moisture content of soil at wilting point per layer

    • properties.sp_ψ_wp: calculated/input matric potential of soil at wiliting point per layer

    • properties.sp_k_sat: calculated/input hydraulic conductivity of soil at saturation per layer

    • properties.sp_θ_sat: calculated/input moisture content of soil at saturation (porosity) per layer

    • properties.sp_ψ_sat: calculated/input matric potential of soil at saturation per layer

    • pools.soilW: water storage in soilW pool(s)

  • Outputs

    • properties.sp_k_fc: calculated/input hydraulic conductivity of soil at field capacity per layer

    • properties.sp_k_sat: calculated/input hydraulic conductivity of soil at saturation per layer

    • properties.sp_k_wp: calculated/input hydraulic conductivity of soil at wilting point per layer

    • properties.sp_α: calculated/input alpha parameter of soil per layer

    • properties.sp_β: calculated/input beta parameter of soil per layer

    • properties.sp_θ_fc: calculated/input moisture content of soil at field capacity per layer

    • properties.sp_θ_sat: calculated/input moisture content of soil at saturation (porosity) per layer

    • properties.sp_θ_wp: calculated/input moisture content of soil at wilting point per layer

    • properties.sp_ψ_fc: calculated/input matric potential of soil at field capacity per layer

    • properties.sp_ψ_sat: calculated/input matric potential of soil at saturation per layer

    • properties.sp_ψ_wp: calculated/input matric potential of soil at wiliting point per layer

compute, update methods are not defined

End of getModelDocString-generated docstring for soilProperties_Saxton1986.jl. Check the Extended help for user-defined information.


Extended help

References

  • Saxton, K. E., Rawls, W., Romberger, J. S., & Papendick, R. I. (1986). Estimating generalized soil‐water characteristics from texture. Soil science society of America Journal, 50(4), 1031-1036.

Versions

  • 1.0 on 21.11.2019

  • 1.1 on 03.12.2019 [skoirala | @dr-ko]: handling potentail vertical distribution of soil texture

Created by

  • skoirala | @dr-ko
source

View Source


soilTexture ​

SindbadTEM.Processes.soilTexture Type
julia
Soil texture (sand, silt, clay, and organic matter fraction).

Approaches

  • soilTexture_constant: Sets soil texture properties as constant values over all soil layers.

  • soilTexture_forcing: Gets Soil texture properties from forcing data.

source
soilTexture approaches
SindbadTEM.Processes.soilTexture_constant Type

Sets soil texture properties as constant values over all soil layers.

Parameters

  • Fields
    • clay: 0.2 ∈ [0.0, 1.0] => Clay content (unitless @ all timescales)

    • silt: 0.3 ∈ [0.0, 1.0] => Silt content (unitless @ all timescales)

    • sand: 0.5 ∈ [0.0, 1.0] => Sand content (unitless @ all timescales)

    • orgm: 0.0 ∈ [0.0, 1.0] => Organic matter content (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • properties.st_clay: fraction of clay content in the soil

    • properties.st_sand: fraction of sand content in the soil per layer

    • properties.st_silt: fraction of silt content in the soil per layer

    • properties.st_orgm: fraction of organic matter content in the soil per layer

precompute:

  • Inputs

    • properties.st_clay: fraction of clay content in the soil

    • properties.st_sand: fraction of sand content in the soil per layer

    • properties.st_silt: fraction of silt content in the soil per layer

    • properties.st_orgm: fraction of organic matter content in the soil per layer

  • Outputs

    • properties.st_clay: fraction of clay content in the soil

    • properties.st_sand: fraction of sand content in the soil per layer

    • properties.st_silt: fraction of silt content in the soil per layer

    • properties.st_orgm: fraction of organic matter content in the soil per layer

compute, update methods are not defined

End of getModelDocString-generated docstring for soilTexture_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 21.11.2019

Created by

  • skoirala | @dr-ko

Notes

  • texture does not change with space & depth
source

View Source


soilWBase ​

SindbadTEM.Processes.soilWBase Type
julia
Base soil hydraulic properties over soil layers.

Approaches

  • soilWBase_smax1Layer: Maximum soil water content of one soil layer as a fraction of total soil depth, based on the Trautmann et al. (2018) model.

  • soilWBase_smax2Layer: Maximum soil water content of two soil layers as fractions of total soil depth, based on the older version of the Pre-Tokyo Model.

  • soilWBase_smax2fRD4: Maximum soil water content of two soil layers: the first layer as a fraction of soil depth, the second as a linear combination of scaled rooting depth data from forcing.

  • soilWBase_soilDepth: Soil hydraulic properties for different soil layers assuming a uniform vertical distribution, with the soil column truncated at the soil depth from forcing.

  • soilWBase_uniform: Soil hydraulic properties distributed for different soil layers assuming a uniform vertical distribution.

source
soilWBase approaches
SindbadTEM.Processes.soilWBase_smax1Layer Type

Maximum soil water content of one soil layer as a fraction of total soil depth, based on the Trautmann et al. (2018) model.

Parameters

  • Fields
    • smax: 1.0 ∈ [0.001, 10.0] => maximum soil water holding capacity of 1st soil layer, as % of defined soil depth (unitless @ all timescales)

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • properties.cumulative_soil_depths: the depth to the bottom of each soil layer

    • properties.idx_soilW_end: index of the deepest soil layer with non-zero thickness, which exchanges water with groundwater

    • properties.soil_depth: total soil depth of the location as the sum of soil layer thicknesses

    • properties.soil_layer_thickness: thickness of each soil layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.w_fc: amount of water in the soil at field capacity per layer

    • properties.w_wp: amount of water in the soil at wiliting point per layer

compute:

  • Inputs

    • properties.soil_layer_thickness: thickness of each soil layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.w_fc: amount of water in the soil at field capacity per layer

    • properties.w_wp: amount of water in the soil at wiliting point per layer

  • Outputs

    • properties.w_awc: maximum amount of water available for vegetation/transpiration per soil layer (w_sat-_wp)

    • properties.w_fc: amount of water in the soil at field capacity per layer

    • properties.w_sat: amount of water in the soil at saturation per layer

    • properties.w_wp: amount of water in the soil at wiliting point per layer

precompute, update methods are not defined

End of getModelDocString-generated docstring for soilWBase_smax1Layer.jl. Check the Extended help for user-defined information.


Extended help

References

  • Trautmann et al. 2018

Versions

  • 1.0 on 09.01.2020 [ttraut]: clean up & consistency

Created by

  • ttraut
source

Calculated using:

julia
Inputs: :properties => :soil_layer_thickness, :properties => :w_sat, :properties => :w_fc, :properties => :w_wp
Outputs: :properties => :w_awc, :properties => :w_fc, :properties => :w_sat, :properties => :w_wp

View Source


sublimation ​

SindbadTEM.Processes.sublimation Type
julia
Snow sublimation.

Approaches

  • sublimation_GLEAM: Sublimation using the Priestley-Taylor term following the GLEAM approach.

  • sublimation_none: Sets snow sublimation to 0.

source
sublimation approaches
SindbadTEM.Processes.sublimation_GLEAM Type

Sublimation using the Priestley-Taylor term following the GLEAM approach.

Parameters

  • Fields
    • α: 0.95 ∈ [0.0, 3.0] => Priestley Taylor Coefficient for Sublimation (units: none @ all timescales)

    • deg_to_k: 273.15 ∈ [-Inf, Inf] => degree to Kelvin conversion (units: none @ all timescales)

    • Δ_1: 5723.265 ∈ [-Inf, Inf] => first parameter of Δ from Murphy & Koop [2005] (units: none @ all timescales)

    • Δ_2: 3.53068 ∈ [-Inf, Inf] => second parameter of Δ from Murphy & Koop [2005] (units: none @ all timescales)

    • Δ_3: 0.00728332 ∈ [-Inf, Inf] => third parameter of Δ from Murphy & Koop [2005] (units: none @ all timescales)

    • Δ_4: 9.550426 ∈ [-Inf, Inf] => fourth parameter of Δ from Murphy & Koop [2005] (units: none @ all timescales)

    • pa_to_kpa: 0.001 ∈ [-Inf, Inf] => pascal to kilopascal conversion (units: none @ all timescales)

    • λ_1: 46782.5 ∈ [-Inf, Inf] => first parameter of λ from Murphy & Koop [2005] (units: none @ all timescales)

    • λ_2: 35.8925 ∈ [-Inf, Inf] => second parameter of λ from Murphy & Koop [2005] (units: none @ all timescales)

    • λ_3: 0.07414 ∈ [-Inf, Inf] => third parameter of λ from Murphy & Koop [2005] (units: none @ all timescales)

    • λ_4: 541.5 ∈ [-Inf, Inf] => fourth parameter of λ from Murphy & Koop [2005] (units: none @ all timescales)

    • λ_5: 123.75 ∈ [-Inf, Inf] => fifth parameter of λ from Murphy & Koop [2005] (units: none @ all timescales)

    • j_to_mj: 1.0e-6 ∈ [-Inf, Inf] => joule to megajoule conversion (units: none @ all timescales)

    • g_to_kg: 0.001 ∈ [-Inf, Inf] => joule to megajoule conversion (units: none @ all timescales)

    • mol_mass_water: 18.01528 ∈ [-Inf, Inf] => molecular mass of water (units: gram @ all timescales)

    • sp_heat_air: 0.001 ∈ [-Inf, Inf] => specific heat of air (units: MJ/kg/K @ all timescales)

    • γ_1: 0.001 ∈ [-Inf, Inf] => first parameter of γ from Brunt [1952] (units: none @ all timescales)

    • γ_2: 0.622 ∈ [-Inf, Inf] => second parameter of γ from Brunt [1952] (units: none @ all timescales)

Methods:

compute:

  • Inputs

    • forcing.f_psurf_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_psurf_day) for information on how to add the variable to the catalog.

    • forcing.f_rn: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_rn) for information on how to add the variable to the catalog.

    • forcing.f_airT_day: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:forcing, :f_airT_day) for information on how to add the variable to the catalog.

    • states.frac_snow: fractional coverage of grid with snow

    • pools.snowW: water storage in snowW pool(s)

    • pools.ΔsnowW: change in water storage in snowW pool(s)

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

    • constants.t_two: a type stable 2

  • Outputs

    • fluxes.sublimation: sublimation of the snow

    • sublimation.PTtermSub: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:sublimation, :PTtermSub) for information on how to add the variable to the catalog.

    • pools.ΔsnowW: change in water storage in snowW pool(s)

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for sublimation_GLEAM.jl. Check the Extended help for user-defined information.


Extended help

References

  • Miralles; D. G.; De Jeu; R. A. M.; Gash; J. H.; Holmes; T. R. H. & Dolman, A. J. (2011). An application of GLEAM to estimating global evaporation. Hydrology & Earth System Sciences Discussions, 8[1].

  • Murphy, D. M., & Koop, T. (2005). Review of the vapour pressures of ice and supercooled water for atmospheric applications. Quarterly Journal of the Royal Meteorological Society: A journal of the atmospheric sciences, applied meteorology and physical oceanography, 131(608), 1539-1565. https://patarnott.com/atms360/pdf_atms360/class2017/VaporPressureIce_SupercooledH20_Murphy.pdf

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

Created by

  • mjung
source

Calculated using:

julia
Inputs: :forcing => :f_psurf_day, :forcing => :f_rn, :forcing => :f_airT_day, :states => :frac_snow, :pools => :snowW, :pools => :ΔsnowW, :constants => :z_zero, :constants => :o_one, :constants => :t_two
Outputs: :fluxes => :sublimation, :sublimation => :PTtermSub, :pools => :ΔsnowW

View Source


transpiration ​

SindbadTEM.Processes.transpiration Type
julia
Transpiration.

Approaches

  • transpiration_coupled: Transpiration as a function of GPP and WUE.

  • transpiration_demandSupply: Transpiration as the minimum of supply and demand.

  • transpiration_none: Sets transpiration to 0.

source
transpiration approaches
SindbadTEM.Processes.transpiration_coupled Type

Transpiration as a function of GPP and WUE.

Parameters

  • None

Methods:

compute:

  • Inputs

    • fluxes.gpp: gross primary prorDcutivity

    • diagnostics.WUE: water use efficiency of the ecosystem

  • Outputs

    • fluxes.transpiration: transpiration

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for transpiration_coupled.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]

Created by

  • mjung

  • skoirala | @dr-ko

Notes

source

Calculated using:

julia
Inputs: :fluxes => :gpp, :diagnostics => :WUE
Outputs: :fluxes => :transpiration

View Source


transpirationDemand ​

SindbadTEM.Processes.transpirationDemand Type
julia
Demand-limited transpiration.

Approaches

  • transpirationDemand_CASA: Demand-limited transpiration as a function of volumetric soil content and soil properties, as in the CASA model.

  • transpirationDemand_PET: Demand-limited transpiration as a function of PET and a vegetation parameter.

  • transpirationDemand_PETfAPAR: Demand-limited transpiration as a function of PET and fAPAR.

  • transpirationDemand_PETvegFraction: Demand-limited transpiration as a function of PET, a vegetation parameter, and vegetation fraction.

source
transpirationDemand approaches
SindbadTEM.Processes.transpirationDemand_CASA Type

Demand-limited transpiration as a function of volumetric soil content and soil properties, as in the CASA model.

Parameters

  • None

Methods:

compute:

  • Inputs

    • states.PAW: amount of water available for transpiration per soil layer

    • properties.w_awc: maximum amount of water available for vegetation/transpiration per soil layer (w_sat-_wp)

    • properties.soil_α: alpha parameter of soil per layer

    • properties.soil_β: beta parameter of soil per layer

    • fluxes.percolation: amount of moisture percolating to the top soil layer

    • fluxes.PET: potential evapotranspiration

  • Outputs

    • diagnostics.transpiration_demand: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:diagnostics, :transpiration_demand) for information on how to add the variable to the catalog.

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for transpirationDemand_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: split the original transpiration_supply of CASA into demand supply: actual [minimum] is now just demandSupply approach of transpiration

Created by

  • ncarvalhais

  • skoirala | @dr-ko

Notes

  • The supply limit has non-linear relationship with moisture state over the root zone
source

Calculated using:

julia
Inputs: :states => :PAW, :properties => :w_awc, :properties => :soil_α, :properties => :soil_β, :fluxes => :percolation, :fluxes => :PET
Outputs: :diagnostics => :transpiration_demand

View Source


transpirationSupply ​

SindbadTEM.Processes.transpirationSupply Type
julia
Supply-limited transpiration.

Approaches

  • transpirationSupply_CASA: Supply-limited transpiration as a function of volumetric soil content and soil properties, as in the CASA model.

  • transpirationSupply_Federer1982: Supply-limited transpiration as a function of a maximum rate parameter and available water, following Federer (1982).

  • transpirationSupply_wAWC: Supply-limited transpiration as the minimum of the fraction of total available water capacity and available moisture.

  • transpirationSupply_wAWCvegFraction: Supply-limited transpiration as the minimum of the fraction of total available water capacity and available moisture, scaled by vegetated fractions.

source
transpirationSupply approaches
SindbadTEM.Processes.transpirationSupply_CASA Type

Supply-limited transpiration as a function of volumetric soil content and soil properties, as in the CASA model.

Parameters

  • None

Methods:

compute:

  • Inputs

    • states.PAW: amount of water available for transpiration per soil layer
  • Outputs

    • diagnostics.transpiration_supply: total amount of water available in soil for transpiration

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for transpirationSupply_CASA.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]: split the original transpiration_supply of CASA into demand supply: actual [minimum] is now just demSup approach of transpiration

Created by

  • ncarvalhais

  • skoirala | @dr-ko

Notes

  • The supply limit has non-linear relationship with moisture state over the root zone
source

Calculated using:

julia
Inputs: :states => :PAW
Outputs: :diagnostics => :transpiration_supply

View Source


treeFraction ​

SindbadTEM.Processes.treeFraction Type
julia
Tree cover fraction.

Approaches

  • treeFraction_constant: Sets tree cover fraction as a constant value.

  • treeFraction_forcing: Gets tree cover fraction from forcing data.

source
treeFraction approaches
SindbadTEM.Processes.treeFraction_constant Type

Sets tree cover fraction as a constant value.

Parameters

  • Fields
    • constant_frac_tree: 1.0 ∈ [0.3, 1.0] => Tree fraction (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.frac_tree: fractional coverage of grid with trees

define, compute, update methods are not defined

End of getModelDocString-generated docstring for treeFraction_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: cleaned up the code

Created by

  • skoirala | @dr-ko
source

View Source


vegAvailableWater ​

SindbadTEM.Processes.vegAvailableWater Type
julia
Plant available water (PAW), i.e., the amount of water available for transpiration.

Approaches

  • vegAvailableWater_rootWaterEfficiency: PAW as a function of soil moisture and root water extraction efficiency.

  • vegAvailableWater_sigmoid: PAW using a sigmoid function of soil moisture.

source
vegAvailableWater approaches
SindbadTEM.Processes.vegAvailableWater_rootWaterEfficiency Type

PAW as a function of soil moisture and root water extraction efficiency.

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.soilW: water storage in soilW pool(s)
  • Outputs

    • states.PAW: amount of water available for transpiration per soil layer

compute:

  • Inputs

    • properties.w_wp: amount of water in the soil at wiliting point per layer

    • diagnostics.root_water_efficiency: a efficiency like number that indicates the ease/fraction of soil water that can extracted by the root per layer

    • pools.soilW: water storage in soilW pool(s)

    • pools.ΔsoilW: change in water storage in soilW pool(s)

    • states.PAW: amount of water available for transpiration per soil layer

  • Outputs

    • states.PAW: amount of water available for transpiration per soil layer

precompute, update methods are not defined

End of getModelDocString-generated docstring for vegAvailableWater_rootWaterEfficiency.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 21.11.2019

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :properties => :w_wp, :diagnostics => :root_water_efficiency, :pools => :soilW, :pools => :ΔsoilW, :states => :PAW
Outputs: :states => :PAW

View Source


vegClass ​

SindbadTEM.Processes.vegClass Type
julia
Vegetation-type classification of the pixel: resolves land.states.veg_type (set by vegDynamics) to a canonical name, then optionally crosswalks that into a coarser classification.

Approaches

  • vegClass_MODIS_BGC: Gets the vegetation type from BIOME-BGC-classified forcing data.

  • vegClass_MODIS_IGBP: Gets the vegetation type from IGBP-classified forcing data.

  • vegClass_MODIS_IGBP_PlantForm: Gets the vegetation type from IGBP-classified forcing data, grouped into tree/shrub/herb plant forms.

  • vegClass_MODIS_LAI: Gets the vegetation type from LAI/fPAR-biome-classified forcing data.

  • vegClass_MODIS_PFT: Gets the vegetation type from Plant-Functional-Type-classified (MCD12Q1 Type 5) forcing data.

  • vegClass_MODIS_UMD: Gets the vegetation type from UMD-classified forcing data.

  • vegClass_SINDBAD: Resolves a vegetation-type code already given in SINDBAD's own canonical vocabulary.


Extended help

Resolves the raw vegetation-classification code that vegDynamics published to land.states.veg_type and, optionally, groups the result into a coarser classification, writing land.states.veg_type_name (plus veg_type_name_source for provenance) that every downstream science approach reads. vegClass never reads forcing or a parameter itself; obtaining the raw code is vegDynamics's job.

Each concrete approach declares two traits: vegTypeCatalog, the source catalog its raw code is interpreted against, and vegTypeClassification, the target classification to crosswalk into (defaulting to Classification_SINDBAD, i.e. no grouping, when unset). A _PlantForm-suffixed approach (e.g. vegClass_MODIS_IGBP_PlantForm) is the same resolution with vegTypeClassification set to Classification_PlantForm instead.

Known limitation: because land.states.veg_type_name is a single field, one experiment cannot combine a consumer that expects the fine canonical vocabulary (e.g. vegQualityTraits_vegType) with one that expects a grouped classification (e.g. cCycleBase_GSI_PlantForm/_MGMT) in the same run.

Versions

  • 1.0 on 10.09.2026 [skoirala]: merged from the former PFT and plantForm processes into one, with a formal one-to-many crosswalk mechanism (Classification_PlantForm) replacing plantForm_PFT's inline grouping table

  • 2.0 on 11.09.2026 [skoirala]: split raw-code extraction out into the new vegTypeDynamics process; vegTypes approaches now depend only on land.states.veg_type, never on forcing, and are named after their source catalog alone (e.g. vegTypes_MODIS_BGC, was vegTypes_forcing_MODIS_BGC)

  • 3.0 on 12.09.2026 [skoirala]: renamed from vegTypes to vegClass (paired process vegTypeDynamics -> vegClassDynamics)

  • 4.0 on 12.09.2026 [skoirala]: paired process renamed again, vegClassDynamics -> vegDynamics (too easily confused with vegClass)

Created by

  • skoirala
source
vegClass approaches
SindbadTEM.Processes.vegClass_MODIS_BGC Type

Gets the vegetation type from BIOME-BGC-classified forcing data.

Parameters

  • None

Methods:

define:

  • Inputs

    • None
  • Outputs

    • vegClass.veg_type_class_map: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:vegClass, :veg_type_class_map) for information on how to add the variable to the catalog.

precompute:

  • Inputs

    • states.veg_type: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :veg_type) for information on how to add the variable to the catalog.
  • Outputs

    • states.veg_type_name: vegetation type class of the pixel, the single source of vegetation type for downstream processes

    • states.veg_type_name_source: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :veg_type_name_source) for information on how to add the variable to the catalog.

compute, update methods are not defined

End of getModelDocString-generated docstring for vegClass_MODIS_BGC.jl. Check the Extended help for user-defined information.


Extended help

Same as vegClass_MODIS_IGBP, interpreting land.states.veg_type against the BIOME-Biogeochemical Cycles legend (Classification_MODIS_BGC) instead of IGBP. Pair with vegDynamics_forcing, which sets veg_type from f_pft.

References

Versions

  • 1.0 on 10.09.2026 [skoirala]

  • 2.0 on 10.09.2026 [skoirala]: merged into the unified vegTypes process (was PFT_forcing_MODIS_BGC)

  • 3.0 on 11.09.2026 [skoirala]: renamed from vegTypes_forcing_MODIS_BGC and split out of its raw-code extraction (now vegTypeDynamics_forcing); reads land.states.veg_type instead of unpacking forcing directly

  • 4.0 on 12.09.2026 [skoirala]: precompute hoisted to the shared, generic vegTypes.jl (every approach did exactly the same thing, modulo the two traits declared above) – this file now only declares those traits

  • 5.0 on 12.09.2026 [skoirala]: renamed from vegTypes_MODIS_BGC (process vegTypes -> vegClass, paired process vegTypeDynamics -> vegClassDynamics)

  • 6.0 on 12.09.2026 [skoirala]: paired process renamed again, vegClassDynamics -> vegDynamics (too easily confused with vegClass)

Created by

  • skoirala
source

View Source


vegDynamics ​

SindbadTEM.Processes.vegDynamics Type
julia
Obtains the raw vegetation-type class code for the pixel -- from forcing or a constant parameter -- and publishes it as land.states.veg_type for vegClass to resolve into a catalog-based classification.

Approaches

  • vegDynamics_constant: Sets a uniform vegetation-type class code, given as a canonical vegetation-type class number.

  • vegDynamics_forcing: Gets the raw vegetation-type class code from forcing data, independent of which legend it was classified against.


Extended help

Split from the former, combined vegClass process so that obtaining the raw class code (this process, catalog-agnostic) is independent of interpreting it against a source legend and crosswalking it into a target classification (vegClass, code-agnostic). Every approach here does exactly one thing: read a raw numeric code, from f_pft in forcing or from a constant parameter, and pack it into land.states.veg_type, unchanged and uninterpreted. No approach in this process references a VegClassification.

vegDynamics must run before vegClass in the model's process order (see standardSindbadTEM.jl), since vegClass reads land.states.veg_type from land.states rather than unpacking forcing itself.

Versions

  • 1.0 on 11.09.2026 [skoirala]: split out of the former combined vegTypes process, which coupled raw-code extraction to catalog resolution

  • 2.0 on 12.09.2026 [skoirala]: renamed from vegTypeDynamics to vegClassDynamics (paired process vegTypes -> vegClass)

  • 3.0 on 12.09.2026 [skoirala]: renamed again, vegClassDynamics -> vegDynamics (too easily confused with vegClass)

Created by

  • skoirala
source
vegDynamics approaches
SindbadTEM.Processes.vegDynamics_constant Type

Sets a uniform vegetation-type class code, given as a canonical vegetation-type class number.

Parameters

  • Fields
    • veg_type: 1.0 ∈ [1.0, 17.0] => Vegetation type class, per SINDBAD's canonical vegetation-type vocabulary (Classification_SINDBAD) (units: class @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.veg_type: No description available in src/sindbadVariableCatalog.jl catalog. Run whatIs(:states, :veg_type) for information on how to add the variable to the catalog.

define, compute, update methods are not defined

End of getModelDocString-generated docstring for vegDynamics_constant.jl. Check the Extended help for user-defined information.


Extended help

Unlike vegDynamics_forcing, this approach has no real data source to read a raw code from, so veg_type is a calibratable parameter, rounded to the nearest integer class number and published as-is. Pair with vegClass_SINDBAD, which interprets a vegDynamics_constant-produced code directly against the canonical Classification_SINDBAD vocabulary.

References

Versions

  • 1.0 on 18.11.2019 [ttraut]: cleaned up the code

  • 2.0 on 10.09.2026 [skoirala]: resolved through the PFT catalog machinery instead of publishing a raw numeric code with no declared classification

  • 3.0 on 10.09.2026 [skoirala]: collapsed the five catalog-specific variants back into one approach, written directly against the canonical PFTCatalog_SINDBAD_PFT vocabulary, since this approach has no real data source to interpret a raw code against

  • 4.0 on 10.09.2026 [skoirala]: merged into the unified vegTypes process (was PFT_constant), resolving through the two-step vegTypeCatalog/vegTypeClassification mechanism

  • 5.0 on 11.09.2026 [skoirala]: split from vegTypes_constant into this, the raw-code half of the former approach – catalog resolution moved to vegTypes_SINDBAD

  • 6.0 on 12.09.2026 [skoirala]: renamed from vegTypeDynamics_constant (process vegTypeDynamics -> vegClassDynamics, paired process vegTypes -> vegClass)

  • 7.0 on 12.09.2026 [skoirala]: process renamed again, vegClassDynamics -> vegDynamics (too easily confused with vegClass)

Created by

  • unknown [xxx]
source

View Source


vegFraction ​

SindbadTEM.Processes.vegFraction Type
julia
Vegetation cover fraction.

Approaches

  • vegFraction_constant: Sets vegetation fraction as a constant value.

  • vegFraction_forcing: Gets vegetation fraction from forcing data.

  • vegFraction_scaledEVI: Vegetation fraction as a linear function of EVI.

  • vegFraction_scaledLAI: Vegetation fraction as a linear function of LAI.

  • vegFraction_scaledNDVI: Vegetation fraction as a linear function of NDVI.

  • vegFraction_scaledNIRv: Vegetation fraction as a linear function of NIRv.

  • vegFraction_scaledfAPAR: Vegetation fraction as a linear function of fAPAR.

source
vegFraction approaches
SindbadTEM.Processes.vegFraction_constant Type

Sets vegetation fraction as a constant value.

Parameters

  • Fields
    • constant_frac_vegetation: 0.5 ∈ [0.3, 0.9] => Vegetation fraction (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • states.frac_vegetation: fractional coverage of grid with vegetation

define, compute, update methods are not defined

End of getModelDocString-generated docstring for vegFraction_constant.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019 [skoirala | @dr-ko]: cleaned up the code

Created by

  • skoirala | @dr-ko
source

View Source


vegQualityTraits ​

SindbadTEM.Processes.vegQualityTraits Type
julia
Determine litter chemistry, the metabolic litter fraction, and the lignin effects on carbon-flow partitioning and decomposition rates.

Approaches

  • vegQualityTraits_constant: Sets the metabolic litter fraction and structural lignin fraction, and the litter chemistry they derive from, to uniform constant values.

  • vegQualityTraits_none: Sets the metabolic litter fraction and the lignin content to 0, and leaves decomposition rates unchanged (no lignin effect).

  • vegQualityTraits_vegType: Metabolic litter fraction and the structural lignin fraction, with vegetation-type-dependent litter chemistry, and the lignin effect on decomposition rate, as modeled in CASA.


Extended help

vegQualityTraits publishes the litter-quality properties that the carbon-flow partitioning and decomposition-rate processes need:

  • lit_frac_metabolic: fraction of leaf and fine-root litterfall routed to the metabolic litter pools. The complement, 1 - lit_frac_metabolic, goes to the structural pools.

  • lit_CN_ratio: carbon-to-nitrogen ratio of litter.

  • lit_frac_lignin: fraction of litter that is lignin.

  • lit_nonsol_to_sol_lignin: scalar converting nonsoluble to soluble lignin.

  • lit_frac_lignin_struct: lignin as a fraction of structural litter carbon, which controls how structural litter decomposition is split between the slow soil pool and the microbial pools.

  • lit_k_f_lignin: multiplicative effect of lignin content on the decomposition rate of the structural litter pools. One means no effect.

  • lit_frac_C_lignin: carbon fraction of lignin.

  • lit_frac_lignin_wood: lignin fraction of woody litter, which controls the partitioning of woody and coarse-root litter decomposition.

This was previously two separately-selected processes, metabolicFraction and lignin. They were never really independent: lignin as a fraction of structural litter depends on how much litter is structural in the first place, so lignin's CASA approach read metabolicFraction's output back from land.properties, and a mismatched pair of selections (lignin: CASA with metabolicFraction: none, say) silently produced wrong numbers rather than an error. One approach now computes both together, so a valid combination is the only combination there is.

In the legacy SINDBAD CASA implementation these quantities were MTF, LITC2N, LIGNIN, NONSOL2SOLLIGNIN, SCLIGNIN, LIGEFF, C2LIGNIN and frac_lignin_wood, all computed inside cTauVegProperties_CASA (and cQualityPartition_CASA, cFlowVegProperties_CASA for two of them).

source
vegQualityTraits approaches
SindbadTEM.Processes.vegQualityTraits_constant Type

Sets the metabolic litter fraction and structural lignin fraction, and the litter chemistry they derive from, to uniform constant values.

Parameters

  • Fields
    • lit_frac_metabolic: 0.85 ∈ [0.0, 1.0] => fraction of leaf and fine-root litterfall routed to the metabolic litter pools (units: fraction @ all timescales)

    • lit_CN_ratio: 50.0 ∈ [10.0, 150.0] => carbon-to-nitrogen ratio of litter (units: gC/gN @ all timescales)

    • lit_frac_lignin: 0.2 ∈ [0.0, 1.0] => fraction of litter that is lignin (units: fraction @ all timescales)

    • lit_nonsol_to_sol_lignin: 2.22 ∈ [1.0, 5.0] => scalar converting nonsoluble to soluble lignin (units: fraction @ all timescales)

    • lit_frac_lignin_struct: 0.3 ∈ [0.0, 1.0] => lignin as a fraction of structural litter carbon (units: fraction @ all timescales)

    • lit_frac_C_lignin: 0.65 ∈ [0.0, 1.0] => carbon fraction of lignin (units: fraction @ all timescales)

    • lit_frac_lignin_wood: 0.4 ∈ [0.0, 1.0] => lignin fraction of woody litter (units: fraction @ all timescales)

    • lit_k_f_lignin_A: 3.0 ∈ [0.0, 10.0] => sensitivity of the structural litter decomposition rate to the structural lignin fraction (unitless @ all timescales)

Methods:

precompute:

  • Inputs

    • None
  • Outputs

    • properties.lit_CN_ratio: carbon-to-nitrogen ratio of litter

    • properties.lit_frac_lignin: fraction of litter that is lignin

    • properties.lit_frac_metabolic: fraction of leaf and fine-root litterfall routed to the metabolic litter pools; the complement goes to the structural pools

    • properties.lit_nonsol_to_sol_lignin: scalar converting nonsoluble to soluble lignin

    • properties.lit_frac_C_lignin: carbon fraction of lignin

    • properties.lit_frac_lignin_struct: lignin as a fraction of structural litter carbon, which controls how structural litter decomposition is split between the slow soil pool and the microbial pools

    • properties.lit_frac_lignin_wood: lignin fraction of woody litter, which controls the partitioning of woody and coarse-root litter decomposition

    • properties.lit_k_f_lignin: multiplicative effect of lignin content on the decomposition rate of the structural litter pools; one means no effect

define, compute, update methods are not defined

End of getModelDocString-generated docstring for vegQualityTraits_constant.jl. Check the Extended help for user-defined information.


Extended help

Use this approach to hold lit_frac_metabolic and lit_frac_lignin_struct at prescribed values instead of deriving them from PFT-dependent litter chemistry. The default lit_frac_metabolic of 0.85 is the CASA intercept lit_frac_metabolic_A, which is what vegQualityTraits_vegType returns when litter contains no lignin. The decomposition-rate effect is still derived from the prescribed lignin fraction, as

lit_k_f_lignin = exp(-lit_k_f_lignin_A * lit_frac_lignin_struct)

so the rate factor stays consistent with it.

This used to be two approaches, metabolicFraction_constant and lignin_constant, merged into one so a single selection sets every litter-quality trait.

References

  • Potter, C. S., Randerson, J. T., Field, C. B., Matson, P. A., Vitousek, P. M., Mooney, H. A., & Klooster, S. A. (1993). Terrestrial ecosystem production: a process model based on global satellite and surface data. Global Biogeochemical Cycles, 7(4), 811-841.

Versions

  • 1.0 on 04.09.2026 [skoirala]: as separate metabolicFraction_constant and lignin_constant approaches

  • 2.0 on 09.09.2026 [skoirala]: merged metabolicFraction_constant and lignin_constant into vegQualityTraits_constant

Created by

  • skoirala
source

View Source


wCycle ​

SindbadTEM.Processes.wCycle Type
julia
Apply the delta storage changes to storage variables

Approaches

  • wCycle_combined: computes the algebraic sum of storage and delta storage

  • wCycle_components: update the water cycle pools per component

  • wCycle_simple: update soilW assuming a simple model structure with only soilW pools

source
wCycle approaches
SindbadTEM.Processes.wCycle_combined Type

computes the algebraic sum of storage and delta storage

Parameters

  • None

Methods:

define:

  • Inputs

    • pools.ΔTWS: change in water storage in TWS pool(s)
  • Outputs

    • pools.zeroΔTWS: helper variable to reset ΔTWS to zero in every time step

compute:

  • Inputs

    • pools.TWS: terrestrial water storage including all water pools

    • pools.ΔTWS: change in water storage in TWS pool(s)

    • pools.zeroΔTWS: helper variable to reset ΔTWS to zero in every time step

    • constants.z_zero: a helper type stable 0 to be used across all models

    • constants.o_one: a helper type stable 1 to be used across all models

  • Outputs

    • pools.ΔTWS: change in water storage in TWS pool(s)

    • pools.TWS: terrestrial water storage including all water pools

    • states.total_water: sum of water storage across all components

    • states.total_water_prev: sum of water storage across all components in previous time step

precompute, update methods are not defined

End of getModelDocString-generated docstring for wCycle_combined.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.11.2019 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :pools => :TWS, :pools => :ΔTWS, :pools => :zeroΔTWS, :constants => :z_zero, :constants => :o_one
Outputs: :pools => :ΔTWS, :pools => :TWS, :states => :total_water, :states => :total_water_prev

View Source


wCycleBase ​

SindbadTEM.Processes.wCycleBase Type
julia
Sets the basic structure of the water cycle storages.

Approaches

  • wCycleBase_simple: Through wCycle.jl, adjust/update the variables for each storage separately and for TWS.
source
wCycleBase approaches
SindbadTEM.Processes.wCycleBase_simple Type

Through wCycle.jl, adjust/update the variables for each storage separately and for TWS.

Parameters

  • None

Methods:

define:

  • Inputs

    • None
  • Outputs

    • models.w_model: a base water cycle model to loop through the pools and fill the main or component pools needed for using static arrays. A mandatory field for every water model/pool realization

precompute, compute, update methods are not defined

End of getModelDocString-generated docstring for wCycleBase_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 18.07.2023 [skoirala | @dr-ko]

Created by

  • skoirala | @dr-ko
source

View Source


waterBalance ​

SindbadTEM.Processes.waterBalance Type
julia
Water balance

Approaches

  • waterBalance_simple: Simply checks the water balance as P-ET-R-ds/dt.
source
waterBalance approaches
SindbadTEM.Processes.waterBalance_simple Type

Simply checks the water balance as P-ET-R-ds/dt.

Parameters

  • None

Methods:

compute:

  • Inputs

    • fluxes.precip: total land precipitation including snow and rain

    • states.total_water_prev: sum of water storage across all components in previous time step

    • states.total_water: sum of water storage across all components

    • states.WBP: water balance tracker pool that starts with rain and ends up with 0 after allocating to soil percolation

    • fluxes.evapotranspiration: total land evaporation including soil evaporation, vegetation transpiration, snow sublimation, and interception loss

    • fluxes.runoff: total runoff

  • Outputs

    • diagnostics.water_balance: misbalance of the water for the given time step calculated as the differences between total input, output and change in storages

define, precompute, update methods are not defined

End of getModelDocString-generated docstring for waterBalance_simple.jl. Check the Extended help for user-defined information.


Extended help

References

Versions

  • 1.0 on 11.11.2019

  • 1.1 on 20.11.2019 [skoirala | @dr-ko]:

Created by

  • skoirala | @dr-ko
source

Calculated using:

julia
Inputs: :fluxes => :precip, :states => :total_water_prev, :states => :total_water, :states => :WBP, :fluxes => :evapotranspiration, :fluxes => :runoff
Outputs: :diagnostics => :water_balance

View Source


Methods ​

SindbadTEM.Processes.abovegroundFractionTable Function
julia
abovegroundFractionTable(configuration)

The fixed, per-pool-name fraction of each carbon pool that is aboveground. Resolved for a CarbonPoolConfiguration or active cCycleBase in the same way as fireCCTable.

source
SindbadTEM.Processes.addToEachElem Function
julia
addToEachElem(v::SVector, Δv::Real)
addToEachElem(v::AbstractVector, Δv::Real)

Add a value to each element of a vector.

Arguments

  • v: A StaticVector or AbstractVector

  • Δv::Real: The value to be added to each element

Returns

  • The modified vector with Δv added to all elements

Examples

julia
julia> using StaticArraysCore: SVector
julia> v = SVector(1.0, 2.0, 3.0)
julia> addToEachElem(v, 5.0)
3-element SVector{3, Float64} with indices SOneTo(3):
 6.0
 7.0
 8.0
source
SindbadTEM.Processes.addToElem Function
julia
addToElem(v::SVector{N,T}, Δv::T, ind::Int)
addToElem(v::SVector, Δv, ind::Int)
addToElem(v::AbstractVector, Δv, ind::Int)

Add a value to a specific element of a vector.

Arguments

  • v: A StaticVector or AbstractVector

  • Δv: The value to be added

  • ind::Int: The index of the element to modify

Returns

  • The modified vector with Δv added to element at index ind

Examples

julia
julia> using StaticArraysCore: SVector
julia> v = SVector(1.0, 2.0, 3.0)
julia> addToElem(v, 5.0, 2)
3-element SVector{3, Float64} with indices SOneTo(3):
 1.0
 7.0
 3.0
source
SindbadTEM.Processes.addVec Function
julia
addVec(v::SVector, Δv::SVector)
addVec(v::AbstractVector, Δv::AbstractVector)

Add one vector to another element-wise.

Arguments

  • v: A StaticVector or AbstractVector

  • Δv: A StaticVector or AbstractVector of the same length

Returns

  • The result of adding Δv to v element-wise

Examples

julia
julia> using StaticArraysCore: SVector
julia> v = SVector(1.0, 2.0, 3.0)
julia> Δv = SVector(0.5, 1.0, 1.5)
julia> addVec(v, Δv)
3-element SVector{3, Float64} with indices SOneTo(3):
 1.5
 3.0
 4.5
source
SindbadTEM.Processes.adjustPackPoolComponents Method
julia
adjustPackPoolComponents(land, helpers, ::cCycleBase)

Scatter the combined cEco vector back into every component pool it is built from, and pack the results into land.pools.

Defined once for every cCycleBase approach. setComponentFromMainPool generates the unrolled scatter from the pool names an experiment actually configured, so an approach that adds, drops or renames a pool needs no method of its own.

all_components is every key of the element's zix except cEco itself, which is both the main pools and the leaf pools.

source
SindbadTEM.Processes.adjust_pk Method
julia
adjust_pk(c_eco_k, kValue, flowValue, maxValue, zix, helpers)
source
SindbadTEM.Processes.allocateToPools Method
julia
allocateToPools(v, group_zix, group_n, group_vals)

Spread each group's total value evenly across the pool indices in that group, writing group_vals[g] / group_n[g] into every index in group_zix[g], for every group g.

Arguments

  • v: A StaticVector or AbstractVector, e.g. a pool's carbon allocation vector

  • group_zix: A tuple of pool-index tuples, one per group, e.g. cVeg_zix

  • group_n: The number of pool indices per group, matching group_zix, e.g. cVeg_nzix

  • group_vals: An indexable collection of the total value to distribute per group (its own length may exceed the number of groups, e.g. a pool-shaped SVector of which only the first few positions hold real per-group values), e.g. c_allocation_to_veg

Returns

  • v with every group's share written into its pool indices

Notes

  • group_zix is a heterogeneous tuple of differently-sized tuples (groups need not all have the same number of pool indices), so it is recursed on via first/Base.tail rather than iterated with eachindex, which would make each element a non-concrete Union and allocate on every call.

  • group_vals is read by position (group_vals[group_index]) rather than recursed on the same way, since callers pass it as-is (e.g. c_allocation_to_veg) without converting it to a tuple first.

source
SindbadTEM.Processes.cCycleBaseZixGroups Method
julia
cCycleBaseZixGroups(helpers)

Get the zix for the groups relevant for different models of carbon cycle.

source
SindbadTEM.Processes.cFlowEdges Function
julia
cFlowEdges(T)

Return the pool-to-pool carbon flow edges of an approach as giver => taker pairs, or () if it declares none.

Notes:

  • Topology is a pool-configuration property: cFlowEdges on an approach type looks up its poolConfiguration and asks that directly. The edge lists themselves sit in the configuration files (GSI_FLOW_EDGES in GSI.jl, CASA_FLOW_EDGES in CASA.jl); a configuration with no topology of its own, such as MGMT, reuses another configuration's list.

  • Edges must name leaf pools, never groups: zix is also keyed by group names, so a group-level edge would silently expand into a cross product of links. cFlowStructure rejects this.

source
SindbadTEM.Processes.cFlowMatrix Function
julia
cFlowMatrix(c_giver, c_taker, n_pools)
cFlowMatrix(approach, pool_names)

Return the carbon flow topology as a square matrix of flow indices, with matrix[taker, giver] holding the position of that flow in the flow vector and 0 where the two pools are not connected.

Arguments

  • c_giver: the giver index of each flow, in flow-vector order

  • c_taker: the taker index of each flow, in flow-vector order

  • n_pools: the number of carbon pools, which is the size of the square matrix

  • approach: a cCycleBase approach, as a type or an instance, whose cFlowEdges declare the topology

  • pool_names: the leaf pool names in cEco index order, which is helpers.pools.components.cEco at runtime

Returns

  • A Matrix{Int} of size n_pools by n_pools

Examples

julia
julia> cFlowMatrix((1, 1, 2), (2, 3, 3), 3)
3×3 Matrix{Int64}:
 0  0  0
 1  0  0
 2  3  0

Notes:

  • Row is the taker, column is the giver, matching every dense flow array in the models (c_flow_A_array, c_flow_ME_array).

  • The two methods produce the same matrix. The three-argument form takes indices the base already resolved; the two-argument form resolves an approach's declared edges directly, repeating cFlowStructure's (giver, taker) sort so flow k here is the flow k the model packs.

  • pool_names is passed in rather than derived from poolStructure, since that flattening (getPoolInformation) lives in Sindbad.Setup, which depends on SindbadTEM rather than the other way round.

source
SindbadTEM.Processes.computeTEM Method
julia
computeTEM(tem_processes, forcing, land, model_helpers)

run the compute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.computeTEM Method
julia
computeTEM(tem_processes, forcing, land, model_helpers, ::DoDebugModel)

debug the compute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

  • ::DoDebugModel: a type dispatch to debug the compute functions of model

source
SindbadTEM.Processes.computeTEM Method
julia
computeTEM(tem_processes, forcing, land, model_helpers, ::DoNotDebugModel)

run the compute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

  • ::DoNotDebugModel: a type dispatch to not debug but run the compute functions of model

source
SindbadTEM.Processes.computeTEM Method
julia
computeTEM(tem_processes, forcing, land, model_helpers)

run the compute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.definePrecomputeTEM Method
julia
definePrecomputeTEM(tem_processes::LongTuple, forcing, land, model_helpers)

run the precompute function of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.definePrecomputeTEM Method
julia
definePrecomputeTEM(tem_processes, forcing, land, model_helpers)

run the define and precompute functions of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.edgesBetween Method
julia
edgesBetween(c_giver, c_taker, giver_zix, taker_zix)

Every flow-vector position whose giver is in giver_zix and whose taker is in taker_zix, by pool-index membership rather than by matching a literal <giver>_to_<taker> name. This lets a caller work against more than one pool structure without naming either config's specific pools: e.g. leaf shedding lands in one pool under GSI (cLitFast) and two under CASA (cLitLeafFast, cLitLeafSlow).

An empty giver_zix or taker_zix, e.g. CASA's absent cVegReserve, returns no edges rather than erroring.

source
SindbadTEM.Processes.fireCCTable Function
julia
fireCCTable(configuration)

The fixed, per-pool-name (ccMin, ccMax, weight) fire combustion-completeness table for a CarbonPoolConfiguration. Named by type, symbol, string, or a cCycleBase type/instance, like cFlowEdges, so cFireCombustionCompleteness_vanDerWerf2006 can resolve the right table for whichever pool configuration is active.

source
SindbadTEM.Processes.fireCCTable Method
julia
fireCCTable(::Type{GSI})

Derived from CASA_FIRE_CC_VANDERWERF (poolConfigurations/CASA.jl) via deriveFireCCTable. cVegRoot and cVegReserve, which deriveFireCCTable cannot resolve from CASA's names or aliases, are merged in afterward.

Defined as a method body rather than a top-level const since GSI.jl loads before CASA.jl, and a method body's global references resolve at call time.

source
SindbadTEM.Processes.getAbovegroundFractionFromParams Method
julia
getAbovegroundFractionFromParams(c_fire_aboveground_fraction, table, helpers)

Scatter a per-pool-name aboveground-fraction table to the active cEco indices.

source
SindbadTEM.Processes.getParamForVegType Method
julia
getParamForVegType(per_vegtype, veg_type_name, scalar)

Look up veg_type_name in a table already re-keyed by getParamsPerVegType, and scale it by scalar (a bounded, optimizable parameter), matching the scalar's numeric type via oftype so the result doesn't silently widen to Float64.

source
SindbadTEM.Processes.getParamsPerVegType Method
julia
getParamsPerVegType(base_table::NamedTuple, ::Type{Classification})

Re-key a base table declared in ParamsForVegClasses.jl (always keyed by Classification_SINDBAD's canonical names) onto Classification's own class names. One-to-one entries (including Classification_SINDBAD, the identity case) pass the base value through unchanged under the new name; one-to-many entries (e.g. Classification_PlantForm's :tree/:shrub/:herb/:unknown) get the unweighted average of every canonical class the group's own vegClasses entry names. No special-casing identity vs. grouping: both are "average over however many targets this entry names."

source
SindbadTEM.Processes.getVectorOfType Function
julia
getVectorOfType(source_vector, n, fill_value=zero)

Return a vector of n elements of the same kind as source_vector: its element type, and static when source_vector is static. Every element is fill_value(eltype(source_vector)). Only the type of source_vector is used, so n need not match its length.

At the carbon-cycle call sites the type comes from the pools and the length from the flows, as in getVectorOfType(cEco, length(c_taker), one), which gives one value per carbon flow.

The methods are inlined so that a length known when compiling the caller, such as length(c_taker) for a tuple c_taker, also fixes the length of a static result. The result type is then concrete, which a static vector built from a run-time Int is not.

Arguments

  • source_vector: the vector whose element type and container kind to follow, usually cEco

  • n: length of the returned vector

  • fill_value: zero or one, the function rather than a number. Defaults to zero

Returns

  • A vector of n elements, an SVector when source_vector is static

Examples

julia
julia> getVectorOfType([1.0, 2.0, 3.0], 2)
2-element Vector{Float64}:
 0.0
 0.0

julia> getVectorOfType([1.0, 2.0, 3.0], 2, one)
2-element Vector{Float64}:
 1.0
 1.0
source
SindbadTEM.Processes.getZix Function
julia
getZix(dat::SubArray)
getZix(dat::SubArray, zixhelpersPool)
getZix(dat::Array, zixhelpersPool)
getZix(dat::SVector, zixhelpersPool)

Return the indices of a view for a subarray or return the provided indices.

Arguments

  • dat: A SubArray, Array, or SVector

  • zixhelpersPool: (Optional) Helper indices to return if dat is not a SubArray

Returns

  • A tuple of indices for the array view

Examples

julia
julia> arr = [1, 2, 3, 4, 5]
julia> view_arr = view(arr, 2:4)
julia> getZix(view_arr)
(2:4,)
source
SindbadTEM.Processes.meCASAFlowsLitter Method
julia
meCASAFlowsLitter(eff_cLit_to_cMicSurf, eff_cLitRootFine_to_cMicSoil,
    eff_cLitRootCoarse_to_cMicSoil, eff_cLit_to_cSoilSlow,
    eff_cLitRootFine_to_cSoilSlow, zix)

The CASA microbial carbon-transfer efficiency of every litter decomposition pathway, as (giver_zix, taker_zix, value) triples matched by pool-index membership (setMEFlow/edgesBetween in landUtils.jl), not by a literal <giver>_to_<taker> name.

The surface microbial pathway retains least, the direct route into slow soil most, and fine roots sit between the two because they decompose in the soil rather than at the surface.

Only ever called from cCycleBase_CASA's own precompute, so zix is always CASA's. Declared as a function rather than written inline in precompute, and read from one place, since this is the assignment whose cLitRootCoarse and cLitWood columns were transposed for as long as it was a dense array indexed by position.

source
SindbadTEM.Processes.meCASAFlowsSoil Method
julia
meCASAFlowsSoil(eff_cSoil_to_cMicSoil, eff_cSoilSlow_to_cSoilOld, zix)

The CASA microbial carbon-transfer efficiency of the soil decomposition pathways, as (giver_zix, taker_zix, value) triples matched by pool-index membership (setMEFlow/edgesBetween in landUtils.jl), not by a literal <giver>_to_<taker> name.

The two routes carry the same CASA value but are separate parameters so that stabilization into old soil carbon and the return to the microbial pool can be calibrated apart.

source
SindbadTEM.Processes.meTextureEfficiency Method
julia
meTextureEfficiency(effA, effB, st_clay, st_silt)

The CASA microbial carbon-transfer efficiency of soil texture, clamp_zero_one(effA - effB * (mean(st_silt) + mean(st_clay))).

The soil profile collapses to a single mean clay and silt fraction, as in cQualityPartitionSoilProperties_clay. Shared because the same law is the whole of the three _texture approaches.

source
SindbadTEM.Processes.precomputeTEM Method
julia
precomputeTEM(tem_processes, forcing, land, model_helpers)

run the precompute function of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.precomputeTEM Method
julia
precomputeTEM(tem_processes, forcing, land, model_helpers, ::DoDebugModel)

debug the precompute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

  • ::DoDebugModel: a type dispatch to debug the compute functions of model

source
SindbadTEM.Processes.precomputeTEM Method
julia
precomputeTEM(tem_processes, forcing, land, model_helpers, ::DoNotDebugModel)

run the precompute function of SINDBAD TEM processes

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

  • ::DoNotDebugModel: a type dispatch to not debug but run the compute functions of model

source
SindbadTEM.Processes.precomputeTEM Method
julia
precomputeTEM(tem_processes, forcing, land, model_helpers)

run the precompute function of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.processPackNT Method
julia
processPackNT(ex)

Internal helper function to process pack named tuple expressions.

Arguments

  • ex: An expression to process

Returns

  • A processed expression for packing into a named tuple

Notes

  • This is an internal function used by the @pack_nt macro
source
SindbadTEM.Processes.processUnpackNT Method
julia
processUnpackNT(ex)

Internal helper function to process unpack named tuple expressions.

Arguments

  • ex: An expression to process

Returns

  • A processed expression for unpacking from a named tuple

Notes

  • This is an internal function used by the @unpack_nt macro
source
SindbadTEM.Processes.repElem Function
julia
repElem(v::AbstractVector, v_elem, ind::Int)
repElem(v::SVector{N,T}, v_elem::T, ind::Int)
repElem(v::SVector, v_elem, ind::Int)

Replace an element of a vector with a new value.

Arguments

  • v: A StaticVector or AbstractVector

  • v_elem: The new value to assign

  • ind::Int: The index of the element to replace

Returns

  • The modified vector with element at index ind replaced by v_elem

Examples

julia
julia> using StaticArraysCore: SVector
julia> v = SVector(1.0, 2.0, 3.0)
julia> repElem(v, 5.0, 2)
3-element SVector{3, Float64} with indices SOneTo(3):
 1.0
 5.0
 3.0
source
SindbadTEM.Processes.repVec Function
julia
repVec(v::AbstractVector, v_new)
repVec(v::SVector, v_new)

Replace the values of a vector with a new value or vector.

Arguments

  • v: An AbstractVector or StaticVector

  • v_new: A new value or vector to replace the old values

Returns

  • The modified vector with values replaced

Examples

julia
julia> using StaticArraysCore: SVector
julia> v = SVector(1.0, 2.0, 3.0)
julia> repVec(v, 5.0)
3-element SVector{3, Float64} with indices SOneTo(3):
 5.0
 5.0
 5.0
source
SindbadTEM.Processes.resolveVegClassification Method
julia
resolveVegClassification(::Type{Classification}, canonical_name::Symbol)

Resolve a canonical Classification_SINDBAD name to Classification's own class name. Works uniformly whether Classification's crosswalk targets are one-to-one (including Classification_SINDBAD itself, true identity) or one-to-many (Classification_PlantForm), since both reduce to "does this entry's target, normalized to a tuple, contain canonical_name".

Errors, naming the classification and the unmatched name, if no class of Classification covers canonical_name; see validateVegTypeCoverage for why this should never fire once every catalog is included.

Walks vegClasses(T) by compile-time tail-recursion (_resolveVegClassification) rather than a for loop: a one-to-many catalog's entries have differently-sized target tuples, so a for loop's iteration variable has no single concrete type and Julia falls back to allocating code. Recursing on Base.tail keeps the (always Symbol) return type concrete.

source
SindbadTEM.Processes.setComponentFromMainPool Method
julia
setComponentFromMainPool(land, helpers, Val{s_main}, Val{s_comps}, Val{zix})

Set component pool values using values from the main pool.

Arguments

  • land: A core SINDBAD NamedTuple containing all variables for a given time step

  • helpers: Helper NamedTuple with necessary objects for model run and type consistencies

  • ::Val{s_main}: A NamedTuple with names of the main pools

  • ::Val{s_comps}: A NamedTuple with names of the component pools

  • ::Val{zix}: A NamedTuple with zix (indices) of each pool

Returns

  • Generated code expression to set component pools from main pool

Notes

  • Names are generated using components in helpers so model formulations are not specific for pool names

  • This is a generated function that creates code at compile time

source
SindbadTEM.Processes.setFlowValue Method
julia
setFlowValue(flow_vec, c_giver, c_taker, giver_zix, taker_zix, value)

Write value into every flow-vector position whose giver is in giver_zix and whose taker is in taker_zix (via edgesBetween), and return the vector unchanged when no flow matches – e.g. a pool structure that lacks either group entirely.

setMEFlow is this function under the name cMicrobialEfficiency reads it in as. cQualityPartition goes through neither this nor named edges: its groups are resolved to flow-vector positions once, in cCycleBase's deriveQPGroups, and its approaches write directly at those positions.

source
SindbadTEM.Processes.setMEFlow Method
julia
setMEFlow(me_vec, c_giver, c_taker, giver_zix, taker_zix, value)

Write value into every flow-vector position whose giver is in giver_zix and whose taker is in taker_zix (via setFlowValue/edgesBetween in landUtils.jl), and return the vector unchanged when no flow matches.

There is no group counterpart here: an efficiency is a per-flow retention fraction rather than a partition, so a giver's outgoing efficiencies are under no obligation to sum to one.

Used only by cCycleBase_CASA's own precompute, to seed c_flow_ME_vec with CASA's static defaults (meCASAFlowsLitter/meCASAFlowsSoil); the per-group cMicrobialEfficiencyc{Lit,Mic,Soil} approaches find their flows through zix directly, without going through this function.

source
SindbadTEM.Processes.setMainFromComponentPool Method
julia
setMainFromComponentPool(land, helpers, Val{s_main}, Val{s_comps}, Val{zix})

Set main pool values from component pool values.

Arguments

  • land: A core SINDBAD NamedTuple containing all variables for a given time step

  • helpers: Helper NamedTuple with necessary objects for model run and type consistencies

  • ::Val{s_main}: A NamedTuple with names of the main pools

  • ::Val{s_comps}: A NamedTuple with names of the component pools

  • ::Val{zix}: A NamedTuple with zix (indices) of each pool

Returns

  • Generated code expression to set main pool from component pools

Notes

  • Names are generated using components in helpers so model formulations are not specific for pool names

  • This is a generated function that creates code at compile time

source
SindbadTEM.Processes.totalS Method
julia
totalS(s, sΔ)
totalS(s)

Return the total storage amount given storage and delta storage without creating temporary arrays.

Arguments

  • s: Storage array

  • sΔ: (Optional) Delta storage array

Returns

  • Total storage amount (sum of s and sΔ if provided, or just s)

Examples

julia
julia> s = [1.0, 2.0, 3.0]
julia> sΔ = [0.1, 0.2, 0.3]
julia> totalS(s, sΔ)
6.6
julia> totalS(s)
6.0
source
SindbadTEM.Processes.totalS_indices Method
julia
totalS_indices(s, s_indices)

Return the total storage amount for specific indices of a storage array.

source
SindbadTEM.Processes.unsatK Method

calculates the soil hydraulic conductivity for a given moisture based on Saxton; 2006

Inputs:

  • land.pools.soilW[sl]

  • land.properties.sp_[w_sat/β/k_sat]: hydraulic parameters for each soil layer

Outputs:

  • K: the hydraulic conductivity at unsaturated land.pools.soilW [in mm/day]

Modifies:

Extended help

References:

  • Saxton, K. E., & Rawls, W. J. (2006). Soil water characteristic estimates by texture & organic matter for hydrologic solutions. Soil science society of America Journal, 70[5], 1569-1578.

Versions:

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]:

  • 1.1 on 03.12.2019 [skoirala | @dr-ko]: included the option to handle lookup table when set to true from model_run.json

Created by

  • skoirala | @dr-ko

Notes:

  • This function is a part of pSoil; but making the looking up table & setting the soil properties is handled by soilWBase [by calling this function]

  • is also used by all approaches depending on kUnsat within time loop of coreTEM

source
SindbadTEM.Processes.vegClasses Function
julia
vegClasses(catalog)

Return a catalog's class table as a Tuple of (name::Symbol => code::Int, canonical_target) entries, one per class, exactly as documented by the source for name/code, plus the class(es) it maps onto in the canonical Classification_SINDBAD vocabulary.

canonical_target is a single Symbol for a one-to-one catalog, or an NTuple of Symbols for a one-to-many grouping catalog (e.g. Classification_PlantForm).

Checked at load time by validateVegTypeCrosswalks and validateVegTypeCoverage below.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_MODIS_BGC})

The BIOME-BGC legend, Table 6 of the MCD12Q1 user guide (Running et al., 2004), transcribed exactly as documented for the name => code half of each entry. Every vegetated class is defined by leaf-habit/phenology alone with no canopy-height or cover threshold, so each conflates trees and shrubs of the same phenology into one class, coarser than the canonical Classification_SINDBAD split.

  • Evergreen_Needleleaf_Vegetation, Evergreen_Broadleaf_Vegetation, Deciduous_Needleleaf_Vegetation, Deciduous_Broadleaf_Vegetation: mapped to the correspondingly named IGBP forest class.

  • Annual_Broadleaf_Vegetation ("at least 60% cultivated broadleaf crops"): mapped to Croplands.

  • Annual_Grass_Vegetation (explicitly "including cereal croplands"): mapped to Grasslands.

  • Non_Vegetated_Lands: conflates barren ground with permanent snow/ice. Mapped to Barren.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_MODIS_IGBP})

The IGBP land cover legend, Table 3 of the MCD12Q1/MCD12C1 user guide (Sulla-Menashe & Friedl, 2018), transcribed exactly as documented for the name => code half of each entry. Every class here has the identically named class in the canonical Classification_SINDBAD vocabulary (which was itself copied from this legend) as its crosswalk target – a true identity mapping today, kept explicit rather than assumed so it is checked the same way as every other catalog's crosswalk (see validateVegTypeCrosswalks).

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_MODIS_LAI})

The LAI/fPAR biome legend, Table 5 of the MCD12Q1 user guide (Myneni et al., 2002), transcribed exactly as documented for the name => code half of each entry. The forest, savanna, urban and water classes map directly onto the canonical Classification_SINDBAD name of the same meaning. Three do not:

  • Grasslands: this legend's own definition explicitly includes "cereal croplands," so mapping it to IGBP's Grasslands alone drops that signal.

  • Shrublands: IGBP splits shrubland by canopy closure (Closed_Shrublands/Open_Shrublands), which this legend does not. Mapped to Open_Shrublands as a default.

  • Non_Vegetated_Lands: conflates barren ground with permanent snow/ice. Mapped to Barren.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_MODIS_PFT})

The Plant Functional Type legend, Table 7 of the MCD12Q1 user guide (Bonan, 2002), transcribed exactly as documented for the name => code half of each entry.

Two classes have no clean 1:1 match onto the canonical Classification_SINDBAD vocabulary (itself copied from IGBP):

  • Shrub: IGBP splits shrubland by canopy closure (Closed_Shrublands/Open_Shrublands), which this legend does not. Mapped to Open_Shrublands.

  • Cereal_Croplands and Broadleaf_Croplands: IGBP has one undifferentiated Croplands class; both map to it.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_MODIS_UMD})

The University of Maryland (UMD) legend, Table 4 of the MCD12Q1/MCD12C1 user guide (Hansen et al., 2000), transcribed exactly as documented for the name => code half of each entry. Classes 1-14 share their definitions verbatim with the IGBP legend, so they map onto the identically named class in the canonical Classification_SINDBAD vocabulary (itself copied from IGBP). Two classes do not:

  • Non_Vegetated_Lands (15) conflates IGBP's separate Permanent_Snow_and_Ice (15) and Barren (16) into one class. Mapped here to :Barren, a placeholder that understates any snow/ice extent – confirm against the user's judgment or the literature before relying on it for calibration.

  • Water_Bodies is class 0 here (IGBP has it as 17); the crosswalk maps the code, not the number, so this is unaffected.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_PlantForm})

Groups Classification_SINDBAD's canonical classes into a coarse plant-form split: :tree, :shrub, :herb, and :unknown for every canonical class none of the three science groups covers. This is the one-to-many crosswalk example: each entry's target is a tuple of several canonical names, not one.

:unknown is an explicit, load-time-validated catch-all (checked by validateVegTypeCoverage) for Water_Bodies, Urban_and_Built_up_Lands, Permanent_Snow_and_Ice, Barren, and Unclassified.

The numeric code half of each entry is vestigial here: nothing decodes a raw "plant-form code" from forcing data, and no approach resolves a constant against this catalog. Kept only for shape-consistency with every other VegClassification.

source
SindbadTEM.Processes.vegClasses Method
julia
vegClasses(::Type{Classification_SINDBAD})

SINDBAD's canonical vegetation-type classes: the one name set every downstream science approach is written against. Copied from Classification_MODIS_IGBP (same names, same codes), but kept as its own catalog so it is free to gain classes IGBP does not have, while MODIS_IGBP.jl stays an exact transcription of the MODIS document. Every other catalog's vegClasses crosswalks onto these names; this catalog's own entries map onto themselves.

source
SindbadTEM.Processes.vegTypeCanonicalName Method
julia
vegTypeCanonicalName(catalog, code)

Resolve a numeric class code to its catalog's raw crosswalk target: the single canonical name for a one-to-one catalog, or the tuple of canonical names for a one-to-many catalog. Most callers want resolveVegClassification instead, which resolves all the way to one class name regardless of catalog kind.

source
SindbadTEM.Processes.vegTypeCode Method
julia
vegTypeCode(catalog, name)

Resolve a catalog name to its numeric class code, erroring on an unknown name.

source
SindbadTEM.Processes.vegTypeName Method
julia
vegTypeName(catalog, code)

Resolve a numeric class code to its catalog name, erroring rather than silently clamping when the code is not one of the catalog's own.

source
SindbadTEM.Processes.@add_to_elem Macro
julia
@add_to_elem

Macro to add a value to an element of a vector or static vector.

Arguments

  • outparams::Expr: Expression in the form value ⇒ (vector, index)

Examples

julia
julia> using StaticArraysCore: SVector
julia> cOther = SVector(100.0f0, 1.0f0)
julia> @add_to_elem 1.0f0 ⇒ (cOther, 1)
julia> cOther
2-element SVector{2, Float32} with indices SOneTo(2):
 101.0f0
   1.0f0
source
SindbadTEM.Processes.@pack_nt Macro
julia
@pack_nt

Macro to pack variables into a named tuple.

Arguments

  • outparams: Expression or block of expressions in the form (vars...) ⇒ target or var ⇒ target

Examples

julia
julia> land = (; diagnostics = (; a = 1, b = 2), fluxes = (; c = 3, d = 4))
julia> a, b = 10, 20
julia> @pack_nt (a, b) ⇒ land.diagnostics
julia> land.diagnostics
(a = 10, b = 20)
source
SindbadTEM.Processes.@rep_elem Macro
julia
@rep_elem

Macro to replace an element of a vector or static vector.

Arguments

  • outparams::Expr: Expression in the form value ⇒ (vector, index)

Examples

julia
julia> using StaticArraysCore: SVector
julia> cOther = SVector(100.0f0, 1.0f0)
julia> @rep_elem 50.0f0 ⇒ (cOther, 1)
julia> cOther
2-element SVector{2, Float32} with indices SOneTo(2):
  50.0f0
   1.0f0
source
SindbadTEM.Processes.@rep_vec Macro
julia
@rep_vec

Macro to replace a vector or static vector with a new value.

Arguments

  • outparams::Expr: Expression in the form vector ⇒ new_value

Examples

julia
julia> _vec = [100.0f0, 2.0f0]
julia> @rep_vec _vec ⇒ 1.0f0
julia> _vec
2-element Vector{Float32}:
 1.0f0
 1.0f0
source
SindbadTEM.Processes.@unpack_nt Macro
julia
@unpack_nt

Macro to unpack variables from a named tuple.

Arguments

  • inparams: Expression or block of expressions in the form (vars...) ⇐ source or var ⇐ source

Examples

julia
julia> forcing = (; f1 = 1.0, f2 = 2.0)
julia> @unpack_nt (f1, f2) ⇐ forcing
julia> f1, f2
(1.0, 2.0)
source

Internal ​

SindbadTEM.Processes.CASA_CN_ratio Constant
julia
CASA_CN_ratio

Carbon-to-nitrogen ratio of each CASA carbon pool, per pool name. Fixed data, not a parameter; calibration happens through CN_ratio_scalar in cCycleBase_CASA instead. Only the four vegetation pools have a physically meaningful ratio; every other pool is 0.0.

source
SindbadTEM.Processes.CASA_FIRE_CC_VANDERWERF Constant
julia
CASA_FIRE_CC_VANDERWERF

Van der Werf et al. (2006) fire combustion completeness, (ccMin, ccMax, weight) triples (see FIRE_CC_NO_BURN/FIRE_CC_HI_BURN) per CASA pool name. Fixed data, not a parameter; calibration happens through fire_cc_scalar in cFireCombustionCompleteness_vanDerWerf2006 instead.

Root pools and every fine litter/soil pool downstream of them do not burn; leaf and its litter, wood and its litter, and the surface microbial pool do.

source
SindbadTEM.Processes.CASA_FLOW_EDGES Constant
julia
CASA_FLOW_EDGES

The 22 edges of cCycleBase_CASA. See cFlowEdges for the ordering convention and why edges must name leaf pools.

source
SindbadTEM.Processes.CASA_TAU_NON_VEG_POOLS Constant
julia
CASA_TAU_NON_VEG_POOLS

Turnover time (years) of every CASA carbon pool except the four vegetation-compartment pools (cVegRootFine, cVegRootCoarse, cVegWood, cVegLeaf), per pool name. k = 1.0/value is computed at the point of use; fixed data, not a parameter, since calibration happens through k_c_scalar in cCycleBase_CASA instead.

The four vegetation-compartment pools are looked up instead at runtime from CVEG_ROOTFINE_AGE_PER_VEGTYPE/CVEG_LEAF_AGE_PER_VEGTYPE/ CVEG_ROOTCOARSE_AGE_PER_VEGTYPE/CVEG_WOOD_AGE_PER_VEGTYPE (ParamsForVegClasses.jl) by land.states.veg_type_name, in cCycleBase_CASA's precompute.

source
SindbadTEM.Processes.C_REMAIN_PER_VEGTYPE Constant
julia
C_REMAIN_PER_VEGTYPE

default minimum remaining carbon content (gC/m2) of each vegetation pool after fire or site disturbance, per canonical vegetation type (Classification_SINDBAD) name.

These numbers are ingested by cCycleBase and scaled by a scalar parameter that can be optimized in a calibration run.

source
SindbadTEM.Processes.GSI_CN_ratio Constant
julia
GSI_CN_ratio

Carbon-to-nitrogen ratio of each GSI carbon pool, per pool name. Fixed data, not a parameter; calibration happens through CN_ratio_scalar in the owning approach instead. Only the four vegetation pools have a physically meaningful ratio; every other pool is 0.0.

source
SindbadTEM.Processes.GSI_FLOW_EDGES Constant
julia
GSI_FLOW_EDGES

The 11 edges shared by cCycleBase_GSI, _GSI_PlantForm, and _MGMT (whose products are decay-only and add no edges). See cFlowEdges for the ordering convention and why edges must name leaf pools.

source
SindbadTEM.Processes.GSI_TAU_DEFAULT Constant
julia
GSI_TAU_DEFAULT

Turnover time (years) of each GSI carbon pool. k = 1.0/turnover_time is computed at the point of use; fixed data, not a parameter.

Only cLitFast/cLitSlow/cSoilSlow/cSoilOld/cVegReserve are read from this table directly, since none vary by vegetation type. cVegRoot, cVegWood, and cVegLeaf are looked up instead at runtime from CVEG_ROOTFINE_AGE_PER_VEGTYPE/CVEG_WOOD_AGE_PER_VEGTYPE/ CVEG_LEAF_AGE_PER_VEGTYPE (ParamsForVegClasses.jl) by land.states.veg_type_name; this table's entries for those three pools are kept only as a historical record of the pre-refactor defaults.

source
SindbadTEM.Processes.MGMT_PRODUCTS_TAU Constant
julia
MGMT_PRODUCTS_TAU

Turnover time (years) of the two harvested-product pools poolStructure(MGMT) adds on top of the GSI structure: cProductsWood/cProductsCrop. Fixed data, not a parameter; calibration happens through k_c_products_wood_scalar/k_c_products_crop_scalar in cCycleBase_MGMT instead.

Unlike every other pool cCycleBase_MGMT's turnover loop covers, these two do not vary by vegetation type, so its precompute merges this fixed pair into its runtime, per-vegtype compartment-turnover table rather than looking them up by veg_type_name.

source
SindbadTEM.Processes.cFlowEdgeIndex Method
julia
cFlowEdgeIndex(params, helpers, pool_name, edge)

Resolve one end of a flow edge to the single cEco index it names, erroring with the offending name when it resolves to no pool or to more than one.

source
SindbadTEM.Processes.cFlowNamePosition Method
julia
cFlowNamePosition(approach_name, pool_names, pool_name, edge)

Resolve one end of a flow edge to the single position it holds in pool_names, erroring with the offending name when it is absent or repeated.

Mirrors cFlowEdgeIndex, which does the same against helpers.pools.zix at run time. A name spanning more than one position is a group, an alias, or a multi-layer pool, and an edge naming one would expand into a cross product of links rather than the single link it reads as.

source
SindbadTEM.Processes.cFlowStructure Method
julia
cFlowStructure(params::cCycleBase, cEco, helpers)

Resolve an approach's cFlowEdges against the configured pool structure, returning (c_flow_order, c_taker, c_giver, pool_names, flow_edges, c_flow_taker_turnover_rank, c_flow_A_vec, c_flow_QP_vec, c_flow_ME_vec).

Notes:

  • pool_names is cEco_index => pool_name pairs; flow_edges is flow_order => (giver_name => taker_name) pairs, one per flow.

  • c_flow_A_vec, c_flow_QP_vec and c_flow_ME_vec are allocated here, neutral and one per flow, since their length and order come from the topology resolved here rather than from any cFlow, cQualityPartition, or cMicrobialEfficiency approach.

  • Flows are sorted by (giver, taker) regardless of declaration order; this is also the index order of c_flow_A_vec, c_flow_QP_vec, c_flow_ME_vec, and the d_cFlow output dimension.

  • Errors on an edge naming a pool the structure lacks, an edge naming a group or alias instead of a leaf pool, or a duplicated edge.

source
SindbadTEM.Processes.calcPropsSaxton1986 Method

calculates the soil hydraulic properties based on Saxton 1986

Extended help

source
SindbadTEM.Processes.calcPropsSaxton2006 Method

calculates the soil hydraulic properties based on Saxton 2006

Inputs:

  • : texture-based parameters

  • info

  • land.properties.sp_[clay/sand]: in fraction

  • sl: soil layer to calculate property for

Outputs:

  • hydraulic conductivity [k], matric potention [ψ] & porosity (θ) at saturation [Sat], field capacity [_fc], & wilting point ( w_wp)

  • properties of moisture-retention curves: (α & β)

Modifies:

Extended help

References:

  • Saxton, K. E., & Rawls, W. J. (2006). Soil water characteristic estimates by texture & organic matter for hydrologic solutions. Soil science society of America Journal, 70[5], 1569-1578.

Versions:

  • 1.0 on 22.11.2019 [skoirala | @dr-ko]:

Created by

  • skoirala | @dr-ko

Notes:

  • _fc: Field Capacity moisture [33 kPa], #v

  • PAW: Plant Avail. moisture [33-1500 kPa, matric soil], #v

  • PAWB: Plant Avail. moisture [33-1500 kPa, bulk soil], #v

  • SAT: Saturation moisture [0 kPa], #v

  • w_wp: Wilting point moisture [1500 kPa], #v

source
SindbadTEM.Processes.carbonPoolConfiguration Method
julia
carbonPoolConfiguration(name::Symbol)

Resolve a CarbonPoolConfiguration by name. Errors with what was tried rather than surfacing an UndefVarError or silently returning nothing.

source
SindbadTEM.Processes.compute Method
julia
compute(params<:LandEcosystem, forcing, land, helpers)

Update the model state and variables in time using defined and precomputed objects.

Description

The compute function is responsible for advancing the state of a SINDBAD model or approach in time. It uses previously defined and precomputed variables, along with updated forcing data, to calculate the time-dependent changes in the land model state. This function ensures that the model evolves dynamically based on the latest inputs and precomputed states.

Arguments

  • params: The parameter structure for the specific SINDBAD process or approach.

  • forcing: External forcing data required for the process or approach.

  • land: The land model state, which includes pools, diagnostics, and properties.

  • helpers: Additional helper functions or data required for computations.

Returns

  • The updated land model state with time-dependent changes applied.

Behavior

  • For each SINDBAD process or approach, the compute function updates the land model state based on the specific requirements of the process or approach.

  • It may include operations like updating pools, recalculating fluxes, or modifying diagnostics based on time-dependent forcing and precomputed variables.

  • This function is typically called iteratively to simulate the temporal evolution of the process.

Example

julia
# Example usage for a specific model
land = compute(params::ambientCO2_constant, forcing, land, helpers)

Notes:

The compute function is essential for SINDBAD models and approaches that require dynamic updates to the land model state over time. It ensures that the model evolves consistently with the defined and precomputed variables, as well as the latest forcing data. This function is a core component of the SINDBAD framework's time-stepping process

source
SindbadTEM.Processes.define Method
julia
define(params<:LandEcosystem, forcing, land, helpers)

Define and initialize arrays and variables for a SINDBAD model or approach.

Description

The define function is responsible for defining and initializing arrays for variables of pools or states that are required for a SINDBAD model or approach. It is typically called once to set up memory-allocating variables whose values can be overwritten during model computations.

Arguments

  • params: The parameter structure for the specific SINDBAD model or approach.

  • forcing: External forcing data required for the model or approach.

  • land: The land model state, which includes pools, diagnostics, and properties.

  • helpers: Additional helper functions or data required for initialization.

Returns

  • The updated land model state with defined arrays and variables.

Behavior

  • For each SINDBAD model or approach, the define function initializes arrays and variables based on the specific requirements of the model or approach.

  • It may include operations like unpacking parameters, defining arrays, or setting default values for variables.

  • This function is typically used to prepare the land model state for subsequent computations.

  • It is called once at the beginning of the simulation to set up the necessary variables. So, any variable whole values are changing based on model parameters so actually be overwritten in the precompute or compute function.

source
SindbadTEM.Processes.define Method
julia
define(params::vegClass, forcing, land, helpers)

Shared define for every vegClass approach: packs an instance of the approach's resolved target classification into land.vegClass, so downstream consumers (e.g. vegQualityTraits_vegType) can read back which classification is active and derive their own per-classification default tables from it via getParamsPerVegType.

Declared once here, generically over vegClass, since every approach does exactly this and nothing else at define time.

source
SindbadTEM.Processes.defineTEM Method
julia
defineTEM(tem_processes::LongTuple, forcing, land, model_helpers)

run the precompute function of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.defineTEM Method
julia
defineTEM(tem_processes, forcing, land, model_helpers)

run the define and precompute functions of SINDBAD TEM processes to instantiate all fields of land

Arguments:

  • tem_processes: a list of SINDBAD TEM processes to run

  • forcing: a forcing NT that contains the forcing time series set for ALL locations

  • land: a core SINDBAD NT that contains all variables for a given time step that is overwritten at every timestep

  • model_helpers: helper NT with necessary objects for model run and type consistencies

source
SindbadTEM.Processes.deriveFireCCTable Method
julia
deriveFireCCTable(fine_table, coarse_pool_names, fine_configuration)

Build a coarser pool-name-keyed fire combustion completeness table from a finer one. For each name in coarse_pool_names: a name fine_table already has directly is passed through unchanged; a name declared in poolAliases(fine_configuration) is averaged over its constituent pools – the same "average over however many targets this entry names" rule getParamsPerVegType uses for vegetation classifications, applied along the pool-name axis instead. A name that is neither is left out of the result and must be supplied independently afterward.

source
SindbadTEM.Processes.getCNfromParams Method
julia
getCNfromParams(CN_ratio_cVeg, table, cn_scalar, helpers)

Same idea as getKfromTau, for the vegetation carbon-to-nitrogen ratio: multiplies each table (GSI_CN_ratio/CASA_CN_ratio) entry by cn_scalar directly, with no turnover-time inversion, writing into CN_ratio_cVeg. Only the single-scalar form exists, since every cCycleBase approach applies one shared CN_ratio_scalar across all pools.

source
SindbadTEM.Processes.getFireCCFromParams Method
julia
getFireCCFromParams(c_fire_ccMin, c_fire_ccMax, table, scalar, helpers)

Same idea as getKfromTau/getCNfromParams, but scattering a two-component (ccMin, ccMax) pair per pool instead of a single scalar – table's entries are (ccMin, ccMax, weight) triples (CASA_FIRE_CC_VANDERWERF/ GSI_FIRE_CC_VANDERWERF, resolved for the active configuration via fireCCTable); weight, a reserved autoregressive filter weight, is intentionally not read here. Both components are scaled by the same shared scalar and written into c_fire_ccMin/c_fire_ccMax via repElem.

source
SindbadTEM.Processes.getKfromTau Method
julia
getKfromTau(c_eco, table, scalar, helpers)

Multiply each pool in table (a per-pool-name NamedTuple mapping to a turnover time, e.g. GSI_TAU_DEFAULT/CASA_TAU_NON_VEG_POOLS) by one(T) / T(value) * scalar, T being eltype(c_eco), writing the result into c_eco at that pool's cEco index via repElem. scalar is either one value applied to every pool or a per-pool-name NamedTuple with the same keys as table, dispatched on scalar's type.

Notes:

  • table's entries are Float64 literals regardless of the approach's working precision, so value is converted to T before use. Without this, the division promotes to Float64 and writing that into an SVector{N,Float32} via repElem silently widens the whole array from the first loop iteration on, making the function's return type an inferred union of the two element types.

  • Used by cCycleBase_GSI, cCycleBase_GSI_PlantForm, cCycleBase_MGMT and cCycleBase_CASA; the target array and whether the scalar varies by pool differ by approach, the loop does not.

source
SindbadTEM.Processes.getModelDocString Function
julia
getModelDocString()

Generate a base docstring for a SINDBAD process or approach.

Description

This function dynamically generates a base docstring for a SINDBAD process or approach by inspecting its purpose, parameters, methods, and input/output variables. It uses the stack trace to determine the calling context and retrieves the appropriate information for the process or approach.

Arguments

  • None (uses the stack trace to determine the calling context).

Returns

  • A string containing the generated docstring for the process or approach.

Behavior

  • If the caller is a process, it generates a docstring with the process's purpose and its subtypes (approaches).

  • If the caller is an approach, it generates a docstring with the approach's purpose, parameters, and methods (define, precompute, compute, update), including their inputs and outputs.

Methods

  • getModelDocString(): Determines the calling context using the stack trace and generates the appropriate docstring.

  • getModelDocString(modl_appr): Generates a docstring for a specific process or approach.

  • getModelDocStringForModel(modl): Generates a docstring for a SINDBAD process, including its purpose and subtypes.

  • getApproachDocString(appr): Generates a docstring for a SINDBAD approach, including its purpose, parameters, and methods.

  • getModelDocStringForIO(doc_string, io_list): Appends input/output details to the docstring for a given list of variables.

source
SindbadTEM.Processes.getSindbadModelOrder Method
julia
getSindbadModelOrder(model_name; all_models=standard_sindbad_model)

Return the default order of a SINDBAD model in the model list.

Arguments

  • model_name: Name of the model

  • all_models: The list of all models (default: standard_sindbad_model)

Examples

julia
julia> # Get the order of a model
julia> # getSindbadModelOrder(:gpp)
source
SindbadTEM.Processes.getSindbadModels Method
julia
getSindbadModels(; all_models=standard_sindbad_model)

Return a dictionary of SINDBAD models and their approaches.

Arguments

  • all_models: The list of all models (default: standard_sindbad_model)

Returns

  • An OrderedDict mapping model names to lists of approach names

Examples

julia
julia> # Get all models and approaches
julia> # models_dict = getSindbadModels()
source
SindbadTEM.Processes.getTakerTurnoverRank Method
julia
getTakerTurnoverRank(
    c_flow_taker_turnover_rank,
    c_flow_order,
    c_giver,
    c_taker,
    c_eco_k_base,
    cVeg,
)

Classify each carbon-flow taker by turnover relative to the other non-vegetation taker of the same giver. The returned flow-aligned rank is:

  • 1: faster of two non-vegetation takers;

  • -1: slower of two non-vegetation takers;

  • 0: the flow is not a two-taker quality partition (including flows to vegetation and givers with one non-vegetation taker).

Only non-vegetation takers participate in the count. For every giver that has a non-vegetation taker, the number of non-vegetation takers must therefore be one or two; more than two is an invalid quality-partition topology. Two takers with equal base turnover rates are also invalid because their rank is undefined.

source
SindbadTEM.Processes.giverOutflowSum Method

giverOutflowSum(c_flow_A_vec, c_giver, giv) sum of the flow vector over every flow whose giver pool is giv

source
SindbadTEM.Processes.includeApproaches Method
julia
includeApproaches(modl, dir)

Include all approach files for a given SINDBAD process.

Description

This function dynamically includes all approach files associated with a specific SINDBAD process. It searches the specified directory for files matching the naming convention <model_name>_*.jl and includes them into the current module.

Arguments

  • modl: The SINDBAD process for which approaches are to be included.

  • dir: The directory where the approach files are located.

Behavior

  • The function filters files in the specified directory to find those that match the naming convention <model_name>_*.jl.

  • Each matching file is included using Julia's include function.

Example

julia
# Include approaches for the `ambientCO2` process
includeApproaches(ambientCO2, "/path/to/approaches")
source
SindbadTEM.Processes.lightLimitedCO2 Method
julia
lightLimitedCO2(ci, Γ_star, t_two, t_three)

CO2 dependence m = (ci - Γ_) / (ci + 2Γ_) of the light limited rate of C3 photosynthesis and its sensitivity s = d ln m / d ln χ to the ratio of leaf internal to ambient CO2. Both are zero when ci is at or below Γ*.

source
SindbadTEM.Processes.precompute Method
julia
precompute(params<:LandEcosystem, forcing, land, helpers)

Update defined variables and arrays with new realizations of a SINDBAD model or approach.

Description

The precompute function is responsible for updating previously defined arrays, variables, or states with new realizations of a SINDBAD model or approach. It uses updated parameters, forcing data, and helper functions to modify the land model state. This function ensures that the model is prepared for subsequent computations with the latest parameter values and external inputs.

Arguments

  • params: The parameter structure for the specific SINDBAD model or approach.

  • forcing: External forcing data required for the model or approach.

  • land: The land model state, which includes pools, diagnostics, and properties.

  • helpers: Additional helper functions or data required for updating variables.

Returns

  • The updated land model state with modified arrays and variables.

Behavior

  • For each SINDBAD model or approach, the precompute function updates variables and arrays based on the specific requirements of the model or approach.

  • It may include operations like recalculating variables, applying parameter changes, or modifying arrays to reflect new realizations of the model.

  • This function is typically used to prepare the land model state for time-dependent computations.

Example

julia
# Example usage for a specific model
land = precompute(params::ambientCO2_constant, forcing, land, helpers)

Extended help

The precompute function is essential for SINDBAD models and approaches that require dynamic updates to variables and arrays based on new parameter values or forcing data. It ensures that the land model state is properly updated and ready for further computations, such as compute or update.

source
SindbadTEM.Processes.precompute Method
julia
precompute(params::vegClass, forcing, land, helpers)

Shared precompute for every vegClass approach: resolves land.states.veg_type via resolveVegType, against the approach's own vegTypeCatalog and resolved target classification, and packs the result back into land.states.

Declared once here, generically over vegClass, since the two traits (vegTypeCatalog, vegTypeClassification) are the only thing that ever varies between approaches.

source
SindbadTEM.Processes.resolveVegType Method
julia
resolveVegType(::Type{X}, ::Type{Classification}, raw_code) where {X <: vegClass}

Shared resolution step for every vegClass approach, in two steps:

  1. raw_code resolved against X's own source catalog (vegTypeCatalog(X)) and its crosswalk to the canonical Classification_SINDBAD name; veg_type_name_source is the source catalog's own name for that code, kept for provenance only.

  2. The canonical name resolved against Classification's own crosswalk (resolveVegClassification), giving veg_type_name, the name every downstream science approach reads. A no-op when Classification is Classification_SINDBAD itself.

raw_code is land.states.veg_type, set upstream by a vegDynamics approach; no vegClass approach reads forcing or a parameter directly.

Errors, rather than clamps, when a code or name is not known, so a bad code fails at the point it was produced instead of silently aliasing to the wrong class.

source
SindbadTEM.Processes.resolvedVegClassification Method
julia
resolvedVegClassification(::Type{X}) where {X <: LandEcosystem}

Resolve the vegTypeClassification trait's nothing default (declared in Types.jl, which cannot reference a concrete VegClassification subtype) to the canonical vocabulary, Classification_SINDBAD – the "no grouping" target every vegClass approach resolves into unless it opts into a coarser one (e.g. a _PlantForm variant).

source
SindbadTEM.Processes.rootZoneWStressor Method
julia
rootZoneWStressor(soilW, w_wp, w_awc, rooted_fraction)

Available water of the root zone normalized by its capacity, in [0, 1]. Each layer is weighted by rooted_fraction.

source
SindbadTEM.Processes.setPoolPropsFromTable Method
julia
setPoolPropsFromTable(f, acc, table::NamedTuple, zix, args...)

Fold f(acc, value, ixs, Val(pool_name), args...) over every entry of table, where ixs is the zix field of the same pool name and args are passed on to f unchanged. The loop over the pool names is unrolled at compile time, so each zix field and table value keeps its concrete type. A runtime loop over pairs(table) would make the pool name a plain Symbol and box every lookup, allocating on each call.

source
SindbadTEM.Processes.throwError Method

throwError(land, msg) display and error msg and stop when there is inconsistency

source
SindbadTEM.Processes.update Method
julia
update(params<:LandEcosystem, forcing, land, helpers)

Update the model pools and variables within a single time step when activated via inline_update in experiment_json.

Description

The update function is responsible for modifying the pools of a SINDBAD model or approach within a single time step. It uses the latest forcing data, precomputed variables, and defined parameters to update the pools. This means that the model pools, typically of the water cycle, are updated before the next processes are called.

Arguments

  • params: The parameter structure for the specific SINDBAD model or approach.

  • forcing: External forcing data required for the model or approach.

  • land: The land model state, which includes pools, diagnostics, and properties.

  • helpers: Additional helper functions or data required for computations.

Returns

  • The updated land model pool with changes applied for the current time step.

Behavior

  • For each SINDBAD model or approach, the update function modifies the pools and state variables based on the specific requirements of the model or approach.

  • It may include operations like adjusting carbon or water pools, recalculating fluxes, or updating diagnostics based on the current time step's inputs and conditions.

  • This function is typically called iteratively during the simulation to reflect time-dependent changes.

Example

julia
# Example usage for a specific model
land = update(params::ambientCO2_constant, forcing, land, helpers)

Notes:

The update function is essential for SINDBAD models and approaches that require dynamic updates to the land model state within a single time step. It ensures that the model accurately reflects the changes occurring during the current time step, based on the latest forcing data and precomputed variables. This function is a core component of the SINDBAD framework's time-stepping process.

source
SindbadTEM.Processes.validateVegTypeCoverage Method
julia
validateVegTypeCoverage()

For every VegClassification subtype meant to serve as a target classification (Classification_SINDBAD itself, and any one-to-many grouping catalog such as Classification_PlantForm, identified by having at least one tuple crosswalk target), check that every canonical class is covered by at least one of that catalog's own classes, via resolveVegClassification, erroring immediately if not.

Not checked for the one-to-one source legends (Classification_MODIS_*): those are legitimately coarser or narrower than the canonical vocabulary and are only ever used as the raw-code source half of resolveVegType, never as its target.

The reverse of validateVegTypeCrosswalks: that catches a crosswalk target that does not exist; this catches a canonical class no target classification reaches.

source
SindbadTEM.Processes.validateVegTypeCrosswalks Method
julia
validateVegTypeCrosswalks()

For every VegClassification subtype, check that each of its vegClasses entries' canonical target (or, for a one-to-many entry, every name in it) is actually one of Classification_SINDBAD's own names, erroring immediately (naming the offending catalog and class) if not.

Run once, here, after every catalog file above is included, so a stale crosswalk target fails at package load time instead of the first time that raw code shows up in real data.

source
SindbadTEM.TEMTypes.poolAliases Method
julia
poolAliases(configuration)

Extra zix names a configuration needs that its nesting cannot produce, (;) unless the configuration declares otherwise.

Only CASA declares any: its litter nests by compartment, so the fast/slow quality split cuts across the hierarchy. Every other structure nests litter by quality already and generates those names directly.

source
SindbadTEM.TEMTypes.poolAliases Method
julia
poolAliases(::Type{CASA})

The fast/slow litter grouping, which this structure's nesting cannot produce since litter nests by compartment while the fast/slow axis is quality. An alias has no backing array in land.pools, so models must iterate helpers.pools.zix.X for these names rather than reach into land.pools.X.

source
SindbadTEM.TEMTypes.poolStructure Method
julia
poolStructure(name), poolAliases(name), cFlowEdges(name)
poolStructure(configuration::CarbonPoolConfiguration), ...

Sister methods so a CarbonPoolConfiguration can be named by string ("GSI"), symbol (:GSI), or instance (GSI()), not only by type (GSI). Each method performs exactly one conversion and calls the next-more-resolved form: string to symbol, symbol to type via carbonPoolConfiguration, instance to its own type.

source
SindbadTEM.TEMTypes.poolStructure Method
julia
poolStructure(::Type{CASA})

Fourteen pools on a nested layout: roots split into fine and coarse, litter nested by compartment and then by quality, and an explicit microbial component. cEco is cVegRootFine, cVegRootCoarse, cVegWood, cVegLeaf, cLitLeafFast, cLitLeafSlow, cLitRootFineFast, cLitRootFineSlow, cLitRootCoarse, cLitWood, cMicSurf, cMicSoil, cSoilSlow, cSoilOld.

Fine-root litter carries the quality split and coarse-root litter does not, so cLitRoot nests one level deeper than the other compartments. The fast/slow quality split on the other compartments cuts across this hierarchy and is declared as poolAliases instead, the only configuration that needs any. See poolStructure(::Type{GSI}) for the shape and ordering rules that apply to every structure.

source
SindbadTEM.TEMTypes.poolStructure Method
julia
poolStructure(::Type{GSI})

Eight pools: vegetation split into root, wood, leaf and reserve, litter split by quality into fast and slow, and soil into slow and old. Shaped like the pools block of a model structure JSON; each leaf is (number of layers, initial value). Litter is already nested by quality, so cLitFast/cLitSlow are generated directly and this configuration needs no poolAliases.

source
SindbadTEM.TEMTypes.poolStructure Method
julia
poolStructure(::Type{MGMT})

The GSI structure plus a cProducts component holding harvested wood and crop carbon, 10 pools in all. Built by splatting poolStructure(GSI) in, so the two structures agree on every cEco index they share; this is why cCycleBase_MGMT reuses GSI_FLOW_EDGES unchanged. Products are decay only, with no pool-to-pool transfer, so they add no flow edges.

source