1. Introduction

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. —

2. Photosynthesis: Light Use Efficiency (LUE) Model

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

3. Respiration and Net Assimilation

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

4. Biomass Production

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

5. Turnover (Biomass Loss)

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

6. Net Growth Biomass

Remaining biomass available for growth:

dBg = dB − Tl − Tr

dBg <- dB - Tl - Tr
dBg
## [1] 125

7. Carbon Allocation

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

8. Allometry: Structure from Biomass

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.


9. Dynamic Growth Over Time

To simulate vegetation development, the model must run over time steps.

At each time step:

  1. Photosynthesis occurs

  2. Respiration reduces carbon gain

  3. Biomass increases

  4. Turnover removes biomass

  5. 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