Skip to content

GPP shows an offset when compared with FLUXNET2015 data #110

@fabern

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))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions