CROWN_MOD
)Crown area comes from @dietze_2008_capturing.
Crown area calculated by allometry in utils/allometry.f90:L633
(inside subroutine area_indices
), as min(1, nplant * dbh2ca(dbh, hite, sla, pft))
.
dbh2ca
is defined in utils/allometry.f90:L373
as:
ca = b1Ca[pft] * dbh ^ b2Ca[pft]
Note that crown area is restricted such that "Local LAI / Crown area" is never less than one (i.e you cannot have more crown area than leaf area index -- your maximum crown area is the leaf area index):
loclai = sla * size2bl(dbh, hite, pft) ca = min(loclai, ca)
where size2bl
is the leaf biomass allometry (so leaf biomass; therefore, sla * size2bl
gives LAI).
The allometry coefficients b1Ca
and b2Ca
have the following defaults (from init/ed_params.f90:L3055
):
b1Ca
2.490154
(constant)exp(-1.853) * exp(b1Ht(pft)) ** 1.888
; log-linear relationship with height allometryb2Ca
0.8068806
(constant)b2Ht(pft) * 1.888
; linear relationship with height allometryNote that only tropical PFTs are affected by the allometry model (IALLOM
); coefficient adjustments are wrapped in if (is_tropical(pft))
.
If two cohorts are fused, their crown areas are summed, up to a maximum of 1 (in utils/fuse_fiss_utils.f90:L2932
).
In src/dynamics/radiate_driver.f90:L550
:
If disabled, set canopy crown area for all patches to 1.
If enabled, set finite crown areas for each cohort.
Crown area array (for each cohort) is passed to the various radiative transfer models (see ICANRAD
parameter).
Inside the RTMs, it is the cai
variable.
The following sections focus on the contributions of finite canopy radius to radiative transfer calculations. For the full descriptions, consult the "Canopy radiative transfer" module section.
In the two-stream model, crown area is used to correct mu_bar
(average inverse optical depth per unit leaf and stem area) for crown area (resulting variable mu
):
mu = -etai / log(1 - cai + cai * exp(-etai / (cai * mu_bar)))
where etai
is the total area index (TAI = LAI * clumping factor + WAI) of the layer.
(If cai = 1
, this simplifies to just mu_bar
).
In the longwave (thermal), crown area is also used as a linear scaling of the blackbody emissivity.
In the shortwave two-stream model, the crown area correction also happens for direct radiation (mu0
):
mu0 = -etai / log(1 - cai + cai * exp((-proj_area * etai) / (cai * czen)))
where czen
is the cosine of the solar zenith angle (radians) and proj_area
is the projected area, calculated as a function of leaf orientation angle (orient
):
phi1 = 0.5 - orient * (0.633 + 0.33 * orient) phi2 = 0.877 * (1 - 2 * phi1) proj_area = phi1 + phi2 * czen
These calculations follow CLM 4.5 [@clm45_note] (section 3.1, eq. 3.3), which in turn is based on @sellers_1985_canopy. This is described in more detail in the canopy radiative transfer section.
In the multiple-scatter model [@zhao_2005_multiple; @zhao_2006_modeling], crown area is used calculate the exposed total area index (TAI) of each layer (locetai
):
locetai = etai / cai
Crown area is also used to adjust the layer transmittance coefficient for beam radiation (tau_beam
):
lambda = proj_area / mu tau_beam = (1 - cai) + cai * exp(-lambda * locetai)
A similar correction is applied to diffuse radiation, but the contribution from each hemisphere has to be integrated. This uses the analytical solution for that integral.
d1 = phi1 * locetai d2 = phi2 * locetai tau_diff = (1 - cai) - cai * exp(-d1 * d2) * (d1^2 * exp(d1) * eifun(-d1) + (d1 - 1))
where eifun
is the exponential integral function.
Source: dynamcs/plant_hydro.f90
.
Subroutine plant_hydro_driver
:
Crown area for each cohort calculated as crown_area / nplant
, then passed to calc_plant_water_flux
(as variable crown_area
).
Calculate the root area index (RAI) at each depth:
RAI = broot_d * SRA * root_frac / (4 * crown_area)
where SRA is the PFT specific root area parameter, and root_frac
is the fraction of roots in that layer (function of PFT parameter root_beta
and depth).
Calculate the soil-root water conductance at each depth:
gw_cond = (4 * crown_area) * soil_cond * sqrt(RAI) / (pi * dslz)
where soil_cond
is soil conductivity at that depth and dslz
is the soil layer thickness.
This is based on @katul_2003_relationship.
In file dynamics/canopy_struct_dynamics.f90
, subroutine canopy_turbulence
.
Crown area used in calculation of the wind profile extinction coefficients.
#-- dynamics/canopy_struct_dynamics.f90:L470 -- extinct_full = crown_area * exp(-0.25 * lai / crown_area) + (1 - crown_area) extinct_full = crown_area * exp(-0.5 * lai / crown_area) + (1 - crown_area) veg_wind = max(ugbmin, uh[i - 1] * extinct_half) uh[i] = uh[i - 1] * extinct_full
Note that there is a copy of the same calculation performed in double precision (subroutine canopy_turbulence8
) later in the file.
Crown area is also used to calculate the open canopy fraction of each cohort by subroutine update_patch_derived_props
(file utils/update_derived_props.f90:L43
).
That subroutine is in turn called by subroutine structural_growth_eq_0
(file dynamics/structural_growth.f90
).
This open canopy fraction is used to calculate the canopy roughness (rough
).
rough = snow_rough * snowfac_can + (soil_rough * opencan_frac + veg_rough * (1 - opencan_frac)) * (1 - snowfac_can)
Open canopy fraction is also used to calculate the net ground conductance (ggnet
):
ggnet = ggbare * ggveg / (ggveg + ggbare * (1 - opencan_frac))
N_PLANT_LIM
)Basically, N limitation places a limit on the fraction of stomata that are open (due to N limitation; cpatch%fsn
).
Calculating changes in live biomass (subroutines dbalive_dt
and dbalive_dt_eq_0
in dynamics/growth_balive.f90
).
If plant limitation enabled, call subroutine potential_N_uptake
to see what would happen if stomata were open.
This sets the value of potential N uptake (N_uptake_pot
).
If no limitation, set fraction of open stomata (from N limitation; fsn
) to 1.
Otherwise, calculate N limitation factor.
#- dynamics/growth_balive.f90:L293 nitrogen_supply = plant_N_supply_scale * broot * mineralized_soil_N fsn = nitrogen_supply / (nitrogen_supply + N_uptake_pot)
Subroutines near_bare_ground_init
and near_barea_ground_big_leaf_init
(in init/ed_nbg_init.f90
):
If there is N limitation, initialize as follows:
fast_soil_C
): 0.2slow_soil_C
): 0.01structural_soil_C
): 10.0structural_soil_L
): 10.0mineralized_soil_N
): 1.0fast_soil_N
): 1.0If no N limitation, set all of these to zero.
N_DECOMP_LIM
)Calculation of N immobilization factor (subroutine resp_f_decomp
, in dynamics/soil_respiration.f90
).
N decomposition limitation affects the decomposition fraction (csite%f_decomp
).
If no limitation, this is set to 1.
If limitation, calculate similarly to plant (supply relative to demand):
#-- dynamics/soil_respiration.f90:L226 Lc = exp(-3 * structural_soil_L / structural_soil_C) N_immobilization_demand = A_decomp * Lc * decay_rate_stsc * structural_soil_C * ((1 - r_stsc) / c2n_slow - 1 / c2n_structural) f_decomp = N_immobil_supply_scale * mineralized_soil_N / (N_immobilization_demand + N_immobil_supply_scale * mineralized_soil_N)
Whether N decomposition limitation is enabled also affects decay rate of slow carbon pool if using DECOMP_SCHEME = 2
.
With N limitation, decay rate is 100.2 year^-1^; otherwise, 0.2 year^-1^.
NOTE: Not a real section; just brainstorming notes for now Details about these sub-models will probably makes their way into the methods and/or appendices.
These are switches that I understand (more-or-less), and that I think will be most relevant to FoRTe.
CROWN_MOD
)N_PLANT_LIM
)N_DECOMP_LIM
)These are switches that may be relevant to FoRTE, but may be harder to pull off.
IBIGLEAF
)ICANRAD
)IALLOM
)Balive
similar to ED2.Balive
has extra allometric equations (see @cole_2006_allometric and @calvo-alvarado_2008_allometric)IPHYSIOL
)Gamma*
based on Foley et al. (1996) (TODO: REF)Gamma*
based on Michaelis-Mentel coefficients for CO2 and O2, as in @farquhar_1980_biochemicalGamma*
as in @farquhar_1980_biochemical and CLM.DECOMP_SCHEME
)H2O_PLANT_LIM
)# k -- Soil layer
# z -- Layer depth
# psi -- Matric potential (for layer, or at wp or fc)
# wp -- wilting point
# fc -- field capacity
(psi(k) - (H - z(k)) - psi_wp) / (psi_fc - psi_wp)
QUANTUM_EFFICIENCY_T
)ISTRUCT_GROWTH_SCHEME
)bstorage
(NSC?)bstorage
to re-flush canopy and fine roots once before calculating structural growth.ISTOMATA_SCHEME
)TRAIT_PLASTICITY_SCHEME
)IDDMORT_SCHEME
)IPERCOL
)RUNOFF_TIME
(e-folding lifetime of temporary surface water)CBR_SCHEME
)cb/cb_lightmax
and cb/cb_moistmax
, and weight based on DDMORT_CONST
(tunable global[?] parameter)cb/max(cb_lightmax, cb_moistmax)
)These are processes that I think will not have huge impacts, are farther-removed from the FoRTE project goals, or are things I simply don't understand very well (particularly all the micro-meteorology stuff).
IBRANCH_THERMO
)ICANTURB
)ISFCLYRM
)u*
, T*
, etc.IED_GRNDVAP
)TREEFALL_DISTURBANCE_RATE
)TIME2CANOPY
, minimum age for tree-fall disturbance.GROWTH_RESP_SCHEME
)STORAGE_RESP_SCHEME
) -- same as growthThese configurations are almost certainly irrelevant to the goals of this paper or will not apply at UMBS (e.g. grass or tropical species). Mostly for reference.
IGRASS
) -- I'm not running with any grass PFTs.IPHEN_SCHEME
) -- Differences affect grasses and tropical species. Conifers are always evergreen, and hardwoods are always cold-deciduous (need to check that schemes are the same).REPRO_SCHEME
) -- Only seems to matter for multi-site runs, with some toggles for tropical (drought-deciduous) species.PLANT_HYDRO_SCHEME
) -- Seems mostly tropics-focused? Look into the Xu et al. (2016; New Phyt.) paper.INCLUDE_FIRE
) -- We know there weren't any fires at UMBS during this time, and more generally are interested in stability.IANTH_DISTURB
) -- We are currently looking at stable state, without disturbances. But, since this pulls values from a dataset, this could be one way to apply the FoRTE treatments.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.