Last updated: 2021-05-13

Checks: 7 0

Knit directory: emlr_obs_v_XXX/

This reproducible R Markdown analysis was created with workflowr (version 1.6.2). The Checks tab describes the reproducibility checks that were applied when the results were created. The Past versions tab lists the development history.


Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.

Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.

The command set.seed(20200707) was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.

Great job! Recording the operating system, R version, and package versions is critical for reproducibility.

Nice! There were no cached chunks for this analysis, so you can be confident that you successfully produced the results during this run.

Great job! Using relative paths to the files within your workflowr project makes it easier to run your code on other machines.

Great! You are using Git for version control. Tracking code development and connecting the code version to the results is critical for reproducibility.

The results in this page were generated with repository version 52e7583. See the Past versions tab to see a history of the changes made to the R Markdown and HTML files.

Note that you need to be careful to ensure that all relevant files for the analysis have been committed to Git prior to generating the results (you can use wflow_publish or wflow_git_commit). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:


Ignored files:
    Ignored:    .Rhistory
    Ignored:    .Rproj.user/

Unstaged changes:
    Modified:   code/Workflowr_project_managment.R

Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.


These are the previous versions of the repository in which changes were made to the R Markdown (analysis/mapping_cant.Rmd) and HTML (docs/mapping_cant.html) files. If you’ve configured a remote Git repository (see ?wflow_git_remote), click on the hyperlinks in the table below to view the files as they were in that past version.

