A barebone implementation of a PDE representing a simple Forest Ecosystem Demography Model. Terminology follows the definitions in Lehmann et al. (2015, http://dx.doi.org/10.1016/j.ecolmodel.2015.01.013).
To learn more about ecosystem demography models in general refer to the description in the book 'Climate Change and Terrestrial Ecosystem Modeling' by Bonan (2019, https://doi.org/10.1017/9781107339217).
01_intro_MOL.jl is a short intor how to solve PDEs in Julia with the package MethodsOfLines.jl.
02_intro_ED.jl solves the model from Lehmann et al. (2015), i.e.
Ecosystem dynamics model from Lehmann et al. (2015),
Ecosystem dynamics model from Lehmann et al. (2015), i.e.
where
The time evolution of the species size distribution is then determined by the species-specific growth and mortality rate functions
Boundary conditions introduce the recruitment of small trees of DBH size
Initial conditions are specified as
Inventory parameters can be derived as:
-
number of trees (m⁻²) in diameter class [
$x_a$ ,$x_b$ ] (as the integral of the density):$N_i(t, x_a, x_b) = \int_{x_a}^{x_b} n_i(t, x) dx,$ -
total number of trees above
$x_0$ :$N_i(x_0, \infty)$ (m⁻²) -
cumulative basal area (modified from Lehmann 2015) of trees larger than
$x$ :$BA_i(t, x) = \int_{x}^{\infty} \frac{\pi}{4} y^2 n_i(t,y) dy $ -
total basal area of trees above
$x_0$ :$BA_i(t, x_0)$ -
and of all species
$BA(t,x) = \sum_i BA_i(t,x)$ -
total aboveground biomass
$BM = TODO$
With constant growth
where
TODO: we can use this to test the implementation.
According to Lehmann et al. (2015) the steady state solution with of time-constant
TODO: we can use this to test the implementation.
In Lehmann et al. (2015) they model mortality and recruitment to be constant, but make the growth dependent on the competition for light by trees in larger size classes.
This can be done by specifying:
where
Then they solve this numerically with an upwind scheme.
TODO: e.g when using Julia we can do this with MethodOfLines.jl capable of solving PIDEs.
NOTES: there exist tailor-made space discretizations for the general type of these equations (McKendrick-von Foerster Partial Differential Equation (PDE)).
E.g. see the methods implemented by libpspm.
(NOTE however, that this appears to support PDEs but not PIDEs, i.e. interaction between size classes or between species is not implemented.
NOTE: this might be incorrect. There appears to be support for integrals from x to xmax by using integrate_wudx_above().)
A simplified version of BiomeE could be implemented by making a PDE in dimensions of DBH
TODO....