It is sometimes stated that “global carbon and water cycles have shifted from a CO2-dominated era into a VPD-dominated one”. The VPD and CO2 effects on photosynthesis are interactive. Therefore, is this statement a good description of the nature of this interaction?

Let’s look at this by comparing the CO2 effect on GPP under ambient and elevated VPD in a virtual experiment, using the P-model, driven by conditions as recorded at the Mediterranean FR-Pue site.

library(rsofun)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)
library(ggplot2)

Running model

Parameters

Use parameters as described in Stocker et al., 2020 for the ORG setup.

# define model parameter values from previous
# work
params_modl <- list(
    kphio              = 0.04998,    # setup ORG in Stocker et al. 2020 GMD
    kphio_par_a        = 0.0,        # set to zero to disable temperature-dependence of kphio
    kphio_par_b        = 1.0,
    soilm_thetastar    = 0.6 * 240,  # to recover old setup with soil moisture stress
    soilm_betao        = 0.0,
    beta_unitcostratio = 146.0,
    rd_to_vcmax        = 0.014,      # value from Atkin et al. 2015 for C3 herbaceous
    tau_acclim         = 30.0,
    kc_jmax            = 0.41
  )

Specify and run experiment

Rund the model for the following four setups:

  • ambient CO2, ambient VPD: aCaV
  • elevated CO2, ambient VPD: eCaV
  • ambient CO2, elevated VPD: aCeV
  • elevated CO2, elevated VPD: eCeV

Elevated VPD is ambientmultiplied by 2. Elevated CO2 is ambient multiplied by 2.

## aCaV
drivers_aCaV <- p_model_drivers

aCaV <- rsofun::runread_pmodel_f(
  drivers_aCaV,
  par = params_modl
  )

## eCaV
drivers_eCaV <- p_model_drivers
drivers_eCaV$forcing[[1]] <- p_model_drivers$forcing[[1]] |> 
  mutate(co2 = 2*co2)
  
eCaV <- rsofun::runread_pmodel_f(
  drivers_eCaV,
  par = params_modl
  )

## aCeV
drivers_aCeV <- p_model_drivers
drivers_aCeV$forcing[[1]] <- p_model_drivers$forcing[[1]] |> 
  mutate(vpd = 2*vpd)
  
aCeV <- rsofun::runread_pmodel_f(
  drivers_aCeV,
  par = params_modl
  )

## eCeV
drivers_eCeV <- p_model_drivers
drivers_eCeV$forcing[[1]] <- p_model_drivers$forcing[[1]] |> 
  mutate(vpd = 2*vpd, co2 = 2*co2)
  
eCeV <- rsofun::runread_pmodel_f(
  drivers_eCeV,
  par = params_modl
  )

Get response ratios

As log response ratio (of the response to CO2 under ambient and elevated VPD).

df_rr <- tibble(
  ambient = log(eCaV$data[[1]]$gpp / aCaV$data[[1]]$gpp),
  elevated = log(eCeV$data[[1]]$gpp / aCeV$data[[1]]$gpp)
)

Results

df_rr |> 
  pivot_longer(cols = c(ambient, elevated), values_to = "rr", names_to = "vpd") |> 
  ggplot(aes(vpd, rr)) +
  geom_boxplot(fill = "azure3") +
  theme_classic() +
  labs(title = expression(paste("CO"[2], " response of GPP")), 
       subtitle = "P-model simulation, FR-Pue forcing",
       x = "VPD level", 
       y = "Log response ratio")

This illustrates the the CO2 effect is larger under elevated VPD. Therefore, a rising influence of VPD in reducing GPP doesn’t preclude a (positive) CO2 effect on GPP. In contrary, it amplifies the CO2 effect! Therefore, the often stated “shift of the global water and carbon cycles from a CO2-dominated era into a VPD-dominated one” is not justified based on our theoretical understanding.