File Version Author Date Message
html 52e7583 jens-daniel-mueller 2021-05-12 Build site.
html 969e631 jens-daniel-mueller 2021-05-12 Build site.
html d2a83bc jens-daniel-mueller 2021-04-16 Build site.
html c0a47df jens-daniel-mueller 2021-04-16 Build site.
html 50290e8 jens-daniel-mueller 2021-04-16 overlapping eras
html a00ec94 jens-daniel-mueller 2021-04-16 Build site.
html b6fe355 jens-daniel-mueller 2021-04-16 Build site.
html 81b7c6d jens-daniel-mueller 2021-04-16 Build site.
html 0a6099c jens-daniel-mueller 2021-04-16 Build site.
Rmd bca0564 jens-daniel-mueller 2021-04-16 map only when model available
html ddec5b7 jens-daniel-mueller 2021-04-15 Build site.
html 29edae5 jens-daniel-mueller 2021-04-14 Build site.
html 099d566 jens-daniel-mueller 2021-04-14 Build site.
html bb44686 jens-daniel-mueller 2021-04-14 Build site.
html bf40480 jens-daniel-mueller 2021-04-13 Build site.
html 9f31fe3 jens-daniel-mueller 2021-04-13 Build site.
html c98be84 jens-daniel-mueller 2021-04-13 Build site.
html 338dd3c jens-daniel-mueller 2021-04-09 Build site.
html a79ca2c jens-daniel-mueller 2021-04-09 included model data
html 7831fd3 jens-daniel-mueller 2021-04-09 Build site.
Rmd 7397a49 jens-daniel-mueller 2021-04-09 included model data
html 20b26d4 jens-daniel-mueller 2021-04-08 Build site.
html 05a66fd jens-daniel-mueller 2021-04-08 Build site.
Rmd 97eedcc jens-daniel-mueller 2021-04-08 included model data
html c0895f8 jens-daniel-mueller 2021-04-07 Build site.
html 156d5b7 jens-daniel-mueller 2021-04-07 Build site.
html eb827c9 jens-daniel-mueller 2021-04-07 Build site.
Rmd 84b33f7 jens-daniel-mueller 2021-04-07 included model data
html 03b6009 jens-daniel-mueller 2021-03-23 removed before copying template
html 31bcf6d jens-daniel-mueller 2021-03-23 Build site.
html f155edd jens-daniel-mueller 2021-03-23 Build site.
html 380d215 jens-daniel-mueller 2021-03-21 Build site.
html 33b385b jens-daniel-mueller 2021-03-20 Build site.
html 330dcd0 jens-daniel-mueller 2021-03-20 Build site.
html 83a13de jens-daniel-mueller 2021-03-20 Build site.
html cf98c6d jens-daniel-mueller 2021-03-16 Build site.
html a1d52ff jens-daniel-mueller 2021-03-15 Build site.
html 0bade3b jens-daniel-mueller 2021-03-15 Build site.
html 27c1f4b jens-daniel-mueller 2021-03-14 Build site.
html af75ebf jens-daniel-mueller 2021-03-14 Build site.
html 5017709 jens-daniel-mueller 2021-03-11 Build site.
html 585b07f jens-daniel-mueller 2021-03-11 Build site.
html 6482ed7 jens-daniel-mueller 2021-03-11 Build site.
html 85a5ed2 jens-daniel-mueller 2021-03-10 Build site.
html 00688a1 jens-daniel-mueller 2021-03-05 Build site.
html 6c0bec6 jens-daniel-mueller 2021-03-05 Build site.
html 3c2ec33 jens-daniel-mueller 2021-03-05 Build site.
html af70b94 jens-daniel-mueller 2021-03-04 Build site.
html 86406d5 jens-daniel-mueller 2021-02-24 Build site.
html 3d3b4cc jens-daniel-mueller 2021-02-23 Build site.
html 7b672f7 jens-daniel-mueller 2021-01-11 Build site.
html e5c81bf jens-daniel-mueller 2021-01-07 Build site.
Rmd fe13638 jens-daniel-mueller 2021-01-07 removed GLODAP gamma filter, target variable mapped by eras+era
html 318609d jens-daniel-mueller 2020-12-23 adapted more variable predictor selection
html 84ddb8b jens-daniel-mueller 2020-12-23 Build site.
html 0aa2b50 jens-daniel-mueller 2020-12-23 remove html before duplication
html 39113c3 jens-daniel-mueller 2020-12-23 Build site.
html 2886da0 jens-daniel-mueller 2020-12-19 Build site.
html 02f0ee9 jens-daniel-mueller 2020-12-18 cleaned up for copying template
html 965dba3 jens-daniel-mueller 2020-12-18 Build site.
html 2792743 jens-daniel-mueller 2020-12-18 Build site.
Rmd 05ef152 jens-daniel-mueller 2020-12-18 rebuild after final cleaning
html 4d3e354 jens-daniel-mueller 2020-12-18 Build site.
html 7bcb4eb jens-daniel-mueller 2020-12-18 Build site.
html d397028 jens-daniel-mueller 2020-12-18 Build site.
Rmd 7e1b1c0 jens-daniel-mueller 2020-12-18 rebuild without na predictors
html 7131186 jens-daniel-mueller 2020-12-17 Build site.
html 22b07fb jens-daniel-mueller 2020-12-17 Build site.
html f3a708f jens-daniel-mueller 2020-12-17 Build site.
html e4ca289 jens-daniel-mueller 2020-12-16 Build site.
html 158fe26 jens-daniel-mueller 2020-12-15 Build site.
html 7a9a4cb jens-daniel-mueller 2020-12-15 Build site.
html 61b263c jens-daniel-mueller 2020-12-15 Build site.
html 4d612dd jens-daniel-mueller 2020-12-15 Build site.
Rmd e7e5ff1 jens-daniel-mueller 2020-12-15 rebuild with eMLR target variable selection

1 Required data

1.1 Predictor fields

Currently, we use following combined predictor fields:

  • WOA18: S, T, and derived variables
  • GLODAP16: Oxygen, PO4, NO3, Silicate, and derived variables
predictors <-
  read_csv(paste(path_version_data,
                 "W18_st_G16_opsn.csv",
                 sep = ""))

predictors_surface <-
  read_csv(paste(path_version_data,
                 "W18_st_G16_opsn_surface.csv",
                 sep = ""))

1.2 Atm. pCO2

Required only to estimate the change of Cant in surface water and assuming that the ocean pCO2 trend follows the atmospheric forcing.

co2_atm_tref <-
  read_csv(paste(path_version_data,
                 "co2_atm_tref.csv",
                 sep = ""))

