15 Baseline Regrowth Rate
In this section, the baseline growth rates for mosaic planting regions are estimated.
Estimating stand level growth rates for planted areas in mosaic planting concessions is not straightforward. This forest management approach has only recently been implemented and, as such, very few data or studies are available. We therefore aim to study these mosaic planting concessions in collaberation with accademic partners to gain a greater understanding of how mosaic planting is implented, in practise, and how this affects forest ecological function and growth/degredation rates.
However, some information is availble in a single report, available online, authored by a concession holder (Yahya and Ikau 2015).
To estimate forest growth rates in baseline mosaic coupes of the Kuamut Project, we used reported data on DBH, Height, Planting Density and Age from Yahya and Ikau (2015). We retrieved wood density values from the Global Wood density database (Jerome Chave et al. 2009; Zanne et al. 2009; Réjou-Méchain et al. 2017, 2023) (for Paraserianthes falcataria) and from Mahmud et al. (2017) (for Neolamarckia spp.).
We calculate Tree-level Above-Ground Biomass (\(Mg\)) according to Eq. 4 * in Jérôme Chave et al. (2014), shown below in Equation 15.1.
\[ AGB_{\text{\scriptsize est}} = 0.0673 \times (\rho D^2H)^{0.976} \tag{15.1}\]
Where, AGB is above ground biomass, D is the diameter at breast height (cm), H is the total tree height (m), and \(\rho\) is wood specific gravity (g/cm3).
We estimated the potential stand level Above-Ground Biomass growth rates assuming planting occurred only in areas with slopes up to 15 degrees, an average planting density of 729 and tree ages reported in Yahya and Ikau (2015). The resulting stand level growth rate was 5.62 \(Mg \hspace{1mm} C \hspace{1mm} ha^{-1} yr^{-1}\). This value reflects the maximum growth rate once the entire area is planted; it does not yet take into account the rate of planting, and therefore is higher than the achievable stand level growth rate.
15.1 Estimating overall growth rate based on planting rate and rotation
Assuming a planting rate of 30 years for a concession under mosaic management; to achieve the estimated growth rate we have adopted, would require a concession nursery must plant ca. one million seedlings a year. We therefore expect that it contributes to an extremely conservative baseline for this strata.
The resulting average growth rate, assuming 30 years to plant, and a 15 year harvest rotation is 3.0 \(Mg \hspace{1mm} C \hspace{1mm} ha^{-1} yr^{-1}\)
A key consideration for mosaic concession management is that salvage logging and site preparation are discrete processes, requiring a two-step approach. We assume zero growth rate after salvage logging as any negligible growth would be cleared during the site preparation for planting.
15.2 Growth rate for unplanted areas (NFM and unplanted mosiac).
In mosaic concession areas, where slopes range between between 15 \(\textdegree\) and 25 \(\textdegree\), no planting is implemented (based on management plans - Chapter 2). Therefore, within unplanted mosaic and the NFM management strata, after logging, we assume the IPCC default secondary forest growth rate of 1.6 \(Mg \hspace{1mm} C \hspace{1mm} ha^{-1} yr^{-1}\) (Requena Suarez et al. 2019). Unpublished data from SEARRP scientists at SAFE, suggests neglible recovery after salvage logging but further research into forest reponses to such management is needed and Permian Global aims to support such research in advance of the next Kuamut PD renewal.
15.3 Code
Mosaic Growth Rate Code R/MosaicAreaGrowthRate.R
#' Calculate Mosaic area growth rate
#'
#' This function derives an appropriate growth rate for mosaic plantings to be
#' used under the baseline scenario for regrowth following harvest.
#'
#' @param MosaicPLANT_src The planted mosaic coupes spatial vector file.
#' @param CF Carbon fraction - default 0.47
#' @param BCEF_R
#' @param Yrs2Plant
#' @param Rotation Years of rotation
#' @param Mosaic_Parcels_csv for optional checks in commented out code.
#' @param Mosaic10cm_csv for optional checks in commented out code.
#' @param MosaicACD_csv for optional checks in commented out code.
#'
#' @return a list including the mean baseline growth rate for mosaic coupes.
#' @details
#' See Ikau (2015) paper in International Journal of Agriculture,
#' Forestry and Plantation, Vol. 1 (Dec 2015) No details on how they estimate
#' volume. We therefore estimate directly from their reported data using the
#' same methods as elswhere.
mosaic_area_growth_rate <- function(MosaicPLANT_src,
CF = 0.47, BCEF_R = 1.89, Yrs2Plant = 30,
Rotation = 15, Mosaic_Parcels_csv = NULL,
Mosaic10cm_csv = NULL, MosaicACD_csv = NULL) {
## Wood density
# retrieves Paraserianthes Wood density from Global database
dataWD <- BIOMASS::getWoodDensity(
genus = "Paraserianthes",
species = "falcataria"
)
# data base doesn't appear to have Neolamarckia,
# Mahmud et al. (2017)
WD <- c(dataWD$meanWD, 0.362)
# Planting Density from paper gives two for two species. Paper doesn't say
# which Planting density is which. Email confirmation 22nd April 2021 from
# Author "Pertaining to your question, 833 is for Paraserianthes falcataria
# or albizia, while the 625 stems per ha refers to N cadamba or laran."
Ikau2015 <- data.frame(
Genus = c("Paraserianthes", "Neolamarckia"),
species = c("falcataria", "cadamba"),
DBH = c(22.4, 17.8),
Height = c(14.87, 11.52),
Age = c(6.25, 6.25),
WD = WD,
PlantDensity = c(833, 625)
) |>
## We estimate growth rates using use Chave equations directly as uses most
# data available and most transparent
# This also means they can be checked with further monitoring
#### Direct Above-Ground Biomass estimation
###### Calculate Tree-level Above-Ground Biomass (in Mg) according to
# Eq. 4 in Chave et al. (2014)
dplyr::mutate(
AGB = (0.0673 * (WD * Height * DBH^2)^0.976) / 1000,
AGC = AGB * CF,
ACD = AGC * PlantDensity,
GR = round(ACD / Age, 2)
)
GR <- mean(Ikau2015$GR)
message(sprintf("ACD Growth rate per year Once planted = %s", GR))
#----------------------------------------------------------------------------#
## Modelling overall growth rate based on planting rate and rotation
# Save rasters for Mosaic Planting area (up to 15 degrees)
MosaicPLANT <- sf::read_sf(MosaicPLANT_src)
plantingArea <- sum(sf::st_area(MosaicPLANT)) |> units::set_units(ha)
AReaPlantPA <- round(as.numeric(plantingArea) / Yrs2Plant)
FutureParcels <- data.frame(
PlantYear = seq(from = (2017), length.out = Yrs2Plant),
LogYear = seq(from = (2017 + Rotation), length.out = Yrs2Plant),
VolSum = rep(NA, length.out = Yrs2Plant),
Area_ha = rep(AReaPlantPA, length.out = Yrs2Plant),
V_EX = rep(NA, length.out = Yrs2Plant),
Strata = paste("Mosaic-planted"),
Plant = paste("planted"),
Rotation = paste("Second"),
P_ACD = GR * Rotation
) |>
# the growth rate for each relogged planted parcel, once it is logged
mutate(
ACD_Gr = P_ACD / (LogYear - 2016),
# The ACD that was planted, in timber volume
V_EX = round(P_ACD / CF / BCEF_R, 1)
) # 95.0
# the average growth rate
avg_gr <- round(mean(FutureParcels$ACD_Gr), 1)
message(sprintf("Average Growth rate = %s", avg_gr))
# 3.0
# The key is that Salvage logging and site prep is a two stage process.
# we assume zero growth rate after salvage logging (see Martin Svateck work
# from SAFE) even if there was any growth, not only would it be negligible,
# but it would be cleared during the site prep for planting
# ---------------------------- PolyCyclic ---------------------------------- #
# ------------ Checking there is enough timber volume for second cut ------- #
# The ACD that was planted, in timber volume
FutureParcels <- FutureParcels |>
mutate(P_V = P_ACD / CF / BCEF_R)
# --------------- what was left after first cut? --------------------------- #
if (!is.null(c(
Mosaic_Parcels_csv,
Mosaic10cm_csv, MosaicACD_csv
))) {
Mosaic_Parcels <- read.table(Mosaic_Parcels_csv) |>
mutate(
V10cm = read.table(Mosaic10cm_csv)$V_EX,
ACD = read.table(MosaicACD_csv)$ACD
)
Parcels <- subset(Mosaic_Parcels, Rotation == "First") |>
# Total volume V10cm (or add in growth up to time of logging),
# minus what we extracted, minus the residual damage (41% of what remains)
mutate(RemainingV_EX = round(V10cm - (V_EX + ((V10cm - V_EX) * 0.41)), 2))
round(mean(Parcels$RemainingV_EX))
Parcels |>
tidyr::pivot_longer(
cols = c(RemainingV_EX, V10cm),
names_to = "V_EX_name",
values_to = "Timber Volume"
) |>
group_by(Plant, V_EX_name) |>
dplyr::summarise(
`Timber Total` = sum(`Timber Volume`),
`Timber Mean` = mean(`Timber Volume`)
)
}
return(list(
ACD_GrowthRate = GR,
AverageGrowthRate = avg_gr,
ikau15_df = Ikau2015
))
}