Skip to content

GPP shows an offset when compared with FLUXNET2015 data #110

Description

@fabern

gpp in the file rsofun_driver_data_v3.4.2.rds differs systematically from the FLUXNET2015 (v2020-02-06) data set.
There appears to be a relative offset of ~4%.

Next steps:

  • check if this is site-specific
  • correct in FDK

Issue is illustrated by this plot, which was generated with MWE below. Note that it does affect GPP, but not other quantities such as PPFD.
Image

# load FDK (FluxDataKit) data
library(zen4R)
download_path <- tempdir()
dir.create(download_path, recursive = TRUE)
zen4R::download_zenodo(
  path = download_path, 
  doi = "10.5281/zenodo.14808331", 
  files = "rsofun_driver_data_v3.4.2.rds")

FDK_published_data <- readRDS(
  file.path(download_path, 
            "rsofun_driver_data_v3.4.2.rds"))


# load FLX (fluxnet) data

# Manually download v.2020-02-06 of FULLSET data of FluxNet2015 data set
# from https://fluxnet.org/data/download-data/
# for sites: e.g. FR-Pue

# then read in FLX data
FLX_published_data <- read.csv(
  "data-raw/fluxnet/FLX_FR-Pue_FLUXNET2015_FULLSET_2000-2014_2-4/FLX_FR-Pue_FLUXNET2015_FULLSET_DD_2000-2014_2-4.csv") |> 
  tibble() |>
  dplyr::mutate(
    date = lubridate::ymd(TIMESTAMP) # TODO: previously used 'as.Date(TIMESTAMP)' is not working
  ) |>
  dplyr::mutate(sitename = "FR-Pue")  |>
  dplyr::select(sitename, date, everything()) |>
  dplyr::filter(
    !(lubridate::mday(date) == 29 & lubridate::month(date) == 2))

# join the two data sets together
FLX_to_join <- FLX_published_data |>
  dplyr::rename_with(~paste0("FLX__", .), .cols = !c(sitename, date))

FDK_to_join <- FDK_published_data |> 
  filter(sitename %in% unique(FLX_published_data$sitename)) |>
  select(sitename, forcing) |> unnest(forcing) |>
  dplyr::rename_with(~paste0("FDK__", .), .cols = !c(sitename, date))

FLX_FDK_joined <- dplyr::full_join(FLX_to_join, FDK_to_join, by = join_by(sitename, date))

# plot the comparison
# For GPP the two datasets show a systematic relative offset:
pl1_GPP <- ggplot(FLX_FDK_joined, 
                  aes(x=FLX__GPP_NT_VUT_REF, FDK__gpp)) + theme_bw() +
  geom_point() + geom_abline(color = "red") + facet_wrap(~sitename)

# GPP_QC:
pl2_GPP_QC <- ggplot(
  FLX_FDK_joined, aes(x=FLX__NEE_VUT_REF_QC, FDK__gpp_qc)) + theme_bw() +
  geom_point() + geom_abline(color = "red") + facet_wrap(~sitename)

# For PPFD, however, the two datasets agree:
kfFEC <- 2.04 # umol/J (Meek et al., 1984) # conversion factor from SPLASH: flux to energy conversion,
pl3_PPFD1 <- ggplot(FLX_FDK_joined |> filter(FLX__PPFD_IN >= 0), 
                    aes(x=FLX__PPFD_IN * 1.0e-6, FDK__ppfd)) + theme_bw() +
  geom_point() + geom_abline(color = "red") + facet_wrap(~sitename)

pl4_PPFD2 <- ggplot(FLX_FDK_joined |> filter(FLX__SW_IN_F_MDS >= 0), 
                    aes(x=FLX__SW_IN_F_MDS * kfFEC * 1.0e-6, FDK__ppfd)) + theme_bw() +
  geom_point() + geom_abline(color = "red") + facet_wrap(~sitename)

library(patchwork)
pl1_GPP + (pl2_GPP_QC / pl3_PPFD1 / pl4_PPFD2) + 
  patchwork::plot_layout(widths = c(3,1))

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions