This document develops a simple process-based vegetation growth model
in R.
The aim is to connect plant physiology with biomass production and
structural growth.
The workflow follows: 1. Photosynthesis driven by light and soil
moisture
2. Respiration losses
3. Net carbon assimilation
4. Biomass production
5. Turnover (losses)
6. Carbon allocation to plant components
7. Allometry: biomass → tree structure
Note: All parameter values are illustrative and chosen to demonstrate
model behaviour rather than represent a specific species or ecosystem.
—
Gross assimilation is defined as:
A = k × I × SM
Where:
calc_assim <- function(I, SM, k = 0.05) {
A <- k * I * SM
return(A)
}
# Example
calc_assim(I = 1000, SM = 0.5)
## [1] 25
Plants lose carbon via respiration:
Maintenance respiration: Rm = r × A
Growth respiration: Rf = gamma × A
Net assimilation:
An = A − Rm − Rf An = A (1 − r − gamma)
calc_An <- function(I, SM, r, gamma) {
A <- calc_assim(I, SM)
An <- A * (1 - r - gamma)
return(An)
}
# Example
An <- calc_An(I = 1000, SM = 0.5, r = 0.2, gamma = 0.1)
An
## [1] 17.5
Net assimilation is converted to biomass:
dB = An × dT × (ml / LMA)
Where:
dB : Biomass increment
dT : Time step
ml : Leaf mass
LMA : Leaf mass per unit area (in g m⁻²)
calc_dB <- function(An, dT, ml, lma) {
dB <- An * dT * (ml / lma)
return(dB)
}
dB <- calc_dB(An, dT = 1, ml = 100, lma = 50)
dB
## [1] 35
Plants lose biomass through litterfall and mortality:
T = −(1/tau) × m × dT
Where:
tau : residence time
m : biomass pool
calc_T <- function(tau, m, dT) {
T <- (-1 / tau) * m * dT
return(T)
}
Tl <- calc_T(tau = 2, m = 100, dT = 1) # leaf turnover
Tr <- calc_T(tau = 3, m = 120, dT = 1) # root turnover
Tl
## [1] -50
Tr
## [1] -40
Remaining biomass available for growth:
dBg = dB − Tl − Tr
dBg <- dB - Tl - Tr
dBg
## [1] 125
Biomass is allocated to plant components:
coarse root
fine root
leaf
stem
dBi = fi × dBg
Where fi are allocation fractions.
fcr <- 0.2
ffr <- 0.2
fl <- 0.3
fs <- 0.3
dBcr <- fcr * dBg
dBfr <- ffr * dBg
dBl <- fl * dBg
dBs <- fs * dBg
dBcr; dBfr; dBl; dBs
## [1] 25
## [1] 25
## [1] 37.5
## [1] 37.5
Allometric relationships connect biomass with tree structure.
Example:
H = alpha × D^3
Where:
H : tree height
D : diameter
alpha : scaling constant
Stem biomass can be linked to height and wood density as Bs ∝ ρ⋅H⋅D^2 (ρ: wood density) These relationships translate carbon gain into structural growth.
To simulate vegetation development, the model must run over time steps.
At each time step:
Photosynthesis occurs
Respiration reduces carbon gain
Biomass increases
Turnover removes biomass
Allocation redistributes carbon
nt <- 10 # number of time steps
leaf_mass <- 100
root_mass <- 120
stem_mass <- 150
for (t in 1:nt) {
# Photosynthesis
A <- calc_assim(I = 1000, SM = 0.5)
# Net assimilation
An <- calc_An(I = 1000, SM = 0.5, r = 0.2, gamma = 0.1)
# Biomass production
dB <- calc_dB(An, dT = 1, ml = leaf_mass, lma = 50)
# Turnover
Tl <- calc_T(tau = 2, m = leaf_mass, dT = 1)
Tr <- calc_T(tau = 3, m = root_mass, dT = 1)
# Net growth
dBg <- dB - Tl - Tr
# Allocation
leaf_mass <- leaf_mass + fl * dBg
root_mass <- root_mass + ffr * dBg
stem_mass <- stem_mass + fs * dBg
}
leaf_mass
## [1] 1879.447
root_mass
## [1] 1306.298
stem_mass
## [1] 1929.447