Crop-Growth Forward Model (Logistic / Expolinear Biomass)
Source:R/ode_templates.R
crop_growth_forward_model.RdA ready-to-use ode_forward_model() specialisation for the canonical
single-state crop biomass-accumulation curve. Above-ground biomass
\(B\) follows a logistic growth law
$$\frac{dB}{dt} = r\,B\left(1 - \frac{B}{B_{\max}}\right),$$
the standard sigmoid description of a crop's dry-matter accumulation
over a season: an early near-exponential phase at relative growth rate
\(r\), decelerating to a canopy- and resource-limited ceiling
\(B_{\max}\) (Goudriaan & Monteith 1990). The calibration
parameters are the relative growth rate r, the asymptotic biomass
b_max, and the initial biomass b0.
Usage
crop_growth_forward_model(
times,
solver = c("rk4", "desolve"),
n_steps = 10L,
...
)Arguments
- times
Numeric vector of strictly increasing observation times (for example thermal-time or days-after-sowing), length at least two. The first entry is the initial time; biomass is reported at every later entry.
- solver
Character.
"rk4"(default) or"desolve", as inode_forward_model().- n_steps
Integer. Fixed RK4 sub-steps between observation times (default
10L).- ...
Further policy arguments forwarded to
pesto_forward_model()viaode_forward_model()(for exampleon_failure,parallel,fidelity).
Value
A pesto_forward_model() S7 object with param_names
c("r", "b_max", "b0") and n_obs = length(times) - 1L.
Details
The forward map integrates the logistic ODE across times and returns
the modelled biomass at every time after the first – exactly the
shape a destructive-harvest or remote-sensing biomass series takes, so
the returned object calibrates directly against an observed
biomass-over-time vector through pesto_ies_callback(). The
single-state logistic form is deliberately the simplest defensible
crop-growth template; richer multi-organ partitioning models compose
through the same ode_forward_model() entry point by supplying a
vector-valued derivs.
References
Goudriaan, J. & Monteith, J. L. (1990). A mathematical function for crop growth based on light interception and leaf area expansion. Annals of Botany, 66(6), 695–701.
See also
ode_forward_model() for the generic builder;
seir_forward_model() for the compartmental epidemic template;
pesto_ies_callback() for calibration.
Examples
# Simulate a biomass series at a known parameter, then recover it.
times <- seq(0, 120, by = 15)
fm <- crop_growth_forward_model(times = times)
truth <- matrix(c(0.06, 1400, 20), nrow = 1L,
dimnames = list(NULL, c("r", "b_max", "b0")))
biomass <- as.numeric(pesto_evaluate(fm, truth))
round(biomass)
#> [1] 48 113 248 485 793 1067 1243 1331