1.3 MLR models

lm_best_cant <-
  read_csv(paste(path_version_data,
                 "lm_best_cant.csv",
                 sep = ""))

2 Join MLRs + climatologies

# remove predictor variable from model
lm_best_cant <- lm_best_cant %>% 
  mutate(model = str_remove(model, paste(params_local$MLR_target, "~ ")))

# join predictors and MLR
cant <- left_join(lm_best_cant, predictors)

rm(predictors, lm_best_cant)

3 Map Cant

3.1 Deep water

3.1.1 Apply MLRs to predictor

cant <- b_cant(cant)

3.1.2 Sections by model

Zonal section plots are produced for every 20° longitude, each era and for all models individually. Plots can be accessed here:

  • /nfs/kryo/work/jenmueller/emlr_cant/observations/v_XXX/figures/Cant_model_sections/
if (params_local$plot_all_figures == "y") {
  for (i_eras in unique(cant$eras)) {
    # i_eras <- unique(cant$eras)[2]
    cant_eras <- cant %>%
      filter(eras == i_eras)
    
    for (i_lon in params_global$longitude_sections_regular) {
      # i_lon <- params_global$longitude_sections_regular[7]
      cant_eras_lon <- cant_eras %>%
        filter(lon == i_lon)
      
      limits = max(abs(cant_eras_lon$cant)) * c(-1, 1)
      
      cant_eras_lon %>%
        ggplot(aes(lat, depth, z = cant)) +
        stat_summary_2d(
          fun = "mean",
          na.rm = TRUE,
          bins = 20,
          col = "grey"
        ) +
        scale_fill_scico(name = "Cant",
                         palette = "vik",
                         limit = limits) +
        scale_y_reverse(limits = c(params_global$plotting_depth, NA)) +
        scale_x_continuous(limits = c(-85, 85)) +
        labs(title = paste(
          "eras:",
          i_eras,
          "| lon:",
          i_lon,
          "|",
          params_local$Version_ID
        )) +
        facet_wrap(~ model, ncol = 5)
      
      ggsave(
        paste(
          path_version_figures,
          "Cant_model_sections/",
          paste("Cant_model",
                i_eras,
                "lon",
                i_lon,
                "section.png",
                sep = "_"),
          sep = ""
        ),
        width = 17,
        height = 9
      )
      
    }
  }
}

3.2 Surface water

As outlined in Gruber et al. (2019), a transient equilibrium approach was applied to estimate Cant in surface waters, assuming that the CO2 system in these waters has followed the increase in atmospheric CO2 closely.

Using eq 10.2.16 from OBD, the change in anthropogenic CO2 in the upper ocean was computed as:

\(\Delta\)tCant,eq(t2 − t1) = 1∕\(\gamma\) ⋅ DIC/pCO2 ⋅ (pCO2,atm (t2)− pCO2,atm(t1))

, where DIC and pCO2 are the in situ values, where \(\gamma\) is the buffer (Revelle) factor and where we evaluated the right-hand side using seacarb employing the Luecker constants using the climatological values for temperature, salinity, DIC and Alk.

3.2.1 pCO2 climatology

Plots below show the calculated climatolofical pCO2 values.

# calculate pCO2 from talk and tco2 climatology
predictors_surface <- predictors_surface %>%
  mutate(
    pCO2 = carb(
      flag = 15,
      var1 = TAlk * 1e-6,
      var2 = TCO2 * 1e-6,
      S = sal,
      T = temp,
      P = depth / 10,
      Pt = phosphate * 1e-6,
      Sit = silicate * 1e-6,
      k1k2 = "l"
    )$pCO2
  )
