Set Up
library(data.table)
library(dplyr)
library(tidyr)
library(ggplot2)
BASE_DIR <- here::here()
theme_set(theme_bw())
Objective
Here we are comparing the difference between total halocarbon RF from Hector and also from AR6.
ar6_data <- read.csv(file.path(BASE_DIR, "ar6_results.csv"))
hector_data <- read.csv(file.path(BASE_DIR, "hector_results.csv"))
rbind(ar6_data, hector_data) %>%
as.data.table() %>%
.[year <= 2100 & year >= 1850, ] %>%
.[scenario %in% hector_data$scenario] ->
data
Compare
ggplot(data) +
geom_line(aes(year, value, color = source, groupby = scenario)) +
facet_wrap("scenario", scales = "free") +
labs(y = NULL)
Warning: Ignoring unknown aesthetics: groupby

Mean difference between halocarbon RF
dcast(data, year + scenario + variable ~ source, value.var = "value") %>%
.[ , dif := ((AR6 - Hector))] %>%
.[ , .(value = mean(dif)), by = .(scenario)] %>%
knitr::kable()
| ssp119 |
0.0068486 |
| ssp126 |
0.0065934 |
| ssp245 |
0.0075620 |
| ssp370 |
0.0082600 |
| ssp434 |
0.0075293 |
| ssp460 |
0.0099985 |
| ssp534-over |
0.0065813 |
| ssp585 |
0.0071673 |
library(hector)
system.file("input", package = "hector") %>%
list.files(pattern = "ini", full.names = TRUE) %>%
lapply(function(f){
name <- gsub(x = basename(f), pattern = "hector_|.ini", replacement = "")
core <- newcore(f, name = name)
run(core)
fetchvars(core, dates = 1850:2100, vars = RF_TOTAL())
}) %>%
do.call(what = "rbind") %>%
as.data.table() %>%
.[ , .(value = mean(value)), by = .(scenario)] %>%
knitr::kable()
| ssp119 |
1.055222 |
| ssp126 |
1.242896 |
| ssp245 |
1.438486 |
| ssp370 |
1.834509 |
| ssp434 |
1.342277 |
| ssp460 |
1.660491 |
| ssp534-over |
1.478971 |
| ssp585 |
2.175404 |
NA
NA
NA
NA
NA
NA
LS0tCnRpdGxlOiAiQ29tcGFyaW5nIEhlY3RvciAmIEFSNiB0b3RhbCBSRiIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAnNCcKICAgIHRvY19mbG9hdDogeWVzCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKZGF0ZTogImByIGZvcm1hdChTeXMudGltZSgpLCAnJWQgJUIsICVZJylgIgotLS0KCiMgU2V0IFVwIApgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCBlcnJvciA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpCiMgc2VlIGh0dHBzOi8vYm9va2Rvd24ub3JnL3lpaHVpL3JtYXJrZG93bi1jb29rYm9vay8gZm9yIG1vcmUgaW5mbyBvbiBtYXJrZG93bnMKYGBgCgpgYGB7cn0KbGlicmFyeShkYXRhLnRhYmxlKQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KHRpZHlyKQpsaWJyYXJ5KGdncGxvdDIpCgpCQVNFX0RJUiA8LSBoZXJlOjpoZXJlKCkKCnRoZW1lX3NldCh0aGVtZV9idygpKQpgYGAKCiMjIE9iamVjdGl2ZSAKCkhlcmUgd2UgYXJlIGNvbXBhcmluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRvdGFsIGhhbG9jYXJib24gUkYgZnJvbSBIZWN0b3IgYW5kIGFsc28gZnJvbSBBUjYuIAoKYGBge3J9CmFyNl9kYXRhIDwtIHJlYWQuY3N2KGZpbGUucGF0aChCQVNFX0RJUiwgImFyNl9yZXN1bHRzLmNzdiIpKQpoZWN0b3JfZGF0YSA8LSByZWFkLmNzdihmaWxlLnBhdGgoQkFTRV9ESVIsICJoZWN0b3JfcmVzdWx0cy5jc3YiKSkKCgpyYmluZChhcjZfZGF0YSwgaGVjdG9yX2RhdGEpICU+JSAKICAgIGFzLmRhdGEudGFibGUoKSAlPiUgCiAgICAuW3llYXIgPD0gMjEwMCAmIHllYXIgPj0gMTg1MCwgXSAlPiUgCiAgICAuW3NjZW5hcmlvICVpbiUgaGVjdG9yX2RhdGEkc2NlbmFyaW9dIC0+IAogICAgZGF0YQpgYGAKCiMgQ29tcGFyZSAKCmBgYHtyfQpnZ3Bsb3QoZGF0YSkgKyAKICAgIGdlb21fbGluZShhZXMoeWVhciwgdmFsdWUsIGNvbG9yID0gc291cmNlLCBncm91cGJ5ID0gc2NlbmFyaW8pKSArIAogICAgZmFjZXRfd3JhcCgic2NlbmFyaW8iLCBzY2FsZXMgPSAiZnJlZSIpICsgCiAgICBsYWJzKHkgPSBOVUxMKQpgYGAKTWVhbiBkaWZmZXJlbmNlIGJldHdlZW4gaGFsb2NhcmJvbiBSRgoKYGBge3J9CmRjYXN0KGRhdGEsIHllYXIgKyBzY2VuYXJpbyArIHZhcmlhYmxlIH4gc291cmNlLCB2YWx1ZS52YXIgPSAidmFsdWUiKSAlPiUgCiAgICAuWyAsIGRpZiA6PSAoKEFSNiAtIEhlY3RvcikpXSAlPiUKICAgIC5bICwgLih2YWx1ZSA9IG1lYW4oZGlmKSksIGJ5ID0gLihzY2VuYXJpbyldICU+JSAKICAgIGtuaXRyOjprYWJsZSgpCmBgYAoKYGBge3J9CmxpYnJhcnkoaGVjdG9yKQpzeXN0ZW0uZmlsZSgiaW5wdXQiLCBwYWNrYWdlID0gImhlY3RvciIpICU+JSAKICAgIGxpc3QuZmlsZXMocGF0dGVybiA9ICJpbmkiLCBmdWxsLm5hbWVzID0gVFJVRSkgJT4lIAogICAgbGFwcGx5KGZ1bmN0aW9uKGYpewogICAgICAgIG5hbWUgPC0gZ3N1Yih4ID0gYmFzZW5hbWUoZiksIHBhdHRlcm4gPSAiaGVjdG9yX3wuaW5pIiwgcmVwbGFjZW1lbnQgPSAiIikKICAgICAgICBjb3JlIDwtIG5ld2NvcmUoZiwgbmFtZSA9IG5hbWUpCiAgICAgICAgcnVuKGNvcmUpCiAgICAgICAgZmV0Y2h2YXJzKGNvcmUsIGRhdGVzID0gMTg1MDoyMTAwLCB2YXJzID0gUkZfVE9UQUwoKSkgCiAgICB9KSAlPiUgCiAgICBkby5jYWxsKHdoYXQgPSAicmJpbmQiKSAlPiUgIAogICAgYXMuZGF0YS50YWJsZSgpICU+JSAKICAgIC5bICwgLih2YWx1ZSA9IG1lYW4odmFsdWUpKSwgYnkgPSAuKHNjZW5hcmlvKV0gJT4lIAogICAga25pdHI6OmthYmxlKCkKCiAgICAKICAgIAoKCgpgYGAK