Skip to contents

This function implements the models described in Ung et al. (2009). Two models (Nat1 and Nat2) are available:

  • Nat1: A multi-equation system predicting tree height (H), basal area (BA), and volume (V) based on stand age, growth degree days (GDD), precipitation (PREC), and species-specific parameters.

  • Nat2: A single equation that focuses on predicting stand volume (V) using age, GDD, and PREC.

Usage

Ung2009(species, age, GDD, PREC, model = c("both", "Nat1", "Nat2"))

Arguments

species

Character. A valid species name as defined in the parameter table of the model.

age

Numeric vector. The age(s) of the stand in years. Must be greater than 0.

GDD

Numeric. Growth degree days.

PREC

Numeric. Precipitation.

model

Character. Which model(s) to use. One of "Nat1", "Nat2", or "both". Defaults to "both".

Value

A tibble containing:

  • age

  • H (if Nat1 is used): Predicted tree height (m).

  • BA (if Nat1 is used): Predicted basal area (m²/ha).

  • V (if Nat1 is used): Predicted volume (m³/ha).

  • V2 (if Nat2 is used): Predicted volume (m³/ha) based on the Nat2 model.

Details

In the Nat1 model, height and basal area are each modeled using age, GDD, and PREC in a Chapman-Richards formulation, and volume is derived via an allometric equation. In contrast, Nat2 is more streamlined, modeling volume directly as a function of these same variables but without explicit height and basal area components.

References

Ung, C.-H., Bernier, P.Y., Guo, X.J., Lambert, M.-C. (2009). "A simple growth and yield model for assessing changes in standing volume across Canada’s forests." The Forestry Chronicle, 85, 57–64. doi:10.5558/tfc85057-1 .

Examples

# Example 1: Use both models (default), returning columns: age, H, BA, V, V2
res_both <- Ung2009(
  species = "ABIE.BAL",
  age = 1:150,
  GDD = 1500,
  PREC = 800
)
res_both
#> # A tibble: 150 × 5
#>      age             H       BA        V       V2
#>    <int>         <dbl>    <dbl>    <dbl>    <dbl>
#>  1     1 0.00000000972 3.79e-30 6.49e-37 7.47e-37
#>  2     2 0.000439      1.66e-14 1.72e-17 1.92e-17
#>  3     3 0.0156        2.72e- 9 5.13e-11 5.67e-11
#>  4     4 0.0932        1.10e- 6 8.85e- 8 9.74e- 8
#>  5     5 0.272         4.03e- 5 7.75e- 6 8.50e- 6
#>  6     6 0.556         4.44e- 4 1.53e- 4 1.67e- 4
#>  7     7 0.926         2.47e- 3 1.29e- 3 1.41e- 3
#>  8     8 1.36          8.93e- 3 6.35e- 3 6.94e- 3
#>  9     9 1.83          2.43e- 2 2.20e- 2 2.40e- 2
#> 10    10 2.32          5.41e- 2 5.94e- 2 6.48e- 2
#> # ℹ 140 more rows

# Example 2: Use only the Nat1 model, returning columns: age, H, BA, V
res_nat1 <- Ung2009(
  species = "ABIE.BAL",
  age = 1:150,
  GDD = 1500,
  PREC = 800,
  model = "Nat1"
)
res_nat1
#> # A tibble: 150 × 4
#>      age             H       BA        V
#>    <int>         <dbl>    <dbl>    <dbl>
#>  1     1 0.00000000972 3.79e-30 6.49e-37
#>  2     2 0.000439      1.66e-14 1.72e-17
#>  3     3 0.0156        2.72e- 9 5.13e-11
#>  4     4 0.0932        1.10e- 6 8.85e- 8
#>  5     5 0.272         4.03e- 5 7.75e- 6
#>  6     6 0.556         4.44e- 4 1.53e- 4
#>  7     7 0.926         2.47e- 3 1.29e- 3
#>  8     8 1.36          8.93e- 3 6.35e- 3
#>  9     9 1.83          2.43e- 2 2.20e- 2
#> 10    10 2.32          5.41e- 2 5.94e- 2
#> # ℹ 140 more rows

# Example 3: Use only the Nat2 model, returning columns: age, V2
res_nat2 <- Ung2009(
  species = "ABIE.BAL",
  age = 1:150,
  GDD = 1500,
  PREC = 800,
  model = "Nat2"
)
res_nat2
#> # A tibble: 150 × 2
#>      age       V2
#>    <int>    <dbl>
#>  1     1 7.47e-37
#>  2     2 1.92e-17
#>  3     3 5.67e-11
#>  4     4 9.74e- 8
#>  5     5 8.50e- 6
#>  6     6 1.67e- 4
#>  7     7 1.41e- 3
#>  8     8 6.94e- 3
#>  9     9 2.40e- 2
#> 10    10 6.48e- 2
#> # ℹ 140 more rows