predictors_surface %>%
  group_split(data_source) %>%
  map( ~
         p_map_climatology(
           df = .x,
           var = "pCO2",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
predictors_surface %>%
  group_split(data_source) %>%
  map( ~
         p_section_climatology_regular(
           df = .x,
           var = "pCO2",
           surface = "y",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
2792743 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08

3.2.2 Revelle factor

Plots below show the calculated climatolofical Revelle factor values.

predictors_surface <- predictors_surface %>%
  mutate(
    rev_fac = buffer(
      flag = 15,
      var1 = TAlk * 1e-6,
      var2 = TCO2 * 1e-6,
      S = sal,
      T = temp,
      P = depth / 10,
      Pt = phosphate * 1e-6,
      Sit = silicate * 1e-6,
      k1k2 = "l"
    )$BetaD
  )
predictors_surface %>%
  group_split(data_source) %>%
  map( ~
         p_map_climatology(
           df = .x,
           var = "rev_fac",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
predictors_surface %>%
  group_split(data_source) %>%
  map( ~
         p_section_climatology_regular(
           df = .x,
           var = "rev_fac",
           surface = "y",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
2792743 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08

3.2.3 Cant calculation

# calculate increase in atm pCO2 between eras
co2_atm_tref <- co2_atm_tref %>%
  arrange(pCO2_tref) %>%
  mutate(d_pCO2_tref = pCO2_tref - lag(pCO2_tref),
         eras = paste(lag(era), era, sep = " --> ")) %>%
  drop_na() %>%
  select(eras, d_pCO2_tref)

cant_surface <- full_join(predictors_surface, co2_atm_tref,
                          by = character())

# calculate cant
cant_surface <- cant_surface %>%
  mutate(cant = (1 / rev_fac) * (TCO2 / pCO2) * d_pCO2_tref)

# calculate positive cant
cant_surface <- cant_surface %>%
  mutate(cant_pos = if_else(cant < 0, 0, cant))

3.2.4 Control plots

cant_surface %>%
  group_split(data_source) %>%
  map( ~
         p_map_climatology(
           df = .x,
           var = "cant",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
31bcf6d jens-daniel-mueller 2021-03-23
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
158fe26 jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
f155edd jens-daniel-mueller 2021-03-23
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
85a5ed2 jens-daniel-mueller 2021-03-10
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
4d612dd jens-daniel-mueller 2020-12-15
cant_surface %>%
  group_split(data_source) %>%
  map( ~
         p_section_climatology_regular(
           df = .x,
           var = "cant",
           surface = "y",
           subtitle_text = paste("Data source: ", unique(.x$data_source))
         ))
[[1]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
31bcf6d jens-daniel-mueller 2021-03-23
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
2792743 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
f155edd jens-daniel-mueller 2021-03-23
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
85a5ed2 jens-daniel-mueller 2021-03-10
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
2792743 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
4d612dd jens-daniel-mueller 2020-12-15

3.3 Average model Cant

Mean and sd are calculated across 10 models for Cant in each grid cell (XYZ), basin and era combination. Calculations are performed for all cant values vs positive values only.

3.3.1 Deep water averaging

cant_average <- m_cant_model_average_data_source(cant)
cant_average <- m_cut_gamma(cant_average, "gamma")

# split data set for individual predictor contributions and total cant
cant_predictor_average <- cant_average %>% 
  select(-c("cant", "cant_pos", ends_with("_sd")))

cant_average <- cant_average %>% 
  select(lon, lat, depth, eras, basin, basin_AIP, data_source,
            cant, cant_pos, cant_sd, cant_pos_sd,
            gamma, gamma_sd, gamma_slab)
cant_average %>%
  group_split(data_source) %>%
  map(~ p_map_climatology(
    df = .x,
    var = "cant_pos",
    subtitle_text = paste("data_source:", unique(.x$data_source))
  ))
[[1]]

Version Author Date
52e7583 jens-daniel-mueller 2021-05-12
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
81b7c6d jens-daniel-mueller 2021-04-16
0a6099c jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
099d566 jens-daniel-mueller 2021-04-14
bb44686 jens-daniel-mueller 2021-04-14
bf40480 jens-daniel-mueller 2021-04-13
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
31bcf6d jens-daniel-mueller 2021-03-23
380d215 jens-daniel-mueller 2021-03-21
33b385b jens-daniel-mueller 2021-03-20
83a13de jens-daniel-mueller 2021-03-20
cf98c6d jens-daniel-mueller 2021-03-16
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
585b07f jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
6c0bec6 jens-daniel-mueller 2021-03-05
3c2ec33 jens-daniel-mueller 2021-03-05
af70b94 jens-daniel-mueller 2021-03-04
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
7bcb4eb jens-daniel-mueller 2020-12-18
d397028 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
7a9a4cb jens-daniel-mueller 2020-12-15
61b263c jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
52e7583 jens-daniel-mueller 2021-05-12
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
81b7c6d jens-daniel-mueller 2021-04-16
0a6099c jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
099d566 jens-daniel-mueller 2021-04-14
bb44686 jens-daniel-mueller 2021-04-14
bf40480 jens-daniel-mueller 2021-04-13
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
f155edd jens-daniel-mueller 2021-03-23
380d215 jens-daniel-mueller 2021-03-21
33b385b jens-daniel-mueller 2021-03-20
83a13de jens-daniel-mueller 2021-03-20
cf98c6d jens-daniel-mueller 2021-03-16
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
585b07f jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
6c0bec6 jens-daniel-mueller 2021-03-05
3c2ec33 jens-daniel-mueller 2021-03-05
af70b94 jens-daniel-mueller 2021-03-04
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
7bcb4eb jens-daniel-mueller 2020-12-18
d397028 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
7a9a4cb jens-daniel-mueller 2020-12-15
61b263c jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15
cant_average %>%
  group_split(data_source) %>%
  map(~ p_section_climatology_regular(
    df = .x,
    var = "cant_pos",
    subtitle_text = paste("data_source:", unique(.x$data_source))
  ))
[[1]]

Version Author Date
52e7583 jens-daniel-mueller 2021-05-12
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
81b7c6d jens-daniel-mueller 2021-04-16
0a6099c jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
099d566 jens-daniel-mueller 2021-04-14
bb44686 jens-daniel-mueller 2021-04-14
bf40480 jens-daniel-mueller 2021-04-13
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
31bcf6d jens-daniel-mueller 2021-03-23
380d215 jens-daniel-mueller 2021-03-21
33b385b jens-daniel-mueller 2021-03-20
83a13de jens-daniel-mueller 2021-03-20
cf98c6d jens-daniel-mueller 2021-03-16
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
585b07f jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
6c0bec6 jens-daniel-mueller 2021-03-05
3c2ec33 jens-daniel-mueller 2021-03-05
af70b94 jens-daniel-mueller 2021-03-04
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
7bcb4eb jens-daniel-mueller 2020-12-18
d397028 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
7a9a4cb jens-daniel-mueller 2020-12-15
61b263c jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

[[2]]

Version Author Date
52e7583 jens-daniel-mueller 2021-05-12
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
81b7c6d jens-daniel-mueller 2021-04-16
0a6099c jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
099d566 jens-daniel-mueller 2021-04-14
bb44686 jens-daniel-mueller 2021-04-14
bf40480 jens-daniel-mueller 2021-04-13
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
f155edd jens-daniel-mueller 2021-03-23
380d215 jens-daniel-mueller 2021-03-21
33b385b jens-daniel-mueller 2021-03-20
83a13de jens-daniel-mueller 2021-03-20
cf98c6d jens-daniel-mueller 2021-03-16
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
585b07f jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
6c0bec6 jens-daniel-mueller 2021-03-05
3c2ec33 jens-daniel-mueller 2021-03-05
af70b94 jens-daniel-mueller 2021-03-04
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
7bcb4eb jens-daniel-mueller 2020-12-18
d397028 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
7a9a4cb jens-daniel-mueller 2020-12-15
61b263c jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

3.3.2 Surface water averaging

The averaging function is also applied to the surface data, although only one value per grid cell was mapped, to ensure consistency with the deep water values.

cant_surface_average <-
  m_cant_model_average_data_source(cant_surface)

cant_surface_average <- m_cut_gamma(cant_surface_average, "gamma")
rm(cant_surface)

3.3.3 Join surface and deep water

cant_average <- full_join(cant_average, cant_surface_average)
rm(cant_surface_average)

3.4 Zonal mean sections

For each basin and era combination, the zonal mean cant is calculated, again for all vs positive only values. Likewise, sd is calculated for the averaging of the mean basin fields.

cant_average_zonal <- m_cant_zonal_mean_data_source(cant_average)
cant_average_zonal <- m_cut_gamma(cant_average_zonal, "gamma_mean")

3.5 Mean cant sections by coefficient

For each basin and era combination, the zonal mean is calculated for the term of each predictor.

cant_predictor_average_zonal <-
  m_cant_predictor_zonal_mean_data_source(cant_predictor_average)

cant_predictor_average_zonal <-
  m_cut_gamma(cant_predictor_average_zonal, "gamma")

3.6 Inventory calculation

To calculate Cant column inventories, we:

  1. Convert Cant concentrations to volumetric units
  2. Multiply layer thickness with volumetric Cant concentration to get a layer inventory
  3. For each horizontal grid cell and era, sum cant layer inventories for different inventory depths (100, 500, 1000, 3000, 10^{4} m)

Step 2 is performed separately for all Cant and positive Cant values only.

cant_inv_mod <- m_cant_inv(cant_average %>% filter(data_source == "mod")) %>% 
  mutate(data_source = "mod")
cant_inv_obs <- m_cant_inv(cant_average %>% filter(data_source == "obs")) %>% 
  mutate(data_source = "obs")

cant_inv <- bind_rows(
  cant_inv_mod,
  cant_inv_obs
)

rm(cant_inv_mod, cant_inv_obs)

p_map_cant_inv(df = cant_inv,
               var = "cant_pos_inv",
               subtitle_text = "for predefined integration depths") +
  facet_grid(inv_depth ~ data_source)

Version Author Date
52e7583 jens-daniel-mueller 2021-05-12
969e631 jens-daniel-mueller 2021-05-12
d2a83bc jens-daniel-mueller 2021-04-16
c0a47df jens-daniel-mueller 2021-04-16
50290e8 jens-daniel-mueller 2021-04-16
a00ec94 jens-daniel-mueller 2021-04-16
b6fe355 jens-daniel-mueller 2021-04-16
81b7c6d jens-daniel-mueller 2021-04-16
0a6099c jens-daniel-mueller 2021-04-16
ddec5b7 jens-daniel-mueller 2021-04-15
29edae5 jens-daniel-mueller 2021-04-14
099d566 jens-daniel-mueller 2021-04-14
bb44686 jens-daniel-mueller 2021-04-14
bf40480 jens-daniel-mueller 2021-04-13
9f31fe3 jens-daniel-mueller 2021-04-13
338dd3c jens-daniel-mueller 2021-04-09
a79ca2c jens-daniel-mueller 2021-04-09
7831fd3 jens-daniel-mueller 2021-04-09
05a66fd jens-daniel-mueller 2021-04-08
eb827c9 jens-daniel-mueller 2021-04-07
03b6009 jens-daniel-mueller 2021-03-23
31bcf6d jens-daniel-mueller 2021-03-23
f155edd jens-daniel-mueller 2021-03-23
380d215 jens-daniel-mueller 2021-03-21
33b385b jens-daniel-mueller 2021-03-20
83a13de jens-daniel-mueller 2021-03-20
cf98c6d jens-daniel-mueller 2021-03-16
a1d52ff jens-daniel-mueller 2021-03-15
0bade3b jens-daniel-mueller 2021-03-15
27c1f4b jens-daniel-mueller 2021-03-14
af75ebf jens-daniel-mueller 2021-03-14
5017709 jens-daniel-mueller 2021-03-11
585b07f jens-daniel-mueller 2021-03-11
85a5ed2 jens-daniel-mueller 2021-03-10
6c0bec6 jens-daniel-mueller 2021-03-05
3c2ec33 jens-daniel-mueller 2021-03-05
af70b94 jens-daniel-mueller 2021-03-04
7b672f7 jens-daniel-mueller 2021-01-11
e5c81bf jens-daniel-mueller 2021-01-07
318609d jens-daniel-mueller 2020-12-23
84ddb8b jens-daniel-mueller 2020-12-23
0aa2b50 jens-daniel-mueller 2020-12-23
2886da0 jens-daniel-mueller 2020-12-19
02f0ee9 jens-daniel-mueller 2020-12-18
7bcb4eb jens-daniel-mueller 2020-12-18
d397028 jens-daniel-mueller 2020-12-18
e4ca289 jens-daniel-mueller 2020-12-16
158fe26 jens-daniel-mueller 2020-12-15
7a9a4cb jens-daniel-mueller 2020-12-15
61b263c jens-daniel-mueller 2020-12-15
4d612dd jens-daniel-mueller 2020-12-15

4 Write csv

cant_average %>%
  write_csv(paste(path_version_data,
                  "cant_3d.csv", sep = ""))

cant_predictor_average %>%
  write_csv(paste(path_version_data,
                  "cant_predictor_3d.csv", sep = ""))

cant_average_zonal %>%
  write_csv(paste(path_version_data,
                  "cant_zonal.csv", sep = ""))

cant_predictor_average_zonal %>%
  write_csv(paste(path_version_data,
                  "cant_predictor_zonal.csv", sep = ""))

cant_inv %>%
  write_csv(paste(path_version_data,
                  "cant_inv.csv", sep = ""))

sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: openSUSE Leap 15.2

Matrix products: default
BLAS:   /usr/local/R-4.0.3/lib64/R/lib/libRblas.so
LAPACK: /usr/local/R-4.0.3/lib64/R/lib/libRlapack.so

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] seacarb_3.2.14  oce_1.2-0       gsw_1.0-5       testthat_2.3.2 
 [5] metR_0.9.0      scico_1.2.0     patchwork_1.1.1 collapse_1.5.0 
 [9] forcats_0.5.0   stringr_1.4.0   dplyr_1.0.5     purrr_0.3.4    
[13] readr_1.4.0     tidyr_1.1.2     tibble_3.0.4    ggplot2_3.3.3  
[17] tidyverse_1.3.0 workflowr_1.6.2

loaded via a namespace (and not attached):
 [1] httr_1.4.2               viridisLite_0.3.0        jsonlite_1.7.1          
 [4] here_0.1                 modelr_0.1.8             assertthat_0.2.1        
 [7] blob_1.2.1               cellranger_1.1.0         yaml_2.2.1              
[10] pillar_1.4.7             backports_1.1.10         lattice_0.20-41         
[13] glue_1.4.2               RcppEigen_0.3.3.7.0      digest_0.6.27           
[16] promises_1.1.1           checkmate_2.0.0          rvest_0.3.6             
[19] colorspace_1.4-1         htmltools_0.5.0          httpuv_1.5.4            
[22] Matrix_1.2-18            pkgconfig_2.0.3          broom_0.7.5             
[25] haven_2.3.1              scales_1.1.1             whisker_0.4             
[28] later_1.1.0.1            git2r_0.27.1             farver_2.0.3            
[31] generics_0.0.2           ellipsis_0.3.1           withr_2.3.0             
[34] cli_2.1.0                magrittr_1.5             crayon_1.3.4            
[37] readxl_1.3.1             evaluate_0.14            fs_1.5.0                
[40] fansi_0.4.1              xml2_1.3.2               RcppArmadillo_0.10.1.2.0
[43] tools_4.0.3              data.table_1.13.2        hms_0.5.3               
[46] lifecycle_1.0.0          munsell_0.5.0            reprex_0.3.0            
[49] isoband_0.2.2            compiler_4.0.3           rlang_0.4.10            
[52] grid_4.0.3               rstudioapi_0.13          labeling_0.4.2          
[55] rmarkdown_2.5            gtable_0.3.0             DBI_1.1.0               
[58] R6_2.5.0                 lubridate_1.7.9          knitr_1.30              
[61] rprojroot_2.0.2          stringi_1.5.3            parallel_4.0.3          
[64] Rcpp_1.0.5               vctrs_0.3.5              dbplyr_1.4.4            
[67] tidyselect_1.1.0         xfun_0.18