diff --git a/.buildlibrary b/.buildlibrary index c1f37ac1..be40ed61 100644 --- a/.buildlibrary +++ b/.buildlibrary @@ -1,4 +1,4 @@ -ValidationKey: '233451114' +ValidationKey: '2336667836104' AcceptedWarnings: - .*following variables are expected in the piamInterfaces.* - Summation checks have revealed some gaps.* diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index d85a3165..54aa78bc 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -44,6 +44,13 @@ jobs: [ -f requirements.txt ] && python -m pip install --upgrade pip wheel || true [ -f requirements.txt ] && pip install -r requirements.txt || true + - name: Run pre-commit checks + shell: bash + run: | + python -m pip install pre-commit + python -m pip freeze --local + pre-commit run --show-diff-on-failure --color=always --all-files + - name: Verify validation key shell: Rscript {0} run: lucode2:::validkey(stopIfInvalid = TRUE) diff --git a/.gitignore b/.gitignore index ab6cee26..f35a7e94 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ tests/testthat/test-convGDX2mif-data .github/workflows/lucode2-check.yaml .Rprofile renv +remind2.Rproj diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7dcd45b7..3edf90a5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,4 +25,4 @@ repos: - id: readme-rmd-rendered - id: use-tidy-description ci: - autoupdate_schedule: quarterly + autoupdate_schedule: weekly diff --git a/CITATION.cff b/CITATION.cff index ba862524..7342b8d4 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,8 +2,8 @@ cff-version: 1.2.0 message: If you use this software, please cite it using the metadata from this file. type: software title: 'remind2: The REMIND R package (2nd generation)' -version: 1.162.2 -date-released: '2024-12-30' +version: 1.162.2.9001 +date-released: '2025-01-16' abstract: Contains the REMIND-specific routines for data and model output manipulation. authors: - family-names: Rodrigues diff --git a/DESCRIPTION b/DESCRIPTION index 61046516..e6ce3e6c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Type: Package Package: remind2 Title: The REMIND R package (2nd generation) -Version: 1.162.2 -Date: 2024-12-30 +Version: 1.162.2.9001 +Date: 2025-01-16 Authors@R: c( person("Renato", "Rodrigues", , "renato.rodrigues@pik-potsdam.de", role = c("aut", "cre")), person("Lavinia", "Baumstark", role = "aut"), diff --git a/R/reportLCOE.R b/R/reportLCOE.R index 45b89230..4bc74c5f 100644 --- a/R/reportLCOE.R +++ b/R/reportLCOE.R @@ -1381,7 +1381,6 @@ reportLCOE <- function(gdx, output.type = "both") { ### for buildings and industry (calculate average cost for simplicity, not marginal) - v37_costAddTeInvH2 <- readGDX(gdx, "v37_costAddTeInvH2", field = "l", restore_zeros = FALSE, react = "silent") v36_costAddTeInvH2 <- readGDX(gdx, "v36_costAddTeInvH2", field = "l", restore_zeros = FALSE, react = "silent") df.AddTeInvH2 <- NULL @@ -1396,19 +1395,6 @@ reportLCOE <- function(gdx, output.type = "both") { df.AddTeInvH2 <- rbind(df.AddTeInvH2, df.AddTeInvH2Build) } - if (!is.null(v37_costAddTeInvH2)) { - - df.AddTeInvH2Indst <- as.quitte(v37_costAddTeInvH2[, ttot_from2005, "tdh2s"] / collapseNames(dimSums(vm_demFeSector[, ttot_from2005, "seh2.feh2s.indst"], dim = 3.4, na.rm = TRUE)) / s_twa2mwh * 1e12 * s_usd2017t2015) %>% - mutate(value = ifelse(is.infinite(value), 0, value)) %>% - mutate(emi_sectors = "industry") %>% - select(region, period, all_te, emi_sectors, value) %>% - rename(AddH2TdCost = value, sector = emi_sectors, tech = all_te) - - df.AddTeInvH2 <- rbind(df.AddTeInvH2, df.AddTeInvH2Indst) - } - - - # Join all data for marginal LCOE calculation ---- ### create table with all parameters needed for LCOE calculation diff --git a/R/reportMacroEconomy.R b/R/reportMacroEconomy.R index 8c6560f2..9e680053 100644 --- a/R/reportMacroEconomy.R +++ b/R/reportMacroEconomy.R @@ -58,34 +58,27 @@ reportMacroEconomy <- function(gdx, regionSubsetList = NULL, # Realisation of the different modules if (!is.null(module2realisation) && (!"CES_structure" %in% module2realisation[, 1])) { - indu_mod <- findRealModule(module2realisation, "industry") buil_mod <- findRealModule(module2realisation, "buildings") } else { - indu_mod <- "fixed_shares" buil_mod <- "simple" } steel_process_based <- "steel" %in% readGDX(gdx, "secInd37Prc", react='silent') - # choose the CES entries names for transport - name_trsp <- c("fepet", "ueLDVt", "fedie", "ueHDVt", "feelt", "ueelTt") - name_trsp <- name_trsp[name_trsp %in% getNames(vm_cesIO)] - - cons <- setNames(readGDX(gdx, name = "vm_cons", field = "l", format = "first_found")[, t2005to2150, ] * 1000, - "Consumption (billion US$2017/yr)") + "Consumption (billion US$2017/yr)") gdp <- setNames(vm_cesIO[, , "inco"] * 1000, "GDP|MER (billion US$2017/yr)") shPPPMER <- readGDX(gdx, c("pm_shPPPMER", "p_ratio_ppp"), format = "first_found") gdp_ppp <- setNames(gdp / shPPPMER, "GDP|PPP (billion US$2017/yr)") invE <- setNames(readGDX(gdx, name = c("v_costInv", "v_costin"), field = "l", format = "first_found") * 1000, - "Energy Investments (billion US$2017/yr)") + "Energy Investments (billion US$2017/yr)") pop <- setNames(readGDX(gdx, name = c("pm_pop", "pm_datapop"), format = "first_found")[, t2005to2150, ] * 1000, - "Population (million)") + "Population (million)") damageFactor <- setNames(readGDX(gdx, name = c("vm_damageFactor", "vm_damage"), field = "l", format = "first_found"), - "Damage factor (1)") + "Damage factor (1)") # Calculate net GDP using the damage factors tintersect <- intersect(getYears(gdp), getYears(damageFactor)) @@ -154,11 +147,6 @@ reportMacroEconomy <- function(gdx, regionSubsetList = NULL, # macro ces <- mbind(ces, setNames(vm_cesIO[, , "kap"] * 1000, "CES_input|kap (billion US$2017)")) - # transport - ces <- mbind(ces, setNames(vm_cesIO[, , name_trsp[3]] * TWa_2_EJ, "CES_input|feelt (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , name_trsp[1]] * TWa_2_EJ, "CES_input|fepet (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , name_trsp[2]] * TWa_2_EJ, "CES_input|fedie (EJ/yr)")) - if (buil_mod == "simple") { ces <- mbind(ces, setNames(vm_cesIO[, , "feelb"] * TWa_2_EJ, "CES_input|feelb (EJ/yr)")) ces <- mbind(ces, setNames(vm_cesIO[, , "fegab"] * TWa_2_EJ, "CES_input|fegab (EJ/yr)")) @@ -168,32 +156,24 @@ reportMacroEconomy <- function(gdx, regionSubsetList = NULL, ces <- mbind(ces, setNames(vm_cesIO[, , "feh2b"] * TWa_2_EJ, "CES_input|feh2b (EJ/yr)")) } - if (indu_mod == "fixed_shares") { - ces <- mbind(ces, setNames(vm_cesIO[, , "feeli"] * TWa_2_EJ, "CES_input|feeli (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , "fegai"] * TWa_2_EJ, "CES_input|fegai (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , "fehoi"] * TWa_2_EJ, "CES_input|fehoi (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , "fesoi"] * TWa_2_EJ, "CES_input|fesoi (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , "fehei"] * TWa_2_EJ, "CES_input|fehei (EJ/yr)")) - ces <- mbind(ces, setNames(vm_cesIO[, , "feh2i"] * TWa_2_EJ, "CES_input|feh2i (EJ/yr)")) - } else if ("subsectors" == indu_mod) { - ces <- mbind( - ces, - mbind( - lapply(ppfkap_ind, - function(x) { - setNames(vm_cesIO[, , x] * 1000, - paste0("CES_input|", x, " (billion US$2017)")) - } - )), - - mbind(lapply(ppfen_ind, - function(x) { - setNames(vm_cesIO[, , x] * TWa_2_EJ, - paste0("CES_input|", x, " (EJ/yr)")) - } - )) - ) - } + + ces <- mbind( + ces, + mbind( + lapply(ppfkap_ind, + function(x) { + setNames(vm_cesIO[, , x] * 1000, + paste0("CES_input|", x, " (billion US$2017)")) + } + )), + + mbind(lapply(ppfen_ind, + function(x) { + setNames(vm_cesIO[, , x] * TWa_2_EJ, + paste0("CES_input|", x, " (EJ/yr)")) + } + )) + ) #### ---- additional variables for CES function reporting ---- @@ -204,104 +184,97 @@ reportMacroEconomy <- function(gdx, regionSubsetList = NULL, # check that CES derivatives output parameter exists in GDX if ((length(o01_CESmrs > 0)) & (length(o01_CESderivatives > 0))) { - ## 1.) CES Prices (CES Derivatives) - - # remove inco from inputs as no CES derivative exists - inputs <- inputs[inputs != "inco"] - # get sets of CES inputs which are FEs and those which are no FEs - inputs.fe <- grep("fe",inputs, value=T) - inputs.nofe <- setdiff(inputs,inputs.fe) + ## 1.) CES Prices (CES Derivatives) - # CES prices of inputs are derivatives of inco (GDP) w.r.t to input - CES.price <- collapseNames(mselect(o01_CESderivatives, all_in = "inco", all_in1 = inputs)) + # remove inco from inputs as no CES derivative exists + inputs <- inputs[inputs != "inco"] + # get sets of CES inputs which are FEs and those which are no FEs + inputs.fe <- grep("fe",inputs, value=T) + inputs.nofe <- setdiff(inputs,inputs.fe) - # convert FE input prices to USD/GJ (like PE, SE, FE Prices) - CES.price.fe <- setNames(CES.price[,,inputs.fe] / as.numeric(sm_DpGJ_2_TDpTWa), - paste0("Internal|CES Function|CES Price|", - getNames(CES.price[,,inputs.fe]), " (US$2017/GJ)")) + # CES prices of inputs are derivatives of inco (GDP) w.r.t to input + CES.price <- collapseNames(mselect(o01_CESderivatives, all_in = "inco", all_in1 = inputs)) - # leave non-FE input prices generally as they are in trUSD/CES input - CES.price.nofe <- setNames(CES.price[,,inputs.nofe], + # convert FE input prices to USD/GJ (like PE, SE, FE Prices) + CES.price.fe <- setNames(CES.price[,,inputs.fe] / as.numeric(sm_DpGJ_2_TDpTWa), paste0("Internal|CES Function|CES Price|", - getNames(CES.price[,,inputs.nofe]), " (trUS$2017/Input)")) + getNames(CES.price[,,inputs.fe]), " (US$2017/GJ)")) - # bind FE and non-FE CES prices to one array - CES.price <- mbind(CES.price.fe, CES.price.nofe) + # leave non-FE input prices generally as they are in trUSD/CES input + CES.price.nofe <- setNames(CES.price[,,inputs.nofe], + paste0("Internal|CES Function|CES Price|", + getNames(CES.price[,,inputs.nofe]), " (trUS$2017/Input)")) + # bind FE and non-FE CES prices to one array + CES.price <- mbind(CES.price.fe, CES.price.nofe) - ## 2.) Marginal rates of substitution - # equals ratio of CES prices - # corresponds to amount of second input needed to substitute the first input to generate the same economic value - # only needed for certain FE inputs to assess substitution/rebound effect from price changes + ## 2.) Marginal rates of substitution - # add MRS from o01_CESmrs parameter - mrs.report <- c("feelhpb.fehob", - "feelhpb.fesob", - "feelhpb.feheb", - "feelhpb.feelrhb", - "feh2b.fegab") + # equals ratio of CES prices + # corresponds to amount of second input needed to substitute the first input to generate the same economic value + # only needed for certain FE inputs to assess substitution/rebound effect from price changes - if (indu_mod == "subsectors") { + # add MRS from o01_CESmrs parameter + mrs.report <- c("feelhpb.fehob", + "feelhpb.fesob", + "feelhpb.feheb", + "feelhpb.feelrhb", + "feh2b.fegab", + "feelhth_otherInd.fega_otherInd", + "feelhth_otherInd.feli_otherInd", + "feelhth_otherInd.feso_otherInd", + "feelhth_chemicals.fega_chemicals", + "feelhth_chemicals.feli_chemicals", - mrs.report <- c(mrs.report, + "feh2_otherInd.fega_otherInd", + "feh2_otherInd.feli_otherInd", + "feh2_otherInd.feso_otherInd", + "feh2_chemicals.fega_chemicals", + "feh2_chemicals.feli_chemicals", + "feh2_cement.fega_cement", + "feh2_cement.feso_cement", + "feh2_cement.feli_cement") + if (!steel_process_based) { + mrs.report <- append(mrs.report, + "feh2_steel.feso_steel" + ) + } - "feelhth_otherInd.fega_otherInd", - "feelhth_otherInd.feli_otherInd", - "feelhth_otherInd.feso_otherInd", - "feelhth_chemicals.fega_chemicals", - "feelhth_chemicals.feli_chemicals", - "feh2_otherInd.fega_otherInd", - "feh2_otherInd.feli_otherInd", - "feh2_otherInd.feso_otherInd", - "feh2_chemicals.fega_chemicals", - "feh2_chemicals.feli_chemicals", - "feh2_cement.fega_cement", - "feh2_cement.feso_cement", - "feh2_cement.feli_cement") + CES.mrs <- collapseDim(setNames(o01_CESmrs[,,mrs.report], + paste0("Internal|CES Function|MRS|",gsub("\\.","\\|",mrs.report), " (ratio)"))) - if (!steel_process_based) { - mrs.report <- append(mrs.report, - "feh2_steel.feso_steel" - ) - } + # add further MRS by calculating price ratio for inputs which are not in one nest - } + CES.mrs <- mbind( CES.mrs, - CES.mrs <- collapseDim(setNames(o01_CESmrs[,,mrs.report], - paste0("Internal|CES Function|MRS|",gsub("\\.","\\|",mrs.report), " (ratio)"))) + setNames(CES.price[,,"Internal|CES Function|CES Price|feelhpb (US$2017/GJ)"] / + CES.price[,,"Internal|CES Function|CES Price|fegab (US$2017/GJ)"], + "Internal|CES Function|MRS|feelhpb|fegab (ratio)"), - # add further MRS by calculating price ratio for inputs which are not in one nest - if (indu_mod == "subsectors") { - CES.mrs <- mbind( CES.mrs, + setNames(CES.price[,,"Internal|CES Function|CES Price|feelhpb (US$2017/GJ)"] / + CES.price[,,"Internal|CES Function|CES Price|feh2b (US$2017/GJ)"], + "Internal|CES Function|MRS|feelhpb|feh2b (ratio)")) - setNames(CES.price[,,"Internal|CES Function|CES Price|feelhpb (US$2017/GJ)"] / - CES.price[,,"Internal|CES Function|CES Price|fegab (US$2017/GJ)"], - "Internal|CES Function|MRS|feelhpb|fegab (ratio)"), + if (!steel_process_based) { + CES.mrs <- mbind( CES.mrs, + setNames(CES.price[,,"Internal|CES Function|CES Price|feel_steel_secondary (US$2017/GJ)"] / + CES.price[,,"Internal|CES Function|CES Price|feso_steel (US$2017/GJ)"], + "Internal|CES Function|MRS|feel_steel_secondary|feso_steel (ratio)")) + } - setNames(CES.price[,,"Internal|CES Function|CES Price|feelhpb (US$2017/GJ)"] / - CES.price[,,"Internal|CES Function|CES Price|feh2b (US$2017/GJ)"], - "Internal|CES Function|MRS|feelhpb|feh2b (ratio)")) - if (!steel_process_based) { - CES.mrs <- mbind( CES.mrs, - setNames(CES.price[,,"Internal|CES Function|CES Price|feel_steel_secondary (US$2017/GJ)"] / - CES.price[,,"Internal|CES Function|CES Price|feso_steel (US$2017/GJ)"], - "Internal|CES Function|MRS|feel_steel_secondary|feso_steel (ratio)")) - } - } - - ## 3.) Value generated by CES Inputs (price * quantity) - CES.value <- setNames( mselect(o01_CESderivatives, all_in = "inco", all_in1 = inputs) * vm_cesIO[,getYears(o01_CESderivatives),inputs] * 1000, - paste0("Internal|CES Function|Value|",inputs, " (billion US$2017)")) + ## 3.) Value generated by CES Inputs (price * quantity) + CES.value <- setNames( mselect(o01_CESderivatives, all_in = "inco", all_in1 = inputs) * vm_cesIO[,getYears(o01_CESderivatives),inputs] * 1000, + paste0("Internal|CES Function|Value|",inputs, " (billion US$2017)")) - # bind all CES variables together in one array - ces <- mbind(ces,CES.price,CES.mrs,CES.value) + # bind all CES variables together in one array + ces <- mbind(ces,CES.price,CES.mrs,CES.value) } #### end CES function reporting @@ -347,17 +320,17 @@ reportMacroEconomy <- function(gdx, regionSubsetList = NULL, for (t in getYears(out[, which(getYears(out, as.integer = TRUE) > 2005 & getYears(out, as.integer = TRUE) < max(getYears(out, as.integer = TRUE))), ])) { inteRate[, t, "Interest Rate (t+1)/(t-1)|Real (unitless)"] <- - (1 - - ((setYears(pm_pvp[, (which(getYears(pm_pvp) == t) + 1), ], t) / - setYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], t)) - ^ (1 / (getYears(pm_pvp[, (which(getYears(pm_pvp) == t) + 1), ], as.integer = TRUE) - - getYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], as.integer = TRUE))) - ) + (1 + - ((setYears(pm_pvp[, (which(getYears(pm_pvp) == t) + 1), ], t) / + setYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], t)) + ^ (1 / (getYears(pm_pvp[, (which(getYears(pm_pvp) == t) + 1), ], as.integer = TRUE) - + getYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], as.integer = TRUE))) ) + ) inteRate[, t, "Interest Rate t/(t-1)|Real (unitless)"] <- (1 - ((pm_pvp[, t, ] / setYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], t)) - ^ (1 / (getYears(pm_pvp[, t, ], as.integer = TRUE) - getYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], + ^ (1 / (getYears(pm_pvp[, t, ], as.integer = TRUE) - getYears(pm_pvp[, (which(getYears(pm_pvp) == t) - 1), ], as.integer = TRUE))) ) ) diff --git a/R/reportSE.R b/R/reportSE.R index 57cac3af..2ce51d26 100644 --- a/R/reportSE.R +++ b/R/reportSE.R @@ -81,8 +81,8 @@ reportSE <- function(gdx, regionSubsetList = NULL, t = c(seq(2005, 2060, 5), seq y <- getYears(vm_prodSe) } - vm_macBase <- readGDX(gdx, name = c("vm_macBase"), field = "l", restore_zeros = FALSE, format = "first_found") * pm_conv_TWa_EJ - vm_macBase <- vm_macBase[, y, ] + v_macBase <- readGDX(gdx, name = c("v_macBase", "vm_macBase"), field = "l", restore_zeros = FALSE, format = "first_found") * pm_conv_TWa_EJ + v_macBase <- v_macBase[, y, ] vm_emiMacSector <- readGDX(gdx, name = c("vm_emiMacSector"), field = "l", restore_zeros = FALSE, format = "first_found") * pm_conv_TWa_EJ vm_emiMacSector <- vm_emiMacSector[, y, ] ####### set temporal resolution ##### @@ -229,14 +229,14 @@ reportSE <- function(gdx, regionSubsetList = NULL, t = c(seq(2005, 2060, 5), seq ## Gases - if (!(is.null(vm_macBase) & is.null(vm_emiMacSector))) { + if (!(is.null(v_macBase) & is.null(vm_emiMacSector))) { ## exogenous variable for representing reused gas from waste landfills (accounted in the model as segabio) MtCH4_2_TWa <- readGDX(gdx, "sm_MtCH4_2_TWa", react = "silent") if (is.null(MtCH4_2_TWa)) { MtCH4_2_TWa <- 0.001638 } tmp1 <- mbind(tmp1, - setNames(MtCH4_2_TWa * (vm_macBase[, , "ch4wstl"] - vm_emiMacSector[, , "ch4wstl"]), "SE|Gases|Biomass|Waste (EJ/yr)") + setNames(MtCH4_2_TWa * (v_macBase[, , "ch4wstl"] - vm_emiMacSector[, , "ch4wstl"]), "SE|Gases|Biomass|Waste (EJ/yr)") ) } else { tmp1 <- mbind(tmp1, diff --git a/README.md b/README.md index 08997592..5a5164e0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # The REMIND R package (2nd generation) -R package **remind2**, version **1.162.2** +R package **remind2**, version **1.162.2.9001** [![CRAN status](https://www.r-pkg.org/badges/version/remind2)](https://cran.r-project.org/package=remind2) [![R build status](https://github.com/pik-piam/remind2/workflows/check/badge.svg)](https://github.com/pik-piam/remind2/actions) [![codecov](https://codecov.io/gh/pik-piam/remind2/branch/master/graph/badge.svg)](https://app.codecov.io/gh/pik-piam/remind2) [![r-universe](https://pik-piam.r-universe.dev/badges/remind2)](https://pik-piam.r-universe.dev/builds) @@ -49,7 +49,7 @@ In case of questions / problems please contact Renato Rodrigues . +Rodrigues R, Baumstark L, Benke F, Dietrich J, Dirnaichner A, Duerrwaechter J, Führlich P, Giannousakis A, Hasse R, Hilaire J, Klein D, Koch J, Kowalczyk K, Levesque A, Malik A, Merfort A, Merfort L, Morena-Leiva S, Pehl M, Pietzcker R, Rauner S, Richters O, Rottoli M, Schötz C, Schreyer F, Siala K, Sörgel B, Spahr M, Strefler J, Verpoort P, Weigmann P, Rüter T (2025). "remind2: The REMIND R package (2nd generation)." Version: 1.162.2.9001, . A BibTeX entry for LaTeX users is @@ -57,9 +57,9 @@ A BibTeX entry for LaTeX users is @Misc{, title = {remind2: The REMIND R package (2nd generation)}, author = {Renato Rodrigues and Lavinia Baumstark and Falk Benke and Jan Philipp Dietrich and Alois Dirnaichner and Jakob Duerrwaechter and Pascal Führlich and Anastasis Giannousakis and Robin Hasse and Jérome Hilaire and David Klein and Johannes Koch and Katarzyna Kowalczyk and Antoine Levesque and Aman Malik and Anne Merfort and Leon Merfort and Simón Morena-Leiva and Michaja Pehl and Robert Pietzcker and Sebastian Rauner and Oliver Richters and Marianna Rottoli and Christof Schötz and Felix Schreyer and Kais Siala and Björn Sörgel and Mike Spahr and Jessica Strefler and Philipp Verpoort and Pascal Weigmann and Tonn Rüter}, - date = {2024-12-30}, - year = {2024}, + date = {2025-01-16}, + year = {2025}, url = {https://github.com/pik-piam/remind2}, - note = {Version: 1.162.2}, + note = {Version: 1.162.2.9001}, } ``` diff --git a/remind2.Rproj b/remind2.Rproj deleted file mode 100644 index c4df91df..00000000 --- a/remind2.Rproj +++ /dev/null @@ -1,22 +0,0 @@ -Version: 1.0 - -RestoreWorkspace: Default -SaveWorkspace: Default -AlwaysSaveHistory: Default - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -StripTrailingWhitespace: Yes - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --no-tests -PackageRoxygenize: rd,namespace,vignette