Growth Curves
The Growth Curves Code file builds the Growth curves using the Annual
Growth values for each forest type. The age_stop_growth
and
age_max_curves
parameters define the age at which the growth of the
forest stops and the maximum age reflected in the growth curves
respectively. The growth_table
defines the annual periodic increment
tables which increment in commercial wood. The regional_vol
and
regional_vol_ma
defines the regional average volume and the average
volume for the Matorral Arborescente forest type respectively.
The growth curves are constructed with the help of forest types, forest structures defined as a list in the R programming language. A growth curve is constructed for each combination of forest type and forest structure. Taking an example here where the forest type is Tipofor and the structure is Estruc:
for (Tipofor in forest_types){
for (Estruc in structures){
if (Estruc %in% c("Renoval","Adulto Renoval")){
growth_year <- dplyr::select(filter(growth_table,TipoFor_classifier == Tipofor),Annual_Growth_Renoval)
}
if (Estruc %in% c("Adulto","Achaparrado")){
growth_year <- dplyr::select(filter(growth_table,TipoFor_classifier == Tipofor),Annual_Growth_AdultoRenoval)
}
seq_growth_first <- seq(from= 0, by=as.numeric(unname(growth_year)),length.out = age_stop_growth+1)
seq_growth_last <- rep(seq_growth_first[length(seq_growth_first)],age_max_curves - age_stop_growth)
seq_growth <- c(seq_growth_first,seq_growth_last)
growth_curve <- c(Tipofor,Estruc,Origen,AIDBSPP,seq_growth)
growth_curve
if (counter == 1){
growth <- rbind(growth_curve)
} else {
growth <- rbind(growth,growth_curve)
}
counter = counter + 1
}
}
Furthermore, extra classifiers are added. The Bosque mixto is a mix of several forest types and has its own classifier:
growth_year <- dplyr::select(filter(growth_table,TipoFor_classifier == "Bosque Mixto"),Annual_Growth_Renoval)
seq_growth_first <- seq(from= 0, by=as.numeric(unname(growth_year)),length.out = age_stop_growth+1)
seq_growth_last <- rep(seq_growth_first[length(seq_growth_first)],age_max_curves - age_stop_growth)
seq_growth <- c(seq_growth_first,seq_growth_last)
growth_curve <- c("Bosque Mixto","Bosque Mixto",Origen,AIDBSPP,seq_growth)
growth <- rbind(growth,growth_curve)
The Matorral Arborescente is not properly a forest type but due to a change in the forest definition it is included in the FREL:
growth_year <- dplyr::select(filter(growth_table,TipoFor_classifier == "Matorral Arborescente"),Annual_Growth_Renoval)
seq_growth_first <- seq(from= 0, by=as.numeric(unname(growth_year)),length.out = age_stop_growth+1)
seq_growth_last <- rep(seq_growth_first[length(seq_growth_first)],age_max_curves - age_stop_growth)
seq_growth <- c(seq_growth_first,seq_growth_last)
growth_curve <- c("Matorral Arborescente","Matorral Arborescente",Origen,"Western larch",seq_growth)
growth <- rbind(growth,growth_curve)
The Promedio Regional is an “artificial” forest type created when the forest type is not possible to determine (included in the REDD+ Annex):
growth_year <- dplyr::select(filter(growth_table,TipoFor_classifier == "Promedio Regional"),Annual_Growth_Renoval)
seq_growth_first <- seq(from= 0, by=as.numeric(unname(growth_year)),length.out = age_stop_growth+1)
seq_growth_last <- rep(seq_growth_first[length(seq_growth_first)],age_max_curves - age_stop_growth)
seq_growth <- c(seq_growth_first,seq_growth_last)
growth_curve <- c("Promedio Regional","Promedio Regional",Origen,AIDBSPP,seq_growth)
growth <- rbind(growth,growth_curve)
We can then create the growth curves for the Bosque Inicial (Initial Forest). Right now we are using assign the Red Alder species, which will be replaced afterwards with Chilean generic species parameters. We go for all combinations of forest type and structure and the growth curve will give a fixed value of volume for all the forests in the area:
Origen <- "Bosque Inicial"
AIDBSPP <- "Red alder"
for (Tipofor in forest_types){
for (Estruc in structures){
growth_year <- regional_vol / age_stop_growth
seq_growth_first <- seq(from= 0, by=as.numeric(unname(growth_year)),length.out = age_stop_growth+1)
seq_growth_last <- rep(seq_growth_first[length(seq_growth_first)],age_max_curves - age_stop_growth)
seq_growth <- c(seq_growth_first,seq_growth_last)
growth_curve <- c(Tipofor,Estruc,Origen,AIDBSPP,seq_growth)
growth <- rbind(growth,growth_curve)
}
}
In a similar manner, we can add extra classifiers curves for the initial forest. For non-stocked (non-forest) pixels, we can use the “non stocked” species so the GCBM will ignore the growth:
seq_growth <- rep(0,age_max_curves + 1 )
growth_curve <- c("No forestal","No forestal","No forestal","Not stocked",seq_growth)
growth <- rbind(growth,growth_curve)
The names are finally assigned to the dataframe and the volume values are converted to numeric and appended to the dataframe. The CSV files are written and the growth curve is created.