diff --git a/pull_request_template.md b/.github/pull_request_template.md similarity index 100% rename from pull_request_template.md rename to .github/pull_request_template.md diff --git a/.github/workflows/check-pr-description.yaml b/.github/workflows/check-pr-description.yaml index 3cd91615e7..bf2735beb0 100644 --- a/.github/workflows/check-pr-description.yaml +++ b/.github/workflows/check-pr-description.yaml @@ -1,19 +1,46 @@ on: pull_request: types: [opened, reopened, edited, ready_for_review] + branches-ignore: + - 'master' jobs: check-pr-template: if: github.event.pull_request.draft == false runs-on: ubuntu-latest - env: - PR_DESCRIPTION: ${{ github.event.pull_request.body }} steps: - name: Check PR description - id: check_pr_description + env: + PR_DESCRIPTION: ${{ github.event.pull_request.body }} run: | - SECTION=$(echo "$PR_DESCRIPTION" | sed -n '/## Checklist/,/## Further information (optional)/p') - if echo "$SECTION" | grep -q "\[ \]"; then - echo "Unselected checkboxes found in the 'Checklist' section of the pull request description. Please perform all steps required in the checklist." - exit 1 - fi \ No newline at end of file + ERROR_FOUND=0 + + # Check 1: At least one item must be selected in "Parts concerned" + PARTS_SECTION=$(echo "$PR_DESCRIPTION" | sed -n '/### Parts concerned/,/### Impact/p') + if ! echo "$PARTS_SECTION" | grep -q ":ballot_box_with_check:"; then + echo "ERROR: No items selected in 'Parts concerned' section." + echo "Please select at least one item by replacing :white_medium_square: with :ballot_box_with_check:" + ERROR_FOUND=1 + fi + + # Check 2: At least one item must be selected in "Impact" + IMPACT_SECTION=$(echo "$PR_DESCRIPTION" | sed -n '/### Impact/,/## Checklist/p') + if ! echo "$IMPACT_SECTION" | grep -q ":ballot_box_with_check:"; then + echo "ERROR: No items selected in 'Impact' section." + echo "Please select at least one item by replacing :white_medium_square: with :ballot_box_with_check:" + ERROR_FOUND=1 + fi + + # Check 3: All checkboxes in "Checklist" must be checked + CHECKLIST_SECTION=$(echo "$PR_DESCRIPTION" | sed -n '/## Checklist/,/## Further information (optional)/p') + if echo "$CHECKLIST_SECTION" | grep -q "\[ \]"; then + echo "ERROR: Unchecked checkboxes found in 'Checklist' section." + echo "All checklist items must be checked before merging." + ERROR_FOUND=1 + fi + + if [ $ERROR_FOUND -eq 1 ]; then + exit 1 + fi + + echo "Success: All PR template requirements are fulfilled." \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1551c121b0..0e5401a41d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,82 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [3.6.0] - 2026-03-27 + +### input data/calibration +- **mrremind** new data source for geological CO2 storage potential (split into onshore/offshore and technical vs. limited potentials), replacing the previous LimitCCS output + [[#788](https://github.com/pik-piam/mrremind/pull/788)] + +### changed +- **scripts** Forward `reporting` dir to `reportEmiForClimateAssessement` + [[#2287](https://github.com/remindmodel/remind/pull/2229)] +- **reporting** Distinguish between onshore and offshore transport and storage of captured CO2 + [[#777](https://github.com/pik-piam/remind2/pull/777)] +- **core** Distinguish between onshore and offshore transport and storage of captured CO2 + [[#2296](https://github.com/remindmodel/remind/pull/2296)] +- **core** replaced `execute_load` with `execute_loadpoint` in `core/preloop.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **11_aerosols** Move calculation of air pollutant emissions from REMIND module 11_aerosols to remind2. + [[#2231](https://github.com/remindmodel/remind/pull/2231)] +- **21_tax** replaced `execute_load` with `execute_loadpoint` in `21_tax/on/datainput.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **24_trade** replaced `execute_load` with `execute_loadpoint` in `24_trade/se_trade/datainput.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **29_CES_parameters** replaced `execute_load` with `execute_loadpoint` in `29_CES_parameters/calibrate/datainput.gms` and `29_CES_parameters/calibrate/preloop.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **30_biomass** replaced `execute_load` with `execute_loadpoint` in `30_biomass/magpie_40/datainput.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **35_transport** replaced `cm_startIter_EDGET` with `c_edgeTransportIter` + [[#2283](https://github.com/remindmodel/remind/pull/2283)] +- **36_buildings** replaced `execute_load` with `execute_loadpoint` in `36_buildings/simple/datainput.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **37_industry** replaced `execute_load` with `execute_loadpoint` in `37_industry/subsectors/datainput.gms` + [[#2237](https://github.com/remindmodel/remind/pull/2207)] +- **45_carbonprice** Use ScenarioMIP settings as new default for regional carbon price differentiation in `45_carbonprice/functionalForm` + [[#2229](https://github.com/remindmodel/remind/pull/2229)] +- **46_carbonpriceRegi** Refactor netZero realisation and ensure that targets are aligned with national accounting + [#2307](https://github.com/remindmodel/remind/pull/2307) + +### added +- **mapping** Add csv mapping MAgPIE to REMIND variables used by the coupling script + [#2249](https://github.com/remindmodel/remind/pull/2249) +- **scripts** Add new coupling script executed between the Nash iterations to transfer data between REMIND and MAgPIE and run MAgPIE + [#2249](https://github.com/remindmodel/remind/pull/2249) +- **core** Adapt maximum early retirement rates and differentiate between NPi and policy runs + [[#2300](https://github.com/remindmodel/remind/pull/2300)] +- **core** further decrease early retirement rates in Npi and adapt coal power trends + [[#2311](https://github.com/remindmodel/remind/pull/2311)] +- **30_biomass** Replace realization magpie_40 with new coupling realization magpie that runs MAgPIE between the Nash iterations + [#2249](https://github.com/remindmodel/remind/pull/2249) +- **40_techpol** implement renewable energy share targets for NPi2025 realization based on NewClimate policy protocol + [[#2226](https://github.com/remindmodel/remind/pull/2226)] +- **45_carbonprice** New realization 45_carbonprice/functionalFormRegi for regional carbon budget targets + [[#2222](https://github.com/remindmodel/remind/pull/2222)] +- **45_carbonprice** update NDC realization to run 2030+2035 NDC emissions targets by default and clean up and extend on switches for NDC variants + [[#2289](https://github.com/remindmodel/remind/pull/2289)] + +### removed +- **scripts** Remove of coupling scripts + [#2249](https://github.com/remindmodel/remind/pull/2249) +- **scripts** The distinction between 'raw' and 'smoothed' land use CO2 emissions is no longer supported, as the MAgPIE reporting only includes raw emissions + [#2255](https://github.com/remindmodel/remind/pull/2255) +- **core** remove no longer used technolgies (pcc, pco, apCarPeT) + [#2228](https://github.com/remindmodel/remind/pull/2228) +- **core** remove no longer used buildings final energy and useful energy items in sets.gms + [#2230](https://github.com/remindmodel/remind/pull/2230) +- **21_tax** remove input files with upper bounds on subsidies for final energy, as it is directly applied as part of input data generation + [#2207](https://github.com/remindmodel/remind/pull/2207) +- **30_biomass** Replace realization magpie_40 with new coupling realization magpie that runs MAgPIE between the Nash iterations + [#2249](https://github.com/remindmodel/remind/pull/2249) +- **46_carbonpriceRegi** Remove NDC realisation: all NDC mechanisms are in 45_carbonprice + [#2307](https://github.com/remindmodel/remind/pull/2307) + + +### fixed +- **30_biomass** fix pathways of historic 1st generation bioenergy deployment + [#2253](https://github.com/remindmodel/remind/pull/2253) + + ## [3.5.2] - 2025-09-26 ### input data/calibration diff --git a/CITATION.cff b/CITATION.cff index b19ec372c4..30443eab33 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -334,8 +334,8 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: 3.5.2 -date-released: 2025-09-26 +version: 3.6.0 +date-released: 2026-03-27 repository-code: https://github.com/remindmodel/remind keywords: - energy diff --git a/DESCRIPTION b/DESCRIPTION index 073898ecee..d4df51bba4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -49,7 +49,7 @@ Imports: ncdf4, nleqslv, optparse, - piamenv (>= 0.6.0), + piamenv (>= 0.7.3), piamInterfaces (>= 0.49.0), piamPlotComparison (>= 0.0.10), piamutils, @@ -60,8 +60,8 @@ Imports: raster, readr, readxl, - remind2 (>= 1.186.0), - remindClimateAssessment (>= 0.0.9), + remind2 (>= 2.0.3), + remindClimateAssessment (>= 0.1.0), renv (>= 1.1.1), reshape2, reticulate, diff --git a/config/default.cfg b/config/default.cfg index 21a14a9545..6863e3fb14 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -28,13 +28,13 @@ cfg$regionmapping <- "config/regionmappingH12.csv" cfg$extramappings_historic <- "" #### Current input data revision (.) #### -cfg$inputRevision <- "7.68" +cfg$inputRevision <- "7.88" #### Current CES parameter and GDX revision (commit hash) #### -cfg$CESandGDXversion <- "55be413db9147c127b5c384044a40bd4209adac9" +cfg$CESandGDXversion <- "a12b6355e0ac96081f79504465c61e68fd14ed48" #### Path to a renv.lock file to restore a project's dependencies from. If NULL, all R packages in their currently installed version will be used. -cfg$UseThisRenvLock <- "renv/archive/3.5.2_renv.lock" +cfg$UseThisRenvLock <- "renv/archive/3.6.0_renv.lock" #### Force the model to download new input data #### cfg$force_download <- FALSE @@ -44,8 +44,8 @@ cfg$force_replace <- FALSE #### list of repositories containing input data # defined in your local .Rprofile or on the cluster /p/projects/rd3mod/R/.Rprofile -cfg$repositories <- append(list("https://rse.pik-potsdam.de/data/remind/public" = NULL), - getOption("remind_repos")) +cfg$repositories <- append(getOption("remind_repos"), + list("https://rse.pik-potsdam.de/data/remind/public" = NULL)) #### Folder run statistics should be submitted to cfg$runstatistics <- "/p/projects/rd3mod/models/statistics/remind" @@ -72,7 +72,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development and release versions -cfg$model_version <- "3.5.2" +cfg$model_version <- "3.6.0" #### settings #### cfg$gms <- list() @@ -143,17 +143,12 @@ cfg$files2export$start <- c("config/conopt3.opt", "config/conopt3.op9", "core/input/historical/historical.mif", "core/input/reporting", - "scripts/input/exoGAINS2025Airpollutants.R", "scripts/input/climateAssessmentInterimRun.R", "scripts/input/climateAssessmentImpulseResponse.R", "scripts/input/run_KotzWenz_damages.R", + "scripts/input/magpie.R", ".Rprofile", "config/mappingEDGEtoREMINDsectors.csv", # To do: Is this still needed? - "modules/11_aerosols/exoGAINS2025/input/emi2020_sectGAINS_sourceCEDS.cs4r", - "modules/11_aerosols/exoGAINS2025/input/emifacs_sectGAINS_sourceCEDS.cs4r", - "modules/11_aerosols/exoGAINS2025/input/emi2020_sectGAINS_sourceGAINS.cs4r", - "modules/11_aerosols/exoGAINS2025/input/emifacs_sectGAINS_sourceGAINS.cs4r", - "modules/11_aerosols/exoGAINS2025/input/mappingGAINS2025toREMIND.csv", "modules/29_CES_parameters/calibrate/input/f29_trpdemand.cs4r") # Files that should be copied after the REMIND run is finished diff --git a/config/scenario_config.csv b/config/scenario_config.csv index 1f79160596..0db8ed12d8 100755 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -1,53 +1,53 @@ -title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_convergence;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APssp;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description -# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NDC;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NDCsy2025;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-NPi;SSP2-NPi;SSP2-NPi2025;SSP2-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025.The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-PkBudg500;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP2-EcBudg400;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;2;;;;;;;1;1;5000;0;;;;2060.GLO 0.9;;;;;;;;;;;;;;;;2;;;200;;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. -SSP2-rollBack;1,AMT,2;;;;;;;;;0;;;none;;;;;;0;;;1;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. -# EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-EU21-NPi-calibrate;calibrate,calibrateSSP2;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-EU21-NDC;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-EU21-NPi2025;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-EU21-NDCsy2025;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-EU21-NPi;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-EU21-NPi2025;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-EU21-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-EU21-PkBudg500;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg500: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-EU21-PkBudg650;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg650: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-EU21-PkBudg1000;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg1050: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -# H12 SSP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP3-NPi-calibrate;calibrate;calibrate;14;;;;;3;;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. -SSP3-NPi_impCM-calibrate;calibrate;calibrate;14;;;;;3;imperfect;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. -SSP3-NDC;1;;;;;;;3;;3;;;NDC;;;;;;;;;1;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP3-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 3 called High. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP3-NPi2025;1,AMT;;;;;;;3;;0;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;;1;2030;;SSP2-NPi2025;;;SSP3-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 3 called High. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP3-PkBudg1000;1,AMT;;;;;rcp26;;3;;9;1000;;functionalForm;;75;2080;;GLO.2100 2;;;;1;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;2;SSP3;1.5;;;forcing_SSP3;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP3-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP3-rollBack;1,AMT;;;;;;;3;;0;;;none;;;;;;0;;;1;;;;;;;;;;none;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;Mix1;1;2030;;SSP2-NPi2025;;;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. -# EU21 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-EU21-NPi-calibrate;calibrate;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -# H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP1-PkBudg650;1,AMT;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;90;;forcing_SSP1;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;90;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -# H12 SSP2 lowEnergy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2_lowEn-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;Mix1;;2005;;;;;SSP2_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. -SSP2_lowEn-NDC;0;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. This scenario also assumes low energy demand trajectories. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2_lowEn-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2_lowEn-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2_lowEn-PkBudg1000;0;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -# H12 SSP5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP5-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. -SSP5-NDC;1;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP5-NPi2025;1;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP5-PkBudg650;1;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP5-PkBudg1000;1,compileInTests;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -# H12 SSP2IndiaHigh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2IndiaHigh-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;SSP2;;Mix1;;2005;;;;;SSP2IndiaHigh-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2IndiaHigh-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;SSP2;;;;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2IndiaHigh-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;SSP2;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2IndiaHigh-PkBudg1000;0;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;SSP2;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;carbonpriceRegi;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APssp;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-NPi2025-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;calibrate;14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NDC-LTS;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;netZero;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;SSP2-NPi2025;SSP2-NDC-LTS: Long-term-strategy, this scenario follows the NDCs until 2035 and starts rescaling the carbon prices from 2040 to reach national net-zero pledges. +SSP2-NDC;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NPi;1,AMT,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025;1,AMT,compileInTests,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg750;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg750_wo100EJBiobound;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;2;;;off;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg750_wo100EJBiobound: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-EcBudg500;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;500;5;functionalForm;;exponential;70;;7;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;1;1;5000;0;;;;2060.GLO 0.9;;;;;;;;;;;;;;2;;;200;;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. +SSP2-rollBack;1,AMT,2;;;;;;;;;0;;;none;;;;;;0;;;1;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. +# EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-EU21-NPi2025-calibrate;calibrate,calibrateSSP2;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-EU21-NPi2025;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-EU21-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2-EU21-PkBudg650;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;650;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg650: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-EU21-PkBudg750;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;750;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;2;;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg750: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-EU21-PkBudg1000;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg1050: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +# H12 SSP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP3-NPi2025-calibrate;calibrate;calibrate;14;;;;;3;;;;;;;;;;;;;;1;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;;;2005;;;;;SSP3-NPi2025-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. +SSP3-NPi2025_impCM-calibrate;0;calibrate;14;;;;;3;imperfect;;;;;;;;;;;;;1;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;Mix1;;2005;;;;;SSP3-NPi2025-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. +SSP3-NDC;1;;;;;;;3;;3;;;NDC;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;;SSP3-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 3 called High. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP3-NPi2025;1,AMT;;;;;;;3;;0;;;;;;;;;;;;1;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;;1;2030;;SSP2-NPi2025;;;SSP3-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 3 called High. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP3-PkBudg1000;1;;;;;rcp26;;3;;9;1000;;functionalForm;;;75;2080;8;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;;;;;;;;;2050.GLO 0.5;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;2;SSP3;1.5;;;forcing_SSP3;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP3-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP3-rollBack;1,AMT;;;;;;;3;;0;;;none;;;;;;0;;;1;;;;;;;;;;none;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;;;Mix1;1;2030;;SSP2-NPi2025;;;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. +# EU21 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP1-EU21-NPi2025-calibrate;calibrate;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;;;;;;;;;;2;;;;;;5;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-EU21-NPi2025;1,AMT;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;;;;;;;;;;2;;;;;;5;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;;2005;;SSP2-EU21-NPi2025;;;SSP1-EU21-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP1-EU21-PkBudg750;1,AMT;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;750;;functionalForm;;;100;2055;6;;EUR_regi 0.12, USA_regi 0.1, CHA_regi 0.1, CAZ_regi 0.1, JPN_regi 0.1, GLO 0.08;transformative;2;;;;;;5;;;2050.GLO 0.9;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;Elec_Push;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;;SSP1-EU21-PkBudg750: This climate policy scenario follows the SSP1. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. +# H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP1-NPi2025-calibrate;calibrate;calibrate;14;;;;;;;;;;;;;;;;;;;2;;;;;;5;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;EUR_regi 0.12, USA_regi 0.1, CHA_regi 0.1, CAZ_regi 0.1, JPN_regi 0.1, GLO 0.08;transformative;2;;;;;;5;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;;;2;;;;;;5;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;90;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP1-PkBudg750;1,AMT;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;;100;2055;6;;EUR_regi 0.12, USA_regi 0.1, CHA_regi 0.1, CAZ_regi 0.1, JPN_regi 0.1, GLO 0.08;transformative;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;90;;forcing_SSP1;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;EUR_regi 0.12, USA_regi 0.1, CHA_regi 0.1, CAZ_regi 0.1, JPN_regi 0.1, GLO 0.08;transformative;2;;;;;;5;;;2050.GLO 0.5;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;90;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +# H12 SSP2 lowEnergy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2_lowEn-NPi2025-calibrate;calibrate;calibrate;14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;;;2005;;;;;SSP2_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. +SSP2_lowEn-NDC;0;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. This scenario also assumes low energy demand trajectories. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2_lowEn-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2_lowEn-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2_lowEn-PkBudg1000;0;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.5;;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +# H12 SSP5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP5-NPi2025-calibrate;calibrate;calibrate;14;;;;;;;;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-NDC;0;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;;1;2030;;SSP2-NPi2025;SSP2-NPi2025;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP5-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;;;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP5-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;;100;2055;6;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP5-PkBudg1000;compileInTests;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +# H12 SSP2IndiaHigh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2IndiaHigh-NPi2025-calibrate;calibrate;calibrate;14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;SSP2;;;;2005;;;;;SSP2IndiaHigh-NPi2025-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2IndiaHigh-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;SSP2;;;;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2IndiaHigh-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;;100;2055;6;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;SSP2;Elec_Push;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2IndiaHigh-PkBudg1000;0;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;;75;2080;7;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.5;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;SSP2;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. diff --git a/config/scenario_config_21_EU11_2040_target.csv b/config/scenario_config_21_EU11_2040_target.csv index 286a13bd0f..0961997863 100644 --- a/config/scenario_config_21_EU11_2040_target.csv +++ b/config/scenario_config_21_EU11_2040_target.csv @@ -1,227 +1,227 @@ -title;start;c_tech_CO2capturerate;cm_limitSolidsFossilRegi;cm_INCONV_PENALTY_FESwitch;cm_seFeSectorShareDevMethod;c_seFeSectorShareDevUnit;c_seFeSectorShareDevScale;c_ccsinjecratescen;trade;cm_import_EU;cm_implicitQttyTargetType;cm_implicitQttyTarget;regipol;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_EDGEtr_scen;cm_wasteIncinerationCCSshare;cm_SEtaxRampUpParam;cm_regiExoPrice;CES_parameters;optimization;cm_nash_mode;c_testOneRegi_region;c_keep_iteration_gdxes;cm_abortOnConsecFail;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_changeProdCost;techpol;cm_multigasscen;cm_CESMkup_ind;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;description;cm_PriceDurSlope_elh2;cm_adj_coeff;cm_inco0RegiFactor;cm_nucscen;c_regi_nucscen;path_gdx_refpolicycost -# 2040 targets (REMIND 3.3.1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Calib;0,calib;;;;sqSectorAvrgShare;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;calibrate;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;0;NPi;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; -xx_Npi;0,npi,prio;;EUR_regi;;sqSectorAvrgShare;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; -# Policy Scenarios EU27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -## 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_55_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -## 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_57_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -## 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_59_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -# Limited Carbon capture;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -## limCC - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_55_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_ff55Eff_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.002;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -## limCC - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_57_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -## limCC - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_59_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; -# Limited Variable Renewables;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -## limRES - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_55_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_eedEff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_eedEff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_eedEff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_eedEff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_ff55Eff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_ff55Eff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_ff55Eff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_ff55Eff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_RpEUEff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_RpEUEff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_RpEUEff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_55_RpEUEff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -## limRES - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_57_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_eedEff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_eedEff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_eedEff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_eedEff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_ff55Eff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_ff55Eff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_ff55Eff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_ff55Eff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_RpEUEff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_RpEUEff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_RpEUEff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_57_RpEUEff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -## limRES - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_59_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_eedEff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_eedEff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_eedEff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_eedEff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_ff55Eff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_ff55Eff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_ff55Eff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_ff55Eff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_RpEUEff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_RpEUEff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_RpEUEff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -xx_Nzero_59_RpEUEff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; -# Limited Hydrogen and E-fuels;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -## limH2 - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_55_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_eedEff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_ff55Eff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_55_RpEUEff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -## limH2 - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_57_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_eedEff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_ff55Eff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_57_RpEUEff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -## limH2 - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_Nzero_59_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_eedEff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_ff55Eff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -xx_Nzero_59_RpEUEff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;75;2055;9;1;NDC;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; -# ECEMF scenarios (REMIND 3.5.1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP1_Calib;0,ecemf_calib;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;calibrate;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;;NPi;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; -xx_WP1_Npi;0,ecemf,ecemf_npi;;EUR_regi;;;;;;;;scenario;EU27_bio7p5;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;0;;;NPi;;;9;;NPi2018;3;;2005;xx_WP1_Npi;;;Npi;;;;;; -xx_WP1_Nzero;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_WP1_NZero-LimBio;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7, GLO_bio100;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_WP1_NZero-LimCCS;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5, EU28_CCS250Mt, GLO_CCS2Gt;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_WP1_NZero-LimNuclear;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;5;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;xx_WP1_Npi -# Test Runs;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP1_NZero-LimNuclear_USA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;USA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;5;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;xx_WP1_Npi -xx_WP1_Nzero_LAM;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;LAM;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_WP1_Nzero_SSA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;SSA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_WP1_Nzero_MEA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;MEA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2055;9;1;NDC;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi -xx_Npi_DEU;0,DEUtest;;EUR_regi;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;DEU;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; -xx_Npi_IND;0,INDtest;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;IND;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; -xx_Npi_NEN;0,NENtest;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;NEN;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; +title;start;c_tech_CO2capturerate;cm_limitSolidsFossilRegi;cm_INCONV_PENALTY_FESwitch;cm_seFeSectorShareDevMethod;c_seFeSectorShareDevUnit;c_seFeSectorShareDevScale;c_ccsinjecratescen;trade;cm_import_EU;cm_implicitQttyTargetType;cm_implicitQttyTarget;regipol;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_EDGEtr_scen;cm_wasteIncinerationCCSshare;cm_SEtaxRampUpParam;cm_regiExoPrice;CES_parameters;optimization;cm_nash_mode;c_testOneRegi_region;c_keep_iteration_gdxes;cm_abortOnConsecFail;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_changeProdCost;techpol;cm_multigasscen;cm_CESMkup_ind;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;description;cm_PriceDurSlope_elh2;cm_adj_coeff;cm_inco0RegiFactor;cm_nucscen;c_regi_nucscen;path_gdx_refpolicycost +# 2040 targets (REMIND 3.3.1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Calib;0,calib;;;;sqSectorAvrgShare;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;calibrate;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;0;NPi;;;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; +xx_Npi;0,npi,prio;;EUR_regi;;sqSectorAvrgShare;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; +# Policy Scenarios EU27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +## 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_55_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Npi;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio4;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio7p5;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio12;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio20;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +## 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_57_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio4;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio7p5;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio12;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio20;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +## 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_59_bio4;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio7p5;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio12;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio20;0,prio;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio4;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio7p5;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio12;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio20;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +# Limited Carbon capture;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +## limCC - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_55_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio4_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio7p5_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_ff55Eff_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio12_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio20_limCC;0,g1;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.002;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +## limCC - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_57_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio4_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio7p5_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio12_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio20_limCC;0,g2;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +## limCC - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_59_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio4_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004, DEU 0.01;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio7p5_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio12_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio20_limCC;0,g3;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;2;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limCC;xx_Npi;xx_Npi;;GLO 20;;;;; +# Limited Variable Renewables;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +## limRES - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_55_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_eedEff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_eedEff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_eedEff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_eedEff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_ff55Eff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_ff55Eff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_ff55Eff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_ff55Eff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_RpEUEff_bio4_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_RpEUEff_bio7p5_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_RpEUEff_bio12_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_55_RpEUEff_bio20_limVRE;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +## limRES - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_57_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_eedEff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_eedEff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_eedEff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_eedEff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_ff55Eff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_ff55Eff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_ff55Eff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_ff55Eff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_RpEUEff_bio4_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_RpEUEff_bio7p5_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_RpEUEff_bio12_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_57_RpEUEff_bio20_limVRE;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +## limRES - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_59_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_eedEff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_eedEff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_eedEff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_eedEff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_ff55Eff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_ff55Eff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_ff55Eff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_ff55Eff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_RpEUEff_bio4_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_RpEUEff_bio7p5_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_RpEUEff_bio12_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +xx_Nzero_59_RpEUEff_bio20_limVRE;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;nzero_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EU27_regi.elh2.a 0.15, EU27_regi.elh2.b 40;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limVRE;xx_Npi;xx_Npi;;GLO 20;;csp 1.25, spv 1.25, windon 1.25, windoff 1.25;;; +# Limited Hydrogen and E-fuels;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +## limH2 - 55% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_55_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_eedEff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_ff55Eff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio4_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio7p5_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio12_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_55_RpEUEff_bio20_limH2;0,g4;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.189, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_55_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +## limH2 - 57% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_57_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_eedEff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_ff55Eff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio4_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio7p5_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio12_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_57_RpEUEff_bio20_limH2;0,g5;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_57_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +## limH2 - 59% reduction by 2030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_Nzero_59_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_eedEff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_eedEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_ff55Eff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_ff55Eff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio4_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio4;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio4_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio7p5_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio7p5_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio12_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio12_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +xx_Nzero_59_RpEUEff_bio20_limH2;0,g6;bioftcrec 0.6;EUR_regi;;sqSectorAvrgShare;;;;se_trade;high_bio;scenario;EU27_RpEUEff, EU27_bio12;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 1.995, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.4, GLO.elh2.b 10;;;;;;;10;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;75;2055;9;1;;;Elec_Push;2025;xx_Nzero_59_bio20_limH2;xx_Npi;xx_Npi;;GLO 20;;;;; +# ECEMF scenarios (REMIND 3.5.1);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP1_Calib;0,ecemf_calib;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;calibrate;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;;NPi;;;;;9;;NPi2018;3;;2005;;;;Npi;;;;;; +xx_WP1_Npi;0,ecemf,ecemf_npi;;EUR_regi;;;;;;;;scenario;EU27_bio7p5;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;0;;;NPi;;;;;9;;NPi2018;3;;2005;xx_WP1_Npi;;;Npi;;;;;; +xx_WP1_Nzero;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_WP1_NZero-LimBio;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7, GLO_bio100;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_WP1_NZero-LimCCS;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5, EU28_CCS250Mt, GLO_CCS2Gt;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_WP1_NZero-LimNuclear;0,ecemf,ecemf_pol;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;;;;;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;5;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;xx_WP1_Npi +# Test Runs;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP1_NZero-LimNuclear_USA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;USA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;5;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;xx_WP1_Npi +xx_WP1_Nzero_LAM;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;LAM;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_WP1_Nzero_SSA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;SSA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_WP1_Nzero_MEA;0,test;bioftcrec 0.6;EUR_regi;;;;;;se_trade;nzero;scenario;EU27_bio7p5;regiCarbonPrice;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.092, 2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.441, (2035.2050.EU27_regi, 2035.2045.DEU, 2020.2050.UKI).all.year.netGHG_LULUCFGrassi 0.0001;GLO 0.004;on;on;EUR_regi, NEU_regi;Mix4ICEban;2050.GLO 0.9;GLO.elh2.a 0.2, GLO.elh2.b 20, EUR_regi.elh2.a 0.15, EUR_regi.elh2.b 40;;;testOneRegi;;MEA;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;9;1;;2;Elec_Push;2025;xx_WP1_Npi;xx_WP1_Npi;xx_WP1_Npi;;GLO 20;;;;;xx_WP1_Npi +xx_Npi_DEU;0,DEUtest;;EUR_regi;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;DEU;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; +xx_Npi_IND;0,INDtest;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;IND;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; +xx_Npi_NEN;0,NENtest;;;;;;;;;;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;Mix1;;;;;testOneRegi;;NEN;1;1;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;;9;1;NPi2018;3;;2005;;;;Npi;;;;;; diff --git a/config/scenario_config_21_EU11_ARIADNE.csv b/config/scenario_config_21_EU11_ARIADNE.csv old mode 100755 new mode 100644 index ab42a4c8d1..efcbb31098 --- a/config/scenario_config_21_EU11_ARIADNE.csv +++ b/config/scenario_config_21_EU11_ARIADNE.csv @@ -1,18 +1,26 @@ -title;start;copyConfigFrom;.description;CES_parameters;c_keep_iteration_gdxes;cm_calibration_string;optimization;c_testOneRegi_region;cm_solver_try_max;cm_nash_mode;cm_startIter_EDGET;subsidizeLearning;trade;cm_trade_SE_exog;cm_EnSecScen_price;cm_EnSecScen_limit;cm_Ger_Pol;c_ccsinjecratescen;c_ccsinjecrateRegi;cm_ccsinjeCost;cm_frac_NetNegEmi;cm_bioprod_regi_lim;c_tech_earlyreti_rate;cm_import_tax;cm_1stgen_phaseout;c_agricult_base_shift;cm_altFeEmiFac;cm_PriceDurSlope_elh2;cm_SEtaxRampUpParam;cm_build_H2costAddH2Inv;cm_steel_secondary_max_share_scenario;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;cm_exogDem_scen;cm_wasteIncinerationCCSshare;cm_ind_energy_limit;cm_ind_energy_limit_manual;cm_FEtax_trajectory_abs;cm_FEtax_trajectory_rel;cm_inco0Factor;cm_adj_coeff_multiplier;cm_adj_seed_multiplier;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_IncAfterPeakBudgYr;techpol;regipol;cm_regiExoPrice;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_NucRegiPol;cm_CoalRegiPol;cm_EDGEtr_scen;cm_emiscen;cm_multigasscen;cm_GDPpopScen;cm_demScen;cm_startyear;path_gdx;path_gdx_ref -# _____Reference Runs_____;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Calib_EU_NPi;0;;Calibration Run with National Policies Implemented (NPI);calibrate;;;;;;;;;se_trade;;;;;;;;;DEU 1.1, EU27_regi 7.5;;EU27_regi.pebiolc.worldPricemarkup 10;1;;;;;;;;;;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;1150;NPi;1;;;NPi2018;;;;;;;Mix1;;;;;2005;; -NPi;0;Calib_EU_NPi;National Policies implemented;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Calib_EU_Npi_lowDem;0;Calib_EU_NPi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;NAV_all;;;;SSP2_NAV_all;;; -Npi_lowDem;0;Calib_EU_Npi_lowDem;;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -# ____ Standard Scenarios______;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -CurrentPolicies;0;NPi;Current Policies Scenario for Germany including latest credible developments from Fit for 55 and Ampel government;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.045, 2035.2045.ESW.DEU.seh2 0.091, 2035.2045.MEA.DEU.seliqsyn 0.091;;;;2;;high;0;DEU 1.1, EU27_regi 7.5;;EU27_regi.pebiolc.worldPricemarkup 10;1;;EUR_regi, NEU_regi;;off;;;fehob 1.75, enhb 0.5;;;ariadne_bal;;manual;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90, 2100 . DEU . (ue_otherInd, ue_cement, ue_chemicals) 0.01;;;;;;;;;;;;;;;;;EU27_regi.(2025 65,2030 94,2035 124,2040 141,2045 162,2050 175,2055 175,2060 175,2070 175,2080 175,2090 175,2100 175,2110 175,2130 175,2150 175);;;;;Mix3;;;;;2025;;NPi -KN2045_Bal_v4;0;;Standard Ariadne scenario with -55% GHG in 2030 and GHG neutrality goal in 2050 for EU (incl. EU LULUCF sink), -65% GHG in 2030 and GHG neutrality goal in 2045 for Germany;;;;;;;;;globallyOptimal;se_trade;2035.2045.FRA.DEU.seel 0.183, 2035.2045.ESW.DEU.seh2 0.366, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;2;;high;0;DEU 1.1, EU27_regi 7.5;;EU27_regi.pebiolc.worldPricemarkup 10;1;;;;off;;;fehob 1.75, enhb 0.5;manual;feelhth_otherInd 1.3;ariadne_bal;;manual;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90, 2100 . DEU . (ue_otherInd, ue_cement, ue_chemicals) 0.01;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;650;functionalForm;100;2080;3;none;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;0.003;;;Mix4;;2;;;2025;;NPi -KN2045_Elec_v4;0;KN2045_Bal_v4;Scenario with high electrification, low H2 and synfuel imports;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.183, 2035.2045.ESW.DEU.seh2 0.183, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5;;feh2_otherInd 0.7, feelhth_otherInd 0.9, feh2_cement 2.2, feh2_chemicals 1.05;;;;;;2040.build.feels 0.7, 2040.build.fegas 1.3, 2040.indst.feels 0.7, 2040.indst.fegas 1.3, 2040.indst.fehos 1.3, 2040.trans.feelt 0.7, 2040.trans.fepet 1.3, 2040.trans.fedie 1.3;tdh2s 3, tdh2t 3;;;;;;;;;;;;;;;;;;;;;;;;;; -KN2045_H2_v4;0;KN2045_Bal_v4;Scenario with high H2 and synfuel use, high H2 and synfuel imports;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.183, 2035.2045.ESW.DEU.seh2 0.732, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;;;;;;;;;;;20;;0.1;;feelhpb 2.3, feelrhb 0.87, fehob 1.75, enhb 0.5;;feh2_otherInd 0.01, feelhth_otherInd 1.6, feh2_cement 0.43, feelhth_chemicals 1.6, feh2_chemicals 0.43;;;;;;2040.build.feels 1.3, 2040.build.fegas 1.3, 2040.indst.feels 1.3, 2040.indst.fegas 1.3, 2040.indst.fehos 1.3, 2040.trans.feelt 1.3, 2040.trans.fepet 1.3, 2040.trans.fedie 1.3, 2040.trans.feh2t 0.7;tdh2s 0.5, tdh2t 0.5;;;;;;;;;;;;;;;;;;;HydrHype4;;;;;;; -# ____ Energy Security Scenarios___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -KN2045_EnSov;0;KN2045_Bal_v4;Energy security scenario with limits/taxes on PE gas consumption in Germany and reduced steel demand;;;;;;;;;;;;on;2;ensec;;;;;;;;;;EUR_regi, NEU_regi;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5;;feelhth_otherInd 1.1, fega_steel 0.4;ariadne_lowDem;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -# ____ low-demand/high-demand scenarios ____;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -KN2045plus_EasyRide;0;KN2045_Bal_v4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5, feheb 0.01;;feelhth_otherInd 0.9, feh2_chemicals 0.43;ariadne_lowDem;;;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90;;;tdh2s 0.5, tdh2t 0.5;spv 0.5, storspv 0.5, wind 0.5, storwind 0.5, elh2 0.5;spv 2, storspv 2, wind 2, storwind 2, elh2 2;;;;;;;;;;;;;off;;;;NAV_all;;;;SSP2_NAV_all;;;Npi_lowDem -KN2045plus_LowDemand;0;KN2045_Bal_v4;;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.045, 2035.2045.ESW.DEU.seh2 0.091, 2035.2045.MEA.DEU.seliqsyn 0.091;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5, feheb 0.01;;feelhth_otherInd 0.9, feh2_chemicals 0.43;ariadne_bal;;;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90;;;tdh2s 3, tdh2t 3;spv 2, storspv 2, wind 2, storwind 2, elh2 2;spv 0.5, storspv 0.5, wind 0.5, storwind 0.5, elh2 0.5;;;;;;;;;;;;;off;;;;NAV_all;;;;SSP2_NAV_all;;;Npi_lowDem -KN2045minus_WorstCase;0;KN2045_Bal_v4;;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.045, 2035.2045.ESW.DEU.seh2 0.091, 2035.2045.MEA.DEU.seliqsyn 0.091;;;;;;;;;;;;;;;;;;feelhpb 2.3, feelrhb 0.87, fehob 1.75, enhb 0.5;;;ariadne_highDem;;;;;;tdh2s 3, tdh2t 3;spv 2, storspv 2, wind 2, storwind 2, elh2 2;spv 0.5, storspv 0.5, wind 0.5, storwind 0.5, elh2 0.5;;;;;;;;;;;;;;;;;;;;;;;; -KN2045minus_SupplyFocus;0;KN2045_Bal_v4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ariadne_highDem;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +title;start;copyConfigFrom;.description;CES_parameters;c_keep_iteration_gdxes;cm_calibration_string;optimization;c_testOneRegi_region;cm_solver_try_max;cm_nash_mode;subsidizeLearning;trade;cm_trade_SE_exog;cm_EnSecScen_price;cm_EnSecScen_limit;cm_Ger_Pol;c_ccsinjecratescen;c_ccsinjecrateRegi;cm_ccsinjeCost;cm_frac_NetNegEmi;cm_bioprod_regi_lim;c_tech_earlyreti_rate;cm_import_tax;cm_1stgen_phaseout;c_agricult_base_shift;cm_altFeEmiFac;cm_PriceDurSlope_elh2;cm_SEtaxRampUpParam;cm_build_H2costAddH2Inv;cm_steel_secondary_max_share_scenario;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;cm_exogDem_scen;cm_wasteIncinerationCCSshare;cm_ind_energy_limit;cm_ind_energy_limit_manual;cm_FEtax_trajectory_abs;cm_FEtax_trajectory_rel;cm_inco0Factor;cm_adj_coeff_multiplier;cm_adj_seed_multiplier;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;cm_budgetCO2from2020;carbonprice;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_taxCO2_startyear;cm_peakBudgYr;techpol;regipol;cm_regiExoPrice;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_regiExoPrice_fromFile;cm_VREminCap_Ger;cm_NucRegiPol;cm_CoalRegiPol;cm_EDGEtr_scen;cm_emiscen;cm_multigasscen;cm_GDPpopScen;cm_demScen;cm_startyear;path_gdx;path_gdx_ref +# _____Reference Runs_____;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Calib_EU_NPi;0;;Calibration Run with National Policies Implemented (NPI);calibrate;;;;;;;;standard;;;;;;;;;DEU 1.1, EU27_regi 7.5;;EU27_regi.pebiolc.worldPricemarkup 10;1;;;;;;;;;;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;NPi;;;;;NPi2018;;;;;;;;;Mix1;;;;;2005;; +NPi;0;Calib_EU_NPi;National Policies implemented;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Calib_EU_Npi_lowDem;0;Calib_EU_NPi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;NAV_all;;;;SSP2_NAV_all;;; +Npi_lowDem;0;Calib_EU_Npi_lowDem;;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +Calib_EU_Npi_highDem;0;Calib_EU_NPi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_highDemDEU;;; +Npi_highDem;0;Calib_EU_Npi_highDem;;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# ____ Standard Scenarios______;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +CurrentPolicies;0;NPi;Current Policies Scenario for Germany including latest credible developments from Fit for 55 and Ampel government;;;;;;;;;se_trade;2035.2045.FRA.DEU.seel 0.045, 2030.2045.ESW.DEU.seh2 0.091, 2035.2045.MEA.DEU.seliqsyn 0.091;;;;2;;high;0;DEU 1.1, EU27_regi 7.5;GLO.(biodiesel 0.15, bioeths 0.15), EUR_regi.(bioigcc 0.05, biotr 0.05, biotrmod 0.05, biochp 0.05, biohp 0.05, biogas 0.05, biogasc 0.05, gash2c 0.05), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;EU27_regi.pebiolc.worldPricemarkup 10;1;;EUR_regi, NEU_regi;GLO 15;off;;;fehob 1.75, enhb 0.5;;;ariadne_bal;;manual;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90, 2100 . DEU . (ue_otherInd, ue_cement, ue_chemicals) 0.01;;;;;;;;;;;;;;;;none;;EU27_regi.(2025 80,2030 105,2035 130,2040 155,2045 180,2050 205,2055 205,2060 205,2070 205,2080 205,2090 205,2100 205,2110 205,2130 205,2150 205);;;;;;;Mix3ICEban ;;;;;2025;;NPi +KN2045_Bal_v4;0;;Standard Ariadne scenario with -55% GHG in 2030 and GHG neutrality goal in 2050 for EU (incl. EU LULUCF sink), -65% GHG in 2030 and GHG neutrality goal in 2045 for Germany;;;;;;;;globallyOptimal;se_trade;2035.2045.FRA.DEU.seel 0.183, 2030.2045.ESW.DEU.seh2 0.366, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;2;;high;0;DEU 1.1, EU27_regi 7.5;GLO.(biodiesel 0.15, bioeths 0.15), EUR_regi.(bioigcc 0.05, biotr 0.05, biotrmod 0.05, biochp 0.05, biohp 0.05, biogas 0.05, biogasc 0.05, gash2c 0.05), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;EU27_regi.pebiolc.worldPricemarkup 10;1;;;;off;;;fehob 1.75, enhb 0.5;manual;feelhth_otherInd 1.3;ariadne_bal;;manual;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90, 2100 . DEU . (ue_otherInd, ue_cement, ue_chemicals) 0.01;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2055;none;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;GLO 0.003;;Opt;;;Mix4ICEban;;2;;;2025;;NPi +KN2045_Elec_v4;0;KN2045_Bal_v4;Scenario with high electrification, low H2 and synfuel imports;;;;;;;;;;2035.2045.FRA.DEU.seel 0.183, 2030.2045.ESW.DEU.seh2 0.183, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5;;feelhth_otherInd 0.9, feelhth_chemicals 0.43, feh2_otherInd 0.7, feh2_cement 2.2, feh2_chemicals 1.05;;;;;;2040.build.feels 0.7, 2040.build.fegas 1.3, 2040.indst.feels 0.7, 2040.indst.fegas 1.3, 2040.indst.fehos 1.3, 2040.trans.feelt 0.7, 2040.trans.fepet 1.3, 2040.trans.fedie 1.3;tdh2s 3, tdh2t 3;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +KN2045_H2_v4;0;KN2045_Bal_v4;Scenario with high H2 and synfuel use, high H2 and synfuel imports;;;;;;;;;;2035.2045.FRA.DEU.seel 0.183, 2030.2045.ESW.DEU.seh2 0.732, 2035.2045.MEA.DEU.seliqsyn 0.366;;;;;;;;;;;;;;GLO 20;;0.1;;feelhpb 2.3, feelrhb 0.87, fehob 1.75, enhb 0.5;;feelhth_otherInd 1.6, feelhth_chemicals 1.6, feh2_otherInd 0.01, feh2_cement 0.43, feh2_chemicals 0.43;;;;;;2040.build.feels 1.3, 2040.build.fegas 1.3, 2040.indst.feels 1.3, 2040.indst.fegas 1.3, 2040.indst.fehos 1.3, 2040.trans.feelt 1.3, 2040.trans.fepet 1.3, 2040.trans.fedie 1.3, 2040.trans.feh2t 0.7;tdh2s 0.5, tdh2t 0.5;;;;;;;;;;;;;;;;;;;;;;HydrHype4;;;;;;; +# ____ Energy Security Scenarios___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +KN2045_EnSov;0;KN2045_Bal_v4;Energy security scenario with limits/taxes on PE gas consumption in Germany and reduced steel demand;;;;;;;;;;;on;2;ensec;;;;;;;;;;EUR_regi, NEU_regi;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5;;feelhth_otherInd 1.1, fega_steel 0.4;ariadne_lowDem;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# ____ low-demand/high-demand scenarios ____;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +KN2045plus_EasyRide;0;KN2045_Bal_v4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5, feheb 0.01;;feelhth_otherInd 0.9, feelhth_chemicals 0.43, feh2_chemicals 0.43;ariadne_lowDem;;;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90;;;tdh2s 0.5, tdh2t 0.5;spv 0.5, storspv 0.5, wind 0.5, storwind 0.5, elh2 0.5;spv 2, storspv 2, wind 2, storwind 2, elh2 2;;;;;;;;;;;;;;off;;KN2045_Bal_v4;;;;NAV_all;;;;SSP2_NAV_all;;;Npi_lowDem +KN2045plus_LowDemand;0;KN2045_Bal_v4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;feelhpb 1.4, fehob 1.75, enhb 0.5, feheb 0.01;;feelhth_otherInd 0.9, feelhth_chemicals 0.43, feh2_chemicals 0.43;ariadne_bal;;;2050 . GLO . (ue_cement, ue_steel_primary, ue_steel_secondary) 0.75, 2100 . GLO . (ue_chemicals, ue_otherInd) 0.90;;;;;;;;;;;;;;;;;;;off;;KN2045_Bal_v4;;;;NAV_all;;;;SSP2_NAV_all;;;Npi_lowDem +KN2045minus_WorstCase;0;KN2045_Bal_v4;;;;;;;;;;;2035.2045.FRA.DEU.seel 0.045, 2035.2045.ESW.DEU.seh2 0.091, 2035.2045.MEA.DEU.seliqsyn 0.091;;;;;;;;;;;;;;;;;;feelhpb 2.3, feelrhb 0.87, fehob 1.75, enhb 0.5;;feelhth_otherInd 1.6, feelhth_chemicals 1.6;ariadne_highDem;;;;;;tdh2s 3, tdh2t 3;spv 2, storspv 2, wind 2, storwind 2, elh2 2;spv 0.5, storspv 0.5, wind 0.5, storwind 0.5, elh2 0.5;;;;;;;;;;;;;;off;;KN2045_Bal_v4;;;;Mix3;;;;SSP2_highDemDEU;;;Npi_highDem +KN2045minus_SupplyFocus;0;KN2045_Bal_v4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;feelhpb 2.3, feelrhb 0.87, fehob 1.75, enhb 0.5;;feelhth_otherInd 1.6, feelhth_chemicals 1.6;ariadne_highDem;;;;;;;;;;;;;;;;;;;;;;off;;KN2045_Bal_v4;;;;Mix3;;;;SSP2_highDemDEU;;;Npi_highDem +#_____low-demand/high-demand net-zero scenarios;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +KN2045_EasyRide;0;KN2045plus_EasyRide;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;;off;;;;;;;;;;; +KN2045_LowDemand;0;KN2045plus_LowDemand;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;;off;;;;;;;;;;; +KN2045_WorstCase;0;KN2045minus_WorstCase;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;;off;;;;;;;;;;; +KN2045_SupplyFocus;0;KN2045minus_SupplyFocus;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;;off;;;;;;;;;;; +# Tests;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/config/scenario_config_21_EU11_ECEMF.csv b/config/scenario_config_21_EU11_ECEMF.csv index 623889d898..146041f343 100644 --- a/config/scenario_config_21_EU11_ECEMF.csv +++ b/config/scenario_config_21_EU11_ECEMF.csv @@ -1,54 +1,54 @@ -title;start;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_maxProdBiolc;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description;cm_loadFromGDX_implicitQttyTargetTax;cm_implicitPriceTarget;cm_implicitPePriceTarget;cm_VREminShare;c_regi_nucscen;cm_incolearn;cm_learnRate;cm_regiExoPrice;c_testOneRegi_region;cm_nash_mode;c_keep_iteration_gdxes;cm_abortOnConsecFail;cm_emiMktTarget_tolerance -# _____default_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_DIAG-NPI;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;3;;;NPi;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;heat;Mix1;2005;;;;;SSP2-EU21-NPi: This National Policies Implemented (Npi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi is identical to the NDC scenario until 2020 but assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies.;;;;;;;;;;;1;; -# _____pure_carbon_pricing_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_DIAG-C80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 34,2030 44,2035 56,2040 71,2045 91,2050 116,2055 148,2060 190,2070 309,2080 503,2090 819,2100 1334,2110 1334,2130 1334,2150 1334);;;;; -xx_DIAG-C0to80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 0.001,2030 0.001,2035 0.001,2040 71,2045 91,2050 116,2055 148,2060 190,2070 309,2080 503,2090 819,2100 1334,2110 1334,2130 1334,2150 1334);;;;; -xx_DIAG-C400-lin;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -# _____NZero_DIAG_scenario_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_DIAG-NZero;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -# _____C400-lin_tech_constraint_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_DIAG-C400-lin-LimBio;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-LimCCS;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 2000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-LimNuclear;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -# _____C400-lin_DIAG_paradigm_shift_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_DIAG-C400-lin-HighVRE;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;2050.EUR_regi 0.7;;wind 2300, windoff 4700, spv 5060;wind 0.9, windoff 0.9, spv 0.9;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-HighElectrification;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;elecPrice;;;;;wind 0.820125, windoff 0.91125, spv 0.95;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-HighElec-Supply;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, 2050.EUR_regi.sub.t.SE.electricity 0.913;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-HighH2;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;H2Price;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-ResidualFossil;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;highFossilPrice;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -xx_DIAG-C400-lin-HighEff;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; -# _____NZero_scenario_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP1_Nzero;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;; -# _____NZero_tech_constraint_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP1_NZero-LimBio;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP1_NZero-LimCCS;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 2000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP1_NZero-LimNuclear;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; -# _____WP5p3_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP5_Base;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;3;;;NPi;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;heat;Mix1;2005;;;;;same as xx_DIAG-NPI;;;;;;;;;;;1;; -xx_WP5_OPT-CP;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; -xx_WP5_OPT-CP-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_OPT-CP-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_OPT-CP-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; -# xx_WP5_OPT-CP-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP5_OPT-REG;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; -xx_WP5_OPT-REG-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_OPT-REG-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_OPT-REG-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; -# xx_WP5_OPT-REG-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP5_RAP-CP;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; -xx_WP5_RAP-CP-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_RAP-CP-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_RAP-CP-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; -# xx_WP5_RAP-CP-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -xx_WP5_RAP-REG;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; -xx_WP5_RAP-REG-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_RAP-REG-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; -xx_WP5_RAP-REG-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; -# xx_WP5_RAP-REG-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -# _____tests_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;3.543.046.358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -test_WP1_Nzero_DEU;0,WP1;;testOneRegi;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;DEU;1;1;1; -xx_WP1_Nzero_highPrecision_10tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.002 -xx_WP1_Nzero_highPrecision_5tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.001 -xx_WP1_Nzero_highPrecision_1tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.0002 -xx_WP1_Nzero_highPrecision_0p4tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;2050.GLO 0.9;NDC;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.00008 +title;start;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_maxProdBiolc;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description;cm_loadFromGDX_implicitQttyTargetTax;cm_implicitPriceTarget;cm_implicitPePriceTarget;cm_VREminShare;c_regi_nucscen;cm_incolearn;cm_learnRate;cm_regiExoPrice;c_testOneRegi_region;cm_nash_mode;c_keep_iteration_gdxes;cm_abortOnConsecFail;cm_emiMktTarget_tolerance +# _____default_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_DIAG-NPI;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;3;;;NPi;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;heat;Mix1;2005;;;;;SSP2-EU21-NPi: This National Policies Implemented (Npi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi is identical to the NDC scenario until 2020 but assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies.;;;;;;;;;;;1;; +# _____pure_carbon_pricing_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_DIAG-C80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 34,2030 44,2035 56,2040 71,2045 91,2050 116,2055 148,2060 190,2070 309,2080 503,2090 819,2100 1334,2110 1334,2130 1334,2150 1334);;;;; +xx_DIAG-C0to80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 0.001,2030 0.001,2035 0.001,2040 71,2045 91,2050 116,2055 148,2060 190,2070 309,2080 503,2090 819,2100 1334,2110 1334,2130 1334,2150 1334);;;;; +xx_DIAG-C400-lin;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +# _____NZero_DIAG_scenario_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_DIAG-NZero;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +# _____C400-lin_tech_constraint_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_DIAG-C400-lin-LimBio;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-LimCCS;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 2000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-LimNuclear;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +# _____C400-lin_DIAG_paradigm_shift_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_DIAG-C400-lin-HighVRE;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;2050.EUR_regi 0.7;;wind 2300, windoff 4700, spv 5060;wind 0.9, windoff 0.9, spv 0.9;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-HighElectrification;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;elecPrice;;;;;wind 0.820125, windoff 0.91125, spv 0.95;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-HighElec-Supply;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, 2050.EUR_regi.sub.t.SE.electricity 0.913;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-HighH2;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;H2Price;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-ResidualFossil;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;highFossilPrice;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +xx_DIAG-C400-lin-HighEff;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;;NPi;;;;;;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-C400-lin;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;GLO.(2025 116,2030 196,2035 277,2040 357,2045 438,2050 518,2055 598,2060 679,2070 839,2080 1000,2090 1161,2100 1321,2110 1321,2130 1321,2150 1321);;;;; +# _____NZero_scenario_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP1_Nzero;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;; +# _____NZero_tech_constraint_scenarios_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP1_NZero-LimBio;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP1_NZero-LimCCS;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 2000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP1_NZero-LimNuclear;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +# _____WP5p3_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP5_Base;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;3;;;NPi;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;heat;Mix1;2005;;;;;same as xx_DIAG-NPI;;;;;;;;;;;1;; +xx_WP5_OPT-CP;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; +xx_WP5_OPT-CP-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_OPT-CP-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_OPT-CP-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix3;2025;xx_WP5_OPT-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +# xx_WP5_OPT-CP-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP5_OPT-REG;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; +xx_WP5_OPT-REG-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_OPT-REG-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_OPT-REG-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.691, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP5_OPT-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +# xx_WP5_OPT-REG-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP5_RAP-CP;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; +xx_WP5_RAP-CP-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_RAP-CP-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_RAP-CP-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix3;2025;xx_WP5_RAP-CP;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +# xx_WP5_RAP-CP-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +xx_WP5_RAP-REG;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;;;;;;;;;;;;; +xx_WP5_RAP-REG-LimBio;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_RAP-REG-LimCCS;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825, (2035,2040,2045,2050).GLO.tax.t.CCS.all 3000, (2035,2040,2045,2050).EUR_regi.tax.t.CCS.all 250;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_WP5_RAP-REG-LimNuclear;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;2030.EU27_regi.tax.t.FE_wo_n_e.all 1.1235, (2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2040.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 0.321, 2045.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;5;;2;;;;;;heat;Mix4;2025;xx_WP5_RAP-REG;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +# xx_WP5_RAP-REG-LimRES;0;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# _____tests_____;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3.543.046.358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +test_WP1_Nzero_DEU;0,WP1;;testOneRegi;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;DEU;1;1;1; +xx_WP1_Nzero_highPrecision_10tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.002 +xx_WP1_Nzero_highPrecision_5tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.001 +xx_WP1_Nzero_highPrecision_1tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.0002 +xx_WP1_Nzero_highPrecision_0p4tCO2eq;0,test;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;2050.GLO 0.9;;;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;2020.2030.EU27_regi.all.year.netGHG_LULUCFGrassi_intraRegBunker 2.122, 2035.2050.EU27_regi.all.year.netGHG_LULUCFGrassi 0.01;;;;;;;;;;;;2;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.00008 diff --git a/config/scenario_config_DeepEl.csv b/config/scenario_config_DeepEl.csv index c20407ae46..1121f91297 100644 --- a/config/scenario_config_DeepEl.csv +++ b/config/scenario_config_DeepEl.csv @@ -1,9 +1,9 @@ -title;start;CES_parameters;optimization;slurmConfig;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_VRE_supply_assumptions;cm_wasteIncinerationCCSshare;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_tech_earlyreti_rate;cm_maxProdBiolc;c_ccsinjecratescen;techpol;regipol;cm_NucRegiPol;cm_CoalRegiPol;cm_multigasscen;cm_1stgen_phaseout;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description -testOneRegi-Base-DeepEl;0;;testOneRegi;8;none;;;0;;1150;none;;;1;;;;none;none;off;off;2;;;Mix1;;;;;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. -# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NPi-calibrate-DeepEl;1;calibrate;;14;;;;0;;;NPi;1;2100;;;;;NPi2018;;;;;;heat;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-Base-DeepEl;1;;;1;none;;;0;;;none;;2100;1;off;;;none;none;off;off;2;;heat;Mix1;2005;;;;;SSP2-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NPi-DeepEl;1;;;1;;3;;0;;;NPi;1;2100;;;;;NPi2018;;;;;;heat;Mix1;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi is identical to the NDC scenario until 2020 but assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-NDC-DeepEl;1;;;1;;3;globallyOptimal;0;;;NDC;1;2100;;;;;NDC;;;;;;heat;Mix2;2025;;SSP2-NPi-DeepEl;SSP2-NPi-DeepEl;;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-PkBudg500-DeepEl;1;;;1;rcp20;9;globallyOptimal;1;2050.GLO 0.9;500;functionalForm;100;2080;;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13, IND_regi.pc 0.13;100;5;NDC;;;;2;1;heat;Mix4;2025;;SSP2-NPi-DeepEl;;;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5 C scenario, peak warming is allowed to be at or slightly above 1.5 C, at median climate sensitivity but returns to values below 1.5 C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg1150-DeepEl;1;;;1;rcp26;9;globallyOptimal;1;2050.GLO 0.5;1150;functionalForm;60;2100;;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13, IND_regi.pc 0.13;100;5;NDC;;;;2;1;heat;Mix4;2025;;SSP2-NPi-DeepEl;;;SSP2-PkBudg1150: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2 C scenario, peak warming is allowed to be at or slightly above 2 C, at median climate sensitivity but returns to values below 2 C in at least 67 % of scenarios by the end of the century. +title;start;CES_parameters;optimization;slurmConfig;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_VRE_supply_assumptions;cm_wasteIncinerationCCSshare;cm_budgetCO2from2020;carbonprice;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_tech_earlyreti_rate;cm_maxProdBiolc;c_ccsinjecratescen;techpol;regipol;cm_NucRegiPol;cm_CoalRegiPol;cm_multigasscen;cm_1stgen_phaseout;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +testOneRegi-Base-DeepEl;0;;testOneRegi;8;none;;;0;;1150;none;;;;;1;;;;none;none;off;off;2;;;Mix1;;;;;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. +# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-NPi-calibrate-DeepEl;1;calibrate;;14;;;;0;;;NPi;;;1;2100;;;;;NPi2018;;;;;;heat;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-Base-DeepEl;1;;;1;none;;;0;;;none;;;;2100;1;off;;;none;none;off;off;2;;heat;Mix1;2005;;;;;SSP2-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NPi-DeepEl;1;;;1;;3;;0;;;NPi;;;1;2100;;;;;NPi2018;;;;;;heat;Mix1;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi is identical to the NDC scenario until 2020 but assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NDC-DeepEl;1;;;1;;3;globallyOptimal;0;;;NDC;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;2100;;;;;;;;;;;heat;Mix2;2025;;SSP2-NPi-DeepEl;SSP2-NPi-DeepEl;;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-PkBudg500-DeepEl;1;;;1;rcp20;9;globallyOptimal;1;2050.GLO 0.9;500;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;100;2080;;USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13, IND_regi.pc 0.13;100;5;;;;;2;1;heat;Mix4;2025;;SSP2-NPi-DeepEl;;;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5 C scenario, peak warming is allowed to be at or slightly above 1.5 C, at median climate sensitivity but returns to values below 1.5 C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg1150-DeepEl;1;;;1;rcp26;9;globallyOptimal;1;2050.GLO 0.5;1150;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;60;2100;;USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13, IND_regi.pc 0.13;100;5;;;;;2;1;heat;Mix4;2025;;SSP2-NPi-DeepEl;;;SSP2-PkBudg1150: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2 C scenario, peak warming is allowed to be at or slightly above 2 C, at median climate sensitivity but returns to values below 2 C in at least 67 % of scenarios by the end of the century. diff --git a/config/scenario_config_EL2p0DeepDive.csv b/config/scenario_config_EL2p0DeepDive.csv index 5be3f34fdf..3e6b1a70af 100644 --- a/config/scenario_config_EL2p0DeepDive.csv +++ b/config/scenario_config_EL2p0DeepDive.csv @@ -1,39 +1,39 @@ -title;start;path_gdx_carbonprice;cm_bioenergy_SustTax;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_maxProdBiolc;c_ccsinjecratescen;c_ccscapratescen;cm_subsec_model_steel;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description -SSP2-NPi-calibrate;calibrate,AMT,compileInTests;;1.5;calibrate;;14;;;;;;;NPi;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-Base;1,AMT;;1.5;;;;;;none;;;;none;;;1;;off;;;;;;;;;none;none;;;off;off;;;;;;;;;;2;;;;;;Mix1;2005;;;;;SSP2-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NDC;1,AMT;;1.5;;;;;;;3;globallyOptimal;;NDC;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;Mix2;2025;;SSP2-NPi;SSP2-NPi;;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NPi;1,AMT,compileInTests;;1.5;;;;;;;3;;;NPi;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-noDSPkB500-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2-DSPkB500-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 -SSP2-noDSPkB500-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB500-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie -SSP2-DSPkB500-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB500-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie -SSP2-noDSPkB650-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2-DSPkB650-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 -SSP2-noDSPkB650-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB650-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie -SSP2-DSPkB650-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB650-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie -SSP2-noDSPkB1050-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2-DSPkB1050-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 -SSP2-noDSPkB1050-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB1050-noDS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 without diet change, but includes diet change in magpie -SSP2-DSPkB1050-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB1050-DS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 with diet change, but does not include diet change in magpie -SSP2-noDSPkB500-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2-DSPkB500-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 -SSP2-noDSPkB500-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB500-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie -SSP2-DSPkB500-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB500-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie -SSP2-noDSPkB650-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2-DSPkB650-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 -SSP2-noDSPkB650-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB650-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie -SSP2-DSPkB650-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB650-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie -SSP2-noDSPkB1050-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2-DSPkB1050-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 -SSP2-noDSPkB1050-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB1050-noDS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 without diet change, but includes diet change in magpie -SSP2-DSPkB1050-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB1050-DS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 with diet change, but does not include diet change in magpie -SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2-DSPkB500-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 -SSP2-noDSPkB500-DS_betax_DeepDive_noNDC;1,AMT;SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie -SSP2-DSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;SSP2-DSPkB500-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie -SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 -SSP2-noDSPkB650-DS_betax_DeepDive_noNDC;1,AMT;SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie -SSP2-DSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie -SSP2-noDSPkB1050-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2-DSPkB1050-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +title;start;path_gdx_carbonprice;cm_bioenergy_SustTax;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_startyear;cm_peakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;c_tech_earlyreti_rate;cm_fetaxscen;cm_maxProdBiolc;c_ccsinjecratescen;c_ccscapratescen;cm_subsec_model_steel;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;techpol;regipol;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +SSP2-NPi-calibrate;calibrate,AMT,compileInTests;;1.5;calibrate;;14;;;;;;;NPi;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-Base;1,AMT;;1.5;;;;;;none;;;;none;;;1;;;off;;;;;;;;;none;none;;off;off;;;;;;;;;;2;;;;;;Mix1;2005;;;;;SSP2-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NDC;1,AMT;;1.5;;;;;;;3;globallyOptimal;;NDC;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;Mix2;2025;;SSP2-NPi;SSP2-NPi;;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NPi;1,AMT,compileInTests;;1.5;;;;;;;3;;;NPi;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-noDSPkB500-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2-DSPkB500-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2-noDSPkB500-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB500-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie +SSP2-DSPkB500-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB500-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie +SSP2-noDSPkB650-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2-DSPkB650-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2-noDSPkB650-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB650-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie +SSP2-DSPkB650-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB650-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie +SSP2-noDSPkB1050-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2-DSPkB1050-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +SSP2-noDSPkB1050-DS_betax_DeepDive;1,AMT;SSP2-noDSPkB1050-noDS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 without diet change, but includes diet change in magpie +SSP2-DSPkB1050-noDS_betax_DeepDive;1,AMT;SSP2-DSPkB1050-DS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 with diet change, but does not include diet change in magpie +SSP2-noDSPkB500-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2-DSPkB500-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2-noDSPkB500-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB500-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie +SSP2-DSPkB500-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB500-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie +SSP2-noDSPkB650-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2-DSPkB650-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2-noDSPkB650-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB650-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie +SSP2-DSPkB650-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB650-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie +SSP2-noDSPkB1050-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2-DSPkB1050-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +SSP2-noDSPkB1050-DS_betax_AgMIP;1,AMT;SSP2-noDSPkB1050-noDS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 without diet change, but includes diet change in magpie +SSP2-DSPkB1050-noDS_betax_AgMIP;1,AMT;SSP2-DSPkB1050-DS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 1050 with diet change, but does not include diet change in magpie +SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2-DSPkB500-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2-noDSPkB500-DS_betax_DeepDive_noNDC;1,AMT;SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 without diet change, but includes diet change in magpie +SSP2-DSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;SSP2-DSPkB500-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 500 with diet change, but does not include diet change in magpie +SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;functionalForm;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2-noDSPkB650-DS_betax_DeepDive_noNDC;1,AMT;SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 without diet change, but includes diet change in magpie +SSP2-DSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix4;2025;;SSP2-NPi;;;This is a run that uses an exogenous ghg price that reaches a budget of 650 with diet change, but does not include diet change in magpie +SSP2-noDSPkB1050-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2-DSPkB1050-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;functionalForm;60;2100;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;Mix3;2025;;SSP2-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 diff --git a/config/scenario_config_ELEVATE2p3.csv b/config/scenario_config_ELEVATE2p3.csv old mode 100755 new mode 100644 index 881da4db18..737ea1a299 --- a/config/scenario_config_ELEVATE2p3.csv +++ b/config/scenario_config_ELEVATE2p3.csv @@ -1,14 +1,14 @@ -title;start;slurmConfig;cm_wasteIncinerationCCSshare;cm_CESMkup_ind;cm_EDGEtr_scen;cm_reducCostB;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_regiDiff;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;carbonpriceRegi;cm_netZeroScen;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_taxCO2_expGrowth;cm_maxProdBiolc;techpol;cm_multigasscen;c_changeProdCost;cm_startyear;path_gdx_carbonprice;path_gdx;path_gdx_refpolicycost;path_gdx_ref;path_gdx_bau;description -ELV_CurPol_NPi;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.05;100;NPi2018;;;2005;;;;;;ELV_CurPol_NPi: The Current Policies scenarios describe energy, climate and economic projections for the period until 2020 followed by a global convergence. -ELV_CurPol_NPi2025;0;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1;100;;;;2005;;;;;;ELV_CurPol_NPi2025: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region has a linear price increase of $20 eoc. -ELV-SSP2-CP-D0;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1;100;;;;2030;;;;;;ELV-SSP2-CP-D0: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region keeps the carbon price constant. -ELV-SSP2-CP-D1;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.01;100;;;;2030;;;;;;ELV-SSP2-CP-D1: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region increases their carbon price by 1%. -ELV-SSP2-CP-D3;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;;;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.03;100;;;;2030;;;;;;ELV-SSP2-CP-D3: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region increases their carbon price by 3%. -ELV_NDC2030;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;NDC;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.05;100;NDC;;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;ELV_CurPol_NPi;ELV_NDC2030: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year remains at least constant throughout the rest of the century. -ELV-SSP2-NDC-D0;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1;100;NDC;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D0: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year remains constant throughout the rest of the century. -ELV-SSP2-NDC-D1;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.01;100;NDC;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D1: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year increases by 1%. -ELV-SSP2-NDC-D3;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;none;;1;2100;3;;1.03;100;NDC;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D3: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year increases by 3%. -ELV-SSP2-LTS;1;9;2050.GLO 0.5;;Mix3ICEban;none;rcp26;3;globallyOptimal;0;NDC;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;on;on;EUR_regi, NEU_regi;netZero;ELEVATE2p3;1;2100;3;;1.02;100;NDC;;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;ELV_CurPol_NPi;ELV-SSP2-LTS: High uncoordinated ambition (Considering the mid-century strategy pledges (net-zero) announced at COP26 in Glasgow.) -ELV-SSP2-NDC-LTS;1;9;2050.GLO 0.5;;Mix3ICEban;none;rcp26;0;globallyOptimal;0;exogenous;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;netZero;ELEVATE2p3;1;2100;3;;1.02;100;NDC;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-LTS: The scenario reaches NDC pleages in 2030 and converges to the Glasgow mid-century pledges. -ELV-SSP2-1000;1;;2050.GLO 0.5;;Mix3ICEban;;rcp26;9;globallyOptimal;1000;functionalForm;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;none;;75;2080;;;;;NDC;2;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;;ELV-SSP2-1000:This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1000 Gt CO2 on total CO2 emissions from 2020 to 2000. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -ELV-SSP2-650;1;;2050.GLO 0.9;Elec_Push;Mix4ICEban;;rcp20;9;globallyOptimal;650;functionalForm;;;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;none;;100;2055;1;;;;NDC;2;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;;ELV-SSP2-650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +title;start;slurmConfig;cm_wasteIncinerationCCSshare;cm_CESMkup_ind;cm_EDGEtr_scen;cm_reducCostB;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_taxCO2_functionalForm;cm_taxCO2_regiDiff;regipol;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;carbonpriceRegi;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_taxCO2_expGrowth;cm_maxProdBiolc;techpol;cm_multigasscen;c_changeProdCost;cm_startyear;path_gdx_carbonprice;path_gdx;path_gdx_refpolicycost;path_gdx_ref;path_gdx_bau;description +ELV_CurPol_NPi;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi;;;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.05;100;NPi2018;;;2005;;;;;;ELV_CurPol_NPi: The Current Policies scenarios describe energy, climate and economic projections for the period until 2020 followed by a global convergence. +ELV_CurPol_NPi2025;0;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025;;;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1;100;;;;2005;;;;;;ELV_CurPol_NPi2025: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region has a linear price increase of $20 eoc. +ELV-SSP2-CP-D0;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1;100;;;;2030;;;;;;ELV-SSP2-CP-D0: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region keeps the carbon price constant. +ELV-SSP2-CP-D1;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.01;100;;;;2030;;;;;;ELV-SSP2-CP-D1: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region increases their carbon price by 1%. +ELV-SSP2-CP-D3;1;9;;;Mix2ICEban;none;rcp45;0;off;0;NPi2025expo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.03;100;;;;2030;;;;;;ELV-SSP2-CP-D3: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030 with new expert guess for 2025 and 2030 (EUR only). After 2030 each region increases their carbon price by 3%. +ELV_NDC2030;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;NDC;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.05;100;;;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;ELV_CurPol_NPi;ELV_NDC2030: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year remains at least constant throughout the rest of the century. +ELV-SSP2-NDC-D0;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1;100;;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D0: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year remains constant throughout the rest of the century. +ELV-SSP2-NDC-D1;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.01;100;;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D1: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year increases by 1%. +ELV-SSP2-NDC-D3;1;9;;;Mix3ICEban;none;rcp45;3;globallyOptimal;0;exogenousExpo;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;1;2100;3;;1.03;100;;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-D3: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year increases by 3%. +ELV-SSP2-LTS;1;9;2050.GLO 0.5;;Mix3ICEban;none;rcp26;3;globallyOptimal;0;NDC;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;on;on;EUR_regi, NEU_regi;netZero;1;2100;3;;1.02;100;;;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;ELV_CurPol_NPi;ELV-SSP2-LTS: High uncoordinated ambition (Considering the mid-century strategy pledges (net-zero) announced at COP26 in Glasgow.) +ELV-SSP2-NDC-LTS;1;9;2050.GLO 0.5;;Mix3ICEban;none;rcp26;0;globallyOptimal;0;exogenous;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;netZero;1;2100;3;;1.02;100;;;1;2035;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_NDC2030;ELV_CurPol_NPi;ELV-SSP2-NDC-LTS: The scenario reaches NDC pleages in 2030 and converges to the Glasgow mid-century pledges. +ELV-SSP2-1000;1;;2050.GLO 0.5;;Mix3ICEban;;rcp26;9;globallyOptimal;1000;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;75;2080;;;;;;2;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;;ELV-SSP2-1000:This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1000 Gt CO2 on total CO2 emissions from 2020 to 2000. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +ELV-SSP2-650;1;;2050.GLO 0.9;Elec_Push;Mix4ICEban;;rcp20;9;globallyOptimal;650;functionalForm;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;none;100;2055;1;;;;;2;1;2030;;;ELV_CurPol_NPi2025;ELV_CurPol_NPi2025;;ELV-SSP2-650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. diff --git a/config/scenario_config_ELEVATE4p4.csv b/config/scenario_config_ELEVATE4p4.csv deleted file mode 100644 index 4c5c60cebb..0000000000 --- a/config/scenario_config_ELEVATE4p4.csv +++ /dev/null @@ -1,26 +0,0 @@ -title;start;slurmConfig;climate;cm_import_tax;cm_taxrc_RE;cm_magicc_calibrateTemperature2000;cm_damage_KWSE;cm_magicc_config;cm_magicc_temperatureImpulseResponse;cm_damage_DiceLike_specification;cm_damages_BurkeLike_persistenceTime;cm_damages_BurkeLike_specification;cm_damages_SccHorizon;cm_VRE_supply_assumptions;c_CES_calibration_new_structure;buildings;transport;industry;cm_wasteIncinerationCCSshare;c_shBioTrans;cm_EDGEtr_scen;cm_reducCostB;cm_CES_calibration_default_prices;c_ccsinjecratescen;.CDR;cm_bioenergy_SustTax;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_LearningSpillover;cm_budgetCO2from2020;carbonprice;carbonpriceRegi;cm_netZeroScen;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_taxCO2_expGrowth;cm_maxProdBiolc;c_ccscapratescen;techpol;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;water;cm_startyear;path_gdx_carbonprice;path_gdx;path_gdx_ref;path_gdx_bau;description -SSP2-Base_bIT;0;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;15;0;100;0;0;simple;edge_esm;subsectors;;1;Mix1;none;0.01;1;off;1.5;none;0;off;1;;none;none;;-1;2100;3;1;;;3;1.05;off;1;none;2;1;2;SSP2;1;0;forcing_SSP2;CLE;heat;2005;;;;;SSP2-Base_bIT: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -ELV_CurPol_nTecC_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;0;;NPi;none;;1;2100;3;;;;3;1.05;100;1;NPi2018;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. -ELV_CurPol_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;1;;NPi;none;;1;2100;3;;;;3;1.05;100;1;NPi2018;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. -ELV_NDC2030_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;globallyOptimal;1;;NDC;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;;;ELV_CurPol_T44;ELV_CurPol_T44;ELV_NDC2030_T44: The NDCs scenario aims to represent the goals of each country or region defined in their NDCs. The ambition levels reached in the target year remains at least constant throughout the rest of the century. -ELV_NDC2030_nTecC_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;1;;NDC;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;;;ELV_CurPol_T44;ELV_CurPol_T44;ELV_NDC2030_nTecC_T44: NDCs with no cooperation on technology learning (fixing the foreign capacity in technology learning to the level of 2020). -ELV_NPi2020_700_T44;0;5;off;;none;uncalibrated;0;RCP26_50;on;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.9;1;Mix3;heatpumps;0.01;1;off;1.5;rcp26;7;globallyOptimal;1;660;expoLinear;none;;100;2080;3;;;;3;1.05;100;1;NDC;2;1;2;SSP2;1;0;forcing_SSP2;CLE;heat;2030;;;ELV_NDC2030_T44;;ELV_NPi2020_700f_T45: full century 1.5 degree C global scenario -ELV_NPi2020_700f_T44;0;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.9;1;Mix3;heatpumps;0.01;1;off;1.5;rcp26;9;globallyOptimal;1;660;expoLinear;none;;100;2080;3;;;;3;1.05;100;1;NDC;2;1;2;SSP2;1;0;forcing_SSP2;CLE;heat;2030;;;ELV_NDC2030_T44;;ELV_NPi2020_700f_T45: full century 1.5 degree C global scenario -ELV_NDC2030_intax_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_CurPol_T44;;ELV_NDC2030_intax_T44: NDC with extra national tax on imported CO2 emissions (i.e emissions associated to imports of energy carriers) using national carbon tax as the value to tax imports. -ELV_NDC2030_intax_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_NDC2030_intax_T44;;ELV_NDC2030_intax_rc_T44: same as NDC_intax but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_NDC2030_intax_nTecC_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_CurPol_T44;;ELV_NDC2030_intax_nTecC_T44: NDC_intax and no cooperation on technology learning (fixing the foreign capacity in technology learning to the level of 2020). -ELV_NDC2030_intax_nTecC_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_NDC2030_intax_nTecC_T44;;ELV_NDC2030_intax_nTecC_rc_T44: same as NDC_intax_nTecC but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_NDC2030_avtax_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_CurPol_T44;;ELV_NDC2030_avtax_T44: NDC with extra tax on imported CO2 emissions (i.e emissions associated to imports of energy carriers) using the max between average worldwide carbon tax or national carbon tax as the value to tax imports. -ELV_NDC2030_avtax_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_NDC2030_avtax_T44;;ELV_NDC2030_avtax_rc_T44: same as NDC_avtax but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_NDC2030_avtax_nTecC_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_CurPol_T44;;ELV_NDC2030_avtax_nTecC_T44: same as NDC_avtax and no cooperation on technology learning (fixing the foreign capacity in technology learning to the level of 2020). -ELV_NDC2030_avtax_nTecC_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;;1;Mix3;none;0.01;1;off;1.5;;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2025;ELV_NDC2030_T44;;ELV_NDC2030_avtax_nTecC_T44;;ELV_NDC2030_avtax_nTecC_rc_T44: same as NDC_avtax_nTecC but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_LTS_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;globallyOptimal;1;;NDC;netZero;NGFS_v4;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;;;ELV_NDC2030_T44;ELV_CurPol_T44;ELV_LTS_T44: High uncoordinated ambition (named as Glasgow in the ENGAGE 4.5 runs. The Glasgow scenario considers the NDC pledges and the mid-century strategy pledges (net-zero) announced at COP26 in Glasgow.) -ELV_LTS_nTecC_T44;1;5;off;;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;off;1;;NDC;netZero;NGFS_v4;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;;;ELV_NDC2030_T44;ELV_CurPol_T44;ELV_LTS_nTecC_T44: LTS with no cooperation on technology learning. -ELV_LTS_intax_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_NDC2030_intax_T44;;ELV_LTS_intax_T44: LTS with extra national tax on imported CO2 emissions (i.e emissions associated to imports of energy carriers) using national carbon tax as the value to tax imports. -ELV_LTS_intax_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_LTS_intax_T44;;ELV_LTS_intax_rc_T44: same as LTS_intax but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_LTS_intax_nTecC_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_NDC2030_intax_nTecC_T44;;ELV_LTS_intax_nTecC_T44: LTS_intax and no cooperation on technology learning (fixing the foreign capacity in technology learning to the level of 2020). -ELV_LTS_intax_nTecC_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).CO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_LTS_intax_nTecC_T44;;ELV_LTS_intax_nTecC_rc_T44: LTS_intax_nTecC but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_LTS_avtax_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_NDC2030_avtax_T44;;ELV_LTS_avtax_T44: LTS with extra tax on imported CO2 emissions (i.e emissions associated to imports of energy carriers) using the max between average worldwide carbon tax or national carbon tax as the value to tax imports. -ELV_LTS_avtax_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;globallyOptimal;1;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_LTS_avtax_T44;;ELV_LTS_avtax_rc_T44: same as LTS_avtax but with import tax revenue recycling to additional investments in wind, solar and storage. -ELV_LTS_avtax_nTecC_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;none;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;;ELV_NDC2030_avtax_nTecC_T44;;ELV_LTS_avtax_nTecC_T44: same as LTS_avtax and no cooperation on technology learning (fixing the foreign capacity in technology learning to the level of 2020). -ELV_LTS_avtax_nTecC_rc_T44;1;5;off;GLO.(pecoal,pegas,peoil).avCO2taxmarkup 1;REdirect;uncalibrated;0;RCP26_50;off;HowardNonCatastrophic;30;0;100;0;0;simple;edge_esm;subsectors;2050.GLO 0.5;1;Mix3;none;0.01;1;off;1.5;rcp26;3;off;0;;exogenous;none;;1;2100;3;;;;3;1.05;100;1;NDC;2;1;;SSP2;1;0;forcing_SSP2;CLE;heat;2030;ELV_LTS_T44;ELV_LTS_avtax_nTecC_T44;ELV_LTS_avtax_nTecC_T44;;ELV_LTS_avtax_nTecC_rc_T44: LTS_avtax_nTecC but with import tax revenue recycling to additional investments in wind, solar and storage. diff --git a/config/scenario_config_IKEA.csv b/config/scenario_config_IKEA.csv new file mode 100644 index 0000000000..6503002a3d --- /dev/null +++ b/config/scenario_config_IKEA.csv @@ -0,0 +1,22 @@ +title;start;CES_parameters;copyConfigFrom;path_gdx_ref;path_gdx_refpolicycost;cm_nash_autoconverge;cm_floorCostScen;cm_scaleDemand;c_nonco2_macc_scenario;cm_techcosts;cm_budgetCO2from2020;cm_taxCO2_IncAfterPeakBudgYr;cm_frac_NetNegEmi;cm_taxCO2_regiDiff_convergence;c_SlackMultiplier;.cm_coalPhaseoutOECD;cm_1stgen_phaseout;cm_maxProdBiolc;cm_bioenergy_SustTax;cm_tradecostBio;cm_nucscen;c_tech_earlyreti_rate;cm_fxIndUe;cm_fxIndUeReg;c_ccsinjecratescen;cm_33_maxFeShare;cm_33EW;cm_33OAE;cm_calibration_string;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_fetaxscen;c_ccscapratescen;cm_CESMkup_build;cm_CESMkup_ind;cm_CESMkup_ind_data;cm_wasteIncinerationCCSshare;techpol;regipol;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_bau;description +# Remind defaults H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;calibrate;;;;;;;;;;;;;;;;;;;;;;;;;;;;14;;;;;;;;NPi;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;Mix1;;2005;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;NPi;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;Mix1;;2005;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025;1,AMT,2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2-PkBudg650;1,AMT,2;;;SSP2-NPi2025;SSP2-NPi2025;;;;;;650;;;;;;;;;;;;;;;;;;;;;;rcp20;globallyOptimal;;;9;functionalForm;;100;2055;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;2050.GLO 0.9;;;;;;;;;;;;;2;;;;Mix4ICEban;1;2030;;;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg1000;1,AMT,2;;;SSP2-NPi2025;SSP2-NPi2025;;;;;;1000;;;;;;;;;;;;;;;;;;;;;;rcp26;globallyOptimal;;;9;functionalForm;;75;2080;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;2050.GLO 0.5;;;;;;;;;;;;;2;;;;Mix3ICEban;1;2030;;;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +# Project calibration;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-calibrate;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-calibrate-demandChanged;NPEcalibrate;calibrate;SSP2-NPi-calibrate;;;2;pricestruc;2025.2040.(EUR,NEU,USA,JPN,CAZ) 0.75, 2025.2040.(SSA,OAS,IND) 1.25;;REG2040;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-calibrate-demandStandard;NPEcalibrate;calibrate;SSP2-NPi-calibrate;;;2;pricestruc;;;REG2040;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# Project baselines;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-NPi-demandChanged;NPE;;SSP2-NPi2025;;;2;pricestruc;2025.2040.(EUR,NEU,USA,JPN,CAZ) 0.75, 2025.2040.(SSA,OAS,IND) 1.25;;REG2040;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-NPi-demandStandard;NPE;;NPE-NPi-demandChanged;;;;;off;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# Project scenarios;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-core;NPE;;SSP2-PkBudg650;NPE-NPi-demandChanged;NPE-NPi-demandChanged;2;pricestruc;2025.2040.(EUR,NEU,USA,JPN,CAZ) 0.75, 2025.2040.(SSA,OAS,IND) 1.25;Optimistic;REG2040;650;5;0;GLO.2070 2;0.5;on;1;70;3;0.5;5;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;on;GLO;6;0.2;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-convEarly;NPE;;NPE-core;;;;;;;;;;;GLO.2050 2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-convLate;NPE;;NPE-core;;;;;;;;;;;GLO.2100 2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-demandStandard;NPE;;NPE-core;NPE-NPi-demandStandard;NPE-NPi-demandStandard;;;off;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# Project supplements;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-2C-demandChanged;;;SSP2-PkBudg1000;NPE-NPi-demandChanged;NPE-NPi-demandChanged;2;pricestruc;2025.2040.(EUR,NEU,USA,JPN,CAZ) 0.75, 2025.2040.(SSA,OAS,IND) 1.25;Optimistic;REG2040;;;0;GLO.2070 2;0.5;;;70;3;0.5;5;;on;GLO;6;0.2;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +NPE-2C-demandStandard;;;NPE-2C-demandChanged;NPE-NPi-demandStandard;NPE-NPi-demandStandard;;;off;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/config/scenario_config_JustMIP.csv b/config/scenario_config_JustMIP.csv old mode 100755 new mode 100644 index f9cacc53db..b75db5ee44 --- a/config/scenario_config_JustMIP.csv +++ b/config/scenario_config_JustMIP.csv @@ -1,12 +1,12 @@ -title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_convergence;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_convergence;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description # H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NDC;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -Reference_SSP2_800f;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;800;;functionalForm;;75;;0;;;;;;;;;;;2;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;Reference_SSP2_800f: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a end-of-century budget 800 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a JustMIP reference scenario that limits biomass production to a threshold of 100 EJ/year +-10%, carbon storage to 365 Gt CO2 until the end-of-century and using the Biodiversity Intactness Index (BII), restoring biodiversity to levels seen at least around 1990. +SSP2-NDC;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;;;;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;;;2;;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +Reference_SSP2_800f;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;800;;functionalForm;;75;;0;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;2;;;2050.GLO 0.5;;;;;;;;;;;;;;;2;;;100;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;Reference_SSP2_800f: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a end-of-century budget 800 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a JustMIP reference scenario that limits biomass production to a threshold of 100 EJ/year +-10%, carbon storage to 365 Gt CO2 until the end-of-century and using the Biodiversity Intactness Index (BII), restoring biodiversity to levels seen at least around 1990. # H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -Reference_SSP1_800f;1,AMT;;;;;rcp26;globallyOptimal;;;5;800;;functionalForm;;75;;0;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;2;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;Reference_SSP1_800f: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a end-of-century budget 800 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a JustMIP reference scenario that limits biomass production to a threshold of 100 EJ/year +-10%, carbon storage to 365 Gt CO2 until the end-of-century and using the Biodiversity Intactness Index (BII), restoring biodiversity to levels seen at least around 1990. +SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;2;;;;;;5;;;;;;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;;;;2;;;;;;5;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;;;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;2;;;;;;5;;;2050.GLO 0.5;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +Reference_SSP1_800f;1,AMT;;;;;rcp26;globallyOptimal;;;5;800;;functionalForm;;75;;0;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;2;;;;;;2;;;2050.GLO 0.5;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;Reference_SSP1_800f: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a end-of-century budget 800 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a JustMIP reference scenario that limits biomass production to a threshold of 100 EJ/year +-10%, carbon storage to 365 Gt CO2 until the end-of-century and using the Biodiversity Intactness Index (BII), restoring biodiversity to levels seen at least around 1990. diff --git a/config/scenario_config_MitiConsv.csv b/config/scenario_config_MitiConsv.csv index f1de326ca5..8f8fe8a75f 100644 --- a/config/scenario_config_MitiConsv.csv +++ b/config/scenario_config_MitiConsv.csv @@ -1,7 +1,7 @@ -title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_convergence;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description -rev11_MitiConsv_SSP2-NPi;1,AMT,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -rev11_MitiConsv_SSP2-PB750-NPi;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;VLE;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. -rev11_MitiConsv_SSP2-PB750-NDC;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;VLE;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. -rev11_MitiConsv_SSP2-PB750-AR250;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;VLE;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. -rev11_MitiConsv_SSP2-PB750-AR350;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;VLE;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. -rev11_MitiConsv_SSP2-PB750-AR150;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;100;;;VLE;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. +title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_convergence;cm_emiscen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +rev11_MitiConsv_SSP2-NPi;1,AMT,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +rev11_MitiConsv_SSP2-PB750-NPi;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;2;;;100;;;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. +rev11_MitiConsv_SSP2-PB750-NDC;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;2;;;100;;;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. +rev11_MitiConsv_SSP2-PB750-AR250;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;2;;;100;;;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. +rev11_MitiConsv_SSP2-PB750-AR350;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;2;;;100;;;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. +rev11_MitiConsv_SSP2-PB750-AR150;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;750;;functionalForm;;100;2055;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;;;2;;;100;;;Elec_Push;Mix4ICEban;1;2030;;rev11_MitiConsv_SSP2-NPi;;rev11_MitiConsv_SSP2-NPi;SSP2-PkBudg750: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 750 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be above 1.5C but well-below 2C at median climate sensitivity but returns to 1.5C in at least 50 % of scenarios by the end of the century. diff --git a/config/scenario_config_NGFS_v5.csv b/config/scenario_config_NGFS_v5.csv deleted file mode 100644 index fa9f4b8632..0000000000 --- a/config/scenario_config_NGFS_v5.csv +++ /dev/null @@ -1,25 +0,0 @@ -title;start;copyConfigFrom;cm_import_tax;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;CES_parameters;slurmConfig;climate;downscaleTemperature;cm_magicc_calibrateTemperature2000;damages;cm_damage_KWSE;internalizeDamages;climate_assessment_magicc_prob_file_iteration;cm_magicc_config;cm_magicc_temperatureImpulseResponse;cm_KotzWenzPerc;cm_damage_DiceLike_specification;cm_damages_BurkeLike_persistenceTime;cm_damages_BurkeLike_specification;cm_damages_SccHorizon;cm_VRE_supply_assumptions;c_CES_calibration_new_structure;buildings;transport;industry;cm_wasteIncinerationCCSshare;c_shBioTrans;cm_EDGEtr_scen;cm_reducCostB;cm_CES_calibration_default_prices;cm_CO2TaxSectorMarkup;c_ccsinjecratescen;c_ccsinjecrateRegi;cm_33DAC;cm_33EW;cm_bioenergy_SustTax;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;carbonpriceRegi;regipol;cm_implicitQttyTarget;cm_implicitQttyTarget_tolerance;cm_NDC_version;cm_netZeroScen;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_taxCO2_expGrowth;cm_maxProdBiolc;c_ccscapratescen;techpol;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;water;fixOnRefAuto;cm_startyear;path_gdx;path_gdx_ref;path_gdx_refpolicycost;path_gdx_bau;description -# ___Calibration___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;initial value;initial value;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-Base_covidCalib;0;;;SSP2;;;;calibrate;14;off;off;uncalibrated;off;0;off;;OLDDEFAULT;off;;HowardNonCatastrophic;15;0;100;0;1;simple;edge_esm;subsectors;;1;Mix3;none;0.01;;1;;;;1.5;none;0;off;;none;none;none;;;;;-1;2100;3;1;;;3;1.05;off;1;none;2;1;2;SSP2;1;0;forcing_SSP2;CLE;heat;;2005;;;;; -SSP2-lowDem_calib;0;SSP2-Base_covidCalib;;SSP2_lowEn;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -# ___Baselines___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-Base;0;;;SSP2;medOil;medGas;medCoal;load;5;off;off;uncalibrated;off;0;off;;RCP26_50;off;;HowardNonCatastrophic;15;0;100;0;0;simple;edge_esm;subsectors;;1;Mix1;none;0.01;;1;;;;1.5;none;0;off;;none;none;none;;;;;-1;2100;3;1;;;3;1.05;off;1;none;2;1;2;SSP2;1;0;forcing_SSP2;CLE;heat;TRUE;2005;;;;;SSP2-Base: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -# ___NO_DAMAGES___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -h_cpol_noUkr;NGFS;SSP2-Base;;;;;;;;;;;;;;;;;;;30;;;;;;;;;;Mix2;none;;;;;0;0;1.5;rcp45;3;off;0;NPi;none;;;;;;1;2100;;9;;;3;1.05;100;;NPi2018;2;1;3;SSP2;1;0;forcing_SSP2;CLE;heat;;2005;;;;;h_cpol: The Current Policies scenario assumes that only currently implemented policies are preserved, leading to high physical risks. Emissions grow until 2080 leading to about 3 K of warming and severe physical risks. This includes irreversible changes like higher sea level rise. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -h_cpol;NGFS;h_cpol_noUkr;EUR.pegas.worldPricemarkup 0.5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025;;h_cpol_noUkr;;; -h_ndc;NGFS;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Mix3;none;;;1;;;;1.5;rcp45;3;globallyOptimal;0;NDC;none;;;;;;1;2100;3;;;;;;;;NDC;;;3;;;;;;;;2025;;h_cpol_noUkr;h_cpol;h_cpol_noUkr;h_ndc: The Nationally Determined Contributions (NDCs) scenario includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the beginning of 2021 continues over the 21st century (low transition risks). Emissions decline but lead nonetheless to about 2.5 K of warming associated with moderate to severe physical risks. Transition risks are relatively low. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -o_1p5c;NGFS;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;Mix4;heatpumps;;;1;;;;1.5;rcp20;9;globallyOptimal;560;functionalForm;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 4300, 2080.GLO.tax.t.CCS.biomass 4300;0.1;;;150;2045;6;;;;;;;;NDC;;;2;;;;;;;;2025;;h_cpol_noUkr;h_cpol;;o_1p5c: The Net Zero 2050 scenario assumes that ambitious climate policies are introduced immediately, giving at least a 50 percent chance of limiting global warming to below 1.5 K by the end of the century, with no or low overshoot of 1.5 K in earlier years. Stringent climate policies and innovation let net zero CO2 emissions to be reached around 2050. CDR is used to accelerate the decarbonisation but kept to the minimum possible and broadly in line with sustainable levels of bioenergy production. Physical risks are relatively low but transition risks are high. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -o_lowdem;NGFS;o_1p5c;;SSP2_lowEn;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;;;;;GLO 0.00125, CAZ_regi 0.0045, CHA_regi 0.004, EUR_regi 0.0045, IND_regi 0.004, JPN_regi 0.002, USA_regi 0.002;;;;;;;560;functionalForm;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 3800, 2080.GLO.tax.t.CCS.biomass 3800;0.1;;;;;1;;;;;;;;;;;;;;;;;;;2025;;h_cpol_noUkr;h_cpol;;o_lowdem: Low Demand scenario -o_2c;NGFS;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.5;;Mix4;heatpumps;;;1;;;;1.5;rcp26;9;globallyOptimal;1050;functionalForm;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;NGFS_v4_20pc;100;2080;3;;;;;;;;NDC;;;2;;;;;;;;2025;;h_cpol_noUkr;h_cpol;;o_2c: The Below 2 Degrees C scenario assumes that climate policies are introduced immediately and become gradually more stringent, giving a 67 percent chance of limiting global warming to below 2 K. Deployment of CDR is relatively low. Net-zero CO2 emissions are achieved after 2070. Physical and transition risks are both relatively low. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -d_delfrag;NGFS;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.5;;Mix3;heatpumps;;;;GLO 0.00125, CAZ_regi 0.0045, CHA_regi 0.004, EUR_regi 0.0045, IND_regi 0.004, JPN_regi 0.002, USA_regi 0.002;;;1.5;rcp26;9;globallyOptimal;1010;functionalForm;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;;100;2080;;;;;;;;;NDC;;;2;;;;;;;;2035;;h_cpol;h_cpol;;d_delfrag: The Delayed Transition scenario assumes global annual emissions do not decrease until 2030. Strong policies are then needed to limit warming to below 2 K. The level of action differs across countries and regions based on currently implemented policies, leading to a fossil recovery out of the economic crisis brought about by COVID-19. The availability of CDR technologies is assumed to be low. Emissions exceed the carbon budget temporarily and decline more rapidly than in Well-below 2 K after 2030 to ensure a 67 percent chance of limiting global warming to below 2 K. This leads to considerable transition and physical risks. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -d_strain;NGFS;d_delfrag;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3;off;;NPi;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;NGFS_v4_20pc;1;2100;;;;;;;;;NPi2018;;;;;;;;;;;2035;;h_cpol;h_cpol;;d_strain: Fragmented world -d_rap;0;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;Mix4;heatpumps;;GLO.trans 2, GLO.build 2;2;;;;1.5;rcp20;9;globallyOptimal;560;functionalForm;none;;;;;;150;2045;3;;;;;;;;NDC;;;2;;;;;;;;2025;;h_cpol_noUkr;h_cpol;;d_rap: The Divergent Net Zero scenario reaches net-zero by 2050 but with higher costs due to divergent policies introduced across sectors and a quicker phase out of fossil fuels. Climate policies are more stringent in the transportation and buildings sectors. This mimics a situation where the failure to coordinate policy stringency across sectors results in a high burden on consumers, while decarbonisation of energy supply and industry is less stringent. Emissions are in line with a climate goal giving at least a 50 percent chance of limiting global warming to below 1.5 K by the end of the century, with no or low overshoot of 1.5 K in earlier years. This leads to considerably high transition risks but rather low physical risks. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. No Damages from climate change are considered. -# ___WITH_DAMAGES___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -h_cpol_KLW_d50;KLW;h_cpol;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;off;/p/projects/rd3mod/climate-assessment-files/parsets/RCP45_50.json;;off;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025;;h_cpol;;;h_cpol_KLW_d50: The Current Policies scenario assumes that only currently implemented policies are preserved, leading to high physical risks. Emissions grow until 2080 leading to about 3 K of warming and severe physical risks. This includes irreversible changes like higher sea level rise. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change are based on Kalkuhl and Wenz (2020) using the 50th percentile of RCP4.5. -h_ndc_KLW_d50;KLW;h_ndc;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;off;/p/projects/rd3mod/climate-assessment-files/parsets/RCP45_50.json;;off;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025;;h_cpol;h_cpol_KLW_d50;;h_ndc_KLW_d50: The Nationally Determined Contributions (NDCs) scenario includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the beginning of 2021 continues over the 21st century (low transition risks). Emissions decline but lead nonetheless to about 2.5 K of warming associated with moderate to severe physical risks. Transition risks are relatively low. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change are based on Kalkuhl and Wenz (2020) using the 50th percentile of RCP4.5. -o_1p5c_KLW_d50;KLW;o_1p5c;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP20_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol;h_cpol_KLW_d50;;o_1p5c_KLW_d50: The Net Zero 2050 scenario assumes that ambitious climate policies are introduced immediately, giving at least a 50 percent chance of limiting global warming to below 1.5 K by the end of the century, with no or low overshoot of 1.5 K in earlier years. Stringent climate policies and innovation let net zero CO2 emissions to be reached around 2050. CDR is used to accelerate the decarbonisation but kept to the minimum possible and broadly in line with sustainable levels of bioenergy production. Physical risks are relatively low but transition risks are high. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP2.0. -o_lowdem_KLW_d50;KLW;o_lowdem;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP20_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol;h_cpol_KLW_d50;;o_lowdem_KLW_d50: Low Demand scenario. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP2.0. -o_2c_KLW_d50;KLW;o_2c;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP26_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol;h_cpol_KLW_d50;;o_2c_KLW_d50: The Below 2 Degrees C scenario assumes that climate policies are introduced immediately and become gradually more stringent, giving a 67 percent chance of limiting global warming to below 2 K. Deployment of CDR is relatively low. Net-zero CO2 emissions are achieved after 2070. Physical and transition risks are both relatively low. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP2.6. -d_delfrag_KLW_d50;KLW;d_delfrag;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP26_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol_KLW_d50;h_cpol_KLW_d50;;d_delfrag_KLW_d50: The Delayed Transition scenario assumes global annual emissions do not decrease until 2030. Strong policies are then needed to limit warming to below 2 K. The level of action differs across countries and regions based on currently implemented policies, leading to a fossil recovery out of the economic crisis brought about by COVID-19. The availability of CDR technologies is assumed to be low. Emissions exceed the carbon budget temporarily and decline more rapidly than in Well-below 2 K after 2030 to ensure a 67 percent chance of limiting global warming to below 2 K. This leads to considerable transition and physical risks. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP2.6. -d_strain_KLW_d50;KLW;d_strain;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP45_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol_KLW_d50;h_cpol_KLW_d50;;d_strain_KLW_d50: Fragmented World. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP4.5. -d_rap_KLW_d50;0;d_rap;;;;;;;14;magicc7_ar6;off;HADCRUT4;KotzWenz;0;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP20_50.json;;on;med;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol;h_cpol_KLW_d50;;d_rap_KLW_d50: The Divergent Net Zero scenario reaches net-zero by 2050 but with higher costs due to divergent policies introduced across sectors and a quicker phase out of fossil fuels. Climate policies are more stringent in the transportation and buildings sectors. This mimics a situation where the failure to coordinate policy stringency across sectors results in a high burden on consumers, while decarbonisation of energy supply and industry is less stringent. Emissions are in line with a climate goal giving at least a 50 percent chance of limiting global warming to below 1.5 K by the end of the century, with no or low overshoot of 1.5 K in earlier years. This leads to considerably high transition risks but rather low physical risks. Industry sectors are modeled explicitly with individual CES nests for cement, chemicals, steel, and other production. The transport model EDGE-T with detailed modes/vehicles representation is used. A simple buildings model represents demand in terms of energy carriers. Damages from climate change based on Kotz and Wenz (2024) are internalized in the optimization using the 50th percentile of RCP2.6. diff --git a/config/scenario_config_NGFS_v6c1.csv b/config/scenario_config_NGFS_v6c1.csv new file mode 100644 index 0000000000..1f0a9ab7bb --- /dev/null +++ b/config/scenario_config_NGFS_v6c1.csv @@ -0,0 +1,30 @@ +title;start;CES_parameters;copyConfigFrom;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;cm_startyear;carbonpriceRegi;cm_netZeroPercent;cm_LTSstartYr ;cm_LTSendYr ;techpol;cm_NDC_version;carbonprice;cm_budgetCO2from2020;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_taxCO2_historical;cm_taxCO2_historicalYr;cm_peakBudgYr;cm_iterative_target_adj;cm_taxCO2_Shape;cm_taxCO2_regiDiff;cm_taxCO2_IncAfterPeakBudgYr;cm_budgetCO2_absDevTol;cm_maxProdBiolc;cm_implicitQttyTarget;cm_frac_NetNegEmi;cm_33DAC;cm_33EW;cm_33OAE;c_ccsinjecratescen;c_ccsinjecrateRegi;cm_reducCostB;cm_taxCO2_expGrowth;regionmapping;extramappings_historic;cm_rcp_scen;cm_magicc_config;subsidizeLearning;cm_prtpScen;capitalMarket;slurmConfig;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33_OAE_limit_EEZ;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;regipol;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;c_changeProdCost;description +# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;calibrate;;;;;;2005;;;;;NPi2018;;NPi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Mix1;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NDC;1,AMT,2;;;;SSP2-NPi2025;SSP2-NPi2025;SSP2-NPi2025;2030;;;;;NDC;;NDC;;;;;;;3;;;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;;;;;;;;;;;;;;;;;;;;;;1;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NDCsy2025;1,AMT,2;;;;SSP2-NPi;SSP2-NPi2025;SSP2-NPi2025;2025;;;;;NDC;;NDC;;;;;;;3;;;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;globallyOptimal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5;SSP2-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025.The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NPi;1,AMT,compileInTests,2;;;;;;;2005;;;;;NPi2018;;NPi;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Mix1;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025;1,AMT,2;;;;;;;2005;;;;;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi reflects currently implemented policies, while fulfilling near-term feasibility and long-term plausibility assessments. Emissions trajectories are aligned with bottom-up studies on the effect of currently implemented policies. Carbon prices are constant in the mid- and long-term. +SSP2-PkBudg500;1,AMT,2;;;;SSP2-NPi2025;;SSP2-NPi2025;2030;;;;;NDC;;functionalForm;500;;200;;;2045;9;;5;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp20;;globallyOptimal;;;;;;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;2;;;;;;Elec_Push;Mix4ICEban;1;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650;1,AMT,2;;;;SSP2-NPi2025;;SSP2-NPi2025;2030;;;;;NDC;;functionalForm;650;;100;;;2055;9;;6;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp20;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;2;;;;;;Elec_Push;Mix4ICEban;1;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg1000;1,AMT,2;;;;SSP2-NPi2025;;SSP2-NPi2025;2030;;;;;NDC;;functionalForm;1000;;75;;;2080;9;;7;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp26;;globallyOptimal;;;;;;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-EcBudg500;1,AMT,2;;;;SSP2-NPi2025;;SSP2-NPi2025;2035;;;;;;;functionalForm;500;exponential;70;;;;5;;7;;5;200;;0;;1;1;;;;;;;rcp26;;globallyOptimal;;;;;;;;;5000;;;2060.GLO 0.9;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. +SSP2-rollBack;1,AMT,2;;;;SSP2-NPi2025;;SSP2-NPi2025;2030;;;;;none;;none;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;0;;;1;;;;;;;;;;;;;;;;;;;;;;;;;Mix1;1;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. +SSP3-rollBack;1,AMT;;;;SSP2-NPi2025;;;2030;;;;;none;;none;;;;;;;0;;;;;;;;;;;;;;;;;;;;3;;;0;;;1;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;forcing_SSP3;;;Mix1;1;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. +# NGFS (no damages);;load;;;;;;2005;none;0;2040;0;NPi2025;2026_cond;NPi2025;0;linear;-1;gdx_ref;last;2050;0;1;6;0;2;off;off;0.5;1;0;0;1;off;;1.045;;;rcp45;OLDDEFAULT;off;;;;9;EUR_regi 0.06, USA_regi 0.04, CHA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.03 ;off;3;1.5;;1;;off (zero waste capture);regiCarbonPrice;;;;;SSP2;medOil;medGas;medCoal;;2;1;3;SSP2;1;0;forcing_SSP2;SMIPbySSP;;Mix2ICEban;5; +h_cpol;NGFS;;SSP2-NPi2025;;;;;;;;2030;2200;;;;;;;;;;;;;;;100;;;;;;6;;;;;;;RCP26_50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;h_cpol: Current Policies. Only currently implemented policies are preserved, leading to high physical risks. Existing climate policies remain in place, but there is no strengthening of ambition level of these policies. Withdrawal of mitigation policies is taken into account. Emissions grow until 2080 leading to about 3 K of warming and severe physical risks. This includes irreversible changes like higher sea level rise. No Damages from climate change are considered. +h_ndc;NGFS;;h_cpol;;h_cpol;h_cpol;h_cpol;2030;;;;;;;NDC;;;;;;;3;;;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;;;;;;;;;;;;;;;;;;;;;;1;h_ndc: Nationally Determined Contributions (NDCs). All pledged targets are assumed to be implemented, even if they are not yet backed up by effective policies. Countries implement pledged policies in addition to current policies and keep their level of ambition beyond the NDC horizon. Countries that have released NDCs at different dates reach all of them (as much as still plausible). Emissions decline but lead nonetheless to about 2.5 K of warming associated with moderate to severe physical risks. Transition risks are relatively low. No Damages from climate change are considered. +o_1p5c;NGFS,NGFS_1p5c;;h_cpol;;h_cpol;h_cpol;h_cpol;2030;netZero;0;;;;;functionalForm;750;;100;;;2055;9;;6;6;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp20;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;2050.GLO 0.9;;;;;;;;;;;;;2;;;;;;Elec_Push;Mix4ICEban;1;o_1p5c: Net Zero 2050. After a limited overshoot, global warming returns to 1.5°C (with a 50% chance) through stringent climate policies and innovation, reaching global net zero CO2 emissions around 2050. Global CO2 emissions reach or approach net zero in 2050. Countries with a political commitment to a net-zero target meet this target around the specified target year. Some jurisdictions such as the EU, UK, Canada, Australia, and Japan reach net zero for all GHGs as specified by their target. Emissions developments until 2030 stay well within plausibility limits. CDR is used to accelerate the decarbonisation but kept to the minimum possible and broadly in line with sustainable levels of bioenergy production. Physical risks are relatively low but transition risks are high. No Damages from climate change are considered. +o_2c;NGFS;;h_cpol;;h_cpol;h_cpol;h_cpol;2030;netZero;0.2;;;;;functionalForm;1000;;75;;;2080;9;;7;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp26;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;o_2c: Below 2 Degrees C. The stringency of climate policies is gradually increased, to limit global warming to 2°C (with a 67% chance) throughout the 21st century. Countries with net-zero targets reduce emissions by at least 80% relative to 2025 until the target year, others follow trajectories that allow for the global target to be reached. Deployment of CDR is relatively low. Net-zero CO2 emissions are achieved after 2070. Physical and transition risks are both relatively low. No Damages from climate change are considered. +d_delfrag;NGFS;;h_cpol;;h_cpol;h_cpol;h_cpol;2040;netZero;0.2;;;;;functionalForm;1000;;166;;;2070;5;2;7;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;rcp26;;globallyOptimal;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;;;;;;;2050.GLO 0.5;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;d_delfrag: Delayed Transition. Annual emissions follow current trends until 2035. Strong policies are later needed to return warming to below 2°C (with a 67% chance) in 2100. Countries stick to current policies until 2035, after which they transition such that global warming returns under 2°C. This change of regime in 2035 is unanticipated and therefore disruptive. Countries with net-zero targets reduce emissions by at least 80% relative to 2025 until the target year. Net-negative CO2 emissions are limited. Considerable transition and physical risks. No Damages from climate change are considered. +d_strain;NGFS;;h_cpol;;h_cpol;h_cpol;h_cpol;2030;netZero;0.2;;;;;;;;75;;;;;;;;;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2;;;;;;;;;d_strain: Fragmented world. A divergent climate policy response among countries globally leads to high physical and transition risks. From 2025 onward, there is a divergent transition: countries with net-zero targets reduce emissions by at least 80% relative to 2025 until the target year, while others continue with current policies. Net-negative CO2 emissions are limited. No Damages from climate change are considered. +# variations;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +d_delfrag_2030;NGFS;;d_delfrag;;;;;2035;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +d_strain_2035;NGFS;;d_strain;;;;;2040;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +o_1p5c_noDAC;NGFS_1p5c;;o_1p5c;;;;;;;;;;;;;;;;;;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +o_1p5c_Pk725;NGFS_1p5c;;o_1p5c;;;;;;;;;;;;;725;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +o_1p5c_Pk700;NGFS_1p5c;;o_1p5c;;;;;;;;;;;;;700;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# default;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# added column;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# changed value;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +# to check;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/config/scenario_config_RIKEN.csv b/config/scenario_config_RIKEN.csv index f9d0884c71..5bcb8ccde6 100644 --- a/config/scenario_config_RIKEN.csv +++ b/config/scenario_config_RIKEN.csv @@ -1,7 +1,7 @@ -title;start;copyConfigFrom;fixOnRefAuto;cm_nash_autoconverge;cm_rcp_scen;climate;cm_magicc_calibrateTemperature2000;downscaleTemperature;damages;internalizeDamages;climate_assessment_magicc_prob_file_iteration;cm_magicc_temperatureImpulseResponse;cm_KotzWenzPerc;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_historical;cm_taxCO2_historicalYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_startyearValue;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_fetaxscen;cm_maxProdBiolc;cm_33EW;cm_33OAE;cm_frac_NetNegEmi;c_ccsinjecratescen;c_changeProdCost;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_taxCO2_lowerBound_path_gdx_ref;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_demScen;cm_GDPpopScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;c_regi_earlyreti_rate;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;path_gdx_carbonprice;description -M-SSP2-NPi;1;;TRUE;1;rcp45;;;;;;;;;0;off;;NPi2025;;;;;;;;;9;3;off;1;0;0.5;1;;standard;;NPi2018;regiCarbonPrice;off;;on;on;EUR_regi, NEU_regi;SSP2;SSP2;medOil;medGas;medCoal;1;GLO 0.09, EUR_regi 0.15;2;1;3;SSP2;1;0;forcing_SSP2;;;Mix2ICEban;2005;;;;;;SSP2 National Policy Implemented without damages from climate change -VLLO-SSP2-PkBudg650;1;;TRUE;1;rcp20;;;;;;;;;9;globallyOptimal;650;functionalForm;linear;100;2050;60;2025;6;EUR 150,(CAZ,NEU,USA,JPN) 60,(REF,CHA,LAM,MEA) 30,OAS 20,IND 15,SSA 10;2;9;3;100;1;0;0.5;1;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;SSP2;SSP2;medOil;medGas;medCoal;1;GLO 0.09, EUR_regi 0.15;2;1;2;SSP2;1;0;forcing_SSP2;;Elec_Push;Mix4ICEban;2030;;M-SSP2-NPi;;M-SSP2-NPi;;SSP2 1.5K scenario without damages from climate change -VLLO-SSP1-PkBudg650;1;;TRUE;1;rcp20;;;;;;;;;9;globallyOptimal;650;functionalForm;linear;100;2050;60;2025;6;EUR 150,(CAZ,NEU,USA,JPN) 60,(REF,CHA,LAM,MEA) 30,OAS 20,IND 15,SSA 10;2;9;2;100;1;0;0.5;5;5;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;SSP1;SSP1;lowOil;lowGas;lowCoal;2;GLO 0.12, EUR_regi 0.15;2;4;2;SSP1;1;0;forcing_SSP1;SMIPVLLO;Elec_Push;Mix4ICEban;2030;;M-SSP2-NPi;;M-SSP2-NPi;;SSP1 1.5K scenario without damages from climate change +title;start;copyConfigFrom;fixOnRefAuto;cm_nash_autoconverge;cm_rcp_scen;climate;cm_magicc_calibrateTemperature2000;downscaleTemperature;damages;internalizeDamages;climate_assessment_magicc_prob_file_iteration;cm_magicc_temperatureImpulseResponse;cm_KotzWenzPerc;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_historical;cm_taxCO2_historicalYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_startyearValue;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_fetaxscen;cm_maxProdBiolc;cm_33EW;cm_33OAE;cm_frac_NetNegEmi;c_ccsinjecratescen;c_changeProdCost;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_taxCO2_lowerBound_path_gdx_ref;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_demScen;cm_GDPpopScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_CESMkup_ind;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;path_gdx_carbonprice;description +M-SSP2-NPi;1;;TRUE;1;rcp45;;;;;;;;;0;off;;NPi2025;;;;;;;;;9;3;off;1;0;0.5;1;;standard;;NPi2018;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;SSP2;SSP2;medOil;medGas;medCoal;1;;;2;1;3;SSP2;1;0;forcing_SSP2;;;Mix2ICEban;2005;;;;;;SSP2 National Policy Implemented without damages from climate change +VLLO-SSP2-PkBudg650;1;;TRUE;1;rcp20;;;;;;;;;9;globallyOptimal;650;functionalForm;linear;100;2050;60;2025;6;EUR 150,(CAZ,NEU,USA,JPN) 60,(REF,CHA,LAM,MEA) 30,OAS 20,IND 15,SSA 10;2;9;3;100;1;0;0.5;1;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;SSP2;SSP2;medOil;medGas;medCoal;1;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;2;1;2;SSP2;1;0;forcing_SSP2;;Elec_Push;Mix4ICEban;2030;;M-SSP2-NPi;;M-SSP2-NPi;;SSP2 1.5K scenario without damages from climate change +VLLO-SSP1-PkBudg650;1;;TRUE;1;rcp20;;;;;;;;;9;globallyOptimal;650;functionalForm;linear;100;2050;60;2025;6;EUR 150,(CAZ,NEU,USA,JPN) 60,(REF,CHA,LAM,MEA) 30,OAS 20,IND 15,SSA 10;2;9;2;100;1;0;0.5;5;5;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;;regiCarbonPrice;;on;on;EUR_regi, NEU_regi;SSP1;SSP1;lowOil;lowGas;lowCoal;2;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;2;4;2;SSP1;1;0;forcing_SSP1;SMIPVLLO;Elec_Push;Mix4ICEban;2030;;M-SSP2-NPi;;M-SSP2-NPi;;SSP1 1.5K scenario without damages from climate change M-SSP2-NPi-KLW;1;M-SSP2-NPi;TRUE;;;magicc7_ar6;HADCRUT4;;KotzWenz;off;/p/projects/rd3mod/climate-assessment-files/parsets/RCP45_50.json;off;med;0;;;NPi2025;;;;;;;;;10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030;;;;;;SSP2 National Policy Implemented with damages from climate change, but they are not considered in the optimization procedure VLLO-SSP2-KLW;1;VLLO-SSP2-PkBudg650;TRUE;;;magicc7_ar6;HADCRUT4;;KotzWenz;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP20_50.json;on;med;0;;;none;;;;;;0;endogenous;0;10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030;;;;;M-SSP2-NPi;SSP2 1.5K scenario with damages from climate change, considered in the optimization procedure VLLO-SSP1-KLW;1;VLLO-SSP1-PkBudg650;TRUE;;;magicc7_ar6;HADCRUT4;;KotzWenz;KotzWenzItr;/p/projects/rd3mod/climate-assessment-files/parsets/RCP20_50.json;on;med;0;;;none;;;;;;0;endogenous;0;10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030;;;;;M-SSP2-NPi;SSP1 1.5K scenario with damages from climate change, considered in the optimization procedure diff --git a/config/scenario_config_ScenarioMIP.csv b/config/scenario_config_ScenarioMIP.csv index b16aba2c6b..8e7a7b9d11 100644 --- a/config/scenario_config_ScenarioMIP.csv +++ b/config/scenario_config_ScenarioMIP.csv @@ -1,40 +1,37 @@ -title;start;copyConfigFrom;cm_nash_autoconverge;cm_budgetCO2_absDevTol;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_peakBudgYr;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_startyearValue;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_maxProdBiolc;cm_33EW;c_biopyrEstablished;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;cm_NetNegEmi_calculation;c_ccsinjecratescen;c_changeProdCost;cm_CESMkup_build;cm_CESMkup_ind;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;c_regi_earlyreti_rate;cm_prtpScen;cm_fetaxscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description -#___ScenarioMIP_main_scenarios___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-H-SSP3-rollBack-def;1;;1;;;0;off;0;none;;;;;;;0;off;1;0;0;;0.5;1;1;1;standard;standard;;none;;off;SSP3;SSP3;medOil;medGas;highCoal;SSP3;GLO 0.09, EUR_regi 0.15;3;1;0;;SSP3;1.5;0;forcing_SSP3;;Mix1;2030;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-M-SSP2-NPi2025-def;1;;1;;;0;off;0;;;;;;;;;off;1;0;0;;0.5;1;1;;standard;standard;;NPi2025;;off;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;3;1;;SSP2;1;0;forcing_SSP2;;;2005;;;;; -SMIPv08-ML-SSP2-EcPrice300-def;1;;1;;;0;globallyOptimal;0;functionalForm;linear;300;2100;8;endogenous;;;off;1;0;0;;0.5;1;1;1;standard;standard;2100.GLO 0.5;NPi2025;;off;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;3;1;2;SSP2;1;0;forcing_SSP2;;;2045;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-L-SSP2-EcPrice600-def;1;;1;;rcp26;0;globallyOptimal;0;functionalForm;linear;600;2100;7;EUR 150,(CAZ,USA) 80,JPN 40,NEU 16,REF 5,MEA 50,CHA 15,LAM 40,OAS 30,IND 15,SSA 10;;;200;1;0;0;;0.5;1;1;2;standard;standard;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;3;1;2;SSP2;1;0;forcing_SSP2;;Mix3ICEban;2030;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-VLHO-SSP2-EcPrice1300-def;1;;1;;rcp26;0;globallyOptimal;0;functionalForm;exponential;1300;2100;7;endogenous;;;200;1;0;1;5000;0;1;1;1;standard;standard;2070.GLO 0.9;NPi2025;;off;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;3;1;2;SSP2;1;0;forcing_SSP2;;Mix3ICEban;2035;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-VLLO-SSP1-PkPrice500-def;1;;1;;rcp20;0;globallyOptimal;0;functionalForm;linear;500;2050;6;EUR 150,(CAZ,NEU,USA,JPN) 80,(REF,MEA) 50,(CHA,LAM) 40,OAS 30,IND 15,SSA 10;5;;90;1;0;0;;0.75;1;5;2;feelhpb 1.4, fehob 0.8, feheb 0.15;Elec_Push;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;GLO 0.12, EUR_regi 0.15;1;2;4;2;SSP1;1;0;forcing_SSP1;SMIPVLLO;Mix4ICEban;2030;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; -#___ScenarioMIP_SSP2___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-H-SSP2-rollBack-def;1;SMIPv08-H-SSP3-rollBack-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;1;1;;SSP2;1;;forcing_SSP2;;;;;;;; -SMIPv08-VLLO-SSP2-PkPrice500-def;1;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;GLO 0.09, EUR_regi 0.15;1;2;1;;SSP2;1;;forcing_SSP2;;;;;;;; -#___ScenarioMIP_SSP1___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP1-NPi2025-def;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;GLO 0.12, EUR_regi 0.15;1;3;4;;SSP1;1;;forcing_SSP1;;;2030;;SMIPv08-M-SSP2-NPi2025-def;;; -SMIPv08-ML-SSP1-EcPrice190-def;1;SMIPv08-ML-SSP2-EcPrice300-def;;;;;;;;;190;;;;;;;;;;;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;GLO 0.12, EUR_regi 0.15;1;3;4;;SSP1;1;;forcing_SSP1;;;;;SMIPv08-M-SSP1-NPi2025-def;;; -SMIPv08-L-SSP1-EcPrice300-def;1;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;300;;;;;;;;;;;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;GLO 0.12, EUR_regi 0.15;1;3;4;;SSP1;1;;forcing_SSP1;;;;;;;; -#___ScenarioMIP_SSP3___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP3-NPi2025-def;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;GLO 0.09, EUR_regi 0.15;3;1;0;;SSP3;1.5;;forcing_SSP3;;;2030;;SMIPv08-M-SSP2-NPi2025-def;;; -SMIPv08-ML-SSP3-EcPrice325-def;1;SMIPv08-ML-SSP2-EcPrice300-def;;;;;;;;;325;;;;;;;;;;;;;;;;;;;;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;GLO 0.09, EUR_regi 0.15;3;1;0;;SSP3;1.5;;forcing_SSP3;;;;;SMIPv08-M-SSP3-NPi2025-def;;; -#___ScenarioMIP_carbon_price_convergence_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP2-EcPrice600-var_yr2035;1;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP2-EcPrice600-var_yr2050;1;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_yr2035;1;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_yr2050;1;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035;1;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035;1;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#___ScenarioMIP_M_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP2-NPi-var;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;NPi;;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;Mix1;;;;;; -SMIPv08-M-SSP2-NDC-var;1;SMIPv08-M-SSP2-NPi2025-def;;;;3;globallyOptimal;;NDC;;;;;;;;;;;;;;;;1;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;;;;;;2030;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-M-SSP3-NDC-var;1;SMIPv08-M-SSP3-NPi2025-def;;;;3;;;NDC;;;;;;;;;;;;;;;;1;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;SSP3;SSP3;medOil;medGas;highCoal;SSP3;GLO 0.09, EUR_regi 0.15;3;1;0;;SSP3;1.5;;forcing_SSP3;;;2030;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; -SMIPv08-M-SSP1-NDC-var;1;SMIPv08-M-SSP1-NPi2025-def;;;;3;globallyOptimal;;NDC;;;;;;;;;;;;;;;;1;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;GLO 0.12, EUR_regi 0.15;1;3;4;;SSP1;1;;forcing_SSP1;;;2030;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; -#___ScenarioMIP_L_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP2-EcPrice600-var_bioenergy150;1;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;;;;;150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_bioenergy150;1;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#___ScenarioMIP_VLHO_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcBudg500-var_natveg;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;5;;500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcBudg500-var;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;5;;500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -#___RIKEN___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -RIKEN-VLLO-SSP2-PkPrice500-var;1;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;;;;;off;;;;;0.5;;1;;standard;standard;;;;;;;;;;;;;3;;;;;;;SMIPbySSP;;;;;;; +title;start;copyConfigFrom;cm_nash_autoconverge;cm_budgetCO2_absDevTol;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_budgetCO2from2020;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_peakBudgYr;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_startyearValue;cm_taxCO2_IncAfterPeakBudgYr;cm_emiscen;cm_maxProdBiolc;cm_33EW;c_biopyrOptions;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;cm_NetNegEmi_calculation;c_ccsinjecratescen;c_changeProdCost;cm_CESMkup_build;cm_CESMkup_ind;cm_wasteIncinerationCCSshare;techpol;regipol;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;c_regi_earlyreti_rate;c_NearTermProjectCompletion;cm_prtpScen;cm_fetaxscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;cm_startyear;c_edgetReportAfter2010;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +#___ScenarioMIP_main_scenarios___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-H-SSP3-rollBack-def;1;;1;;;0;off;0;none;;;;;;;0;off;1;0;0;;0.5;1;1;1;standard;standard;;none;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;;;3;1;0;;SSP3;1.5;0;forcing_SSP3;;Mix1;2030;1;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-M-SSP2-NPi2025-def;1;;1;;;0;off;0;;;;;;;;;off;1;0;0;;0.5;1;1;;standard;standard;;NPi2025;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;;;1;3;1;;SSP2;1;0;forcing_SSP2;;;2005;1;;;;; +SMIPv08-ML-SSP2-EcPrice300-def;1;;1;;;0;globallyOptimal;0;functionalForm;linear;300;2100;8;endogenous;;;off;1;0;0;;0.5;1;1;1;standard;standard;2100.GLO 0.5;NPi2025;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;3;1;2;SSP2;1;0;forcing_SSP2;;;2045;1;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-L-SSP2-PkPrice400-def;1;;1;;rcp26;0;globallyOptimal;0;functionalForm;linear;400;2070;7;EUR 150,(CAZ,USA) 80,JPN 40,NEU 16,REF 5,MEA 50,CHA 15,LAM 40,OAS 30,IND 15,SSA 10;10;;150;1;0;0;;0.5;1;1;2;standard;standard;2050.GLO 0.5;;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;3;1;2;SSP2;1;0;forcing_SSP2;;Mix3ICEban;2030;1;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-VLHO-SSP2-EcPrice1300-def;1;;1;;rcp26;0;globallyOptimal;0;functionalForm;exponential;1300;2100;7;endogenous;;;200;1;0;1;5000;0;1;1;1;standard;standard;2070.GLO 0.9;NPi2025;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;3;1;2;SSP2;1;0;forcing_SSP2;;Mix3ICEban;2035;1;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-VLLO-SSP1-PkPrice500-def;1;;1;;rcp20;0;globallyOptimal;0;functionalForm;linear;500;2050;6;EUR 150,(CAZ,NEU,USA,JPN) 80,(REF,MEA) 50,(CHA,LAM) 40,OAS 30,IND 15,SSA 10;5;;90;1;0;0;;0.75;1;5;2;feelhpb 1.4, fehob 0.8, feheb 0.15;Elec_Push;2050.GLO 0.9;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;2;4;2;SSP1;1;0;forcing_SSP1;SMIPVLLO;Mix4ICEban;2030;1;;SMIPv08-M-SSP2-NPi2025-def;;SMIPv08-M-SSP2-NPi2025-def; +#___ScenarioMIP_SSP2___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-H-SSP2-rollBack-def;1;SMIPv08-H-SSP3-rollBack-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;;;1;1;1;;SSP2;1;;forcing_SSP2;;;;;;;;; +SMIPv08-VLLO-SSP2-PkPrice500-def;1;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2;SSP2;medOil;medGas;medCoal;SSP2;;;1;2;1;;SSP2;1;;forcing_SSP2;;;;;;;;; +#___ScenarioMIP_SSP1___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-M-SSP1-NPi2025-def;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;;;;;;;;;;;;;;;;;1;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;;1;3;4;;SSP1;1;;forcing_SSP1;;;2030;;;SMIPv08-M-SSP2-NPi2025-def;;; +SMIPv08-ML-SSP1-EcPrice190-def;1;SMIPv08-ML-SSP2-EcPrice300-def;;;;;;;;;190;;;;;;;;;;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;;1;3;4;;SSP1;1;;forcing_SSP1;;;;;;SMIPv08-M-SSP1-NPi2025-def;;; +SMIPv08-L-SSP1-EcPrice300-def;1;SMIPv08-L-SSP2-PkPrice400-def;;;;;;;;;300;2100;;;;;;;;;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;;1;3;4;;SSP1;1;;forcing_SSP1;;;;;;;;; +#___ScenarioMIP_SSP3___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-M-SSP3-NPi2025-def;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;;;;;;;;;;;;;;;;;1;;;;;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;;;3;1;0;;SSP3;1.5;;forcing_SSP3;;;2030;;;SMIPv08-M-SSP2-NPi2025-def;;; +SMIPv08-ML-SSP3-EcPrice325-def;1;SMIPv08-ML-SSP2-EcPrice300-def;;;;;;;;;325;;;;;;;;;;;;;;;;;;;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;;;3;1;0;;SSP3;1.5;;forcing_SSP3;;;;;;SMIPv08-M-SSP3-NPi2025-def;;; +#___ScenarioMIP_carbon_price_convergence_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP2-PkPrice400-var_yr2035;1;SMIPv08-L-SSP2-PkPrice400-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP2-PkPrice400-var_yr2050;1;SMIPv08-L-SSP2-PkPrice400-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP1-EcPrice300-var_yr2035;1;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP1-EcPrice300-var_yr2050;1;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035;1;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035;1;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +#___ScenarioMIP_M_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-M-SSP2-NPi-var;1;SMIPv08-M-SSP2-NPi2025-def;;;;;;;NPi;;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;Mix1;;;;;;; +SMIPv08-M-SSP2-NDC-var;1;SMIPv08-M-SSP2-NPi2025-def;;;;3;globallyOptimal;;NDC;;;;;;;;;;;;;;;;1;;;;;;;;;;;;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;;;;;;;;;;;2030;;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-M-SSP3-NDC-var;1;SMIPv08-M-SSP3-NPi2025-def;;;;3;;;NDC;;;;;;;;;;;;;;;;1;;;;;;SSP3;SSP3;medOil;medGas;highCoal;SSP3;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;3;1;0;;SSP3;1.5;;forcing_SSP3;;;2030;;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; +SMIPv08-M-SSP1-NDC-var;1;SMIPv08-M-SSP1-NPi2025-def;;;;3;globallyOptimal;;NDC;;;;;;;;;;;;;;;;1;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06;transformative;1;3;4;;SSP1;1;;forcing_SSP1;;;2030;;;SMIPv08-M-SSP2-NPi2025-def;SMIPv08-M-SSP2-NPi-var;SMIPv08-M-SSP2-NPi2025-def; +#___ScenarioMIP_VLHO_variants___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcBudg500-var_natveg;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;5;;500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcBudg500-var;1;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;5;;500;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +#___RIKEN___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +RIKEN-VLLO-SSP2-PkPrice500-var;1;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;;;;;off;;;;;0.5;;1;;standard;standard;;;;;;;;;;;;;3;;;;;;;SMIPbySSP;;;;;;;; diff --git a/config/scenario_config_coupled.csv b/config/scenario_config_coupled.csv deleted file mode 100644 index 641a9a30eb..0000000000 --- a/config/scenario_config_coupled.csv +++ /dev/null @@ -1,25 +0,0 @@ -title;start;oldrun;path_report;qos;config/scenario_config.csv;no_ghgprices_land_until;var_luc;path_gdx;path_gdx_bau;path_gdx_ref;path_gdx_refpolicycost;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_scenario_target;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_scenario_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price;cfg_mag$gms$c15_food_scenario;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year;cfg_mag$gms$s56_fader_cpriceaff_start;cfg_mag$gms$s56_fader_cpriceaff_end -# startgroup=remindinput: scenarios that are needed to update MAgPIE inputs in REMIND (emissions, costs, ...);;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-NDC;0;;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0.7;1;2030;2030;2030 -SSP1-NPi2025;1;;;;VLLO|SSP1-POP-GDP|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0.7;1;2030;2030;2030 -SSP1-PkBudg1000;1;;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0.7;1;2030;2030;2030 -SSP1-PkBudg650;1;;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0.7;1;2030;2030;2030 -SSP2_lowEn-NDC;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP2_lowEn-NPi2025;1;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP2_lowEn-PkBudg1000;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0;0;2030;2030;2030 -SSP2_lowEn-PkBudg650;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0;0;2030;2030;2030 -SSP2-EcBudg400;0;;;;SSP2|NDC|AR-plant|nocc_hist;y2030;raw;;;;;1;2050;2070;0.02;2050;2070;0.2;const2030;734;;0;0;2050;2040;2050 -SSP2-NDC;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP2-NPi;0;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP2-NPi2025;1;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP2-PkBudg1000;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0;0;2030;2030;2030 -SSP2-PkBudg650;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0;0;2030;2030;2030 -SSP2-rollBack;0;;;;SSP2|NPI-revert|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SSP3-NDC;0;;;;SSP3|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 -SSP3-NPi2025;1;;;;SSP3|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 -SSP3-PkBudg1000;1;;;;SSP3|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;SSP2;0;0;2030;2030;2030 -SSP3-rollBack;0;;;;SSP3|NPI-revert|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;;const2030;734;SSP2;0;1;2030;2030;2030 -SSP5-NDC;0;;;;SSP5|NDC|AR-plant|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 -SSP5-NPi2025;1;;;;SSP5|NPI|AR-plant|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 -SSP5-PkBudg1000;1;;;;SSP5|NDC|AR-plant|nocc_hist;y2030;raw;;;;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;SSP2;0;0;2030;2030;2030 -SSP5-PkBudg650;1;;;;SSP5|NDC|AR-plant|nocc_hist;y2030;raw;;;;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;SSP2;0;0;2030;2030;2030 diff --git a/config/scenario_config_coupled_EL2p0DeepDive.csv b/config/scenario_config_coupled_EL2p0DeepDive.csv deleted file mode 100644 index a35164aa23..0000000000 --- a/config/scenario_config_coupled_EL2p0DeepDive.csv +++ /dev/null @@ -1,40 +0,0 @@ -title;start;oldrun;path_report;qos;config/scenario_config.csv;config/projects/scenario_config_el2.csv;no_ghgprices_land_until;path_gdx;path_gdx_bau;path_gdx_ref;path_gdx_refpolicycost -SSP2-Base;0;;;;SSP2|NPI|nocc_hist;EL2_default;y2150;;;; -SSP2-NDC;1;;;;SSP2|NDC|nocc_hist;EL2_default;y2150;;;; -SSP2-NPi;1;;;;SSP2|NPI|nocc_hist;EL2_default;y2150;;;; -SSP2-noDSPkB500-noDS_betax_DeepDive;0;;;priority;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB500-DS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB500-DS_betax_DeepDive;0;;;priority;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB500-noDS_betax_DeepDive;0;;;priority;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB650-noDS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB650-DS_betax_DeepDive;0;;;priority;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB650-DS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB650-noDS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB1050-noDS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB1050-DS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB1050-DS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB1050-noDS_betax_DeepDive;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB500-noDS_betax_AgMIP;0;;;priority;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB500-DS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-noDSPkB500-DS_betax_AgMIP;0;;;priority;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-DSPkB500-noDS_betax_AgMIP;0;;;priority;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB650-noDS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB650-DS_betax_AgMIP;1;;;priority;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-noDSPkB650-DS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-DSPkB650-noDS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB1050-noDS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB1050-DS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-noDSPkB1050-DS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030;;;; -SSP2-DSPkB1050-noDS_betax_AgMIP;0;;;short;SSP2|NDC|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;0;;;priority;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB500-DS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB500-DS_betax_DeepDive_noNDC;0;;;priority;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB500-noDS_betax_DeepDive_noNDC;0;;;priority;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1;;;priority;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB650-DS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB650-noDS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; -SSP2-noDSPkB1050-noDS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; -SSP2-DSPkB1050-DS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-noDSPkB1050-DS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030;;;; -SSP2-DSPkB1050-noDS_betax_DeepDive_noNDC;0;;;short;SSP2|NPI|nocc_hist;EL2_default;y2030;;;; diff --git a/config/scenario_config_coupled_ELEVATE2p3.csv b/config/scenario_config_coupled_ELEVATE2p3.csv deleted file mode 100755 index 72a9064f40..0000000000 --- a/config/scenario_config_coupled_ELEVATE2p3.csv +++ /dev/null @@ -1,14 +0,0 @@ -title;start;oldrun;path_report;qos;magpie_scen;no_ghgprices_land_until;.cm_nash_autoconverge_lastrun;path_gdx_carbonprice;path_gdx;path_gdx_ref;path_gdx_refpolicycost;path_gdx_bau;cfg_mag$gms$s15_elastic_demand -ELV_CurPol_NPi;0;;;priority;SSP2|NPI|nocc_hist;y2150;;;;;;;1 -ELV_CurPol_NPi2025;0;;;priority;SSP2|NPI|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-CP-D0;0;;;priority;SSP2|NPI|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-CP-D1;0;;;priority;SSP2|NPI|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-CP-D3;0;;;priority;SSP2|NPI|nocc_hist;y2150;;;;;;;1 -ELV_NDC2030;1;;;priority;SSP2|NDC|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-NDC-D0;1;;;priority;SSP2|NDC|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-NDC-D1;1;;;priority;SSP2|NDC|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-NDC-D3;1;;;priority;SSP2|NDC|nocc_hist;y2150;;;;;;;1 -ELV-SSP2-LTS;1;;;priority;SSP2|NDC|nocc_hist;y2030;;;;;;;1 -ELV-SSP2-NDC-LTS;1;;;priority;SSP2|NDC|nocc_hist;y2030;;;;;;;1 -ELV-SSP2-1000;1;;;priority;SSP2|NDC|nocc_hist;y2030;;;;;;;1 -ELV-SSP2-650;1;;;priority;SSP2|NDC|nocc_hist;y2030;;;;;;;1 diff --git a/config/scenario_config_coupled_JustMIP.csv b/config/scenario_config_coupled_JustMIP.csv deleted file mode 100755 index a44d7dbb4e..0000000000 --- a/config/scenario_config_coupled_JustMIP.csv +++ /dev/null @@ -1,11 +0,0 @@ -title;start;oldrun;path_report;qos;config/scenario_config.csv;no_ghgprices_land_until;var_luc;path_gdx;path_gdx_bau;path_gdx_ref;path_gdx_refpolicycost;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year -# startgroup=remindinput: scenarios that are needed to update MAgPIE inputs in REMIND (emissions, costs, ...);;;;;;;;;;;;;;;;;; -SSP1-NDC;0;;;;SSP1|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;0;0;const2030;0;1;2025 -SSP1-NPi2025;1;;;;SSP1|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;0;0;const2030;0;1;2025 -SSP1-PkBudg1000;1;;;;SSP1|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;0.01;0.1;const2030;0;1;2025 -Reference_SSP1_800f;1;;;;SSP1|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;0;0;const2030;0.7;0;2030 -SSP2-NDC;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;raw;;;;;1;0;0;const2030;0;1;2025 -SSP2-NPi;0;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;0;0;const2030;0;1;2025 -SSP2-NPi2025;1;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;0;0;const2030;0;1;2025 -SSP2-PkBudg1000;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;0.01;0.1;const2030;0;1;2025 -Reference_SSP2_800f;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;0;0;const2030;0.7;0;2030 diff --git a/config/scenario_config_coupled_MitiConsv.csv b/config/scenario_config_coupled_MitiConsv.csv deleted file mode 100644 index 25cfeaa5d4..0000000000 --- a/config/scenario_config_coupled_MitiConsv.csv +++ /dev/null @@ -1,7 +0,0 @@ -title;start;oldrun;path_report;qos;config/scenario_config.csv;config/projects/scenario_config_miti_consv.csv;no_ghgprices_land_until;var_luc;path_gdx;path_gdx_bau;path_gdx_ref;path_gdx_refpolicycost;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem -rev11_MitiConsv_SSP2-NPi;1;;;;SSP2|NPI|nocc_hist|rcp4p5|ForestryExo;MitiConsv;y2150;raw;;;;;1;0;0;const2030 -rev11_MitiConsv_SSP2-PB750-NPi;1;;;;SSP2|NPI|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR0;y2030;raw;;;;;1;0;0;const2030 -rev11_MitiConsv_SSP2-PB750-NDC;1;;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR0;y2030;raw;;;;;1;0;0;const2030 -rev11_MitiConsv_SSP2-PB750-AR250;1;;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR250;y2030;raw;;;;;1;0;0;const2030 -rev11_MitiConsv_SSP2-PB750-AR350;1;;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR350;y2030;raw;;;;;1;0;0;const2030 -rev11_MitiConsv_SSP2-PB750-AR150;1;;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR150;y2030;raw;;;;;1;0;0;const2030 diff --git a/config/scenario_config_coupled_NGFS_v5.csv b/config/scenario_config_coupled_NGFS_v5.csv deleted file mode 100644 index 9f3d01505a..0000000000 --- a/config/scenario_config_coupled_NGFS_v5.csv +++ /dev/null @@ -1,59 +0,0 @@ -title;start;copyConfigFrom;oldrun;path_report;qos;config/scenario_config.csv;config/projects/scenario_config_ngfs.csv;no_ghgprices_land_until;.cm_nash_autoconverge_lastrun;path_gdx;path_gdx_ref;path_gdx_refpolicycost;path_gdx_bau;cfg_mag$gms$s56_cprice_red_factor -SSP2-Base;;;SSP2-Base;;;SSP2|NPI|nocc_hist|rcp4p5;;y2150;;;;;; -h_cpol_noUkr;NGFS;;h_cpol;;;SSP2|NPI|nocc_hist|rcp4p5;;y2150;2;;;;; -h_cpol;NGFS;;h_cpol;;;SSP2|NPI|nocc_hist|rcp4p5;;y2150;2;;;;; -h_ndc;NGFS;;h_ndc;;;SSP2|NDC|nocc_hist|rcp4p5;;y2150;2;;;;; -o_1p5c;NGFS;;o_1p5c;;;SSP2|NDC|nocc_hist|rcp1p9;;y2030;2;;;;;0.3 -o_2c;NGFS;;o_2c;;;SSP2|NDC|nocc_hist|rcp2p6;;y2030;2;;;;; -o_lowdem;NGFS;;o_lowdem;;;SSP2|NDC|nocc_hist|rcp1p9;NGFS_o_lowdem;y2030;2;;;;;0.3 -d_delfrag;NGFS;;d_delfrag;;;SSP2|NDC|nocc_hist|rcp2p6;;y2030;2;;;;; -d_strain;NGFS;;d_strain;;;SSP2|NDC|nocc_hist|rcp4p5;;y2030;2;;;;; -# with damages;;;;;;;;;;;;;; -h_cpol_KLW_d50;KLW;h_cpol;h_cpol;;;SSP2|NPI|cc|rcp4p5;;;;;;;; -h_ndc_KLW_d50;KLW;h_ndc;h_ndc;;;SSP2|NDC|cc|rcp4p5;;;;;;;; -o_1p5c_KLW_d50;KLW;o_1p5c;o_1p5c;;;SSP2|NDC|cc|rcp1p9;;;;;;;; -o_2c_KLW_d50;KLW;o_2c;o_2c;;;SSP2|NDC|cc|rcp2p6;;;;;;;; -o_lowdem_KLW_d50;KLW;o_lowdem;o_lowdem;;;SSP2|NDC|cc|rcp1p9;NGFS_o_lowdem;;;;;;; -d_delfrag_KLW_d50;KLW;d_delfrag;d_delfrag;;;SSP2|NDC|cc|rcp2p6;;;;;;;; -d_strain_KLW_d50;KLW;d_strain;d_strain;;;SSP2|NDC|cc|rcp4p5;;;;;;;; -#;;;;;;;;;;;;;; -# Kalkuhl and Wenz, from NGFS v4;;;;;;;;;;;;;; -SSP2-Base_d50;0;SSP2-Base;SSP2-Base;;;SSP2|NPI|cc|rcp6p0;;;;;;;; -SSP2-Base_d95;0;SSP2-Base_d50;SSP2-Base;;;;;;;;;;; -SSP2-Base_d50high;0;SSP2-Base_d50;SSP2-Base;;;;;;;;;;; -SSP2-Base_d95high;0;SSP2-Base_d50;SSP2-Base;;;;;;;;;;; -h_cpol_d50;d50;h_cpol;h_cpol;;;SSP2|NPI|cc|rcp4p5;;;;;;;; -h_cpol_d95;d95;h_cpol_d50;h_cpol;;;;;;;;;;; -h_cpol_d50high;d50high;h_cpol_d50;h_cpol;;;;;;;;;;; -h_cpol_d95high;d95high;h_cpol_d50;h_cpol;;;;;;;;;;; -h_ndc_d50;d50;h_ndc;h_ndc;;;SSP2|NDC|cc|rcp4p5;;;;;;;; -h_ndc_d95;d95;h_ndc_d50;h_ndc;;;;;;;;;;; -h_ndc_d50high;d50high;h_ndc_d50;h_ndc;;;;;;;;;;; -h_ndc_d95high;d95high;h_ndc_d50;h_ndc;;;;;;;;;;; -o_1p5c_d50;d50;o_1p5c;o_1p5c;;;SSP2|NDC|cc|rcp1p9;;;;;;;; -o_1p5c_d95;d95;o_1p5c_d50;o_1p5c;;;;;;;;;;; -o_1p5c_d50high;d50high;o_1p5c_d50;o_1p5c;;;;;;;;;;; -o_1p5c_d95high;d95high;o_1p5c_d50;o_1p5c;;;;;;;;;;; -o_2c_d50;d50;o_2c;o_2c;;;SSP2|NDC|cc|rcp2p6;;;;;;;; -o_2c_d95;d95;o_2c_d50;o_2c;;;;;;;;;;; -o_2c_d50high;d50high;o_2c_d50;o_2c;;;;;;;;;;; -o_2c_d95high;d95high;o_2c_d50;o_2c;;;;;;;;;;; -o_lowdem_d50;d50;o_lowdem;o_lowdem;;;SSP2|NDC|cc|rcp1p9;NGFS_o_lowdem;;;;;;; -o_lowdem_d95;d95;o_lowdem_d50;o_lowdem;;;;;;;;;;; -o_lowdem_d50high;d50high;o_lowdem_d50;o_lowdem;;;;;;;;;;; -o_lowdem_d95high;d95high;o_lowdem_d50;o_lowdem;;;;;;;;;;; -d_delfrag_d50;d50;d_delfrag;d_delfrag;;;SSP2|NDC|cc|rcp2p6;;;;;;;; -d_delfrag_d95;d95;d_delfrag_d50;d_delfrag;;;;;;;;;;; -d_delfrag_d50high;d50high;d_delfrag_d50;d_delfrag;;;;;;;;;;; -d_delfrag_d95high;d95high;d_delfrag_d50;d_delfrag;;;;;;;;;;; -d_strain_d50;d50;d_strain;d_strain;;;SSP2|NDC|cc|rcp4p5;;;;;;;; -d_strain_d95;d95;d_strain_d50;d_strain;;;;;;;;;;; -d_strain_d50high;d50high;d_strain_d50;d_strain;;;;;;;;;;; -d_strain_d95high;d95high;d_strain_d50;d_strain;;;;;;;;;;; -# old, from NGFS v3;;;;;;;;;;;;;; -d_rap;0;;d_rap;;;SSP2|NDC|nocc_hist|rcp1p9;;y2030;2;;;;; -d_rap_d50;0;d_rap;d_rap;;;SSP2|NDC|cc|rcp1p9;;;;;;;; -d_rap_d95;0;d_rap_d50;d_rap;;;;;;;;;;; -d_rap_d50high;0;d_rap_d50;d_rap;;;;;;;;;;; -d_rap_d95high;0;d_rap_d50;d_rap;;;;;;;;;;; -d_rap_KLW_d50;0;d_rap;d_rap;;;SSP2|NDC|cc|rcp1p9;;;;;;;; diff --git a/config/scenario_config_coupled_RIKEN.csv b/config/scenario_config_coupled_RIKEN.csv deleted file mode 100644 index c6f9623271..0000000000 --- a/config/scenario_config_coupled_RIKEN.csv +++ /dev/null @@ -1,7 +0,0 @@ -title;start;oldrun;path_report;config/scenario_config.csv;cfg_mag$gms$s56_cprice_red_factor;no_ghgprices_land_until;var_luc;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price -M-SSP2-NPi;1;;;SSP2|NPI|AR-natveg|nocc_hist;;y2150;raw;1;;0;;0;const2030;734 -VLLO-SSP2-PkBudg650;1;;;SSP2|NDC|AR-natveg|nocc_hist;;y2030;raw;1;2025;0.02;2025;0.2;const2030;734 -VLLO-SSP1-PkBudg650;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;;y2030;raw;1;2025;0.02;2025;0.2;const2030;734 -M-SSP2-NPi-KLW;1;;;SSP2|NPI|AR-natveg|cc|rcp4p5;;y2150;raw;1;;0;;;const2030;734 -VLLO-SSP2-KLW;1;;;SSP2|NDC|AR-natveg|cc|rcp1p9;;y2030;raw;1;2025;0.02;2025;0.2;const2030;734 -VLLO-SSP1-KLW;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|cc|rcp1p9;;y2030;raw;1;2025;0.02;2025;0.2;const2030;734 diff --git a/config/scenario_config_coupled_ScenarioMIP.csv b/config/scenario_config_coupled_ScenarioMIP.csv deleted file mode 100644 index e51572907d..0000000000 --- a/config/scenario_config_coupled_ScenarioMIP.csv +++ /dev/null @@ -1,31 +0,0 @@ -title;start;copyConfigFrom;oldrun;path_report;qos;config/scenario_config.csv;no_ghgprices_land_until;var_luc;path_gdx;path_gdx_bau;path_gdx_ref;path_gdx_refpolicycost;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_scenario_target;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_scenario_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price;cfg_mag$gms$c15_food_scenario;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year;cfg_mag$gms$s56_fader_cpriceaff_start;cfg_mag$gms$s56_fader_cpriceaff_end -SMIPv08-H-SSP3-rollBack-def;0,H,SSP3,def,main;;;;;SSP3|NPI-revert|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 -SMIPv08-M-SSP2-NPi2025-def;0,M,SSP2,def,main;;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SMIPv08-ML-SSP2-EcPrice300-def;0,ML,SSP2,def,main;;;;;SSP2|NPI|AR-natveg|nocc_hist;y2040;raw;;;;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 -SMIPv08-L-SSP2-EcPrice600-def;0,L,SSP2,def,main;;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2030;2050;0.01;2030;2050;0.1;const2030;734;;0;0;2030;2030;2030 -SMIPv08-VLHO-SSP2-EcPrice1300-def;0,VLHO,SSP2,def,main;;;;;SSP2|NPI|AR-plant|nocc_hist;y2030;raw;;;;;1;2050;2070;0.02;2050;2070;0.2;const2030;734;;0;0;2050;2040;2050 -SMIPv08-VLLO-SSP1-PkPrice500-def;0,VLLO,SSP1,def,main;;;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;raw;;;;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0.7;1;2030;2030;2030 -SMIPv08-H-SSP2-rollBack-def;0,H,SSP2,def;SMIPv08-H-SSP3-rollBack-def;;;;SSP2|NPI-revert|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLLO-SSP2-PkPrice500-def;0,VLLO,SSP2,def;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;VLLO|SSP2-POP-GDP|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP1-NPi2025-def;0,M,SSP1,def;SMIPv08-M-SSP2-NPi2025-def;;;;SSP1|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-ML-SSP1-EcPrice190-def;0,ML,SSP1,def;SMIPv08-ML-SSP2-EcPrice300-def;;;;SSP1|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-def;0,L,SSP1,def;SMIPv08-L-SSP2-EcPrice600-def;;;;SSP1|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP3-NPi2025-def;0,M,SSP3,def;SMIPv08-M-SSP2-NPi2025-def;;;;SSP3|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;SSP2;;;;; -SMIPv08-ML-SSP3-EcPrice325-def;0,ML,SSP3,def;SMIPv08-ML-SSP2-EcPrice300-def;;;;SSP3|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;SSP2;;;;; -SMIPv08-L-SSP2-EcPrice600-var_yr2035;0,L,SSP2,var;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP2-EcPrice600-var_yr2050;0,L,SSP2,var;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_yr2035;0,L,SSP1,var;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_yr2050;0,L,SSP1,var;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035;0,VLLO,SSP1,var;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035;0,VLLO,SSP2,var;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP2-NPi-var;0,M,SSP2,var;SMIPv08-M-SSP2-NPi2025-def;;;;SSP2|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP2-NDC-var;0,M,SSP2,var;SMIPv08-M-SSP2-NPi2025-def;;;;SSP2|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP3-NDC-var;0,M,SSP3,var;SMIPv08-M-SSP3-NPi2025-def;;;;SSP3|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-M-SSP1-NDC-var;0,M,SSP1,var;SMIPv08-M-SSP1-NPi2025-def;;;;SSP1|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP2-EcPrice600-var_bioenergy150;0,L,SSP2,var;SMIPv08-L-SSP2-EcPrice600-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-L-SSP1-EcPrice300-var_bioenergy150;0,L,SSP1,var;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcBudg500-var_natveg;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;SSP2|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; -SMIPv08-VLHO-SSP2-EcBudg500-var;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;;;;;;;; -RIKEN-VLLO-SSP2-PkPrice500-var;0;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;SSP2|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;;;;;;; diff --git a/config/scenario_config_magpie.csv b/config/scenario_config_magpie.csv new file mode 100644 index 0000000000..4be4c77c35 --- /dev/null +++ b/config/scenario_config_magpie.csv @@ -0,0 +1,24 @@ +title;start;continueFromHere;magpieIter;config/scenario_config.csv;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_scenario_target;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_scenario_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price;cfg_mag$gms$c15_food_scenario;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year;cfg_mag$gms$s56_fader_cpriceaff_start;cfg_mag$gms$s56_fader_cpriceaff_end +SSP1-NDC;0;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0.7;1;2030;2030;2030 +SSP1-NPi2025;1;;;VLLO|SSP1-POP-GDP|NPI|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0.7;1;2030;2030;2030 +SSP1-PkBudg1000;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0.7;1;2030;2030;2030 +SSP1-PkBudg750;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0.7;1;2030;2030;2030 +SSP2_lowEn-NDC;0;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2_lowEn-NPi2025;0;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2_lowEn-PkBudg1000;0;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0;0;2030;2030;2030 +SSP2_lowEn-PkBudg650;0;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0;0;2030;2030;2030 +SSP2-EcBudg500;1;;;SSP2|NDC|AR-plant|nocc_hist;y2030;1;2050;2070;0.02;2050;2070;0.2;const2030;734;;0;0;2050;2040;2050 +SSP2-NDC;1;;;SSP2|NDC|AR-natveg|nocc_hist|rcp4p5;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-NPi;0;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-NPi2025;1;;;SSP2|NPI|AR-natveg|nocc_hist|rcp4p5;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-PkBudg1000;1;;;SSP2|NDC|AR-natveg|nocc_hist|rcp2p6;y2030;1;;;0.01;;;0.1;const2030;734;;0;0;2030;2030;2030 +SSP2-PkBudg750;1;;;SSP2|NDC|AR-natveg|nocc_hist|rcp1p9;y2030;1;;;0.03;;;0.3;const2030;734;;0;0;2030;2030;2030 +SSP2-rollBack;0;;;SSP2|NPI-revert|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP3-NDC;0;;;SSP3|NDC|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP3-NPi2025;1;;;SSP3|NPI|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP3-PkBudg1000;1;;;SSP3|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.01;2025;2050;0.1;const2030;734;SSP2;0;0;2030;2030;2030 +SSP3-rollBack;1;;;SSP3|NPI-revert|AR-natveg|nocc_hist;y2150;1;;;0;;;;const2030;734;SSP2;0;1;2030;2030;2030 +SSP5-NDC;0;;;SSP5|NDC|AR-plant|nocc_hist;y2150;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP5-NPi2025;0;;;SSP5|NPI|AR-plant|nocc_hist;y2150;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP5-PkBudg1000;0;;;SSP5|NDC|AR-plant|nocc_hist;y2030;1;2025;2050;0.01;2025;2050;0.1;const2030;734;SSP2;0;0;2030;2030;2030 +SSP5-PkBudg650;0;;;SSP5|NDC|AR-plant|nocc_hist;y2030;1;2025;2050;0.03;2025;2050;0.3;const2030;734;SSP2;0;0;2030;2030;2030 diff --git a/config/scenario_config_magpie_EL2p0DeepDive.csv b/config/scenario_config_magpie_EL2p0DeepDive.csv new file mode 100644 index 0000000000..b667e5d628 --- /dev/null +++ b/config/scenario_config_magpie_EL2p0DeepDive.csv @@ -0,0 +1,40 @@ +title;start;continueFromHere;magpieIter;config/scenario_config.csv;config/projects/scenario_config_el2.csv;no_ghgprices_land_until +SSP2-Base;0;;;SSP2|NPI|nocc_hist;EL2_default;y2150 +SSP2-NDC;1;;;SSP2|NDC|nocc_hist;EL2_default;y2150 +SSP2-NPi;1;;;SSP2|NPI|nocc_hist;EL2_default;y2150 +SSP2-noDSPkB500-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB500-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB500-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB500-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB650-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB650-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB650-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB650-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB1050-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB1050-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB1050-DS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB1050-noDS_betax_DeepDive;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB500-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB500-DS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-noDSPkB500-DS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-DSPkB500-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB650-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB650-DS_betax_AgMIP;1;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-noDSPkB650-DS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-DSPkB650-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB1050-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-DSPkB1050-DS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-noDSPkB1050-DS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default|EL2_PHD;y2030 +SSP2-DSPkB1050-noDS_betax_AgMIP;0;;;SSP2|NDC|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB500-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 +SSP2-DSPkB500-DS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB500-DS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB500-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB650-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 +SSP2-DSPkB650-DS_betax_DeepDive_noNDC;1;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB650-DS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB650-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 +SSP2-noDSPkB1050-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 +SSP2-DSPkB1050-DS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-noDSPkB1050-DS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default|EL2_Demand;y2030 +SSP2-DSPkB1050-noDS_betax_DeepDive_noNDC;0;;;SSP2|NPI|nocc_hist;EL2_default;y2030 diff --git a/config/scenario_config_magpie_ELEVATE2p3.csv b/config/scenario_config_magpie_ELEVATE2p3.csv new file mode 100755 index 0000000000..cfcb1d8fa5 --- /dev/null +++ b/config/scenario_config_magpie_ELEVATE2p3.csv @@ -0,0 +1,14 @@ +title;start;continueFromHere;magpieIter;magpie_scen;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand +ELV_CurPol_NPi;0;;;SSP2|NPI|nocc_hist;y2150;1 +ELV_CurPol_NPi2025;0;;;SSP2|NPI|nocc_hist;y2150;1 +ELV-SSP2-CP-D0;0;;;SSP2|NPI|nocc_hist;y2150;1 +ELV-SSP2-CP-D1;0;;;SSP2|NPI|nocc_hist;y2150;1 +ELV-SSP2-CP-D3;0;;;SSP2|NPI|nocc_hist;y2150;1 +ELV_NDC2030;1;;;SSP2|NDC|nocc_hist;y2150;1 +ELV-SSP2-NDC-D0;1;;;SSP2|NDC|nocc_hist;y2150;1 +ELV-SSP2-NDC-D1;1;;;SSP2|NDC|nocc_hist;y2150;1 +ELV-SSP2-NDC-D3;1;;;SSP2|NDC|nocc_hist;y2150;1 +ELV-SSP2-LTS;1;;;SSP2|NDC|nocc_hist;y2030;1 +ELV-SSP2-NDC-LTS;1;;;SSP2|NDC|nocc_hist;y2030;1 +ELV-SSP2-1000;1;;;SSP2|NDC|nocc_hist;y2030;1 +ELV-SSP2-650;1;;;SSP2|NDC|nocc_hist;y2030;1 diff --git a/config/scenario_config_magpie_JustMIP.csv b/config/scenario_config_magpie_JustMIP.csv new file mode 100755 index 0000000000..7bdd444350 --- /dev/null +++ b/config/scenario_config_magpie_JustMIP.csv @@ -0,0 +1,11 @@ +title;start;continueFromHere;magpieIter;config/scenario_config.csv;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year +# startgroup=remindinput: scenarios that are needed to update MAgPIE inputs in REMIND (emissions, costs, ...);;;;;;;;;;;; +SSP1-NDC;0;;;SSP1|NDC|AR-natveg|nocc_hist;y2150;1;0;0;const2030;0;1;2025 +SSP1-NPi2025;1;;;SSP1|NPI|AR-natveg|nocc_hist;y2150;1;0;0;const2030;0;1;2025 +SSP1-PkBudg1000;1;;;SSP1|NDC|AR-natveg|nocc_hist;y2030;1;0.01;0.1;const2030;0;1;2025 +Reference_SSP1_800f;1;;;SSP1|NDC|AR-natveg|nocc_hist;y2030;1;0;0;const2030;0.7;0;2030 +SSP2-NDC;0;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;1;0;0;const2030;0;1;2025 +SSP2-NPi;0;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;1;0;0;const2030;0;1;2025 +SSP2-NPi2025;1;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;1;0;0;const2030;0;1;2025 +SSP2-PkBudg1000;1;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;1;0.01;0.1;const2030;0;1;2025 +Reference_SSP2_800f;0;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;1;0;0;const2030;0.7;0;2030 diff --git a/config/scenario_config_magpie_MitiConsv.csv b/config/scenario_config_magpie_MitiConsv.csv new file mode 100644 index 0000000000..6175d600bb --- /dev/null +++ b/config/scenario_config_magpie_MitiConsv.csv @@ -0,0 +1,7 @@ +title;start;continueFromHere;magpieIter;config/scenario_config.csv;config/projects/scenario_config_miti_consv.csv;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem +rev11_MitiConsv_SSP2-NPi;1;;;SSP2|NPI|nocc_hist|rcp4p5|ForestryExo;MitiConsv;y2150;1;0;0;const2030 +rev11_MitiConsv_SSP2-PB750-NPi;1;;;SSP2|NPI|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR0;y2030;1;0;0;const2030 +rev11_MitiConsv_SSP2-PB750-NDC;1;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR0;y2030;1;0;0;const2030 +rev11_MitiConsv_SSP2-PB750-AR250;1;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR250;y2030;1;0;0;const2030 +rev11_MitiConsv_SSP2-PB750-AR350;1;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR350;y2030;1;0;0;const2030 +rev11_MitiConsv_SSP2-PB750-AR150;1;;;SSP2|NDC|nocc_hist|rcp1p9|ForestryExo;MitiConsv|AR150;y2030;1;0;0;const2030 diff --git a/config/scenario_config_magpie_NGFS_v6c1.csv b/config/scenario_config_magpie_NGFS_v6c1.csv new file mode 100644 index 0000000000..e50c97419f --- /dev/null +++ b/config/scenario_config_magpie_NGFS_v6c1.csv @@ -0,0 +1,29 @@ +title;start;copyConfigFrom;continueFromHere;magpieIter;config/scenario_config.csv;no_ghgprices_land_until;cfg_mag$gms$s56_cprice_red_factor;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_scenario_target;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_scenario_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price;cfg_mag$gms$c15_food_scenario;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year;cfg_mag$gms$s56_fader_cpriceaff_start;cfg_mag$gms$s56_fader_cpriceaff_end +# Default scenarios in magpie 4.13;;;;;;;1;0;2025;2050;0;2025;2050;0;"const2020";4920;SP2;0;1;2030;2030;2030 +SSP2-EcBudg400;0;;;;SSP2|NDC|AR-plant|nocc_hist;y2030;;1;2050;2070;0.02;2050;2070;0.2;const2030;734;;0;0;2050;2040;2050 +SSP2-NDC;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-NPi;0;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-NPi2025;0;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP2-PkBudg1000;0;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;;0;0;2030;2030;2030 +SSP2-PkBudg650;1;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0;0;2030;2030;2030 +SSP2-rollBack;0;;;;SSP2|NPI-revert|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SSP3-NDC;0;;;;SSP3|NDC|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP3-NPi2025;0;;;;SSP3|NPI|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SSP3-PkBudg1000;0;;;;SSP3|NDC|AR-natveg|nocc_hist;y2030;;1;2025;2050;0.01;2025;2050;0.1;const2030;734;SSP2;0;0;2030;2030;2030 +SSP3-rollBack;0;;;;SSP3|NPI-revert|AR-natveg|nocc_hist;y2150;;1;;;0;;;;const2030;734;SSP2;0;1;2030;2030;2030 +# NGFS (no damages);;;;;;;1;0;2025;2050;0;2025;2050;0;"const2020";4920;SP2;0;1;2030;2030;2030 +h_cpol;NGFS;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +h_ndc;NGFS;;;;SSP2|NDC|AR-natveg|nocc_hist;y2150;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +o_1p5c;NGFS,NGFS_1p5c;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;;;0.03;;;0.3;const2030;734;;0;0;2030;2030;2030 +o_2c;NGFS;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;;;0.01;;;0.1;const2030;734;;0;0;2030;2030;2030 +d_delfrag;NGFS;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;;;0.01;;;0.1;const2030;734;;0;0;2030;2030;2030 +d_strain;NGFS;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +# tests;;;;;;;;;;;;;;;;;;;;;; +# cpol same as NPi2025?;FALSE;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;-;- +# 1p5c same as Pk650?;FALSE;-;-;-;-;-;-;-;FALSE;FALSE;-;FALSE;FALSE;-;-;-;-;-;-;-;-;- +# variations;;;;;;;;;;;;;;;;;;;;;; +d_delfrag_2030;NGFS;d_delfrag;;;;;;;;;;;;;;;;;;;; +d_strain_2035;NGFS;d_strain;;;;;;;;;;;;;;;;;;;; +o_1p5c_noDAC;NGFS_1p5c;o_1p5c;;;;;;;;;;;;;;;;;;;; +o_1p5c_Pk725;NGFS_1p5c;o_1p5c;;;;;;;;;;;;;;;;;;;; +o_1p5c_Pk750;NGFS_1p5c;o_1p5c;;;;;;;;;;;;;;;;;;;; \ No newline at end of file diff --git a/config/scenario_config_magpie_RIKEN.csv b/config/scenario_config_magpie_RIKEN.csv new file mode 100644 index 0000000000..7bd4ccec2f --- /dev/null +++ b/config/scenario_config_magpie_RIKEN.csv @@ -0,0 +1,7 @@ +title;start;continueFromHere;magpieIter;config/scenario_config.csv;cfg_mag$gms$s56_cprice_red_factor;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price +M-SSP2-NPi;1;;;SSP2|NPI|AR-natveg|nocc_hist;;y2150;1;;0;;0;const2030;734 +VLLO-SSP2-PkBudg650;1;;;SSP2|NDC|AR-natveg|nocc_hist;;y2030;1;2025;0.02;2025;0.2;const2030;734 +VLLO-SSP1-PkBudg650;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;;y2030;1;2025;0.02;2025;0.2;const2030;734 +M-SSP2-NPi-KLW;1;;;SSP2|NPI|AR-natveg|cc|rcp4p5;;y2150;1;;0;;;const2030;734 +VLLO-SSP2-KLW;1;;;SSP2|NDC|AR-natveg|cc|rcp1p9;;y2030;1;2025;0.02;2025;0.2;const2030;734 +VLLO-SSP1-KLW;1;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|cc|rcp1p9;;y2030;1;2025;0.02;2025;0.2;const2030;734 diff --git a/config/scenario_config_magpie_ScenarioMIP.csv b/config/scenario_config_magpie_ScenarioMIP.csv new file mode 100644 index 0000000000..aadea166e7 --- /dev/null +++ b/config/scenario_config_magpie_ScenarioMIP.csv @@ -0,0 +1,29 @@ +title;start;copyConfigFrom;continueFromHere;magpieIter;config/scenario_config.csv;no_ghgprices_land_until;cfg_mag$gms$s15_elastic_demand;cfg_mag$gms$s29_treecover_scenario_start;cfg_mag$gms$s29_treecover_scenario_target;cfg_mag$gms$s29_treecover_target;cfg_mag$gms$s59_scm_scenario_start;cfg_mag$gms$s59_scm_scenario_target;cfg_mag$gms$s59_scm_target;cfg_mag$gms$c60_1stgen_biodem;cfg_mag$gms$s56_limit_ch4_n2o_price;cfg_mag$gms$c15_food_scenario;cfg_mag$gms$s44_bii_target;cfg_mag$gms$c44_bii_decrease;cfg_mag$gms$s44_start_year;cfg_mag$gms$s56_fader_cpriceaff_start;cfg_mag$gms$s56_fader_cpriceaff_end +SMIPv08-H-SSP3-rollBack-def;0,H,SSP3,def,main;;;;SSP3|NPI-revert|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;SSP2;0;1;2030;2030;2030 +SMIPv08-M-SSP2-NPi2025-def;0,M,SSP2,def,main;;;;SSP2|NPI|AR-natveg|nocc_hist;y2150;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SMIPv08-ML-SSP2-EcPrice300-def;0,ML,SSP2,def,main;;;;SSP2|NPI|AR-natveg|nocc_hist;y2040;1;;;0;;;0;const2030;734;;0;1;2030;2030;2030 +SMIPv08-L-SSP2-PkPrice400-def;0,L,SSP2,def,main;;;;SSP2|NDC|AR-natveg|nocc_hist;y2030;1;2030;2050;0.01;2030;2050;0.1;const2030;734;;0;0;2030;2030;2030 +SMIPv08-VLHO-SSP2-EcPrice1300-def;0,VLHO,SSP2,def,main;;;;SSP2|NPI|AR-plant|nocc_hist;y2030;1;2050;2070;0.02;2050;2070;0.2;const2030;734;;0;0;2050;2040;2050 +SMIPv08-VLLO-SSP1-PkPrice500-def;0,VLLO,SSP1,def,main;;;;VLLO|SSP1-POP-GDP|NDC|AR-natveg|nocc_hist;y2030;1;2025;2050;0.03;2025;2050;0.3;const2030;734;;0.7;1;2030;2030;2030 +SMIPv08-H-SSP2-rollBack-def;0,H,SSP2,def;SMIPv08-H-SSP3-rollBack-def;;;SSP2|NPI-revert|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-VLLO-SSP2-PkPrice500-def;0,VLLO,SSP2,def;SMIPv08-VLLO-SSP1-PkPrice500-def;;;VLLO|SSP2-POP-GDP|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-M-SSP1-NPi2025-def;0,M,SSP1,def;SMIPv08-M-SSP2-NPi2025-def;;;SSP1|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-ML-SSP1-EcPrice190-def;0,ML,SSP1,def;SMIPv08-ML-SSP2-EcPrice300-def;;;SSP1|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-L-SSP1-EcPrice300-def;0,L,SSP1,def;SMIPv08-L-SSP2-PkPrice400-def;;;SSP1|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-M-SSP3-NPi2025-def;0,M,SSP3,def;SMIPv08-M-SSP2-NPi2025-def;;;SSP3|NPI|AR-natveg|nocc_hist;;;;;;;;;;;SSP2;;;;; +SMIPv08-ML-SSP3-EcPrice325-def;0,ML,SSP3,def;SMIPv08-ML-SSP2-EcPrice300-def;;;SSP3|NPI|AR-natveg|nocc_hist;;;;;;;;;;;SSP2;;;;; +SMIPv08-L-SSP2-PkPrice400-var_yr2035;0,L,SSP2,var;SMIPv08-L-SSP2-PkPrice400-def;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP2-PkPrice400-var_yr2050;0,L,SSP2,var;SMIPv08-L-SSP2-PkPrice400-def;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP1-EcPrice300-var_yr2035;0,L,SSP1,var;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;;;;; +SMIPv08-L-SSP1-EcPrice300-var_yr2050;0,L,SSP1,var;SMIPv08-L-SSP1-EcPrice300-def;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;; +SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035;0,VLLO,SSP1,var;SMIPv08-VLLO-SSP1-PkPrice500-def;;;;;;;;;;;;;;;;;;; +SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035;0,VLLO,SSP2,var;SMIPv08-VLLO-SSP2-PkPrice500-def;;;;;;;;;;;;;;;;;;; +SMIPv08-M-SSP2-NPi-var;0,M,SSP2,var;SMIPv08-M-SSP2-NPi2025-def;;;SSP2|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-M-SSP2-NDC-var;0,M,SSP2,var;SMIPv08-M-SSP2-NPi2025-def;;;SSP2|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-M-SSP3-NDC-var;0,M,SSP3,var;SMIPv08-M-SSP3-NPi2025-def;;;SSP3|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-M-SSP1-NDC-var;0,M,SSP1,var;SMIPv08-M-SSP1-NPi2025-def;;;SSP1|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcBudg500-var_natveg;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;SSP2|NPI|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; +SMIPv08-VLHO-SSP2-EcBudg500-var;0,VLHO,SSP2,var;SMIPv08-VLHO-SSP2-EcPrice1300-def;;;;;;;;;;;;;;;;;;; +RIKEN-VLLO-SSP2-PkPrice500-var;0;SMIPv08-VLLO-SSP1-PkPrice500-def;;;SSP2|NDC|AR-natveg|nocc_hist;;;;;;;;;;;;;;;; diff --git a/config/tests/scenario_config_coupled_shortCascade.csv b/config/tests/scenario_config_coupled_shortCascade.csv deleted file mode 100644 index f3c55603f9..0000000000 --- a/config/tests/scenario_config_coupled_shortCascade.csv +++ /dev/null @@ -1,4 +0,0 @@ -title;start;qos;sbatch;magpie_scen;config/scenario_config.csv;magpie_empty;no_ghgprices_land_until;var_luc;max_iterations;oldrun;path_gdx;path_gdx_ref;path_gdx_bau;path_report;cm_nash_autoconverge_lastrun;path_mif_ghgprice_land;cfg_mag$gms$s56_minimum_cprice;cfg_mag$damping_factor;cfg_mag$gms$s56_cprice_red_factor;path_gdx_refpolicycost -TESTTHAT-SSP2-Base;1;auto;--wait --mail-type=FAIL --time=60;SSP2|NPI;SSP2;TRUE;y2150;raw;2;;;;;;2;;;;; -TESTTHAT-SSP2-NDC;1;auto;--wait --mail-type=FAIL --time=60;SSP2|NDC;;TRUE;y2150;raw;2;;;;;;2;TESTTHAT-SSP2-Base;;0.80;0.5; -TESTTHAT-SSP2-Policy;2;auto;--wait --mail-type=FAIL --time=60;SSP2|NDC;SSP2;TRUE;y2150;raw;2;TESTTHAT-SSP2-Base;;;;;;output/C_TESTTHAT-SSP2-Base-rem-1/REMIND_generic_C_TESTTHAT-SSP2-Base-rem-1.mif;20;;; diff --git a/config/tests/scenario_config_magpie_oneRegiPlus.csv b/config/tests/scenario_config_magpie_oneRegiPlus.csv new file mode 100644 index 0000000000..6dd8b58d53 --- /dev/null +++ b/config/tests/scenario_config_magpie_oneRegiPlus.csv @@ -0,0 +1,2 @@ +title;start;magpieIter;no_ghgprices_land_until +testOneRegiMAgPIE;1;3;y2150 diff --git a/config/tests/scenario_config_magpie_shortCascade.csv b/config/tests/scenario_config_magpie_shortCascade.csv new file mode 100644 index 0000000000..6dc07be6dc --- /dev/null +++ b/config/tests/scenario_config_magpie_shortCascade.csv @@ -0,0 +1,4 @@ +title;start;sbatch;magpie_scen;config/scenario_config.csv;magpie_empty;no_ghgprices_land_until;path_mif_ghgprice_land;cfg_mag$gms$s56_minimum_cprice;cfg_mag$damping_factor;cfg_mag$gms$s56_cprice_red_factor;path_gdx_refpolicycost +TESTTHAT-SSP2-Base;1;#NAME?;SSP2|NPI;SSP2;TRUE;y2150;;;;; +TESTTHAT-SSP2-NDC;1;#NAME?;SSP2|NDC;;TRUE;y2150;TESTTHAT-SSP2-Base;;0.8;0.5; +TESTTHAT-SSP2-Policy;2;#NAME?;SSP2|NDC;SSP2;TRUE;y2150;output/C_TESTTHAT-SSP2-Base-rem-1/REMIND_generic_C_TESTTHAT-SSP2-Base-rem-1.mif;20;;; diff --git a/config/tests/scenario_config_oneRegiPlus.csv b/config/tests/scenario_config_oneRegiPlus.csv new file mode 100644 index 0000000000..395e1bbadd --- /dev/null +++ b/config/tests/scenario_config_oneRegiPlus.csv @@ -0,0 +1,4 @@ +title;start;cm_nash_mode;cm_iteration_max;optimization;c_edgeTransportIter;slurmConfig;output +testOneRegiEnhanced;1;1;5;testOneRegi;;--qos=priority --nodes=1 --tasks-per-node=1 --mem=8000 --time=180;reporting +testOneRegiTransport;1;1;5;testOneRegi;2, 3;--qos=priority --nodes=1 --tasks-per-node=1 --mem=8000 --time=180;reporting +testOneRegiMAgPIE;1;1;5;testOneRegi;2, 4;--qos=priority --nodes=1 --tasks-per-node=1 --mem=32000 --time=180;reporting diff --git a/core/bounds.gms b/core/bounds.gms index 5a618be807..f3f1da98c2 100755 --- a/core/bounds.gms +++ b/core/bounds.gms @@ -65,8 +65,11 @@ loop(teRe2rlfDetail(te,rlf), *** ================================================================== *' #### 2. Historical and near-term capacities *** ================================================================== + +*** ------------------------------------------------------------------ *' ##### Capacity for fossils and renewables *** ------------------------------------------------------------------ + loop(t $ (t.val >= 2015 and t.val <= 2025), *** fix renewable capacities to real world historical values if available vm_cap.lo(t,regi,teVRE(te),"1") $ pm_histCap(t,regi,te) = 0.95 * pm_histCap(t,regi,te); @@ -98,12 +101,26 @@ loop(regi $ regi_group("EUR_regi",regi), *** RP: add lower bound on 2020 coal chp and upper bound on gas chp based on IEA data to have a more realistic starting point vm_prodSe.lo("2020",regi,"pecoal","seel","coalchp") = 0.8 * pm_IO_output("2020",regi,"pecoal","seel","coalchp") ; -vm_prodSe.up("2020",regi,"pegas","seel","gaschp") = 1e-4 + 1.3 * pm_IO_output("2020",regi,"pegas","seel","gaschp") ; +vm_prodSe.up("2020",regi,"pegas","seel","gaschp") = 1e-4 + 1.3 * pm_IO_output("2020",regi,"pegas","seel","gaschp"); + + +*** lower bounds on near-term capacity additions based on projects in "under construction" and "planned" category and +*** the respective assumptions on completion rates (i.e. shares of projects that will actucally be completed and start operation until 2030, +*** see p_ProjectsCompletionShare assumptions defined in core/datainput.gms) +*** generic implementation (other historic and near-term bounds above could be fit into this generic implementation in the future to have less and more structured code) +vm_deltaCap.lo("2030",regi,te,"1") = sum( project_status, +*** assumed shares of projects completed until 2030 by project status + p_ProjectsCompletionShare("2030",regi,te,project_status) +*** projects planned for 2030 by project status + * p_CapacityBounds("2030",regi,te,project_status) ) +*** divide by 5-year time step to get to annual capacity additions + / 5; *** ------------------------------------------------------------------ *' ##### Near-term capacity for electrolysis and hydrogen *** ------------------------------------------------------------------ + *' set lower and upper bounds for 2025 and 2030 based on projects annoucements from IEA Hydryogen project database: *' https://www.iea.org/data-and-statistics/data-product/hydrogen-production-and-infrastructure-projects-database *' distribute to regions via GDP share of 2025 (we do not use later time steps as they may have different GDPs depending on the scenario) @@ -178,33 +195,39 @@ vm_deltaCap.fx(t,regi,te,rlf) $ (t.val <= 2025 and pm_data(regi,"tech_stat",te) *** ------------------------------------------------------------------ *' ##### Capacity for nuclear energy *** TODO: data update ------------------------------------------------ -if(cm_startyear <= 2015, - p_CapFixFromRWfix("2015",regi,"tnrs") = max( pm_aux_capLowerLimit("tnrs",regi,"2015") , pm_NuclearConstraint("2015",regi,"tnrs") ); - p_deltaCapFromRWfix("2015",regi,"tnrs") = ( p_CapFixFromRWfix("2015",regi,"tnrs") - pm_aux_capLowerLimit("tnrs",regi,"2015") ) + +loop(t, + if( ( t.val > 2010 ) AND ( t.val < 2030 ) AND ( cm_startyear <= t.val ), +*' The spin-up capacity from initialcap2 may be larger than historic capacities. For all regions but DEU, we don't want to enforce early retirement, so we calculate the standing capacities +*' resulting from 2005 capacities and normal technical depreciation. For DEU, the explicit nuclear phaseout means that capacities are phased down faster than the normal techincal lifetime + p_CapFixFromRWfix(t,regi,"tnrs") $ (NOT sameas(regi,"DEU") ) = max( pm_aux_capLowerLimit("tnrs",regi,t) , pm_NuclearConstraint(t,regi,"tnrs") ); + p_CapFixFromRWfix(t,regi,"tnrs") $ ( sameas(regi,"DEU") ) = pm_NuclearConstraint(t,regi,"tnrs") ; + p_deltaCapFromRWfix(t,regi,"tnrs") = ( p_CapFixFromRWfix(t,regi,"tnrs") - pm_aux_capLowerLimit("tnrs",regi,t) ) / 7.5; !! this parameter is currently only for display and not further used to fix anything - p_deltaCapFromRWfix("2010",regi,"tnrs") = ( p_CapFixFromRWfix("2015",regi,"tnrs") - pm_aux_capLowerLimit("tnrs",regi,"2015") ) - / 7.5; !! this parameter is currently only for display and not further used to fix anything - vm_cap.fx("2015",regi,"tnrs","1") = p_CapFixFromRWfix("2015",regi,"tnrs"); +*** keep nuclear power capacity in +-10% range of historic data, choose range to allow for some flexibility for the model + vm_cap.lo(t,regi,"tnrs","1") = 0.9 * p_CapFixFromRWfix(t,regi,"tnrs"); + vm_cap.up(t,regi,"tnrs","1") = 1.1 * p_CapFixFromRWfix(t,regi,"tnrs"); + ); ); -if(cm_startyear <= 2020, !! require the realization of at least 70% of the plants that are currently under construction and thus might be finished until 2020 - should be updated with real-world 2020 numbers - vm_deltaCap.lo("2020",regi,"tnrs","1") = 0.70 * pm_NuclearConstraint("2020",regi,"tnrs") / 5; - vm_deltaCap.up("2020",regi,"tnrs","1") = pm_NuclearConstraint("2020",regi,"tnrs") / 5; +if(cm_startyear <= 2030, !! require the realization of at least 50% of the max additions until 2030 (estimated at 80% of plants currently under construction) + vm_deltaCap.lo("2030",regi,"tnrs","1") = 0.50 * pm_NuclearConstraint("2030",regi,"tnrs") / 5; + vm_deltaCap.up("2030",regi,"tnrs","1") = pm_NuclearConstraint("2030",regi,"tnrs") / 5; ); -if(cm_startyear <= 2025, !! upper bound calculated in mrremind/R/calcCapacityNuclear.R: 50% of planned and 30% of proposed plants, plus extra for lifetime extension and newcomers - vm_deltaCap.up("2025",regi,"tnrs","1") = pm_NuclearConstraint("2025",regi,"tnrs") / 5; +if(cm_startyear <= 2035, !! upper bound calculated in mrremind/R/calcCapacityNuclear.R: 50% of planned and 30% of proposed plants, plus extra for lifetime extension and newcomers + vm_deltaCap.up("2035",regi,"tnrs","1") = pm_NuclearConstraint("2035",regi,"tnrs") / 5; ); -if(cm_startyear <= 2030, !! upper bound calculated in mrremind/R/calcCapacityNuclear.R: 50% of planned and 70% of proposed plants, plus extra for lifetime extension and newcomers - vm_deltaCap.up("2030",regi,"tnrs","1") = pm_NuclearConstraint("2030",regi,"tnrs") / 5; +if(cm_startyear <= 2040, !! upper bound calculated in mrremind/R/calcCapacityNuclear.R: 50% of planned and 70% of proposed plants, plus extra for lifetime extension and newcomers + vm_deltaCap.up("2040",regi,"tnrs","1") = pm_NuclearConstraint("2040",regi,"tnrs") / 5; ); display p_CapFixFromRWfix, p_deltaCapFromRWfix; -*' switch to prevent new nuclear capacities after 2020, until then all currently planned plants are built +*' switch to prevent new nuclear capacities after 2025, until then all currently planned plants are built if(cm_nucscen = 5, - vm_deltaCap.up(t,regi_nucscen,"tnrs",rlf) $ (t.val > 2020) = 1e-6; - vm_cap.lo(t,regi_nucscen,"tnrs",rlf) $ (t.val > 2015) = 0; + vm_deltaCap.up(t,regi_nucscen,"tnrs",rlf) $ (t.val > 2025) = 1e-6; + vm_cap.lo(t,regi_nucscen,"tnrs",rlf) $ (t.val > 2025) = 0; ); @@ -272,7 +295,7 @@ if(c_bioh2scen = 0, !! no bioh2 technologies *' Switches to activate pyrolysis technologies loop(teBiopyr(te) $ (not sameas(te, "biopyrliq")), !! established industrial technologies vm_cap.fx(t,regi,te,rlf) $ (t.val <= 2015) = 0; - if(c_biopyrEstablished = 0, + if(c_biopyrOptions eq 0, vm_deltaCap.fx(t,regi,te,rlf) $ (t.val >= cm_startyear) = 0; else vm_cap.up("2020",regi,te,rlf) = p_boundCapBiochar("2020",regi) * sm_tBC_2_TWa / 3; @@ -286,12 +309,11 @@ loop(te $ sameas(te, "biopyrliq"), !! does not yet exist commercially vm_cap.fx(t,regi,"biopyrliq",rlf) $ (t.val <= 2025) = 0; vm_deltaCap.lo(t,regi,"biopyrliq",rlf) $ (t.val > cm_startyear) = 1e-8; !! initiate a negligible increase to help model find the technology vm_deltaCap.up(t,regi,"biopyrliq",rlf) $ (t.val > cm_startyear) = inf; !! revert fixing to small values above - if(c_biopyrliq = 0, - vm_deltaCap.fx(t,regi,"biopyrliq",rlf) $ (t.val >= cm_startyear) = 0; + if(c_biopyrOptions le 1, + vm_deltaCap.fx(t,regi,"biopyrliq",rlf) $ (t.val >= cm_startyear) = 0; ); ); - *** ================================================================== *' #### 4. Assumptions on carbon management *** ================================================================== @@ -307,7 +329,7 @@ vm_cap.fx("2020",regi,te,rlf) $ (teBio(te) and teCCS(te)) = 0; *' switch to deactivate carbon sequestration if(c_ccsinjecratescen = 0, - vm_co2CCS.fx(t,regi_capturescen,"cco2","ico2","ccsinje","1") = 0; + vm_co2CCS.fx(t,regi_capturescen,"cco2","ico2",te,rlf) $ teCCS2rlf(te,rlf) = 0; ); *' bound on maximum annual carbon storage by region @@ -316,7 +338,8 @@ if(c_ccsinjecratescen > 0, *' DK 20100929: default value (pm_ccsinjecrate= 0.5%) is consistent with Interview Gerling (BGR) *' (http://www.iz-klima.de/aktuelles/archiv/news-2010/mai/news-05052010-2/): *' 12 Gt storage potential in Germany, 50-75 Mt/a injection => 60 Mt/a => 60/12000=0.005 - vm_co2CCS.up(t,regi,"cco2","ico2","ccsinje","1") = pm_dataccs(regi,"quan","1") * pm_ccsinjecrate(regi); + vm_co2CCS.up(t,regi,"cco2","ico2","ccsinjeon","1") = pm_dataccs(regi,"quan","ccsinjeon") * pm_ccsinjecrate(regi); + vm_co2CCS.up(t,regi,"cco2","ico2","ccsinjeoff","1") = pm_dataccs(regi,"quan","ccsinjeoff") * pm_ccsinjecrate(regi); *** Lower limit for 2020-2030 is capacities of all projects that are operational (2020-2030) from project data base *** Upper limit for 2025 and 2030 additionally includes all projects under construction and 30% @@ -326,11 +349,12 @@ if(c_ccsinjecratescen > 0, *** Potential of EU27 regions is pooled and redistributed according to GDP (Only upper limit for 2030) *** Norway and UK announced to store CO2 for EU27 countries. So 50% of Norway and UK potential in 2030 is attributed to EU27-Pool if(not cm_emiscen = 1, !! cm_emiscen 1 = BAU - vm_co2CCS.lo(t,regi,"cco2","ico2","ccsinje","1") $ (t.val <= 2030) = s_MtCO2_2_GtC * p_boundCapCCS(t,regi,"operational") $ (t.val <= 2030); - vm_co2CCS.up(t,regi,"cco2","ico2","ccsinje","1") $ (t.val <= 2030) = s_MtCO2_2_GtC * ( + vm_co2CCS.lo(t,regi,"cco2","ico2","ccsinjeon","1") $ (t.val <= 2030) = sm_MtCO2_2_GtC * p_boundCapCCS(t,regi,"operational") $ (t.val <= 2030); + vm_co2CCS.up(t,regi,"cco2","ico2","ccsinjeon","1") $ (t.val <= 2030) = sm_MtCO2_2_GtC * ( p_boundCapCCS(t,regi,"operational") $ (t.val <= 2030) + p_boundCapCCS(t,regi,"construction") $ (t.val <= 2030) + p_boundCapCCS(t,regi,"planned") $ (t.val <= 2030) * c_fracRealfromAnnouncedCCScap2030); + !! DKX: assumptions for ccsinjeoff ); ); @@ -342,7 +366,7 @@ if(cm_emiscen = 1, if(cm_ccapturescen = 2, !! no carbon capture at all vm_cap.fx(t,regi_capturescen,teCCS,rlf) = 0; - vm_cap.fx(t,regi_capturescen,"ccsinje",rlf) = 0; + vm_cap.fx(t,regi_capturescen,te,rlf) $ teCCS2rlf(te,rlf) = 0; elseif(cm_ccapturescen = 3), !! no bio carbon capture: vm_cap.fx(t,regi_capturescen,te,rlf) $ (teCCS(te) and teBio(te)) = 0; elseif(cm_ccapturescen = 4), !! no carbon capture in the electricity sector @@ -372,13 +396,43 @@ loop(regi $ (p_boundCapCCSindicator(regi) = 0), *** Limit REMINDs ability to vent captured CO2 to 1 MtCO2 per yr per region. This happens otherwise to a great extend in stringent climate *** policy scenarios if CCS and CCU capacities are limited in early years, to lower overall adjustment costs of capture technologies. *** In reality, people don't have perfect foresight and without storage or usage capacities, no capture facilities will be built. -v_co2capturevalve.up(t,regi) = 1 * s_MtCO2_2_GtC; +v_co2capturevalve.up(t,regi) = 1 * sm_MtCO2_2_GtC; *** ================================================================== *' #### 5. Early retirement and phase-out of technologies *** ================================================================== + + +*' Early Retirement +*' Early retirement of capacities is not possible as long as vm_capEarlyReti is fixed to zero. +*' If early retirement should be activated, vm_capEarlyReti is allowed to increase up to one. +*' One means that 100% of standing capacity of this technology is retired and does not produce output in this time step. +*' allow early retirement only for technologies in teEarlyReti +vm_capEarlyReti.up(t,regi,te)$( NOT(teEarlyReti(te))) = 0; +vm_capEarlyReti.up(t,regi,teEarlyReti) = 1; + +$ifthen.tech_earlyreti not "%c_tech_earlyreti_rate%" == "off" +*' allow early retirement also for technology and region combinations as defined by c_tech_earlyreti_rate switch +loop((ext_regi,te) $ p_techEarlyRetiRate(ext_regi,te), + vm_capEarlyReti.up(t,regi,te) $ (regi_group(ext_regi,regi)) = 1; +); +$endif.tech_earlyreti + +*** restrict early retirement to time frame between 2015 and 2100 where it is relevant +vm_capEarlyReti.up(ttot,regi,te) $ (ttot.val < 2010 or ttot.val > 2110) = 0; + +*** only US and EUR allow early retirement before 2035 +loop(regi$(NOT(regi_group("USA_regi",regi) or regi_group("EUR_regi",regi))), + vm_capEarlyReti.up(t,regi,te) $ (t.val <= 2030) = 0; +); + +*** lower bound of 0.01% to help the model to be aware of the early retirement option is time steps where it is active +vm_capEarlyReti.lo(t,regi,teEarlyReti) $ ( vm_capEarlyReti.up(t,regi,teEarlyReti) eq 1 and t.val > 2010 and t.val <= 2100) = 1e-4; + +*' Phase-out of technologies + *' Switch off coal-h2 hydrogen investments after 2020, and gas-h2 investments after 2030. Our current seh2 hydrogen represents *' only additional (clean) hydrogen use cases to current ones. However, as we have too high H2 demand in 2025 and 2030 from the *' input data, we need to allow grey hydrogen for these time periods to meet the hydrogen demand which cannot be fully met by @@ -390,34 +444,8 @@ vm_cap.lo(t,regi,"coalh2",rlf) $ (t.val >= 2020) = 0; vm_cap.lo(t,regi,"gash2",rlf) $ (t.val > 2030) = 0; -*** CB: allow for early retirement at the start of free model time -*** allow non zero early retirement for all technologies to avoid mathematical errors -vm_capEarlyReti.up(t,regi,te) = 1e-6; -*** generally allow full early retiremnt for all fossil technologies without CCS -vm_capEarlyReti.up(t,regi,teFosNoCCS(te)) = 1; -*** allow nuclear early retirement -vm_capEarlyReti.up(t,regi,"tnrs") = 1; -*** allow early retirement of biomass used in electricity -vm_capEarlyReti.up(t,regi,"bioigcc") = 1; -*** allow early retirement of biomass used for heat and power -vm_capEarlyReti.up(t,regi,"biohp") = 1; -vm_capEarlyReti.up(t,regi,"biochp") = 1; - -*** allow early retirement for techs added to the c_tech_earlyreti_rate switch -$ifthen.tech_earlyreti not "%c_tech_earlyreti_rate%" == "off" -loop((ext_regi,te) $ p_techEarlyRetiRate(ext_regi,te), - vm_capEarlyReti.up(t,regi,te) $ (regi_group(ext_regi,regi)) = 1; -); -$endif.tech_earlyreti - -*** restrict early retirement to the modeling time frame (to reduce runtime, the early retirement equations are phased out after 2110) -vm_capEarlyReti.up(ttot,regi,te) $ (ttot.val < 2010 or ttot.val > 2110) = 0; -*** lower bound of 0.01% to help the model to be aware of the early retirement option -vm_capEarlyReti.lo(t,regi,te) $ (vm_capEarlyReti.up(t,regi,te) >= 1 and t.val > 2010 and t.val <= 2100) = 1e-4; -*** CB 20120301: no early retirement for diesel oil turbines, they are used despite their economic non-competitiveness for various reasons. -vm_capEarlyReti.fx(t,regi,"dot") = 0; *** strong reliance on coal-to-liquids is not consistent with SSP1 storyline, therefore limit their use in the SSP1 and SSP2 policy scenarios @@ -482,8 +510,6 @@ display vm_emiFgas.L; loop(all_te $ ( sameas(all_te, "solhe") or sameas(all_te, "fnrs") or - sameas(all_te, "pcc") or - sameas(all_te, "pco") or *** windoffshore-todo: to remove when removing wind from all_te sameas(all_te, "wind") or sameas(all_te, "storwind") or diff --git a/core/datainput.gms b/core/datainput.gms index cb059124b6..e5a9e17270 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -161,7 +161,7 @@ fm_dataglob("learn", te)$(sameAs(te, "biopyronly") OR sameAs(te, "biopyrhe") OR $ifthen.c_techAssumptScen "%c_techAssumptScen%" == "SSP1" *** hampers technologies with CCS or FT *** TODO: add industry ccs technologies bfcc and idrcc - loop(te $ (teCCS(te) or teFischerTropsch(te) or sameas(te,"ccsinje")), + loop(te $ (teCCS(te) or teFischerTropsch(te) or teccsinje(te)), !! DKX: assumptions correct? fm_dataglob("inco0",te) = 1.3 * fm_dataglob("inco0",te); ); *** hampers nuclear a lot @@ -212,7 +212,7 @@ $elseif.c_techAssumptScen "%c_techAssumptScen%" == "SSP3" $elseif.c_techAssumptScen "%c_techAssumptScen%" == "SSP5" *** favours technologies with CCS or FT - loop(te $ (teCCS(te) or teFischerTropsch(te) or sameas(te,"ccsinje")), + loop(te $ (teCCS(te) or teFischerTropsch(te) or teccsinje(te)), !! DKX: assumptions correct? fm_dataglob("inco0",te) = 0.9 * fm_dataglob("inco0",te); ); *** hampers nuclear @@ -240,12 +240,16 @@ $endif.c_techAssumptScen ***--------------------------------------------------------------------------- *** cm_ccsinjeCost cost scenarios *** Warning: it applies absolute values; only use it in combination with default c_techAssumptScen SSP2. -*** low estimate: ccsinje cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 -$if "%cm_ccsinjeCost%" == "low" fm_dataglob("tech_stat","ccsinje") = 2; -$if "%cm_ccsinjeCost%" == "low" fm_dataglob("inco0","ccsinje") = 220; -$if "%cm_ccsinjeCost%" == "low" fm_dataglob("constrTme","ccsinje") = 0; +*** low estimate: ccsinjeon cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("tech_stat","ccsinjeon") = 2; +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("inco0","ccsinjeon") = 220; +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("constrTme","ccsinjeon") = 0; +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("tech_stat","ccsinjeoff") = 2; !! DKX: assumptions +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("inco0","ccsinjeoff") = 330; !! DKX: assumptions +$if "%cm_ccsinjeCost%" == "low" fm_dataglob("constrTme","ccsinjeoff") = 0; !! DKX: assumptions *** high estimate: ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances -$if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinje") = 550; +$if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinjeon") = 550; +$if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinjeoff") = 825; !! DKX: assumptions *** cm_VRE_supply_assumptions: Modify learning and floor costs for electricity storage and production of VRE @@ -752,6 +756,20 @@ pm_cf(ttot,regi,"ngt")$(ttot.val eq 2030) = 0.8 * pm_cf(ttot,regi,"ngt"); pm_cf(ttot,regi,"ngt")$(ttot.val eq 2035) = 0.7 * pm_cf(ttot,regi,"ngt"); pm_cf(ttot,regi,"ngt")$(ttot.val ge 2040) = 0.6 * pm_cf(ttot,regi,"ngt"); + +*** assume that standard coal power plants also go in peak load mode over time as VRE share increases +pm_cf(ttot,regi,"pc")$(ttot.val eq 2035) = 0.9 * pm_cf(ttot,regi,"pc"); +pm_cf(ttot,regi,"pc")$(ttot.val eq 2040) = 0.8 * pm_cf(ttot,regi,"pc"); +pm_cf(ttot,regi,"pc")$(ttot.val eq 2045) = 0.7 * pm_cf(ttot,regi,"pc"); +pm_cf(ttot,regi,"pc")$(ttot.val ge 2050) = 0.5 * pm_cf(ttot,regi,"pc"); + +*** modify short-term coal capacity factor for China based on latest 2025 EMBER data +*** (https://ember-energy.org/data/yearly-electricity-data/) +*** and assumption that quite some renewables + coal over-capacity will be built until 2030, so coal power CF goes down +pm_cf("2025",regi,"pc")$( sameas(regi,"CHA")) = 0.55; +pm_cf("2030",regi,"pc")$( sameas(regi,"CHA")) = 0.48; + + *RP* set H2 turbines to the same CF values pm_cf(ttot,regi,"h2turb")$(ttot.val ge 2025) = pm_cf(ttot,regi,"ngt"); pm_cf(ttot,regi,"h2turbVRE")$(ttot.val ge 2025) = pm_cf(ttot,regi,"ngt"); @@ -762,18 +780,41 @@ pm_cf(ttot,regi,"tdh2i") = pm_cf(ttot,regi,"tdh2s"); *** Region- and tech-specific early retirement rates loop(ext_regi$pm_extRegiEarlyRetiRate(ext_regi), - pm_regiEarlyRetiRate(t,regi,te)$(regi_group(ext_regi,regi)) = pm_extRegiEarlyRetiRate(ext_regi); + pm_regiEarlyRetiRate(t,regi,teEarlyReti)$(regi_group(ext_regi,regi)) = pm_extRegiEarlyRetiRate(ext_regi); +); + + +*** for runs with all EU subregions (regionmapping21_EU21), increase early retirement rates for the EU regions +*** because the higher regional resolution already introduces more intertia to the phase-out dynamics +*** This increase of the parameter value between the two regional resolution actually makes H12 results better match EU21 results. +*** The larger heterogeneity of the EU subregions means that the single-region version needs less flexibility to change at the +*** same speed that the sum over the many regions can change. +*** check whether DEU, FRA, ENC, ESC, ESW, ECS all contained in regi set +if( (sum(regi$sameas(regi,"DEU"),1) > 0) + and (sum(regi$sameas(regi,"FRA"),1) > 0) + and (sum(regi$sameas(regi,"ENC"),1) > 0) + and (sum(regi$sameas(regi,"ESC"),1) > 0) + and (sum(regi$sameas(regi,"ESW"),1) > 0) + and (sum(regi$sameas(regi,"ECS"),1) > 0), +*** increase default early retirement rates by 2%/yr for EU subregions + loop(regi$regi_group("EUR_regi",regi), + pm_regiEarlyRetiRate(t,regi,teEarlyReti) = pm_regiEarlyRetiRate(t,regi,teEarlyReti) + 0.02 + ); ); -***Tech-specific* -*RP*: reduce early retirement for technologies with additional characteristics that are difficult to represent in REMIND, eg. industries built around heating/CHP plants, or flexibility from ngt plants + + +*** Technology-specific adaptations of maximum allowed annual early retirement rates +*** increase early retirement for technologies that are old and should be phased out faster +pm_regiEarlyRetiRate(t,regi,"pc") = 1.2 * pm_regiEarlyRetiRate(t,regi,"pc"); !! standard coal power plants, pc, are a relatively old technology that should be allowed to retire faster +*** reduce early retirement for technologies with additional characteristics that are difficult to represent in REMIND, eg. industries built around heating/CHP plants, or flexibility from ngt plants pm_regiEarlyRetiRate(t,regi,"ngt") = 0.3 * pm_regiEarlyRetiRate(t,regi,"ngt"); !! ngt should only be phased out very slowly, as they provide flexibility - which REMIND is not too good at capturing endogeneously -pm_regiEarlyRetiRate(t,regi,"gaschp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"gaschp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"coalchp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"coalchp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"gashp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"gashp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"coalhp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"coalhp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"biohp") = 0.25 * pm_regiEarlyRetiRate(t,regi,"biohp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"biochp") = 0.25 * pm_regiEarlyRetiRate(t,regi,"biochp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input -pm_regiEarlyRetiRate(t,regi,"bioigcc") = 0.25 * pm_regiEarlyRetiRate(t,regi,"bioigcc"); !! reduce bio early retirement rate +pm_regiEarlyRetiRate(t,regi,"gaschp") = 0.7 * pm_regiEarlyRetiRate(t,regi,"gaschp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input +pm_regiEarlyRetiRate(t,regi,"coalchp") = 0.7 * pm_regiEarlyRetiRate(t,regi,"coalchp"); !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input +pm_regiEarlyRetiRate(t,regi,"gashp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"gashp"); !! district heating plants should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input +pm_regiEarlyRetiRate(t,regi,"coalhp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"coalhp"); !! district heating plants should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input +pm_regiEarlyRetiRate(t,regi,"biohp") = 0.25 * pm_regiEarlyRetiRate(t,regi,"biohp"); !! biomass technologies should only be phased-out slowly, case for their early retirement is shifting the allocation of biomass across technologies to optimize biogenic carbon capture/use +pm_regiEarlyRetiRate(t,regi,"biochp") = 0.25 * pm_regiEarlyRetiRate(t,regi,"biochp"); !! biomass technologies should only be phased-out slowly, case for their early retirement is shifting the allocation of biomass across technologies to optimize biogenic carbon capture/use +pm_regiEarlyRetiRate(t,regi,"bioigcc") = 0.25 * pm_regiEarlyRetiRate(t,regi,"bioigcc"); !! biomass technologies should only be phased-out slowly, case for their early retirement is shifting the allocation of biomass across technologies to optimize biogenic carbon capture/use $ifthen.tech_earlyreti not "%c_tech_earlyreti_rate%" == "off" loop((ext_regi,te)$p_techEarlyRetiRate(ext_regi,te), @@ -781,17 +822,6 @@ loop((ext_regi,te)$p_techEarlyRetiRate(ext_regi,te), ); $endif.tech_earlyreti -*** Time-dependent early retirement rates in Baseline scenarios -$ifthen.Base_Cprice %carbonprice% == "none" -$ifthen.Base_techpol %techpol% == "none" -*** CG: Allow no early retirement in future periods under baseline for developing countries -loop(regi, -if ( p_developmentState("2015",regi) < 1, -pm_regiEarlyRetiRate(t,regi,"pc")= 0; -); -); -$endif.Base_techpol -$endif.Base_Cprice display pm_regiEarlyRetiRate; @@ -875,6 +905,33 @@ if(pm_NuclearConstraint("2020",regi,"tnrs")<0, ); ); +*** read project pipeline data of capacities used for setting historical and near-term bounds across technologies +*** coal power projects from Global Energy Monitor +*** CO2 storage capacities from IEA CCU database +parameter p_CapacityBounds(ttot,all_regi,all_te,project_status) "technology capacity for historical and near-term time steps by project status, project status categories are operational, under construction and planned [GW(output) for energy technologies, MtCO2/yr for carbon management technologies]" +/ +$ondelim +$include "./core/input/p_CapacityBounds.cs4r" +$offdelim +/; + + +*** assumptions on share of completed projects in near-term time steps for projects that are "under construction" or "planned" +p_ProjectsCompletionShare(ttot,regi,te,project_status) = 0; + +*** so far this generic near-term bounds implementation only makes assumptions on the completion of coal power projects (pc) +$ifthen.ProjectsNearTerm %c_NearTermProjectCompletion% == "conservative" +*** for coal power assume that 90% of projects under construction will actually be completed in time as well as 50% of currently planned projects +p_ProjectsCompletionShare(ttot,regi,"pc","construction") = 0.9; +p_ProjectsCompletionShare(ttot,regi,"pc","planned") = 0.5; +$elseif.ProjectsNearTerm %c_NearTermProjectCompletion% == "transformative" +*** for coal power assume that 30%% of projects under construction will actually be completed and no currently planned projects +p_ProjectsCompletionShare(ttot,regi,"pc","construction") = 0.3; +$endif.ProjectsNearTerm + + + + *** read in data on CCS capacities and announced projects used as upper and lower bound on vm_co2CCS in 2025 and 2030 parameter p_boundCapCCS(ttot,all_regi,project_status) "installed and planned capacity of CCS" / @@ -994,10 +1051,8 @@ $if %cm_LU_emi_scen% == "SSP3" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0 $if %cm_LU_emi_scen% == "SSP5" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0066/sm_EJ_2_TWa; $if %cm_LU_emi_scen% == "SDP" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0047/sm_EJ_2_TWa; -*DK* In case REMIND is coupled to MAgPIE emissions are obtained from the MAgPIE reporting. Thus, emission factors are set to zero -$if %cm_MAgPIE_coupling% == "on" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0; - -display p_efFossilFuelExtr; +*** In case REMIND is coupled to MAgPIE emissions are obtained from the MAgPIE reporting. +*** Thus, emission factors are set to zero in core/presolve.gms after MAgPIE has run at least one. *** capacity factors (nur) are 1 by default pm_dataren(regi,"nur",rlf,te) = 1; @@ -1115,20 +1170,20 @@ $offdelim /; *** Capacity factor for wind and solar -*** Effective capacity factor pm_dataren("nur") * pm_cf scales from historical values in 2015 to grade-based values in 2030 +*** Effective capacity factor pm_dataren("nur") * pm_cf scales from historical values in 2015 to grade-based values in 2040 *** pm_dataren("nur",rlf) is the capacity factor of a given rlf grade -*** pm_cf is a multiplier that scales linearly from p_aux_capacityFactorHistOverREMIND in 2015 to 1 in 2030 +*** pm_cf is a multiplier that scales linearly from p_aux_capacityFactorHistOverREMIND in 2015 to 1 in 2040 *** This scaling accounts for lag effects, for instance turbines in the 2000s were much smaller hence yielding lower capacity factors p_aux_capacityFactorHistOverREMIND(regi,teVRE) = 1; p_aux_capacityFactorHistOverREMIND(regi,teVRE) $ (p_histCapFac("2015",regi,teVRE) and p_avCapFac2015(regi,teVRE)) = p_histCapFac("2015",regi,teVRE) / p_avCapFac2015(regi,teVRE); -loop(t $ (t.val ge 2015 AND t.val lt 2030), +loop(t $ (t.val ge 2015 AND t.val lt 2040), pm_cf(t,regi,teVRE) = pm_cf(t,regi,teVRE) !! always 1 for VRE in f_cf, but could be modified by modules - * ( (2030 - pm_ttot_val(t)) * p_aux_capacityFactorHistOverREMIND(regi,teVRE) + * ( (2040 - pm_ttot_val(t)) * p_aux_capacityFactorHistOverREMIND(regi,teVRE) + (pm_ttot_val(t) - 2015) - ) / (2030 - 2015) + ) / (2040 - 2015) ); *CG* set storage and grid of windoff to be the same as windon @@ -1162,13 +1217,25 @@ loop(te, teEtaConst(te) = not teEtaIncr(te); display teEtaIncr; -*** import regionalized CCS constraints: -table pm_dataccs(all_regi,char,rlf) "maximum CO2 storage capacity using CCS technology. Unit: GtC" +*** import regionalized storage potential: +table f_geoStorPot(all_regi,char) "different categories of geological storage potential for CO2. Unit: GtC" $ondelim -$include "./core/input/pm_dataccs.cs3r" +$include "./core/input/f_geoStorPot.cs3r" $offdelim ; +*** set onshore and offshore storage potential according to c_geoStorPotScen +if (c_geoStorPotScen eq 1, + pm_dataccs(all_regi, "quan", "ccsinjeon") = f_geoStorPot(all_regi, "potTechOn"); + pm_dataccs(all_regi, "quan", "ccsinjeoff") = f_geoStorPot(all_regi, "potTechOff"); +elseif (c_geoStorPotScen eq 2), + pm_dataccs(all_regi, "quan", "ccsinjeon") = f_geoStorPot(all_regi, "potLimOn"); + pm_dataccs(all_regi, "quan", "ccsinjeoff") = f_geoStorPot(all_regi, "potLimOff"); +elseif (c_geoStorPotScen eq 3), + pm_dataccs(all_regi, "quan", "ccsinjeon") = f_geoStorPot(all_regi, "mixedOld"); + pm_dataccs(all_regi, "quan", "ccsinjeoff") = 0.00001; +); + ***----------------------------------------------------------------------------- *** adjustment cost parameter ***----------------------------------------------------------------------------- @@ -1208,7 +1275,7 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,"geohdr") = 0.1; p_adj_seed_te(ttot,regi,"hydro") = 0.25; p_adj_seed_te(ttot,regi,"windoff") = 0.5; - p_adj_seed_te(ttot,regi,"spv") = 2.00; + p_adj_seed_te(ttot,regi,"spv") = 1.5; p_adj_seed_te(ttot,regi,"csp") = 0.25; p_adj_seed_te(ttot,regi,"tnrs") = 0.25; *** green hydrogen and synthetic fuels @@ -1255,7 +1322,7 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"hydro") = 1.0; p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; - p_adj_coeff(ttot,regi,"spv") = 0.15; + p_adj_coeff(ttot,regi,"spv") = 0.18; p_adj_coeff(ttot,regi,"tnrs") = 1.0; *** VRE storage and grid p_adj_coeff(ttot,regi,teGrid) = 0.3; @@ -1265,7 +1332,7 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"MeOH") = 0.5; p_adj_coeff(ttot,regi,"h22ch4") = 0.5; *** CO2 storage and CDR technologies - p_adj_coeff(ttot,regi,"ccsinje") = 1.0; + p_adj_coeff(ttot,regi,teccsinje) = 1.0; p_adj_coeff(ttot,regi,"biopyronly") = 0.55; !! like biochp and bioigcc; p_adj_coeff(ttot,regi,"biopyrhe") = 0.55; !! like biochp and bioigcc; p_adj_coeff(ttot,regi,"biopyrchp") = 0.55; !! like biochp and bioigcc; @@ -1384,11 +1451,6 @@ if(c_macscen eq 1, pm_macSwitch(ttot,regi,emiMacSector) = 1; ); -*** for NDC and NPi switch off landuse MACs -$if %carbonprice% == "off" pm_macSwitch(ttot,regi,emiMacMagpie) = 0; -$if %carbonprice% == "NDC" pm_macSwitch(ttot,regi,emiMacMagpie) = 0; -$if %carbonprice% == "NPi" pm_macSwitch(ttot,regi,emiMacMagpie) = 0; - *** Load historical carbon prices defined in $/t CO2, need to be rescaled to right unit pm_taxCO2eq(ttot,regi)$(ttot.val le 2020) = 0; parameter fm_taxCO2eqHist(ttot,all_regi) "historic CO2 prices [$/tCO2]" @@ -1399,24 +1461,15 @@ $offdelim /; pm_taxCO2eq(ttot,regi)$(ttot.val le 2020) = fm_taxCO2eqHist(ttot,regi) * sm_DptCO2_2_TDpGtC; -*DK* LU emissions are abated in MAgPIE in coupling mode -*** An alternative to the approach below could be to introduce a new value for c_macswitch that only deactivates the LU MACs -$if %cm_MAgPIE_coupling% == "on" pm_macSwitch(ttot,regi,enty)$emiMacMagpie(enty) = 0; *** As long as there is hardly any CO2 LUC reduction in MAgPIE we dont need MACs in REMIND -$if %cm_MAgPIE_coupling% == "off" pm_macSwitch(ttot,regi,"co2luc") = 0; +pm_macSwitch(ttot,regi,"co2luc") = 0; *** The tiny fraction n2ofertsom of total land use n2o can get slightly negative in some cases. Ignore MAC for n2ofertsom by default. -$if %cm_MAgPIE_coupling% == "off" pm_macSwitch(ttot,regi,"n2ofertsom") = 0; +pm_macSwitch(ttot,regi,"n2ofertsom") = 0; + * GA: Deactivate MAC abatement for historical periods, assuming no abatement happens until 2030 pm_macSwitch(ttot,regi,emiMacSector)$(ttot.val le 2025) = 0; -* GA: Use long term (2050) pm_macSwitch to set p_macCostSwitch, as some MACCs -* are turned off in the short term -p_macCostSwitch(enty)=pm_macSwitch("2050","USA",enty); -pm_macSwitch(ttot,regi,"co2cement_process") =0 ; -p_macCostSwitch("co2cement_process") =0 ; - - *** load econometric emission data *** read in p3 and p4 parameter p_emineg_econometric(all_regi,all_enty,p) "parameters for ch4 and n2o emissions from waste baseline and co2 emissions from cement production" @@ -1468,19 +1521,18 @@ $offdelim /; p_macBaseExo(ttot,regi,emiMacExo(enty))$(ttot.val ge 2005) = f_macBaseExo(ttot,regi,emiMacExo,"%cm_LU_emi_scen%"); -$if %cm_MAgPIE_coupling% == "off" parameter f_macBaseMagpie(tall,all_regi,all_enty,all_LU_emi_scen,all_rcp_scen) "baseline emissions of N2O and CH4 from landuse based on data from Magpie" -$if %cm_MAgPIE_coupling% == "on" parameter f_macBaseMagpie_coupling(tall,all_regi,all_enty) "baseline emissions of N2O and CH4 from landuse based on data from Magpie" + +parameter f_macBaseMagpie(tall,all_regi,all_enty,all_LU_emi_scen,all_rcp_scen) "baseline emissions of N2O and CH4 from landuse based on data from Magpie" / $ondelim -$if %cm_MAgPIE_coupling% == "off" $include "./core/input/f_macBaseMagpie.cs4r" -$if %cm_MAgPIE_coupling% == "on" $include "./core/input/f_macBaseMagpie_coupling.cs4r" +$include "./core/input/f_macBaseMagpie.cs4r" $offdelim /; -$if %cm_MAgPIE_coupling% == "off" pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie(ttot,regi,emiMacMagpie,"%cm_LU_emi_scen%","%cm_rcp_scen%"); -$if %cm_MAgPIE_coupling% == "on" pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpie); +pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie(ttot,regi,emiMacMagpie,"%cm_LU_emi_scen%","%cm_rcp_scen%"); + +*** pm_macBaseMagpie gets updated in core/presolve.gms when coupling to MAgPIE is active -$if %cm_MAgPIE_coupling% == "off" p_co2lucSub(ttot,regi,emiMacMagpieCO2Sub(all_enty))$(ttot.val ge 2005) = f_macBaseMagpie(ttot,regi,emiMacMagpieCO2Sub,"%cm_LU_emi_scen%","%cm_rcp_scen%"); -$if %cm_MAgPIE_coupling% == "on" p_co2lucSub(ttot,regi,emiMacMagpieCO2Sub(all_enty))$(ttot.val ge 2005) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpieCO2Sub); +p_co2lucSub(ttot,regi,emiMacMagpieCO2Sub(all_enty))$(ttot.val ge 2005) = f_macBaseMagpie(ttot,regi,emiMacMagpieCO2Sub,"%cm_LU_emi_scen%","%cm_rcp_scen%"); *** p_macPolCO2luc defines the lower limit for abatement of CO2 landuse change emissions in REMIND *** The values are derived from MAgPIE runs with very strong mitigation @@ -1622,6 +1674,56 @@ $ifthen.scaleDemand not "%cm_scaleDemand%" == "off" ); $endif.scaleDemand +*** Scale FE demand in building sectors +$ifthen.scaleDemandBuildTable not "%cm_scaleDemandBuildTable%" == "off" + +*** File should have the following format: +*** 2025,USA,1.00 +*** 2030,USA,0.9 +*** 2035,USA,0.8 + + +Parameter f_scaleDemandBuildTable(ttot,all_regi) "Rescaling factor on industry final energy and usable energy demand, read-in from a table" +/ +$ondelim +$include "./core/input/%cm_scaleDemandBuildTable%.cs4r" +$offdelim +/; + +pm_scaleDemandBuildTable(t,regi) = f_scaleDemandBuildTable(t,regi); +pm_scaleDemandBuildTable(t,regi) $ (t.val < 2030 ) = 1; !! ensure that historic data is not changed +pm_scaleDemandBuildTable(t,regi) $ ( pm_scaleDemandBuildTable(t,regi) le 0) = 1; !! If no multiplier was entered or a negative value was entered, override by 1. (FE values <0 are not possible) +pm_scaleDemandBuildTable(t,regi) $ (t.val > 2100 ) = pm_scaleDemandBuildTable("2100",regi); !! continue 2100 multiplier until end of time + + loop( (t,regi,in) $ in_buildings_dyn36(in) , + pm_fedemand(t,regi,in) = pm_fedemand(t,regi,in) * pm_scaleDemandBuildTable(t,regi) + ); +$endif.scaleDemandBuildTable + +*** Scale FE demand in industry sectors +$ifthen.scaleDemandIndTable not "%c_scaleDemandIndTable%" == "off" + +*** File should have the following format: +*** 2025,USA,1.00 +*** 2030,USA,0.9 +*** 2035,USA,0.8 + +Parameter f_scaleDemandIndTable(ttot,all_regi) "Rescaling factor on industry final energy and usable energy demand, read-in from a table" +/ +$ondelim +$include "./core/input/%c_scaleDemandIndTable%.cs4r" +$offdelim +/; + +p_scaleDemandIndTable(t,regi) $ (t.val > 2025 ) = f_scaleDemandIndTable(t,regi); +p_scaleDemandIndTable(t,regi) $ (t.val < 2030 ) = 1; !! ensure that historic data is not changed +p_scaleDemandIndTable(t,regi) $ ( p_scaleDemandIndTable(t,regi) le 0) = 1; !! If no multiplier was entered or a negative value was entered, override by 1. (FE values <0 are not possible) +p_scaleDemandIndTable(t,regi) $ (t.val > 2100 ) = p_scaleDemandIndTable("2100",regi); !! continue 2100 multiplier until end of time + + loop( (t,regi,in) $ in_industry_dyn37(in) , + pm_fedemand(t,regi,in) = pm_fedemand(t,regi,in) * p_scaleDemandIndTable(t,regi) + ); +$endif.scaleDemandIndTable *** initialize absolute deviation of global cumulated CO2 emissions budget from target budget sm_globalBudget_absDev = 0; diff --git a/core/declarations.gms b/core/declarations.gms index 36ced4acbc..adc44959a8 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -78,6 +78,7 @@ pm_co2eq0(tall,all_regi) "Total greenhouse gas emiss *** parameters used for MAC curves pm_macBaseMagpie(tall,all_regi,all_enty) "baseline emissions from MAgPIE (type emiMacMagpie) [GtC, Mt CH4, Mt N]" +f_macBaseMagpie_coupling(tall,all_regi,all_enty) "baseline emissions from MAgPIE (type emiMacMagpie) read from magpie.gdx in coupling [GtC, Mt CH4, Mt N]" p_macBaseMagpieNegCo2(tall,all_regi) "net negative CO2 emissions from land-use change [GtC]" p_macBaseExo(tall,all_regi,all_enty) "exogenous baseline emissions (type emiMacExo) [Mt CH4, Mt N]" p_co2lucSub(tall,all_regi,all_enty) "subtypes of CO2 land use change emissions, add up to total land use change emissions, coming from MAgPIE, passed through REMIND for reporting, not used anywhere, remain unchanged [GtC]" @@ -152,7 +153,7 @@ vm_emiAllMkt(tall,all_regi,all_enty,all_emiMkt) "total emissions per emissi *** ------------- Emissions Positive Variables -------------------------------- positive variables -v_co2capture(ttot,all_regi,all_enty,all_enty,all_te,rlf) "total captured CO2 [GtC/year]" +v_co2capture(ttot,all_regi) "total captured CO2 [GtC/year]" vm_co2CCS(ttot,all_regi,all_enty,all_enty,all_te,rlf) "total CO2 injected into geological storage [GtC/a]" v_co2capturevalve(ttot,all_regi) "total CO2 emitted right after capture [GtC/a], note: used in q_balCCUvsCCS to account for different lifetimes of capture and CCU/CCS te and capacities [GtC/year]" v_ccsShare(ttot,all_regi) "fraction of captured CO2 that is stored geologically [share]" @@ -180,7 +181,7 @@ q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per q_emiEnFuelEx(ttot,all_regi,all_enty) "energy emissions from fuel extraction" q_emiAllMkt(ttot,all_regi,all_enty,all_emiMkt) "total regional emissions for each emission market" q_emiCdrAll(ttot,all_regi) "summing over all CDR emissions" -q_balcapture(ttot,all_regi,all_enty,all_enty,all_te) "balance equation for carbon capture" +q_balcapture(ttot,all_regi) "balance equation for carbon capture" q_balCCUvsCCS(ttot,all_regi) "balance equation for captured carbon to CCU or CCS or valve" q_ccsShare(ttot,all_regi) "calculate the share of captured CO2 that is stored geologically" ; @@ -287,7 +288,7 @@ p_deltaCapFromRWfix(ttot,all_regi,all_te) "auxiliary parameter with r pm_delta_histCap(tall,all_regi,all_te) "historic capacity additions calculated from historic data [TW/yr]" p_histProdSeGrowthRate(tall,all_regi,all_enty,all_te)"historic energy production growth rate [fraction]" p_maxhistProdSeGrowthRate(all_regi,all_enty,all_te) "maximum historic energy production growth rate [fraction]" - +p_ProjectsCompletionShare(ttot,all_regi,all_te,project_status) "assumptions on shares of technology capacity that will start operation in the total amount of capacity that is currently under construction or planned; used to set near-term technology bounds [share]" *** penalty cost implementation for cm_startyear to limit change in policy run relative to reference run p_prodSeReference(ttot,all_regi,all_enty,all_enty,all_te) "Secondary Energy output of a technology in the reference run [TWa]" @@ -316,6 +317,16 @@ $ifthen.scaleDemand not "%cm_scaleDemand%" == "off" pm_scaleDemand(tall,tall,all_regi) "Rescaling factor on final energy and usable energy demand, for selected regions and over a phase-in window." / %cm_scaleDemand% / $endif.scaleDemand +$ifthen.scaleDemandBuildTable not "%cm_scaleDemandBuildTable%" == "off" +*** FE demand rescaling parameters + pm_scaleDemandBuildTable(ttot, all_regi) "Rescaling factor on buildings final energy and usable energy demand, read-in from a table" +$endif.scaleDemandBuildTable + +$ifthen.scaleDemandIndTable not "%c_scaleDemandIndTable%" == "off" +*** FE demand rescaling parameters + p_scaleDemandIndTable(ttot, all_regi) "Rescaling factor on industry final energy and usable energy demand, read-in from a table" +$endif.scaleDemandIndTable + *** energy prices pm_FEPrice(ttot,all_regi,all_enty,sector,emiMkt) "parameter to capture all FE prices across sectors and markets [tr$2005/TWa]" pm_FEPrice_iter(iteration,ttot,all_regi,all_enty,sector,emiMkt) "parameter to capture all FE prices across sectors and markets [tr$2005/TWa] across iterations" @@ -485,9 +496,9 @@ q_balFe(ttot,all_regi,all_enty,all_enty,all_te) "balance of final energy (f q_balFeAfterTax(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "balance of final energy after considering FE sectoral taxes (fe)" *** energy conversion equations (energy input * conversion efficiency = energy output) -q_transPe2se(ttot,all_regi,all_enty,all_enty,all_te) "energy tranformation pe to se" +q_transPe2se(ttot,all_regi,all_enty,all_enty,all_te) "energy transformation pe to se" q_transSe2se(ttot,all_regi,all_enty,all_enty,all_te) "energy transformation se to se" -q_transSe2fe(ttot,all_regi,all_enty,all_enty,all_te) "energy tranformation se to fe" +q_transSe2fe(ttot,all_regi,all_enty,all_enty,all_te) "energy transformation se to fe" *** penalty cost implementation for cm_startyear to limit change in policy run relative to reference run q_changeProdStartyear(ttot,all_regi,all_te) "calculating the absolute change of output with respect to the reference run for each technology" @@ -545,7 +556,7 @@ $ifthen.tech_CO2capturerate not "%c_tech_CO2capturerate%" == "off" p_tech_co2capturerate(all_te) "Technology specific CO2 capture rate, fraction of carbon from input fuel that is captured [share]" / %c_tech_CO2capturerate% / p_PECarriers_CarbonContent(all_enty) "Carbon content of PE carriers [GtC/TWa]" $endif.tech_CO2capturerate -pm_dataccs(all_regi,char,rlf) "maximum CO2 storage capacity using CCS technology. [GtC]" +pm_dataccs(all_regi,char,all_te) "maximum CO2 storage capacity using CCS technology. [GtC]" pm_ccsinjecrate(all_regi) "Regional CCS injection rate factor. [1/year]." p_extRegiccsinjecrateRegi(ext_regi) "Regional CCS injection rate factor. [1/year]. (extended regions)" ; @@ -572,6 +583,8 @@ parameters pm_budgetCO2eq(all_regi) "budget for regional energy-emissions in period 1 [GtC]" pm_actualbudgetco2(ttot) "actual level of cumulated emissions starting from 2020 [GtCO2]" p_actualbudgetco2_iter(iteration,ttot) "track actual level of cumulated emissions starting from 2020 over iterations [GtCO2]" +pm_actualbudgetco2Regi(ttot,all_regi) "Regional- actual level of cumulated emissions starting from 2020 [GtCO2]" +p_actualbudgetco2Regi_iter(iteration,ttot,all_regi) "Regional- track actual level of cumulated emissions starting from 2020 over iterations [GtCO2]" *** iteration parameters pm_SolNonInfes(all_regi) "model status from last iteration. 1 means status 2 or 7, 0 for all other status codes" @@ -594,6 +607,14 @@ o_negitr_cumulative_CO2_emieng_seq(iteration) "estimated sequestered CO2 o_negitr_disc_cons_dr5_reg(iteration,all_regi) "estimated discounted consumption 2005-2100 with discount rate 5%. 'estimated' because of different times step lengths around 2100 [T$]" o_negitr_disc_cons_drInt_reg(iteration,all_regi) "estimated discounted consumption 2005-2100 with internal discount rate. 'estimated' because of different times step lengths around 2100 [T$]" o_negitr_total_forc(iteration) "total forcing in 2100" +o_pm_pebiolc_demandmag(iteration,ttot,all_regi) "track pm_pebiolc_demandmag across Nash iterations" +o_pm_macBaseMagpie(iteration,ttot,all_regi,all_enty) "track pm_macBaseMagpie across Nash iterations" +o_pm_macSwitch(iteration,ttot,all_regi,all_enty) "track pm_macSwitch across Nash iterations" +o_p_efFossilFuelExtr_n2obio(iteration,all_regi) "track p_efFossilFuelExtr for n2obio across Nash iterations" +o_vm_fuExtr_pebiolc(iteration,ttot,all_regi) "track vm_fuExtr for pebiolc across Nash iterations" +o_vm_pebiolc_price(iteration,ttot,all_regi) "track vm_pebiolc_price across Nash iterations" +o_PEDem_Bio_ECrops(iteration,ttot,all_regi) "track pebiolc demand across Nash iterations" +o_vm_emiMacSector_co2luc(iteration,ttot,all_regi) "track co2luc across Nash iterations" ; *** ------------- Scalars ---------------------------- @@ -628,7 +649,7 @@ sm_c_2_co2 "conversion from c to co2" /3.666666 s_NO2_2_N "convert NO2 to N [14 / (14 + 2 * 16)]" / .304 / sm_tgn_2_pgc "conversion factor 100-yr GWP from TgN to PgCeq" sm_tgch4_2_pgc "conversion factor 100-yr GWP from TgCH4 to PgCeq" -s_MtCO2_2_GtC "conversion factor from MtCO2 to native REMIND emission unit GtC" /2.727e-04/ +sm_MtCO2_2_GtC "conversion factor from MtCO2 to native REMIND emission unit GtC" /2.727e-04/ s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ s_gwpCH4 "Global Warming Potentials of CH4, AR5 WG1 CH08 Table 8.7" /28/ s_gwpN2O "Global Warming Potentials of N2O, AR5 WG1 CH08 Table 8.7" /265/ @@ -671,15 +692,19 @@ sm_globalBudget_absDev "absolute deviation of global cumulated CO2 emissio sm_eps "small number: 1e-9 " /1e-9/ sm_CES_calibration_iteration "current calibration iteration number, loaded from environment variable cm_CES_calibration_iteration" /0/ +sm_magpieIter "Count the number of MAgPIE iterations, starting with zero" /0/ +sm_magpieIterEnd "Number of MAgPIE iterations that have to be performed. Equals the number of elements defined in the set magpieIter" +sm_updateMagpieData "Boolean defined in core/presolve indicating if MAgPIE is running in the current Nash iteration (1) or not (0)" /0/ ; +sm_magpieIterEnd = card(magpieIter); * GA sm_dmac changes depending on the choice of MACs in c_nonco2_macc_version $ifthen %c_nonco2_macc_version% == "PBL_2007" * PBL_2007 MACs are discretized in steps of 5 $2005/tCeq sm_dmac = 5 * sm_D2005_2_D2017; $elseif %c_nonco2_macc_version% == "PBL_2022" * PBL_2022 MACs are discretized in steps of 20 $2010/tCeq -sm_dmac = 20 * s_D2010_2_D2017;; +sm_dmac = 20 * s_D2010_2_D2017; $endif ; @@ -688,4 +713,22 @@ $endif sm_tgn_2_pgc = (44/28) * s_gwpN2O * (12/44) * 0.001; sm_tgch4_2_pgc = s_gwpCH4 * (12/44) * 0.001; + + +*** ------------ Macro functions --------------- +*** Define macros that can be used as functions throughout the model code. +*** This is especially useful for more complex expressions that are used in multiple places, to avoid code duplication and to ensure consistency. +*** Parameters of a macro are replaced directly by the chosen value at compile time: they have nothing to do with the model parameters or sets. +*** Because the replacement is automatic, please pay attention to brackets. + +*** macro_interpolate: Linear interpolation between two values x0 and x1 at time points t0 and t1 for an intermediate time point t +*** Example 1: +*** Suppose we use two different data sources for historical and projected population. +*** To avoid a sudden jump, we may interpolate between the two curves over the period 2005-2025: +*** pm_pop(t,regi) = macro_interpolate(t.val, 2005, 2025, p_popHistorical(t,regi), p_popProjection(t,regi)); +*** Example 2: +*** Suppose we have a subsidy that we want to phase out with a different date for each region. +*** p_subsidy(t,regi) = macro_interpolate(t.val, cm_startyear, p_subsidyEndYr(regi), p_subsidy(cm_startyear,regi), 0); +$macro macro_interpolate(t,t0,t1,x0,x1) ( ((t1) - (t)) / ((t1) - (t0)) * (x0) + ((t) - (t0)) / ((t1) - (t0)) * (x1) ) + *** EOF ./core/declarations.gms diff --git a/core/equations.gms b/core/equations.gms index cdbefafde1..4b19d20953 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -142,11 +142,11 @@ q_balSe(t,regi,enty2)$( entySe(enty2) AND (NOT (sameas(enty2,"seel"))) ).. * vm_prodFe(t,regi,enty4,enty5,te) ) + sum(pc2te(enty,enty3,te,enty2), - sum(teCCS2rlf(te,rlf), - pm_prodCouple(regi,enty,enty3,te,enty2) - * vm_co2CCS(t,regi,enty,enty3,te,rlf) - ) - ) + sum(teCCS2rlf(te,rlf), + pm_prodCouple(regi,enty,enty3,te,enty2) + * vm_co2CCS(t,regi,enty,enty3,te,rlf) + ) + ) *** add (reused gas from waste landfills) to segas to not account for CO2 *** emissions - it comes from biomass + ( s_MtCH4_2_TWa @@ -572,7 +572,7 @@ q_emiTe(t,regi,emiTe(enty)).. *' transformations within the chain of CCS steps (Leakage). ***----------------------------------------------------------------------------- q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$( - emi2te(enty,enty2,te,enty3) + emi2te(enty,enty2,te,enty3) !! emi2te = cco2.ico2.ccsinje.co2 OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. vm_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt) =e= @@ -581,7 +581,7 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$( pm_emifac(t,regi,enty,enty2,te,enty3) * vm_demPe(t,regi,enty,enty2,te) ) - + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), + + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), !! ccs2Leak = cco2.ico2.ccsinje.co2 pm_emifac(t,regi,enty,enty2,te,enty3) * vm_co2CCS(t,regi,enty,enty2,te,rlf) ) @@ -673,8 +673,6 @@ q_emiAllMkt(t,regi,emi,emiMkt) .. ) !! negative emissions from CDR module before re-release from CCU + vm_emiCdr(t,regi,emi)$( sameas(emi,"co2") AND sameas(emiMkt,"ETS") ) - !! Exogenous emissions - + pm_emiExog(t,regi,emi)$( sameas(emiMkt,"other") ) !! emissions of carbon feedstocks contained in chemicals that are not energy-related, !! can be positive (fossil, emitted) or negative (non-fossil, stored in products) + vm_emiFeedstockNoEnergy(t,regi,emi,emiMkt) @@ -775,7 +773,7 @@ q_emiCdrAll(t,regi).. + ( !! pe2se-BECC sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail(t,regi,enty,enty2,te,enty3)) !! positive value !! + gross DACC - - sum(teCCS2rlf(te,rlf), vm_emiCdrTeDetail(t, regi, "dac"))) !! negative value + - vm_emiCdrTeDetail(t, regi, "dac")) !! negative value !! scaled by the fraction that gets stored geologically * v_ccsShare(t,regi) !! 2. gross CDR from Enhanced Weathering @@ -882,15 +880,19 @@ q_budgetCO2eqGlob$(cm_emiscen=6).. ***--------------------------------------------------------------------------- *' Definition of carbon capture : ***--------------------------------------------------------------------------- -q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) .. - sum(teCCS2rlf(te,rlf), v_co2capture(t,regi,enty,enty2,te,rlf)) + +***q_balcapture(t,regi, enty, enty2, te) +***q_balcapture(t,regi,"cco2","ico2","ccsinjeon") + +q_balcapture(t,regi) .. + v_co2capture(t,regi) =e= !! carbon captured in energy sector - sum(emi2te(enty3,enty4,te2,enty), - vm_emiTeDetail(t,regi,enty3,enty4,te2,enty) + sum(emi2te(enty3,enty4,te2,"cco2"), + vm_emiTeDetail(t,regi,enty3,enty4,te2,"cco2") ) !! carbon captured from CDR technologies in CDR module - + sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,enty,enty2,te,rlf)) + + sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,"cco2","ico2",te,rlf)) !! carbon captured from industry + sum(emiInd37, vm_emiIndCCS(t,regi,emiInd37)) + sum((sefe(entySe,entyFe),emiMkt)$( @@ -906,7 +908,7 @@ q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) .. *' atmosphere) ***--------------------------------------------------------------------------- q_balCCUvsCCS(t,regi) .. - sum(teCCS2rlf(te,rlf), v_co2capture(t,regi,"cco2","ico2",te,rlf)) + v_co2capture(t,regi) =e= sum(teCCS2rlf(te,rlf), vm_co2CCS(t,regi,"cco2","ico2",te,rlf)) + sum(teCCU2rlf(te,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te,rlf)) @@ -914,7 +916,7 @@ q_balCCUvsCCS(t,regi) .. ; q_ccsShare(t,regi) .. - sum(teCCS2rlf(te, rlf), v_co2capture(t, regi, "cco2", "ico2", "ccsinje", rlf)) * + v_co2capture(t,regi) * v_ccsShare(t,regi) =e= sum(teCCS2rlf(te, rlf), vm_co2CCS(t, regi, "cco2", "ico2", te, rlf)) @@ -924,10 +926,10 @@ q_ccsShare(t,regi) .. *' Definition of the CCS transformation chain: ***--------------------------------------------------------------------------- -q_limitCCS(regi,ccs2te2(enty,"ico2",te),rlf)$teCCS2rlf(te,rlf).. +q_limitCCS(regi,ccs2te(enty,"ico2",te),rlf)$teCCS2rlf(te,rlf).. sum(ttot $(ttot.val ge 2005), pm_ts(ttot) * vm_co2CCS(ttot,regi,enty,"ico2",te,rlf)) =l= - pm_dataccs(regi,"quan",rlf); + pm_dataccs(regi,"quan",te); ***--------------------------------------------------------------------------- diff --git a/core/input/files b/core/input/files index 0461256498..94d7b198ce 100644 --- a/core/input/files +++ b/core/input/files @@ -37,8 +37,9 @@ p_macBaseHarmsen2022.cs4r p_macBaseVanv.cs4r p_macPolCO2luc.cs4r p_boundCapCCS.cs4r +p_CapacityBounds.cs4r p_boundCapBiochar.cs4r -pm_dataccs.cs3r +f_geoStorPot.cs3r f_fedemand.cs4r f_fedemand_build.cs4r pm_NuclearConstraint.cs4r diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 71fe648676..1d89c09188 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -61,7 +61,7 @@ inco0 10 300 3000 550 2450 3150 1200 constrTme 0 1 4 2 4 5 4 4 4 4 4 2 2 4 5 lifetime 35 35 40 40 40 40 40 40 35 35 35 35 35 35 35 mix0 0.00 -eta 1.00 0.95 0.35 0.72 0.39 0.28 0.55 0.55 0.59 0.55 0.36 0.55 0.93 0.41 0.41 +eta 1.00 0.95 0.35 0.72 0.39 0.28 0.55 0.55 0.59 0.55 0.36 1.00 0.93 0.41 0.41 omf 0.03 0.04 0.04 0.04 0.04 0.04 0.06 0.07 0.08 0.07 0.11 0.05 0.05 0.06 omv 30.11 25.00 31.50 50.50 10.90 12.80 10.60 10.60 97.27 38.99 5.05 10.60 10.60 flexibility 0.7 0.75 0.7 @@ -154,17 +154,17 @@ lifetime 30 30 45 45 45 *** carbon management -+ ccsinje weathering dac oae_ng oae_el -tech_stat 0 4 -inco0 350 0.01 18800 200 400 -floorcost 4800 -constrTme 3 -lifetime 40 20 20 25 25 -mix0 1.00 -eta 1.00 1.00 1.00 1.00 1.00 -omf 0.06 0.84 0.025 0.35 0.17 -ccap0 0.0008 -learn 0.15 ++ ccsinjeon ccsinjeoff weathering dac oae_ng oae_el +tech_stat 0 0 4 +inco0 350 525 0.01 18800 200 400 +floorcost 4800 +constrTme 3 5 +lifetime 40 40 20 20 25 25 +mix0 1.00 1.00 +eta 1.00 1.00 1.00 1.00 1.00 1.00 +omf 0.06 0.12 0.84 0.025 0.35 0.17 +ccap0 0.0008 +learn 0.15 $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index d79369e3e8..f179c48b2b 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -147,8 +147,8 @@ $offtext + storspv storwindon storwindoff storcsp gridspv gridwindon gridwindoff gridcsp 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -+ ccsinje -1 1.0 ++ ccsinjeon ccsinjeoff +1 1.0 1.0 + tdsyngas tdsyngat tdsynhos tdsynpet tdsyndie 1 1.0 1.0 1.0 1.0 1.0 diff --git a/core/input/reporting/files b/core/input/reporting/files index b21a10995a..a5d8749e08 100644 --- a/core/input/reporting/files +++ b/core/input/reporting/files @@ -2,4 +2,8 @@ emi_waste_shares.cs4r se_otherfoss.cs4r p_emissions4ReportExtraCEDS.cs4r p_emissions4ReportExtraIAMC.cs4r +emifacs_sectGAINS_sourceCEDS.cs4r +emifacs_sectGAINS_sourceGAINS.cs4r +emi2020_sectGAINS_sourceCEDS.cs4r +emi2020_sectGAINS_sourceGAINS.cs4r emi2020_sectNOGAINS_sourceCEDS.cs4r \ No newline at end of file diff --git a/core/loop.gms b/core/loop.gms index c9edb955e3..7b2d541658 100644 --- a/core/loop.gms +++ b/core/loop.gms @@ -80,6 +80,8 @@ if (cm_nash_mode eq 1, ; ); +*** For each Nash iteration track runtime of solution (all regions and soliter) +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",solve," iteration.val:0; o_modelstat = 100; loop(sol_itr$(sol_itr.val <= cm_solver_try_max), @@ -88,6 +90,9 @@ $batinclude "./modules/include.gms" solve ) ); !! end of sol_itr loop, when o_modelstat is not equal to 2 +*** Track runtime +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," iteration.val:0; + ***--------------------------------------------------------- *** Track of changes between iterations ***--------------------------------------------------------- diff --git a/core/postsolve.gms b/core/postsolve.gms index dd2fb7e7d9..cbcd256080 100644 --- a/core/postsolve.gms +++ b/core/postsolve.gms @@ -18,8 +18,21 @@ pm_actualbudgetco2(ttot)$( 2020 lt ttot.val ) ) ) * sm_c_2_co2; + +*** `pm_actualbudgetco2Regi(ttot, regi)` includes emissions from 2020 to `ttot` (inclusive). +pm_actualbudgetco2Regi(ttot,regi)$( 2020 lt ttot.val ) + = sum((ttot2)$( 2020 le ttot2.val AND ttot2.val le ttot.val ), + vm_emiAll.l(ttot2,regi,"co2") + * ( (0.5 + pm_ts(ttot2) / 2)$( ttot2.val eq 2020 ) !! second half of the 2020 period (mid 2020 - end 2022) plus 0.5 to account fo beginning 2020 - mid 2020 + + (pm_ts(ttot2))$( 2020 lt ttot2.val AND ttot2.val lt ttot.val ) !! entire middle periods + + ((pm_ttot_val(ttot) - pm_ttot_val(ttot-1)) / 2 + 0.5)$(ttot2.val eq ttot.val ) !! first half of the final period plus 0.5 to account fo mid - end of final year + ) + ) + * sm_c_2_co2; + *** track `pm_actualbudgetco2(ttot)` over iterations p_actualbudgetco2_iter(iteration,ttot)$( 2020 lt ttot.val) = pm_actualbudgetco2(ttot); +p_actualbudgetco2Regi_iter(iteration,ttot,regi)$( 2020 lt ttot.val) = pm_actualbudgetco2Regi(ttot,regi); *** track pm_taxCO2eq over iterations - pm_taxCO2eq is adjusted in 45_carbonprice/functionalForm/postsolve.gms and consequently pm_taxCO2eq_iter gets overwritten there pm_taxCO2eq_iter(iteration,t,regi) = pm_taxCO2eq(t,regi); @@ -90,7 +103,7 @@ pm_PEPrice(ttot,regi,entyPe)$(abs (qm_budget.m(ttot,regi)) gt sm_eps) = q_balPe.m(ttot,regi,entyPe) / qm_budget.m(ttot,regi); *** calculate share of stored CO2 from captured CO2 -pm_share_CCS_CCO2(t,regi) = sum(teCCS2rlf(te,rlf), vm_co2CCS.l(t,regi,"cco2","ico2",te,rlf)) / (sum(teCCS2rlf(te,rlf), v_co2capture.l(t,regi,"cco2","ico2",te,rlf))+sm_eps); +pm_share_CCS_CCO2(t,regi) = sum(teCCS2rlf(te,rlf), vm_co2CCS.l(t,regi,"cco2","ico2",te,rlf)) / (v_co2capture.l(t,regi)+sm_eps); *CG**ML*: capital interest rate @@ -202,4 +215,10 @@ p_FEPrice_by_Sector_iter(iteration,t,regi,entyFe,sector) = p_FEPrice_by_Sector(t p_FEPrice_by_EmiMkt_iter(iteration,t,regi,entyFe,emiMkt) = p_FEPrice_by_EmiMkt(t,regi,entyFe,emiMkt); p_FEPrice_by_FE_iter(iteration,t,regi,entyFe) = p_FEPrice_by_FE(t,regi,entyFe); +*** Track demand for purpose-grown ligno-cellulosic biomass across iterations +o_vm_pebiolc_price(iteration,ttot,regi) = vm_pebiolc_price.l(ttot,regi); +o_vm_fuExtr_pebiolc(iteration,ttot,regi) = vm_fuExtr.l(ttot,regi,"pebiolc","1"); +o_PEDem_Bio_ECrops(iteration,ttot,regi) = vm_fuExtr.l(ttot,regi,"pebiolc","1") + (1 - pm_costsPEtradeMp(regi,"pebiolc")) * vm_Mport.l(ttot,regi,"pebiolc") - vm_Xport.l(ttot,regi,"pebiolc"); +o_vm_emiMacSector_co2luc(iteration,ttot,regi) = vm_emiMacSector.l(ttot,regi,"co2luc"); + *** EOF ./core/postsolve.gms diff --git a/core/preloop.gms b/core/preloop.gms index 6c66cbb7b8..5af7e4f43d 100644 --- a/core/preloop.gms +++ b/core/preloop.gms @@ -75,86 +75,7 @@ pm_vintage_in(regi,"6",te) = pm_vintage_in(regi,"6",te) * max(((pm_histfegrowth( ); -*** The N2O emissions generated during biomass production in agriculture (in MAgPIE) -*** are represented in REMIND by applying the n2obio emission factor (zero in coupled runs) -*** in q_macBase. In standaolne runs the resulting emissions need to be subtracted (see below) -*** from the exogenous emission baseline read from MAgPIE, since the baseline already implicitly -*** includes the N2O emissions from biomass. In q_macBase in core/equations.gms the N2O -*** emissions resulting from the actual biomass demand in REMIND are then added again. -*** In case some inconsistencies between pm_pebiolc_demandmag and pm_macBaseMagpie lead to -*** negative values, set the value to 0 instead, since negative values may lead to -*** infeasibilities. -display pm_macBaseMagpie; -pm_macBaseMagpie(t,regi,"n2ofertin") = max(0, pm_macBaseMagpie(t,regi,"n2ofertin") - (p_efFossilFuelExtr(regi,"pebiolc","n2obio") * pm_pebiolc_demandmag(t,regi))); -display pm_macBaseMagpie; - - -$IFTHEN.scaleEmiHist %c_scaleEmiHistorical% == "on" -*** Re-scale MAgPie reference CH4 and N2O emissions to be inline with eurostat -*** data (depending on the region MAgPIE non-CO2 GHG emissions can be up to -*** twice as high as historic emissions). This involves different emission variables in -*** pm_macBaseMagpie and additionall agwaste variables from p_macBaseExo -display p_macBaseExo; - -*** Define rescale factor for MAgPIE CH4 emissions -p_aux_scaleEmiHistorical_ch4(regi)$p_histEmiSector("2005",regi,"ch4","agriculture","process") = - (p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process")) !!no rescaling needed - REMIND-internal unit is Mt CH4 - / - (sum(enty$emiMacMagpieCH4(enty), pm_macBaseMagpie("2005",regi,enty)) + p_macBaseExo("2005",regi,"ch4agwaste")); -*** Rescale CH4 emissions so that all subtypes add up to the historic values -*** pm_macBaseMagpie -pm_macBaseMagpie(ttot,regi,enty)$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_ch4(regi) AND emiMacMagpieCH4(enty)) = - pm_macBaseMagpie(ttot,regi,enty) * p_aux_scaleEmiHistorical_ch4(regi); -*** p_macBaseExo -p_macBaseExo(ttot,regi,"ch4agwaste")$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_ch4(regi)) = - p_macBaseExo(ttot,regi,"ch4agwaste") * p_aux_scaleEmiHistorical_ch4(regi); - -*** Define rescale factor for MAgPIE N2O emissions -p_aux_scaleEmiHistorical_n2o(regi)$p_histEmiSector("2005",regi,"n2o","agriculture","process") = - p_histEmiSector("2005",regi,"n2o","agriculture","process")/( 44 / 28) !! rescaling to Mt N (internal unit for N2O emissions), since eurostat uses 298 to convert N2O to CO2eq - / - (sum(enty$emiMacMagpieN2O(enty), pm_macBaseMagpie("2005",regi,enty)) + p_macBaseExo("2005",regi,"n2oagwaste")); -*** Rescale N2O emissions so that all subtypes add up to the historic values -*** pm_macBaseMagpie -pm_macBaseMagpie(ttot,regi,enty)$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_n2o(regi) AND emiMacMagpieN2O(enty)) = - pm_macBaseMagpie(ttot,regi,enty) * p_aux_scaleEmiHistorical_n2o(regi); -*** p_macBaseExo -p_macBaseExo(ttot,regi,"n2oagwaste")$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_n2o(regi)) = - p_macBaseExo(ttot,regi,"n2oagwaste") * p_aux_scaleEmiHistorical_n2o(regi); - -display pm_macBaseMagpie; -$ENDIF.scaleEmiHist - -!! all net negative co2luc -p_macBaseMagpieNegCo2(t,regi) = pm_macBaseMagpie(t,regi,"co2luc")$(pm_macBaseMagpie(t,regi,"co2luc") < 0); - -*** Rescale agricultural emissions baseline if c_agricult_base_shift switch is activated -$IFTHEN.agricult_base_shift not "%c_agricult_base_shift%" == "off" - -p_macBaseMagpie_beforeShift(t,regi,enty)=pm_macBaseMagpie(t,regi,enty); -*** gradual phase-in of rescaling until 2040 -p_agricult_shift_phasein(t) = 0; -p_agricult_shift_phasein("2025") = 0.25; -p_agricult_shift_phasein("2030") = 0.5; -p_agricult_shift_phasein("2035") = 0.75; -p_agricult_shift_phasein(t)$(t.val ge 2040) = 1; - -*** rescaling all ext_regi provided by c_agricult_base_shift -loop((ext_regi)$(p_agricult_base_shift(ext_regi)), - loop(regi$regi_groupExt(ext_regi,regi), - - pm_macBaseMagpie(t,regi,enty)$( emiMac2sector(enty,"agriculture","process","ch4") - OR emiMac2sector(enty,"agriculture","process","n2o")) - = p_macBaseMagpie_beforeShift(t,regi,enty) - * (1 + p_agricult_shift_phasein(t) - * p_agricult_base_shift(ext_regi)); - - ); -); - - -display pm_macBaseMagpie; -$ENDIF.agricult_base_shift +*** Moved code concerning pm_macBaseMagpie to core/presolve.gms $IFTHEN.out "%cm_debug_preloop%" == "on" option limrow = 70; @@ -167,7 +88,7 @@ $ENDIF.out *** load PE, SE, FE price parameters from reference gdx to have prices in time steps before cm_startyear if (cm_startyear gt 2005, -execute_load "input_ref.gdx", pm_PEPrice, pm_SEPrice, pm_FEPrice; + Execute_Loadpoint "input_ref.gdx", pm_PEPrice, pm_SEPrice, pm_FEPrice; ); *** load vm_capEarlyReti(ttot,regi,te) from reference gdx to have a reference point for q_smoothphaseoutCapEarlyReti and q_limitCapEarlyReti diff --git a/core/presolve.gms b/core/presolve.gms index a69247a805..50cddf199f 100644 --- a/core/presolve.gms +++ b/core/presolve.gms @@ -59,7 +59,7 @@ pm_demFeTotal0(ttot, regi) ***-------------------------------------- *** calculate some emission factors ***-------------------------------------- -*** calculate global emission factor +*** calculate global emission factor (excluding pebiolc) loop (emi2fuel(entyPe,enty), p_efFossilFuelExtrGlo(entyPe,enty) = sum(regi, p_emiFossilFuelExtr(regi,entyPe)) @@ -89,11 +89,150 @@ loop(regi, ); display p_efFossilFuelExtr; + +***-------------------------------------- +*** MAgPIE coupling: run MAgPIE +***-------------------------------------- + +*** Decide whether MAgPIE should be executed. Also triggers the update of MAgPIE data in multiple locations. +if(magpieIter(iteration) AND cm_MAgPIE_Nash eq 1, + sm_updateMagpieData = 1; !! Run MAgPIE in this Nash iteration +else + sm_updateMagpieData = 0; !! Don't run MAgPIE in this Nash iteration +); + +*** Run MAgPIE +if (sm_updateMagpieData eq 1, +*** Track runtime: done in magpie.R +*** Temporarily change numeric round format (nr) and number of decimals (nd) of the +*** outpt of the put_utility such that the arguments passed to magpie.R have integer format + sm_tmp = logfile.nr; + sm_tmp2 = logfile.nd; + logfile.nr = 1; + logfile.nd = 0; + sm_magpieIter = sm_magpieIter + 1; + put_utility "exec.checkErrorLevel" / "Rscript magpie.R " sm_magpieIter " " ord(iteration); + logfile.nr = sm_tmp; + logfile.nd = sm_tmp2; +*** Track runtime + putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," iteration.val:0; +*** In coupled runs overwrite pebiolc production from look-up table with actual MAgPIE values +*** Read production of 2nd gen. purpose grown bioenergy from MAgPIE (given to MAgPIE from previous Remind run) + Execute_Loadpoint 'magpieData.gdx' pm_pebiolc_demandmag; +); + +*** At the beginning of each Nash iteration reset pm_macBaseMagpie to start values (from lookup table or from MAgPIE), +*** since it gets changed by calculations further down in each Nash iteration, regardless of whether MAgPIE runs or not. +if (sm_magpieIter gt 0, +*** MAgPIE has run once at least: the start values for pm_macBaseMagpie come from the last MAgPIE iteration + Execute_Loadpoint 'magpieData.gdx' f_macBaseMagpie_coupling; + pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpie); + p_co2lucSub(ttot,regi,emiMacMagpieCO2Sub(enty))$(ttot.val ge 2005) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpieCO2Sub); +*** Biomass emission factor is set to zero after MAgPIE has run at least one, since biomass emissions are included in the emissions imported above. + p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0; +*** In coupling mode LU emissions are abated in MAgPIE (moved here from core/datainput.gms) + pm_macSwitch(ttot,regi,enty)$emiMacMagpie(enty) = 0; +else +*** MAgPIE has not run (and might never run): the start values for pm_macBaseMagpie come from input data file + pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie(ttot,regi,emiMacMagpie,"%cm_LU_emi_scen%","%cm_rcp_scen%"); +); + +display p_efFossilFuelExtr; + +*** Moved here from core/datainput.gms, because pm_macSwitch is changed above after first MAgPIE iteration +*** An alternative to the approach below could be to introduce a new value for c_macswitch that only deactivates the LU MACs +*** GA: Use long term (2050) pm_macSwitch to set p_macCostSwitch, as some MACCs +*** are turned off in the short term +pm_macSwitch(ttot,regi,"co2cement_process") =0 ; +p_macCostSwitch(enty)=pm_macSwitch("2050","USA",enty); + +*** Code moved here from core/preloop.gms +*** The N2O emissions generated during biomass production in agriculture (in MAgPIE) +*** are represented in REMIND by applying the n2obio emission factor (zero in coupled runs) +*** in q_macBase. In standaolne runs the resulting emissions need to be subtracted (see below) +*** from the exogenous emission baseline read from MAgPIE, since the baseline already implicitly +*** includes the N2O emissions from biomass. In q_macBase in core/equations.gms the N2O +*** emissions resulting from the actual biomass demand in REMIND are then added again. +*** In case some inconsistencies between pm_pebiolc_demandmag and pm_macBaseMagpie lead to +*** negative values, set the value to 0 instead, since negative values may lead to +*** infeasibilities. +display pm_macBaseMagpie; +pm_macBaseMagpie(t,regi,"n2ofertin") = max(0, pm_macBaseMagpie(t,regi,"n2ofertin") - (p_efFossilFuelExtr(regi,"pebiolc","n2obio") * pm_pebiolc_demandmag(t,regi))); +display pm_macBaseMagpie; + +$IFTHEN.scaleEmiHist %c_scaleEmiHistorical% == "on" +*** Re-scale MAgPie reference CH4 and N2O emissions to be inline with eurostat +*** data (depending on the region MAgPIE non-CO2 GHG emissions can be up to +*** twice as high as historic emissions). This involves different emission variables in +*** pm_macBaseMagpie and additionall agwaste variables from p_macBaseExo + +*** Since this part is repeated in each Nash iteration and it changes p_macBaseExo, reset p_macBaseExo to initial values. +p_macBaseExo(ttot,regi,emiMacExo(enty))$(ttot.val ge 2005) = f_macBaseExo(ttot,regi,emiMacExo,"%cm_LU_emi_scen%"); +display p_macBaseExo; + +*** Define rescale factor for MAgPIE CH4 emissions +p_aux_scaleEmiHistorical_ch4(regi)$p_histEmiSector("2005",regi,"ch4","agriculture","process") = + (p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process")) !!no rescaling needed - REMIND-internal unit is Mt CH4 + / + (sum(enty$emiMacMagpieCH4(enty), pm_macBaseMagpie("2005",regi,enty)) + p_macBaseExo("2005",regi,"ch4agwaste")); +*** Rescale CH4 emissions so that all subtypes add up to the historic values +*** pm_macBaseMagpie +pm_macBaseMagpie(ttot,regi,enty)$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_ch4(regi) AND emiMacMagpieCH4(enty)) = + pm_macBaseMagpie(ttot,regi,enty) * p_aux_scaleEmiHistorical_ch4(regi); +*** p_macBaseExo +p_macBaseExo(ttot,regi,"ch4agwaste")$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_ch4(regi)) = + p_macBaseExo(ttot,regi,"ch4agwaste") * p_aux_scaleEmiHistorical_ch4(regi); + +*** Define rescale factor for MAgPIE N2O emissions +p_aux_scaleEmiHistorical_n2o(regi)$p_histEmiSector("2005",regi,"n2o","agriculture","process") = + p_histEmiSector("2005",regi,"n2o","agriculture","process")/( 44 / 28) !! rescaling to Mt N (internal unit for N2O emissions), since eurostat uses 298 to convert N2O to CO2eq + / + (sum(enty$emiMacMagpieN2O(enty), pm_macBaseMagpie("2005",regi,enty)) + p_macBaseExo("2005",regi,"n2oagwaste")); +*** Rescale N2O emissions so that all subtypes add up to the historic values +*** pm_macBaseMagpie +pm_macBaseMagpie(ttot,regi,enty)$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_n2o(regi) AND emiMacMagpieN2O(enty)) = + pm_macBaseMagpie(ttot,regi,enty) * p_aux_scaleEmiHistorical_n2o(regi); +*** p_macBaseExo +p_macBaseExo(ttot,regi,"n2oagwaste")$((ttot.val ge 2005) AND p_aux_scaleEmiHistorical_n2o(regi)) = + p_macBaseExo(ttot,regi,"n2oagwaste") * p_aux_scaleEmiHistorical_n2o(regi); + +display pm_macBaseMagpie; +$ENDIF.scaleEmiHist + +!! all net negative co2luc +p_macBaseMagpieNegCo2(t,regi) = pm_macBaseMagpie(t,regi,"co2luc")$(pm_macBaseMagpie(t,regi,"co2luc") < 0); + +*** Rescale agricultural emissions baseline if c_agricult_base_shift switch is activated +$IFTHEN.agricult_base_shift not "%c_agricult_base_shift%" == "off" + +p_macBaseMagpie_beforeShift(t,regi,enty)=pm_macBaseMagpie(t,regi,enty); +*** gradual phase-in of rescaling until 2040 +p_agricult_shift_phasein(t) = 0; +p_agricult_shift_phasein("2025") = 0.25; +p_agricult_shift_phasein("2030") = 0.5; +p_agricult_shift_phasein("2035") = 0.75; +p_agricult_shift_phasein(t)$(t.val ge 2040) = 1; + +*** rescaling all ext_regi provided by c_agricult_base_shift +loop((ext_regi)$(p_agricult_base_shift(ext_regi)), + loop(regi$regi_groupExt(ext_regi,regi), + + pm_macBaseMagpie(t,regi,enty)$( emiMac2sector(enty,"agriculture","process","ch4") + OR emiMac2sector(enty,"agriculture","process","n2o")) + = p_macBaseMagpie_beforeShift(t,regi,enty) + * (1 + p_agricult_shift_phasein(t) + * p_agricult_base_shift(ext_regi)); + + ); +); + + +display pm_macBaseMagpie; +$ENDIF.agricult_base_shift + ***-------------------------------------- *** Non-energy emissions reductions (MAC) ***-------------------------------------- -*** scale CO2 luc baselines from MAgPIE to EDGAR v4.2 2005 data in REMIND standalone runs: linear, phase out within 20 years -***$if %cm_MAgPIE_coupling% == "off" pm_macBaseMagpie(ttot,regi,"co2luc")$(ttot.val lt 2030) = pm_macBaseMagpie(ttot,regi,"co2luc") + ( (p_macBase2005(regi,"co2luc") - pm_macBaseMagpie("2005",regi,"co2luc")) * (1-(ttot.val - 2005)/20) ); *** make sure that minimum CO2 luc emissions given in p_macPolCO2luc do not exceed the baseline loop(regi, @@ -344,4 +483,10 @@ p_macPE(ttot,regi,"pegas")$(ttot.val gt 2005) = s_MtCH4_2_TWa * 0.5 * (v_macBase v_shSeFeSector.l(ttot,regi,entySe,"fedie","CDR","ETS") = v_shSeFeSector.l(ttot,regi,entySe,"fedie","trans","ES"); v_shSeFeSector.l(ttot,regi,entySe,"fegas","CDR","ETS") = v_shSeFeSector.l(ttot,regi,entySe,"fegas","indst","ETS"); +*** Save values for tracking across Nash iterations +o_pm_pebiolc_demandmag(iteration,ttot,regi) = pm_pebiolc_demandmag(ttot,regi); +o_pm_macBaseMagpie(iteration,ttot,regi,enty) = pm_macBaseMagpie(ttot,regi,enty); +o_pm_macSwitch(iteration,ttot,regi,enty) = pm_macSwitch(ttot,regi,enty); +o_p_efFossilFuelExtr_n2obio(iteration,regi) = p_efFossilFuelExtr(regi,"pebiolc","n2obio"); + *** EOF ./core/presolve.gms diff --git a/core/sets.gms b/core/sets.gms index 849b7af65e..40df56903f 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -20,7 +20,8 @@ c_description "%c_description%" /"for model description, see explanatory te c_results_folder "%c_results_folder%" /"for cfg$results_folder, see explanatory text"/ c_model_version "model version" /%c_model_version%/ cm_GDPpopScen "cm_GDPpopScen as set for use in GDX" /%cm_GDPpopScen%/ - +cm_APssp "cm_APssp as set for use in GDX" /%cm_APssp%/ +cm_APscen "cm_APscen as set for use in GDX" /%cm_APscen%/ all_GDPpopScen "all possible GDP scenarios" / @@ -144,9 +145,9 @@ all_te "all energy technologies, including from modules" igcc "integrated coal gasification combined cycle" igccc "integrated coal gasification combined cycle with capture" pc "pulverised coal power plant" - coalchp "combined heat powercoal" + coalchp "combined heat and power coal" coalhp "heating plantcoal" - coaltr "tranformation of coal" + coaltr "transformation of coal" coalgas "coal gasification" coalftrec "coal based fischer-tropsch recycle" coalftcrec "coal based fischer-tropsch with capture recycle" @@ -190,8 +191,8 @@ all_te "all energy technologies, including from modules" elh2VRE "dummy technology: hydrogen electrolysis; to demonstrate the capacities and SE flows inside the storXXX technologies" h2turbVRE "dummy technology: hydrogen turbine for electricity production; to demonstrate the capacities and SE flows inside the storXXX technologies" h2curt "hydrogen production from curtailment" - h22ch4 "Methanation, H2 + 4 CO2 --> CH4 + 2 H20" - MeOH "Methanol production /liquid fuel, CO2 hydrogenation, CO2 + 3 H2 --> CH3OH + H20" + h22ch4 "production of synthetic methane from hydrogen and captured carbon via methanation" + MeOH "production of synthetic liquid hydrocarbon fuels from hydrogen and captured carbon via Fischer-Tropsch synthesis" tdels "transmission and distribution for electricity to stationary users" tdelb "transmission and distribution for electricity to buildings" tdelt "transmission and distribution for electricity to transport" @@ -203,7 +204,7 @@ all_te "all energy technologies, including from modules" tdbiogat "transmission and distribution for gas from biomass origin to transportation" tdfosgat "transmission and distribution for gas from fossil origin to transportation" tdsyngat "transmission and distribution for gas from synthetic origin to transportation" - tdbiohos "transmission and distribution for heating oil from biomass origin to transportation" + tdbiohos "transmission and distribution for heating oil from biomass origin to stationary users" tdfoshos "transmission and distribution for heating oil from fossil origin to stationary users" tdsynhos "transmission and distribution for heating oil from synthetic origin to stationary users" tdbiohob "transmission and distribution for heating oil from biomass origin to buildings" @@ -223,7 +224,8 @@ all_te "all energy technologies, including from modules" tdhes "transmission and distribution for heat to stationary users" tdheb "transmission and distribution for heat to buildings" - ccsinje "injection of co2" + ccsinjeon "transport, injection, and storage of co2 onshore" + ccsinjeoff "transport, injection, and storage of co2 offshore" *** Storage technology: storspv "storage technology for photo voltaic (PV)" storwind "storage technology for wind onshore" @@ -239,8 +241,8 @@ all_te "all energy technologies, including from modules" weathering "enhanced weathering" dac "direct air capture" - oae_ng "ocean akalinity ehnacement via ocean liming using a traditional calciner" - oae_el "ocean akalinity ehnacement via ocean liming using a novel calciner technology" + oae_ng "ocean alkalinity enhancement via ocean liming using a traditional calciner" + oae_el "ocean alkalinity enhancement via ocean liming using a novel calciner technology" x_gas2elec d_bio2elec "d_* transmission and distribution losses" d_coal2elec @@ -300,19 +302,8 @@ all_te "all energy technologies, including from modules" bfbof_ccs "Route: BF/BOF with CCS" idreaf_h2 "Route: H2 Direct reduction / EAF" idreaf_ng "Route: NG Direct reduction / EAF without CCS" - idreaf_ng_ccs "Route: H2 Direct reduction / EAF with CCS" + idreaf_ng_ccs "Route: NG Direct reduction / EAF with CCS" seceaf "Route: Scrap-loaded EAF" - pcc "outdated technology, only here to avoid compilation errors if input data containing information for this technology are used" - pco "outdated technology, only here to avoid compilation errors if input data containing information for this technology are used" -*** transport technologies for deleted realization complex of module 35_transport -*** only here to make it possible to process input data that still includes data for these obsolete transport technologies - apCarPeT "outdated transport technology" - apCarDiT "outdated transport technology" - apcarDiEffT "outdated transport technology" - apcarDiEffH2T "outdated transport technology" - apCarH2T "outdated transport technology" - apCarElT "outdated transport technology" - apTrnElT "outdated transport technology" *** outdated entries, still used in module 04 until structuremappings are fixed tdbiohoi "transmission and distribution for heating oil from biomass origin to industry" tdfoshoi "transmission and distribution for heating oil from fossil origin to industry" @@ -442,10 +433,10 @@ all_enty "all types of quantities" n2obio "N2O emissions from pebiolc " bc "black carbon from fossil fuel combustion" oc "organic carbon from fossil fuel combustion" - NOx "nitrogen oxide emissions" - CO "carbon monoxide emissions" - VOC "volatile organic compound emissions" - NH3 "ammonia emissions" + nox "nitrogen oxide emissions" + co "carbon monoxide emissions" + voc "volatile organic compound emissions" + nh3 "ammonia emissions" *** emissions from industry sub-sectors co2cement "CO2 emissions from clinker and cement production" @@ -485,10 +476,7 @@ all_enty "all types of quantities" fegai "industry use of gaseous energy carriers" fehei "industry use of district heat" feeli "industry use of electricity" -*** dummy entries to allow inclusion of some output variables into f04_IO_output.cs4r - can be removed once the structuremappings are fixed/improved - x_seliq - x_feho - x_fedie + / all_esty "energy services" @@ -506,42 +494,6 @@ all_esty "energy services" esh2t_frgt_sm esgat_frgt_sm -*** Buildings module: Energy services (useful energy) - ueshheb "buildings space heating district heat" - ueshhob "buildings space heating liquids" - ueshsob "buildings space heating solids" - ueshstb "buildings space heating traditional solids" - ueshgab "buildings space heating district heat" - ueshh2b "buildings space heating hydrogen" - ueshelb "buildings space heating electricity resistance" - ueshhpb "buildings space heating electricity heat pump" - - uecwhob "buildings cooking and water heating liquids" - uecwsob "buildings cooking and water heating solids" - uecwstb "buildings cooking and water heating traditional solids" - uecwgab "buildings cooking and water heating gas" - uecwheb "buildings cooking and water heating district heat" - uecwh2b "buildings cooking and water heating hydrogen" - uecwelb "buildings cooking and water heating electricity" - uecwhpb "buildings cooking and water heating heat pump" -/ - -all_sectorEmi "all sectors with emissions" -/ indst "emissions from industry sector" - res "emissions from residential sector" - trans "emissions from transport sector" - power "emissions from power sector" - solvents "emissions from solvents" - extraction "emissions from fuel extraction" - indprocess "process emissions from industry" - waste "emissions from waste" -/ - -all_exogEmi "all exogenous emission types" -/ Agriculture "Exogenous emissions from Agriculture" - AgWasteBurning "Exogenous emissions from Ag Waste Burning" - ForestBurning "Exogenous emissions from Forest Burning" - GrasslandBurning "Exogenous emissions from Grassland Burning" / all_in "all inputs and outputs of the CES function" @@ -576,36 +528,6 @@ all_in "all inputs and outputs of the CES function" enhi "industry heat energy use" enhgai "industry heat gaseous energy use (fegab and feh2b)" - fehcsob "buildings heating and cooking solids final energy" - fehcelb "buildings heating and cooking electricity final energy" - fehcheb "buildings heating and cooking district heat final energy" - fehcgab "buildings heating and cooking gas final energy" - fehchob "buildings heating and cooking liquids final energy" - fealelb "buildings appliances and light electricity final energy" - fecwsob "buildings cooking and water heating solids final energy" - fecwelb "buildings cooking and water heating electricity final energy" - fecwhpb "buildings cooking and water heating electricity heat pump final energy" - fecwheb "buildings cooking and water heating district heat final energy" - fecwgab "buildings cooking and water heating gas final energy" - fecwhob "buildings cooking and water heating liquids final energy" - fescelb "buildings space cooling electricity final energy" - feshsob "buildings space heating solids final energy" - feshelb "buildings space heating electricity final energy" - feshheb "buildings space heating district heat final energy" - feshgab "buildings space heating gas final energy" - feshhob "buildings space heating liquids final energy" - feshhpb "buildings space heating electricity heat pump final energy" - - esswb "buildings weatherization energy service" - uehcb "buildings heating and cooking useful energy" - uecwb "buildings cooking and water heating useful energy" - uescb "buildings space cooling useful energy" - ueshb "buildings space heating useful energy" - uealb "buildings appliances and light, useful energy" - ueswb "buildings weatherization" - feshh2b "buildings space heating hydrogen" - fecwb "buildings cooking and water heating FE" - fecwh2b "buildings cooking and water heating hydrogen" *** FIXME this should be reworked with Robert when revising the transport module entrp "transport energy use" fetf "transport fuel use" @@ -701,7 +623,7 @@ all_teEs "energy service technologies" te_ueshhob "buildings space heating liquids" te_ueshsob "buildings space heating solids" te_ueshstb "buildings space heating traditional solids" - te_ueshgab "buildings space heating district heat" + te_ueshgab "buildings space heating gas" te_ueshh2b "buildings space heating hydrogen" te_ueshelb "buildings space heating electricity resistance" te_ueshhpb "buildings space heating electricity heat pump" @@ -997,30 +919,6 @@ sets regi(all_regi) "all regions used in the solution process" -*** region sets used for MAGICC -RCP_regions_world_bunkers "five RCP regions plus total (world) and bunkers" -/ - WORLD - R5OECD - R5REF - R5ASIA - R5MAF - R5LAM - BUNKERS -/ - -RCP_regions_world(RCP_regions_world_bunkers) "five RCP regions plus total (world)" -/ - WORLD - R5OECD - R5REF - R5ASIA - R5MAF - R5LAM - BUNKERS -/ -; - ***----------------------------------------------------------------------------- ***----------------------------------------------------------------------------- *** Miscellaneous sets @@ -1040,7 +938,10 @@ sets 2021_cond, 2021_uncond, 2022_cond, 2022_uncond, 2023_cond, 2023_uncond, - 2024_cond, 2024_uncond + 2024_cond, 2024_uncond, + 2025_cond, 2025_uncond, + 2025_cond_extrapol, 2025_uncond_extrapol, + 2026_cond, 2026_uncond / NPi_version "NPi data version for NPi realizations of 40_techpol and 45_carbonprice" / @@ -1152,9 +1053,9 @@ te(all_te) "energy technologies" igcc "integrated coal gasification combined cycle" igccc "integrated coal gasification combined cycle with carbon capture" pc "pulverised coal power plant" - coalchp "combined heat powercoal" + coalchp "combined heat and power coal" coalhp "heating plant coal" - coaltr "tranformation of coal" + coaltr "transformation of coal" coalgas "coal gasification" coalftrec "coal based fischer-tropsch recycle" coalftcrec "coal based fischer-tropsch with carbon capture recycle" @@ -1191,7 +1092,7 @@ te(all_te) "energy technologies" solhe "solar thermal heat generation" tnrs "thermal nuclear reactor (simple structure)" fnrs "fast nuclear reactor (simple structure)" - elh2 "hydrogen elecrolysis" + elh2 "hydrogen electrolysis" h2turb "hydrogen turbine for electricity production" elh2VRE "dummy technology: hydrogen electrolysis; to demonstrate the capacities and SE flows inside the storXXX technologies" h2turbVRE "dummy technology: hydrogen turbine for electricity production; to demonstrate the capacities and SE flows inside the storXXX technologies" @@ -1209,12 +1110,12 @@ te(all_te) "energy technologies" tdsynhos "transmission and distribution for heating oil from synthetic origin to stationary users" tdh2s "transmission and distribution for hydrogen to stationary users" tdh2t "transmission and distribution for hydrogen to transportation" - tdbiodie "transmission and distribution for diesel from biomass origin to stationary users" - tdfosdie "transmission and distribution for diesel from fossil origin to stationary users" - tdsyndie "transmission and distribution for diesel from synthetic origin to stationary users" - tdbiopet "transmission and distribution for petrol from biomass origin to stationary users" - tdfospet "transmission and distribution for petrol from fossil origin to stationary users" - tdsynpet "transmission and distribution for petrol from synthetic origin to stationary users" + tdbiodie "transmission and distribution for diesel from biomass origin to transportation" + tdfosdie "transmission and distribution for diesel from fossil origin to transportation" + tdsyndie "transmission and distribution for diesel from synthetic origin to transportation" + tdbiopet "transmission and distribution for petrol from biomass origin to transportation" + tdfospet "transmission and distribution for petrol from fossil origin to transportation" + tdsynpet "transmission and distribution for petrol from synthetic origin to transportation" tdbiosos "transmission and distribution for solids from biomass origin to stationary users" tdfossos "transmission and distribution for solids from fossil origin to stationary users" tdhes "transmission and distribution for heat to stationary users" @@ -1222,7 +1123,8 @@ te(all_te) "energy technologies" tdh2i "helper technologies (without cost) to avoid sudden H2 use switching in buildings and industry" tdh2b "helper technologies (without cost) to avoid sudden H2 use switching in buildings and industry" - ccsinje "injection of co2, CCS related" + ccsinjeon "transport, injection, and storage of co2 onshore, CCS related" + ccsinjeoff "transport, injection, and storage of co2 offshore, CCS related" storspv "storage technology for photo voltaic" *** storwind "storage technology for wind onshore" @@ -1248,6 +1150,11 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idrcc "Direct reduction CCS" $endif.cm_subsec_model_steel / + +***----------------------------------------------------------------------------- +*** Definition of subsets of 'te': +***----------------------------------------------------------------------------- + teAdj(all_te) "technologies with adjustment costs on capacity additions" / ngcc "natural gas combined cycle" @@ -1264,9 +1171,9 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition igcc "integrated coal gasification combined cycle" igccc "integrated coal gasification combined cycle with carbon capture" pc "pulverised coal power plant" - coalchp "combined heat powercoal" + coalchp "combined heat and power coal" coalhp "heating plant coal" - coaltr "tranformation of coal" + coaltr "transformation of coal" coalgas "coal gasification" coalftrec "coal based fischer-tropsch recycle" coalftcrec "coal based fischer-tropsch with carbon capture recycle" @@ -1274,8 +1181,8 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition coalh2c "coal to hydrogen with carbon capture" biotr "transformation of biomass" biotrmod "modern solids from biomass" - biochp "heating plant bio" - biohp "heating plant bio" + biochp "biomass combined heat and power" + biohp "biomass heating plant" bioigcc "integrated biomass gasification combined cycle" bioigccc "integrated biomass gasification combined cycle with carbon capture" biogas "gasification of biomass" @@ -1302,10 +1209,11 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition solhe "solar thermal heat generation" tnrs "thermal nuclear reactor (simple structure)" fnrs "fast nuclear reactor (simple structure)" - elh2 "hydrogen elecrolysis" + elh2 "hydrogen electrolysis" h2turb "hydrogen turbine for electricity production" h2curt "hydrogen production from curtailment" - ccsinje "injection of co2, CCS related" + ccsinjeon "transport, injection, and storage of co2 onshore, CCS related" + ccsinjeoff "transport, injection, and storage of co2 offshore, CCS related" storspv "storage technology for PV" *** storwind "storage technology for wind onshore" @@ -1326,9 +1234,29 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -***----------------------------------------------------------------------------- -*** Definition of subsets of 'te': -***----------------------------------------------------------------------------- +teEarlyReti(all_te) "technologies for which early retirement of existing capacities is allowed (i.e. before end of technical lifetime)." +/ + ngcc + ngt + gastr + gaschp + gashp + gash2 + gasftrec + refliq + igcc + pc + coalchp + coalhp + coaltr + coalgas + coalftrec + coalh2 + biochp + biohp + bioigcc + tnrs +/ *** Note: technologies without endogenous learning can also have decreasing (or increasing) capital cost over time, due to for example convergence to global value teLearn(all_te) "Learning technologies (for which investment costs are reduced endogenously through capacity deployment)." @@ -1343,7 +1271,7 @@ teLearn(all_te) "Learning technologies (for which investment costs are reduc storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" storcsp "storage technology for csp" - elh2 "hydrogen elecrolysis" + elh2 "hydrogen electrolysis" $ifthen.c_BCLearning not "%c_BCLearning%" == 0 biopyronly "biomass pyrolysis to biochar, no energy co-product (established industrial)" biopyrhe "biomass pyrolysis to biochar plus heat (established industrial)" @@ -1397,6 +1325,12 @@ te2teCCS(all_te,all_te) "Map an energy technology to its CCS equivalent" bioh2 . bioh2c "biomass to hydrogen" / +teccsinje(all_te) "transport, storage, and injection of ico2" +/ + ccsinjeon + ccsinjeoff +/ + teNoCCS(all_te) "Technologies without CCS" teChp(all_te) "Technologies that produce seel as main output und sehe as secondary output - dynamically defined" @@ -1540,9 +1474,9 @@ teFosNoCCS(all_te) "fossil technologies without CCS" dot "diesel oil turbine" igcc "integrated coal gasification combined cycle" pc "pulverised coal power plant" - coalchp "combined heat powercoal" + coalchp "combined heat and power coal" coalhp "heating plant coal" - coaltr "tranformation of coal" + coaltr "transformation of coal" coalgas "coal gasification" coalftrec "coal based fischer-tropsch recycle" coalh2 "coal to hydrogen" @@ -1652,7 +1586,7 @@ enty(all_enty) "all types of quantities" pewin "primary energy wind" pesol "primary energy solar" pebiolc "primary energy biomass lignocellulosic" - pebios "primary energy biomass sugar nd starch" + pebios "primary energy biomass sugar and starch" pebioil "primary energy biomass sunflowers, palm oil, etc" seliqbio "secondary energy liquids from biomass (ex. ethanol)" seliqfos "secondary energy liquids from fossil primary energy (ex. petrol and diesel)" @@ -1670,7 +1604,7 @@ enty(all_enty) "all types of quantities" fehos "final energy heating oil stationary" fesos "final energy solids stationary" feels "final energy electricity stationary" - fehes "final energy district heating (including combined heat nd power), nd heat pumps stationary" + fehes "final energy district heating (including combined heat and power), and heat pumps stationary" feh2s "final energy hydrogen stationary" fepet "final energy petrol transport" fedie "final energy diesel transport" @@ -1718,10 +1652,10 @@ enty(all_enty) "all types of quantities" n2obio "N2O emissions from pebiolc" bc "black carbon from fossil fuel combustion" oc "organic carbon from fossil fuel combustion" - NOx - CO - VOC - NH3 + nox + co + voc + nh3 cco2 "captured CO2" * pco2 "CCS related parameter during compression of CO2" * tco2 "CCS related parameter during transportation of CO2" @@ -1809,7 +1743,7 @@ entySe(all_enty) "secondary energy types" segabio "secondary energy gas from biomass" segasyn "secondary energy synthetic gas from H2" seh2 "SE hydrogen" - sehe "SE district heating nd heat pumps" + sehe "SE district heating and heat pumps" seel "SE electricity" sebiochar "SE biochar from pyrolysis, not consumed as energy" / @@ -1990,9 +1924,9 @@ emiMacMagpieCH4(all_enty) "types of climate-relevant non-energy CH4 emissions w ch4rice "ch4 emissions from rice cultivation (rice_ch4)" ch4animals "ch4 emissions from enteric fermentation of ruminants (ent_ferm_ch4)" ch4anmlwst "ch4 emissions from animal waste management(awms_ch4)" - ch4peatland "ch4 emissions from peatlands peatland_ch4)" + ch4peatland "ch4 emissions from peatlands (no MAC available)" / -emiMacMagpieCO2(all_enty) "types of climate-relevant non-energy CH4 emissions with mac curve where baseline emissions come from MAgPIE only" +emiMacMagpieCO2(all_enty) "types of climate-relevant non-energy CO2 emissions with mac curve where baseline emissions come from MAgPIE only" / co2luc "co2 emissions from land use change" / @@ -2028,20 +1962,6 @@ emiFuEx(all_enty) "fugitive emissions" ch4gas "fugitive emissions from gas production" ch4oil "fugitive emissions from oil production" / -sectorEndoEmi(all_sectorEmi) "sectors with endogenous emissions" -/ - indst "industry" - res "residential" - trans "transport" - power "power" -/ -sectorExogEmi(all_sectorEmi) "sectors with exogenous emissions" -/ - solvents - extraction - indprocess - waste -/ emi_sectors "comprehensive sector set used for more detailed emissions accounting (REMIND-EU) and for CH4 tier 1 scaling - potentially to be integrated with similar set all_exogEmi" / power "public electricity and heat production" @@ -2202,37 +2122,10 @@ integ "set of integers for looping etc" / 1*100 / -xirog "parameters decribing exhaustible extraction coss including long-run marginal costs and short term adjustment costs" +xirog "parameters describing exhaustible extraction costs including long-run marginal costs and short term adjustment costs" / xi1, xi2, xi3, xi4, xi5, xi6, xi7, xi8, dec / -*** emissions exported to MAGICC -emiRCP "emission types exported to MAGICC" -/ - FossilCO2 - OtherCO2 - CH4 - N2O - SOx - CO - NMVOC - NOx - BC - OC - NH3 - CF4 - C2F6 - C6F14 - HFC23 - HFC32 - HFC43-10 - HFC125 - HFC134a - HFC143a - HFC227ea - HFC245fa - SF6 -/ p "parameter for ch4 and n2o waste emissions and co2 cement emissions" / @@ -2241,6 +2134,8 @@ p "parameter for ch4 and n2o waste emissions and co2 cement emiss p3 p4 / + + *** This is a work-around to ensure emissions are printed in correct order. numberEmiRCP "number of emission types" / 1 * 23 / @@ -2256,7 +2151,7 @@ char "characteristics of technologies" incolearn "Investment costs that can be reduced through learning = inco0 - floorcost. Unit: $/kW" floorcost "Floor investment costs for learning technologies. Unit: $/kW" eta "conversion efficiency" - eta_d "conversion efficieny, i.e. the amount of energy NOT lost in transportation. Per 1000km." + eta_d "conversion efficiency, i.e. the amount of energy NOT lost in transportation. Per 1000km." omf "fixed o&m" omf_d "fixed o&m per 1000km" omv "variable o&m" @@ -2281,7 +2176,7 @@ char "characteristics of technologies" omeg "NOT USED ANYMORE. New parameter: pm_omeg. Weight factor of still available capacities." seed "initial value for control variable constraint" lingro "linear growth of control variable additions p.a." - linconstela "elastaticity of investment costs for linear growth constraint" + linconstela "elasticity of investment costs for linear growth constraint" limitGeopot "geographical annual solar potential" luse "land use factor of solar technologies" capacity "capacity of solar technologies" @@ -2290,8 +2185,8 @@ char "characteristics of technologies" lifetime "average lifetime of a technology (integral under the omeg-curve). Unit: years" flexibility "representing ramping constraints or additional costs for partial load of technologies in power sector" tech_stat "technology status: how close a technology is to market readiness. Scale: 0-3, with 0 'I can go out and build a GW plant today' to 3 'Still some research necessary'" - Xport "imports" - Mport "exports" + Xport "exports" + Mport "imports" use "financial trade costs for PE use [trl$US per TWa]" XportElasticity "PE trade adjustment cost parameter that influences the export supply elasticity" tradeFloor "PE trade adjustment cost parameter that allows for smallest trade increase without adjustment cost" @@ -2303,6 +2198,11 @@ char "characteristics of technologies" batteryVREcapRatio "ratio of battery capacity to storage technology capacity" priceLow "biochar price path assumption" priceHigh "biochar price path assumption" + potTechOff "technical geological storage potential Offshore" + potTechOn "technical geological storage potential Onshore" + potLimOff "limited geological storage potential Offshore" + potLimOn "limited geological storage potential Onshore" + mixedOld "old geological storage potential formerly used in REMIND" / ***----------------------------------------------------------------------------- @@ -2369,6 +2269,16 @@ steps "iterator for MAC steps" / 1*801 / + +magpieIter(iteration) "Nash iterations in which MAgPIE runs in core/presolve" +/ + %c_magpieIter% +/ + +edgeTransportIter(iteration) "Nash iterations in which EDGE-T runs" +/ + %c_edgeTransportIter% +/ ; ***----------------------------------------------------------------------------- @@ -2604,7 +2514,8 @@ pc2te(all_enty,all_enty,all_te,all_enty) "mapping for own consumption of tech segabio.fegas.tdbiogas.seel segafos.fegas.tdfosgas.seel pegeo.sehe.geohe.seel - cco2.ico2.ccsinje.seel + cco2.ico2.ccsinjeon.seel + cco2.ico2.ccsinjeoff.seel / *NB* mappings for emissions, capture and leakage emi2te(all_enty,all_enty,all_te,all_enty) " map emissions to technologies" @@ -2710,7 +2621,8 @@ emi2te(all_enty,all_enty,all_te,all_enty) " map emissions to technologies" pebiolc.sebiochar.biopyrliq.co2 segabio.fegas.tdbiogas.ch4 segafos.fegas.tdfosgas.ch4 - cco2.ico2.ccsinje.co2 + cco2.ico2.ccsinjeon.co2 + cco2.ico2.ccsinjeoff.co2 pebiolc.seel.bioigccc.co2 pebiolc.seel.bioigccc.cco2 seliqbio.fehos.tdbiohos.bc @@ -2824,12 +2736,14 @@ emi2fuelMine(all_enty,all_enty,rlf) "missions from fossil fuel extraction" / ccs2te(all_enty,all_enty,all_te) "chain for ccs" / - cco2.ico2.ccsinje + cco2.ico2.ccsinjeon + cco2.ico2.ccsinjeoff / ccs2Leak(all_enty,all_enty,all_te,all_enty) "leakage along ccs chain" / - cco2.ico2.ccsinje.co2 + cco2.ico2.ccsinjeon.co2 + cco2.ico2.ccsinjeoff.co2 / pe2rlf(all_enty,rlf) "map exhaustible energy to grades for qm_fuel2pe" @@ -2904,7 +2818,7 @@ teMat2rlf(all_te,rlf) "mapping for material production technologies to grade teCCS2rlf(all_te,rlf) "mapping for CCS technologies to grades" / - (ccsinje) . 1 + (ccsinjeon,ccsinjeoff) . 1 / teNoTransform2rlf(all_te,rlf) "mapping for no transformation technologies to grades" @@ -2951,45 +2865,6 @@ tsu2opTime5(tall,opTimeYr) "mapping for spinup time index to lifetime index" 2005.1 / -sectorEndoEmi2te(all_enty,all_enty,all_te,sectorEndoEmi) "map sectors to technologies" -/ - pegas.seel.ngcc.power - pegas.seel.ngt.power - seh2.seel.h2turb.power - pegas.seel.gaschp.power - pegas.sehe.gashp.power - pegas.segafos.gastr.indst - pegas.segafos.gastr.res - pecoal.seel.pc.power - pecoal.seel.coalchp.power - pecoal.sehe.coalhp.power - pecoal.sesofos.coaltr.indst - pecoal.sesofos.coaltr.res - peoil.seliqfos.refliq.trans - peoil.seliqfos.refliq.indst - peoil.seliqfos.refliq.res - peoil.seel.dot.power - pebiolc.seel.biochp.power - pebiolc.sehe.biohp.power - pebiolc.sesobio.biotr.indst - pebiolc.sesobio.biotr.res - pebiolc.sesobio.biotrmod.indst - seliqbio.fehos.tdbiohos.indst - seliqfos.fehos.tdfoshos.indst - seliqsyn.fehos.tdsynhos.indst - seliqbio.fehos.tdbiohos.res - seliqfos.fehos.tdfoshos.res - seliqsyn.fehos.tdsynhos.res - seliqbio.fedie.tdbiodie.trans - seliqfos.fedie.tdfosdie.trans - seliqsyn.fedie.tdsyndie.trans - seliqbio.fepet.tdbiopet.trans - seliqfos.fepet.tdfospet.trans - seliqsyn.fepet.tdsynpet.trans -/ - - - ue2ppfen(all_enty,all_in) "matching UE in ESM to ppfEn in MACRO" // es2ppfen(all_esty,all_in) "matching ES in ESM to ppfEn in MACRO" @@ -3002,7 +2877,6 @@ es2ppfen(all_esty,all_in) "matching ES in ESM to ppfEn in MACRO" ***----------------------------------------------------------------------------- ***----------------------------------------------------------------------------- -alias(ccs2te,ccs2te2); alias(pe2se,pe2se2); alias(se2fe,se2fe2); diff --git a/main.gms b/main.gms index 384ff266e5..559857c7f8 100755 --- a/main.gms +++ b/main.gms @@ -105,7 +105,7 @@ *' *' These prefixes are extended in some cases by a second letter: *' -*' * "?m_" to designate objects used in the core and in at least one module. +*' * "?m_" to designate objects used in the core and in at least one module. Declare it where it is calculated. *' * "?00_" to designate objects used in a single module, exclusively, with the 2-digit number corresponding *' to the module number. *' @@ -310,8 +310,8 @@ $setglobal agCosts costs !! def = costs $setglobal CES_parameters load !! def = load *'--------------------- 30_biomass ---------------------------------------- *' -*' * (magpie_40): using supply curves derived from MAgpIE 4.0 -$setglobal biomass magpie_40 !! def = magpie_40 +*' * (magpie): using biomass supply curves derived from MAgpIE +$setglobal biomass magpie !! def = magpie *'--------------------- 31_fossil ---------------------------------------- *' *' * (timeDepGrades): time-dependent grade structure of fossil resources (oil & gas only) @@ -343,7 +343,7 @@ $setglobal industry subsectors !! def = subsectors *'--------------------- 39_CCU --------------------------------- *' *' * (on): representation of technologies for producing synthetic liquids and synthetic gases based on hydrogen and captured carbon -*' * (off): no representation of carbon caputre and utilization technologies. +*' * (off): no representation of carbon capture and utilization technologies. $setglobal CCU on !! def = on *'--------------------- 40_techpol ---------------------------------------- *' @@ -373,8 +373,8 @@ $setglobal emicapregi none !! def = none *' * (functionalForm): [REMIND default for peak budget and end-of-century budget runs] *' * Carbon price trajectory follows a prescribed functional form (linear/exponential) - either until peak year or until end-of-century - *' * and can be endogenously adjusted to meet CO2 budget targets - either peak or end-of-century - that are formulated in terms of total cumulated CO2 emissions from 2020 (cm_budgetCO2from2020). -*' * Flexible choices for regional carbon price differentiation. -*' * Four main design choices: +*' * For global targets, flexible choices for regional carbon price differentiation. +*' * Four main design choices: *' * [Global anchor trajectory]: The realization uses a global anchor trajectory based on which the regional carbon price trajectories are defined. *' * The functional form (linear/exponential) of the global anchor trajectory is chosen via cm_taxCO2_functionalForm [default = linear]. *' * The (initial) carbon price in cm_startyear is chosen via cm_taxCO2_startyear. This value is endogenously adjusted to meet CO2 budget targets if cm_iterative_target_adj is set to 5, 7, or 9. @@ -390,7 +390,15 @@ $setglobal emicapregi none !! def = none *' * (NDC): implements a carbon price trajectory consistent with the NDC targets (up to 2030) and a trajectory of comparable ambition post 2030 (1.25%/yr price increase and regional convergence of carbon price). Choose version using cm_NDC_version "2023_cond", "2023_uncond", or replace 2023 by 2022, 2021 or 2018 to get all NDC published until end of these years. *' * (NPi): National Policies Implemented, extrapolation of historical (until 2020) carbon prices *' * (none): no tax policy (combined with all emiscens except emiscen = 9) - +*' * (functionalFormRegi): [Under development!] Regional EOC budgets +*' * [General carbon price shape]: A global anchor trajectory is used to set the functional form that can be linear/exponential, set via cm_taxCO2_functionalForm, +*' * The starting conditions are set as for functionalForm (see above), unless path_gdx is provided. Then, information from input.gdx is used for the first iteration. +*' * Linear carbon shapes can be either shifted up and down in cm_startyear or the slope can be endogenously adjusted to meet the target via [cm_CPslopeAdjustment]. +*' * [peaking behavior]: The carbon price path can be chosen to peak in a specified year or in 2100 via [cm_taxCO2_Shape] and [cm_peakBudgYr]. +*' * When a peaking shape is chosen, the peak year is set for all regions the same, and is not adjusted endogenously, i.e. it differs from the regional and global peak years! +*' * [regional carbon budgets]: Carbon budgets can currently only be determined for 2100. The global [cm_budgetCO2from2020] is multiplied with each region's share in it, given by [cm_budgetCO2from2020RegiShare]. +*' * The carbon prices provided by path_gdx_ref can be used as a lower bound based on the switch cm_taxCO2_lowerBound_path_gdx_ref [def = on]. BEWARE: This may lead to overachievement of the region's +*' * EOC budget. *** (exponential) is superseded by (functionalForm): For a globally uniform, exponentially increasing carbonprice path until end of century [in combination with cm_iterative_target_adj = 0 or 5], set cm_taxCO2_functionalForm = exponential, cm_taxCO2_regiDiff = none, cm_taxCO2_interpolation = off, cm_taxCO2_lowerBound_path_gdx_ref = off, cm_peakBudgYr = 2100, and choose the initial carbonprice in cm_startyear via cm_taxCO2_startyear. *** (linear) is superseded by (functionalForm): For a globally uniform, linearly increasing carbonprice path until end of century [in combination with cm_iterative_target_adj = 0 or 5], set cm_taxCO2_functionalForm = linear, cm_taxCO2_regiDiff = none, cm_taxCO2_interpolation = off, cm_taxCO2_lowerBound_path_gdx_ref = off, cm_peakBudgYr = 2100, and choose the initial carbonprice in cm_startyear via cm_taxCO2_startyear. [Adjust historical reference point (cm_taxCO2_historicalYr, cm_taxCO2_historical) if needed.] @@ -400,8 +408,7 @@ $setglobal carbonprice NPi2025 !! def = NPi2025 *' This module applies a markup pm_taxCO2eqRegi on top of pm_taxCO2eq to achieve additional intermediate targets. *' *' * (none): no regional carbonprice policies -*' * (NDC): implements a carbon price markup trajectory consistent with the NDC targets between 2030 and 2070 -*' * (netZero): implements a carbon price markup trajectory consistent with the net zero targets, the region settings can be adjusted with cm_netZeroScen +*' * (netZero): implements a regional carbon price markup so that regions reach their net-zero targets; for partial targets, use cm_netZeroPercent $setglobal carbonpriceRegi none !! def = none *'--------------------- 47_regipol ----------------------------------------- *' @@ -458,7 +465,7 @@ $setGlobal optimization nash !! def = nash *'--------------------- 81_codePerformance ------------------------------- *' *' * (off): nothing happens -*' * (on): test code performance: noumerous (30) succesive runs performed in a triangle, tax0, tax30, tax150, all growing exponentially. +*' * (on): test code performance: numerous (30) successive runs performed in a triangle, tax0, tax30, tax150, all growing exponentially. $setGlobal codePerformance off !! def = off ***----------------------------------------------------------------------------- @@ -508,6 +515,14 @@ parameter *' * (2): run until solution is sufficiently converged - fine tolerances, for production runs. *' * (3): run until solution is sufficiently converged using very relaxed targets - very coarse tolerances, two times higher than option 1. ! do not use in production runs ! *' + +parameter + cm_MAgPIE_Nash "run MAgPIE between Nash iterations" +; + cm_MAgPIE_Nash = 0; !! def = 0 !! regexp = [0-1] +*' * (0): REMIND runs standalone (emission factors are used, shiftfactors are set to zero) +*' * (1): MAgPIE runs between certain Nash iterations (emission factors are set to zero because emissions are retrieved from the MAgPIE reporting, shift factors for supply curves are calculated) + parameter cm_emiscen "policy scenario choice" ; @@ -518,7 +533,7 @@ parameter *' * (6): budget *' * (9): tax scenario (requires running module 21_tax "on"), tax level controlled by module 45_carbonprice, other GHG etc. controlled by cm_rcp_scen *' * (10): used for cost-benefit analysis -*' *JeS* WARNING: data for cm_emiscen 4 only exists for multigas_scen 2 bau scenarios and for multigas_scen 1 +*' *JeS* WARNING: data for cm_emiscen 4 only exists for cm_multigasscen 2 bau scenarios and for cm_multigasscen 1 parameter cm_taxCO2_startyear "level of co2 tax in start year in $ per t CO2eq" ; @@ -546,17 +561,17 @@ parameter cm_budgetCO2from2020 = 0; !! def = 0 *' budgets from AR6 for 2020-2100 (including 2020), for 1.5 C: 500 Gt CO2 peak budget (400 Gt CO2 end of century), for 2 C: 1150 Gt CO2 parameter - cm_budgetCO2_absDevTol "convergence criterion for global CO2 budget set via cm_budgetCO2from2020. It is formulated as an absolute deviation from the target budget [GtCO2]" + cm_budgetCO2_absDevTol "convergence criterion for global CO2 budget set via cm_budgetCO2from2020. It is formulated as an absolute deviation from the target budget [GtCO2]." ; cm_budgetCO2_absDevTol = 2; !! def = 2 !! regexp = is.nonnegative -*' - +*' Under development: also used as tolerated budget deviation for each region's budget target with 45_carbonprice/functionalFormRegi parameter cm_peakBudgYr "time of global net-zero CO2 emissions (peak budget)" ; cm_peakBudgYr = 2050; !! def = 2050 *' time of global net-zero CO2 emissions (peak budget) *' endogenous adjustment by algorithms in 45_carbonprice/functionalForm/postsolve.gms [requires emiscen = 9 and cm_iterative_target_adj = 7 or 9] +*' Under development: If used with 45_carbonprice/functionalFormREGI and cm_taxCO2_Shape = 2, it determines the peak of the carbon price parameter cm_taxCO2_IncAfterPeakBudgYr "annual increase of CO2 tax after cm_peakBudgYr in $ per tCO2" ; @@ -565,7 +580,7 @@ parameter parameter sm_peakbudget_diff_tolerance "convergence criterion for allowed difference between cumulative emissions in peak budget year and year of maximum cumulative emissions if both years are not the same. It is formulated as an absolute deviation from the target budget [GtCO2]" ; - sm_peakbudget_diff_tolerance = 1; !! def = 1 !! regexp = is.nonnegative + sm_peakbudget_diff_tolerance = 5; !! def = 5 !! regexp = is.nonnegative parameter cm_expoLinear_yearStart "time at which carbon price increases linearly instead of exponentially" ; @@ -574,7 +589,7 @@ parameter parameter cm_taxCO2_regiDiff "switch for choosing the regional carbon price differentiation scheme in 45_carbonprice/functionalForm" ; - cm_taxCO2_regiDiff = 1; !! def = 1 !! regexp = 0|1|2|3|5|6|7|8|10 + cm_taxCO2_regiDiff = 6; !! def = 6 !! regexp = 0|1|2|3|5|6|7|8|10 *' Switch can either be set to a specific scenario (e.g. "ScenarioMIP2070") or to "manual". If specific scenario is chosen, settings can be adjusted via cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue. If set to manual, settings must be provided via cm_taxCO2_regiDiff_convergence and cm_taxCO2_regiDiff_startyearValue. *' * (0): none - No regional differentiation, i.e. globally uniform carbon pricing *' * (1): initialSpread10 - Maximal initial spread of carbon prices in 2030 between OECD regions and poorest region is equal to 10. Initial spread for each region determined based on GDP per capita (PPP) in 2030. By default, carbon prices converge using quadratic phase-in until 2050. Convergence scheme can be adjusted with cm_taxCO2_regiDiff_convergence. @@ -739,7 +754,7 @@ parameter cm_phaseoutBiolc "Switch that allows for a full phaseout of all bioenergy technologies globally" ; cm_phaseoutBiolc = 0; !! def = 0 !! regexp = 0|1 -*** Only working with magpie_40 realization of 30_biomass module. +*** Only working with magpie realization of 30_biomass module. *** (0): (default) No phaseout *** (1): Phaseout capacities of all bioenergy technologies using pebiolc, as far *** as historical bounds on bioenergy technologies allow it. This covers @@ -756,6 +771,27 @@ parameter *' * (2015): standard for all policy runs (eq. to fix2010), NDC, NPi and production baselines, especially if various baselines with varying parameters are explored *' * (....): later start for delay policy runs, eg. 2025 for what used to be delay2020 *' + +parameter + cm_LTSstartYr "[46_carbonpriceRegi] First year activating a regional carbon price markup to reach net-zero targets (Long-Term Strategy)" +; + cm_LTSstartYr = 2040; !! def = 2040 !! regexp = 20[2-9](0|5) +*' * (2040): NDC-LTS scenario: default start of rescaling is 2040, which allows meeting 2035 NDC targets +*' * (2030): LTS scenario: from 2030 onward, regions see a carbon price markup to reach their net-zero targets, so they may overshoot NDC targets + +parameter + cm_LTSendYr "[46_carbonpriceRegi] Year at which pm_taxCO2eqRegi drops to zero after having decreased linearly since the net-zero year" +; + cm_LTSendYr = 0; !! def = 0 !! regexp = [0-9]+ +*' * (0): Regional markup carbon price in target year then applies forever +*' * (2200): Regional markup carbon price diminishes from target year toward reaching zero in 2200 + +parameter + cm_netZeroPercent "[46_carbonpriceRegi] Share of emissions allowed at the target year of a country with a net-zero target [1]" +; + cm_netZeroPercent = 0; !! def = 0 +*' setting 0.2 is in some scenarios of NGFS phase 6 (2026), allowing countries to keep 20% of 2025 emissions in net-zero year + parameter c_start_budget "start of GHG budget limit" ; @@ -787,6 +823,7 @@ parameter *' (0): equal per capita redistribution *' (1): proportional redistribution *' + parameter cm_multigasscen "scenario on GHG portfolio to be included in permit trading scheme" ; @@ -801,7 +838,18 @@ parameter cm_permittradescen = 1; !! def = 1 !! regexp = [1-3] *' * (1): full permit trade (no restrictions) *' * (2): no permit trade (only domestic mitigation) -*' * (3): limited trade (certain percentage of GDP) +*' * (3): limited trade (certain percentage of permits) +*' +parameter + cm_permitTradeFinalYr "[TradingOnRef] Year until permit trading is allowed" +; + cm_permitTradeFinalYr = 2100; !! def = 2100 +*' + +parameter + cm_permitTradeRatio "[TradingOnRef] Share of emissions allowed for permit trading between 0 and 1" +; + cm_permitTradeRatio = 0.2; !! def = 0.2 *' parameter cm_rentdiscoil "[grades2poly] discount factor for the oil rent" @@ -887,6 +935,17 @@ parameter *' * (1) reference (90%) *' * (2) increased capture rate (99%) *' + +Parameter c_geoStorPotScen "select the amount of geological storage potential for CO2 offshore and onshore" +; + +c_geoStorPotScen = 3; !! def = 3 !! regexp = [1-3] + +*' This switch determines the upper bound of the total geological storage potential for CO2 (onshore + offshore). +*' * (1) high: technical potential without any exclusion layers applied +*' * (2) low: applying all exclusion layers described in Gidden 2025, Table S1 of https://zenodo.org/records/15657543 +*' * (3) old: formerly used scenario when there was only one grade + parameter c_export_tax_scen "choose which oil export tax is used in the model. 0 = none, 1 = fix" ; @@ -899,18 +958,35 @@ parameter *' * (0): no iterative adjustment of CO2 tax (terminology: CO2 price and CO2 tax in REMIND is used interchangeably) *' * (2): iterative adjustment of CO2 tax or cumulative emission based on climate forcing calculated by climate model magicc, for runs with budget or CO2 tax constraints. See ./modules/45_carbonprice/NDC/postsolve.gms for direct algorithm *' * (3): [requires 45_carbonprice = NDC and emiscen = 9] iterative adjustment of CO2 tax based on 2025 or 2030 regionally differentiated emissions, for runs with emission budget or CO2 tax constraints. See ./modules/45_carbonprice/NDC/postsolve.gms for direct algorithm -*' * (5): [requires 45_carbonprice = functionalForm and emiscen = 9] iterative adjustment of CO2 tax based on economy-wide CO2 cumulative emission budget(2020-2100), for runs with emission budget or CO2 tax constraints. [see 45_carbonprice/functionalForm/postsolve.gms for direct algorithm] +*' * (5): [requires 45_carbonprice = functionalForm and emiscen = 9 OR 45_carbonprice = functionalFormRegi] iterative adjustment of CO2 tax based on economy-wide CO2 cumulative emission budget(2020-2100), for runs with emission budget or CO2 tax constraints. [see 45_carbonprice/functionalForm(Regi)/postsolve.gms for direct algorithm] *' * (7): [requires 45_carbonprice = functionalForm and emiscen = 9] iterative adjustment of CO2 tax based on economy-wide CO2 cumulative emission peak budget, for runs with emission budget or CO2 tax constraints. Features: results in a peak budget with zero net CO2 emissions after peak budget is reached. See core/postsolve.gms for direct algorithms [see 45_carbonprice/functionalForm/postsolve.gms for direct algorithm] -*' * (9): [requires 45_carbonprice = functionalForm and emiscen = 9] iterative adjustment of CO2 tax based on economy-wide CO2 cumulative emission peak budget, for runs with emission budget or CO2 tax constraints. Features: 1) after the year when budget peaks, CO2 tax has an annual increase by cm_taxCO2_IncAfterPeakBudgYr, 2) automatically shifts cm_peakBudgYr to find the correct year of budget peaking for a given budget. [see 45_carbonprice/functionalForm/postsolve.gms for direct algorithm] +*' * (9): [requires 45_carbonprice = functionalForm and emiscen = 9] global: iterative adjustment of CO2 tax based on economy-wide CO2 cumulative emission peak budget, for runs with emission budget or CO2 tax constraints. Features: 1) after the year when budget peaks, CO2 tax has an annual increase by cm_taxCO2_IncAfterPeakBudgYr, 2) automatically shifts cm_peakBudgYr to find the correct year of budget peaking for a given budget. [see 45_carbonprice/functionalForm/postsolve.gms for direct algorithm] +parameter + cm_taxCO2_Shape "Only used with [functionalFormRegi, and functionalForm if cm_iterative_target_adj=5 (i.e. EOC budget)], determines whether the carbon price increases until 2100 or is constant as of the exogenously set cm_peakYear" +; + cm_taxCO2_Shape = 1; !! def = 1 !! regexp = 1|2 +*' * (1): EOC - pm_taxCO2eq increases until 2100 according to cm_taxCO2_functionalForm for EOC budget targets +*' * (2): Peak - pm_taxCO2eq increases until an exogenously set "peak year" (via cm_peakBudgYear). Note: this does not necessarily correspond to the year in which the global or regional budget actually peaks. +*' +parameter + cm_CPslopeAdjustment "Only used with [functionalFormRegi], determines whether the entire path is shifted up and down or the slope of is adjusted endogenously" +; + cm_CPslopeAdjustment = 1; !! def = 1 !! regexp = 0|1 +*' (0): no adjustment of the slope; i.e. carbon price shape chosen from the input-gdx and the curve is shifted up and down from cm_startyear +*' (1): endogenous adjustment of the slope, i.e. linear increase to the highest carbon price *' parameter - cm_NDC_divergentScenario "choose scenario about convergence of CO2eq prices [45_carbonprice = NDC]" + cm_useInputGdxForCarbonPrice "Only used with [functionalFormRegi], determines whether the carbon price information from the input.gdx is used for the first iteration's carbon price." ; - cm_NDC_divergentScenario = 0; !! def = 0 !! regexp = [0-2] -*' * (0) 70 years after 2030 -*' * (1) 120 years after 2030 -*' * (2) until year 3000 ("never") + cm_useInputGdxForCarbonPrice = 0; !! def = 0 !! regexp = 0|1 +*' (0): Input.gdx information *is not* used in 45_carbonprice/functionalFormRegi/datainput.gms +*' (1): Input.gdx information *is* used to in 45_carbonprice/functionalFormRegi/datainput.gms *' +parameter + cm_NDC_target_DevTol "allowed NDC emissions target deviation relative to target emissions [45_carbonprice = NDC]" +; + cm_NDC_target_DevTol = 0.01; !! def = 0.01 +*' * value between 0-1 to define the maximum allowed deviation of REMIND emissions and target emissions normalized to target emissions to consider NDC target as reached parameter cm_gdximport_target "whether or not the starting value for iteratively adjusted CO2 tax trajectories for all regions (scenarios defined by cm_iterative_target_adj) should be read in from the input.gdx" ; @@ -919,15 +995,12 @@ parameter *' * (1): the values from the gdx are read in (works only if the gdx has a parameter value) ATTENTION: make sure that the values from the gdx have the right structure (e.g. regionally differentiated or not) *' parameter - c_biopyrEstablished "Turn the four established industrial biochar production configurations on = 1 or off = 0" + c_biopyrOptions "Turn the three established and one advanced industrial biochar production configurations on or off" ; - c_biopyrEstablished = 1; !! def = 1 -*' -parameter - c_biopyrliq "Turn the advanced industrial biochar production setup that co-produces liquids on = 1 or off = 0" -; - c_biopyrliq = 0; !! def = 0 -*' + c_biopyrOptions = 1; !! def = 1 !! regexp = 0|1|2 +*' * (0): biochar technologies are turned off +*' * (1): three established industrial biochar production configurations +*' * (2): three established + advanced industrial biochar production setup that co-produces liquids parameter cm_33DAC "choose whether DAC (direct air capture) should be included into the CDR portfolio." ; @@ -1074,7 +1147,7 @@ parameter cm_carbonprice_temperatureLimit = 1.8; !! def = 1.8 *' parameter - cm_frac_CCS "tax on carbon transport & storage (ccsinje) to reflect risk of leakage, formulated as fraction of ccsinje O&M costs" + cm_frac_CCS "tax on carbon transport & storage (teccsinje) to reflect risk of leakage, formulated as fraction of O&M costs" ; cm_frac_CCS = 10; !! def = 10 *' @@ -1217,13 +1290,6 @@ parameter *' This switch changes the assumption about the share of timely realised capacities from sum of announced/planned in 2030 from the IEA CCS data base *' Default assumption is that only 30% of announced or planned capacities will be realised, either due to discontinuation or delay -parameter - cm_startIter_EDGET "starting iteration of EDGE-T" -; - cm_startIter_EDGET = 10; !! def = 10, by default EDGE-T is run first in iteration 10 !! regexp = [0-9]+ -*' EDGE-T transport starting iteration of coupling -*' def 10, EDGE-T coupling starts at 10, if you want to test whether infeasibilities after EDGE-T -> set it to 1 to check after first iteration -*' parameter cm_deuCDRmax "switch to limit maximum annual CDR amount in Germany in MtCO2 per y" ; @@ -1273,6 +1339,12 @@ parameter ; c_edgetReportAfter2010 = 0; !! def = 0 full reporting !! regexp = 1|0 *' +parameter + cm_RenShareTargets "switch that turn on renewable share targets in the NPi2025 realization of the techpol module" +; +*' Note that the switch is only active in the NPi2025 realization of the 40_techpol module. + cm_RenShareTargets = 1; !! def = 1 renewable share targets are on !! regexp = 1|0 +*' parameter cm_APsource "data source for air pollution baseyear (2020) emissions" ; @@ -1284,11 +1356,19 @@ parameter ***----------------------------------------------------------------------------- *' #### FLAGS ***----------------------------------------------------------------------------- -*' cm_MAgPIE_coupling "switch on coupling mode with MAgPIE" + +*' c_magpieIter "Nash iterations in which MAgPIE runs in core/presolve" +*' +*' The content of this setgloabal is only used once to write it to the 'magpieIter' set in core/set.gms. +*' It is only a setglobal so that it is possible to deviate from the default by overwriting it from outside (prepare.R). +*' +$setglobal c_magpieIter 20,24,28,32 !! def = "20,24,28,32" !! This regular expression works in manual test but not in checkFixCfg [0-9]{1,2}(,[0-9]{1,2})* + + +*' c_edgeTransportIter "Nash iterations in which EDGE-T runs" *' -*' * (off): off = REMIND expects to be run standalone (emission factors are used, shiftfactors are set to zero) -*' * (on): on = REMIND expects to be run based on a MAgPIE reporting file (emission factors are set to zero because emissions are retrieved from the MAgPIE reporting, shift factors for supply curves are calculated) -$setglobal cm_MAgPIE_coupling off !! def = "off" !! regexp = off|on +$setglobal c_edgeTransportIter 10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,50,55,60,65,70,75,80,85,90,95 !! def = "10,12,14,16,18,20,22,24,27,30,33,36,39,42,45,50,55,60,65,70,75,80,85,90,95" + *' cm_rcp_scen "chooses RCP scenario" *' *' * (none): no RCP scenario, standard setting @@ -1299,31 +1379,72 @@ $setglobal cm_MAgPIE_coupling off !! def = "off" !! regexp = off|on *' * (rcp60): RCP6.0 [currently not operational: test and verify before using it!] *' * (rcp85): RCP8.5 [currently not operational: test and verify before using it!] $setglobal cm_rcp_scen rcp45 !! def = "rcp45" !! regexp = none|rcp20|rcp26|rcp37|rcp45|rcp60|rcp85 -*' cm_NDC_version "choose version year of NDC targets as well as conditional vs. unconditional targets" -*' * (2024_cond): all NDCs conditional to international financial support published until August 31, 2024 -*' * (2024_uncond): all NDCs independent of international financial support published until August 31, 2024 -*' * (2023_cond): all NDCs conditional to international financial support published until December 31, 2023 -*' * (2023_uncond): all NDCs independent of international financial support published until December 31, 2023 +*' cm_NDC_version "choose version of NDC targets to be applied, including differentiation between conditional vs. unconditional targets" +*' * This switch allows to run different states of NDC targets over the past years, allowing for comparison of NDC succession over the years. +*' * For the latest NDC version (2026_cond/uncond), the targets are based on the collection provided by PBL. The collection provides two formats for emissions targets, which we use as follows: +*' * For major emitters, we derive absolute emissions targets based on a detailed collection by PBL adding our own assumptions (e.g. regarding LULUCF emissions), while +*' * for minor emitters, we rely on the absolute emissions targets directly provided by PBL. +*' * while for minor emitters, absolute emissions targets are directly taken from PBL collection. +*' * (2026_cond): all NDCs conditional to international financial support published until end of 2025 (PBL collection), note that for countries / regions with target ranges (e.g. EU 66-72% 2035 target) +*' * the more ambitious target is chosen even if it is strictly speaking not a conditional NDC target +*' * (2026_uncond): all NDCs independent of international financial support published until end of 2025 (PBL collection), note that for countries / regions with target ranges (e.g. EU 66-72% 2035 target) +*' * the less ambitious target is chosen even if it is strictly speaking not an unconditional NDC target +*' * (2024_cond_extrapol): all NDCs conditional to international financial support published until August 31, 2024 with extrapolation of 2030 targets to 2035 targets for conutries without 2035 target +*' * (2024_uncond_extrapol): all NDCs independent of international financial support published until August 31, 2024 with extrapolation of 2030 targets to 2035 targets for conutries without 2035 target +*' * (2024_cond): all NDCs conditional to international financial support published until August 31, 2024 +*' * (2024_uncond): all NDCs independent of international financial support published until August 31, 2024 +*' * (2023_cond): all NDCs conditional to international financial support published until December 31, 2023 +*' * (2023_uncond): all NDCs independent of international financial support published until December 31, 2023 *' * Other supported years are 2022, 2021 and 2018, always containing NDCs published until December 31 of that year -$setglobal cm_NDC_version 2024_cond !! def = "2024_cond" !! regexp = 20(18|2[1-4])_(un)?cond - +$setglobal cm_NDC_version 2026_cond !! def = "2024_cond" !! regexp = 20(18|2[1-6])_(un)?cond(_extrapol)?$ +*' cm_NDC_targetYear "choose years for which NDC emissions targets can be applied" [requires 45_carbonprice = NDC] +*' * Examples on how to use: +*' * "2030" means that only 2030 target are included +*' * "2030, 2035, 2050" means that 2030, 2035 and 2050 targets are included +*' * Note: including target years here does not mean they are automcatically considered in the carbonprice NDC realization. +*' * Depending on the p45_minRatioOfCoverageToMax parameter, each region receives the target year with the highest share of emissions covered under NDCs. +$setglobal cm_NDC_targetYear 2030, 2035 !! def = "2030, 2035" +*' cm_NDC_CO2PriceLimit "sets regional upper limit for CO2 prices in NDC realization" [requires 45_carbonprice = NDC]" +*' This serves to not force regions to reach NDC emissions targets at extremly high CO2 prices in the near-term. +*' Instead, regions go "as close as still plausible" to their NDC targets. +*' * Examples on how to use: +*' * "2030.EUR 150" means that EUR has maximum CO2 price of 150 USD/tCO2 in 2030. +*' * The CO2 price limit is increased after the specified target year by 20%/yr. +*' * In the example, that would mean that EUR has a CO2 price limit in 2035 of 150 + 0.2 * 150 * 5 = 300 USD/tCO2. +*' * By default 2030 CO2 prices are limited to 150 USD/tCO2 in EUR, 80 USD/tCO2 in CAZ, USA, JPN and NEU, 50 USD/tCO2 in REF and MEA, 40 USD/tCO2 in LAM and CHA, 30 USD/tCO2 in OAS, 15 USD/tCO2 in IND and 10 USD/tCO2 in SSA. +*' * If set to "off", no CO2 price limits are applied in any region. +$setglobal cm_NDC_CO2PriceLimit 2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10 !! def = "2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10" +*' cm_NDC_postTargetDevelopment "choose assumption on co2 price trajectory after NDC target years" [requires 45_carbonprice = NDC] +*' * (constant): carbon price remains constant after the last NDC target year +*' * (global_conv): carbon price converges across regions to a global value of 100$/tCO2 by 2100 +$setglobal cm_NDC_postTargetDevelopment constant !! def = "constant" +*' cm_NDC_CO2PriceMinimum "choose assumption on minimal co2 price after first NDC target year" [requires 45_carbonprice = NDC] +*' * (zero): no minimum carbon price after first NDC target year, i.e. carbon price can decrease to zero after first NDC target year +*' * (NPi): carbon price cannot fall below carbon price of NPi run as this represent the development of current policies +*' * (NonDecreasing): carbon price cannot decrease after first NDC target year, but can increase or remain constant +$setglobal cm_NDC_CO2PriceMinimum NPi !! def = "NPi" !! regexp = zero|NPi|NonDecreasing +*' cm_NDC_TargetCheckConv "choose whether iterations should go on until all NDC emissions targets are fullfilled" [requires 45_carbonprice = NDC] +*' This setting determines whether compliance with NDC emissions targets should be a criterion for convergence of REMIND. +*' * (on): runs only converges if all NDC emissions targets are met within the tolerance defined by cm_NDC_target_DevTol +*' * (off): runs can converge even if some NDC emissions targets are not met within the tolerance defined by cm_NDC_target_DevTol, e.g. because of very high CO2 prices needed to meet them in the near-term +$setglobal cm_NDC_TargetCheckConv off !! def = "off" !! regexp = on|off *' cm_NPi_version "choose version year of NPi targets for min and max targets in the form of conditional vs. unconditional" *' * (2024_cond): minimum technology targets are included from NewClimate latest policy modeling protocol in 2025 *' * (2024_uncond): maximal technology targets are included from NewClimate latest policy modeling protocol in 2025 $setglobal cm_NPi_version 2025_cond !! def = "2025_cond" !! regexp = 2025_(un)?cond - -*' cm_netZeroScen "choose scenario of net zero targets of netZero realization of module 46_carbonpriceRegi" *' -*' (NGFS_v4): settings used for NGFS v4, 2023 -*' (NGFS_v4_20pc): settings used for NGFS v4, 2023, with still 20% of 2020 emissions in netZero year -*' (ELEVATE2p3): settings used for ELEVATE2p3 LTS and NDC-LTS scenario -$setglobal cm_netZeroScen NGFS_v4 !! def = "NGFS_v4" !! regexp = NGFS_v4|NGFS_v4_20pc|ELEVATE2p3 *' * c_regi_earlyreti_rate "maximum percentage of capital stock that can be retired early (before reaching their expected lifetimes) in one year in specified regions, if they are not economically viable. It is applied to all techs unless otherwise specified in c_tech_earlyreti_rate." -*' * GLO 0.09, EUR_regi 0.15: default value. (0.09 means full retirement after 11 years, 10% standing after 10 years) -$setglobal c_regi_earlyreti_rate GLO 0.09, EUR_regi 0.15 !! def = GLO 0.09, EUR_regi 0.15 +*' * Default value used in NPi runs: EUR_regi 0.06, USA_regi 0.04, CHA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.03 (0.06 means 6% of capacity can be retired early per year at maximum, i.e. full retirement after 16.7 years, 40% standing capacity after 10 years) +*' * In target scenarios with ambition level beyond the NPi, we assume slightly higher early retirement rates outside the EU. +*' * Target scenario maximum retirement rates: EUR_regi 0.08, USA_regi 0.07, CHA_regi 0.07, CAZ_regi 0.07, JPN_regi 0.07, GLO 0.06 +*' * This reflects that the current aversion to shut down plants before end of their lifetime linked to political economy dynamics can be overcome to speed up the energy transition. +*' * Finally, note that these maximum early retirement rates are further differentiated by technology. Coal power has 20% higher rates, for instance, while CHP plants have 30% lower rates than the default value (see core/datainput.gms). +$setglobal c_regi_earlyreti_rate EUR_regi 0.06, USA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.02 !! def = EUR_regi 0.06, USA_regi 0.04, CAZ_regi 0.04, JPN_regi 0.04, GLO 0.02 *' * c_tech_earlyreti_rate "maximum percentage of capital stock of specific technologies that can be retired early in one year in specified regions. This switch overrides c_regi_earlyreti_rate to allow for fine-tuning of phase-out schedules, e.g. for implementation of certain policies or anticipated trends." -*' * GLO.(biodiesel 0.14, bioeths 0.1), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13: default value, including retirement of 1st gen biofuels, higher rate of coal phase-out for USA, REF and CHA -$setglobal c_tech_earlyreti_rate GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13 !! def = GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13 +*' * Example use: USA_regi.pc 0.1, CHA_regi.pc 0.1: Change max retirement rates for coal power in US and China to 10%/yr. +*' * Keep value "off" if not needed. +*' * This switch only changes the retirement rates strictly before the year specified in c_earlyRetiValidYr (default 2035). +$setglobal c_tech_earlyreti_rate off !! def = off *** cm_LU_emi_scen "choose emission baseline for CO2, CH4, and N2O land use emissions from MAgPIE" *** (SSP1): emissions (from SSP1 scenario in MAgPIE) *** (SSP2): emissions (from SSP2 scenario in MAgPIE) @@ -1348,7 +1469,7 @@ $setglobal cm_tradbio_phaseout default !! def = default !! regexp = default|f *** (off): (default) no bound *** (100): (e.g.) set maximum to 100 EJ per year *** (any value ge 0): set maximum to that value -$setglobal cm_maxProdBiolc off !! def = off !! regexp = off|is.nonnegative +$setglobal cm_maxProdBiolc 100 !! def = 100 !! regexp = off|is.nonnegative *** cm_bioprod_regi_lim *** limit to total biomass production (including residues) by region to an upper value in EJ/yr from 2035 on *** example: "CHA 20, EUR_regi 7.5" limits total biomass production in China to 20 EJ/yr and @@ -1402,6 +1523,8 @@ $setglobal c_ccsinjecrateRegi off !! def = "off" $setglobal c_SSP_forcing_adjust forcing_SSP2 !! def = forcing_SSP2 !! regexp = forcing_SSP(1|2|3|5) *** cm_regiExoPrice "set exogenous co2 tax path for specific regions using a switch, require regipol module to be set to regiCarbonPrice (e.g. GLO.(2025 38,2030 49,2035 63,2040 80,2045 102,2050 130,2055 166,2060 212,2070 346,2080 563,2090 917,2100 1494,2110 1494,2130 1494,2150 1494) )" $setGlobal cm_regiExoPrice off !! def = off +*** cm_regiExoPrice_fromFile "set exogenous co2 tax path for specific regions from another run, require regipol module to be set to regiCarbonPrice (e.g. "PathToGDX.gdx")" +$setGlobal cm_regiExoPrice_fromFile off !! def = off *** cm_emiMktTarget "set a budget or year emission target, for all (all) or specific emission markets (ETS, ESD or other), and specific regions (e.g. DEU) or region groups (e.g. EU27)" *** Example on how to use: *** cm_emiMktTarget = '2020.2050.EU27_regi.all.budget.netGHG_noBunkers 72, 2020.2050.DEU.all.year.netGHG_noBunkers 0.1' @@ -1422,6 +1545,14 @@ $setGlobal cm_emiMktTarget_tolerance GLO 0.01 !! def = GLO 0.01 *** Example on how to use: *** cm_scaleDemand = '2020.2040.(EUR,NEU,USA,JPN,CAZ) 0.75' applies a 25% demand reduction on those regions progressively between 2020 (100% demand) and 2040 (75% demand). $setGlobal cm_scaleDemand off !! def = off +*** cm_scaleDemandBuildTable - Rescaling factor on buildings final energy and usable energy demand, with values coming from an input table. +*** Requires re-calibration in order to work. +*** One needs to name the cs4r-file with the multipliers in the scenario_config, and the file needs to be copied by hand to core/input +$setGlobal cm_scaleDemandBuildTable off !! def = off +*** c_scaleDemandIndTable - Rescaling factor on industry final energy and usable energy demand, with values coming from an input table. +*** Requires re-calibration in order to work. +*** One needs to name the cs4r-file with the multipliers in the scenario_config, and the file needs to be copied by hand to core/input +$setGlobal c_scaleDemandIndTable off !! def = off *** cm_quantity_regiCO2target "emissions quantity upper bound from specific year for region group." *** Example on how to use: *** '2050.EUR_regi.netGHG 0.000001, obliges European GHG emissions to be approximately zero from 2050 onward" @@ -1694,7 +1825,7 @@ $setglobal cm_adj_seed_multiplier off $setglobal cm_adj_coeff_multiplier off *** cm_inco0Factor "change investment costs. [factor]." *' * (off): no scale-factor, use default investment costs (inco0) values -*' * (any value ge 0) list of techs with respective factor to change inco0 value by a multiplication factor. (e.g. "ccsinje 0.5,bioigccc 0.66) +*' * (any value ge 0) list of techs with respective factor to change inco0 value by a multiplication factor. (e.g. "ccsinjeon 0.5,bioigccc 0.66) *' Note: if %cm_techcosts% == "GLO", switch will not work for policy runs, i.e. cm_startyear > 2005, for pc, ngt and ngcc as this gets overwritten in 05_initialCap module $setglobal cm_inco0Factor off !! def = off *** cm_inco0RegiFactor "change investment costs regionalized technology values. [factor]." @@ -1817,7 +1948,8 @@ $setglobal cm_taxCO2_regiDiff_convergence scenario !! def = scenario *** For example, setting the switch to GLO 50, SSA 5, CHA 40 means that in cm_startyear, SSA has carbon price of 5$/tCO2, CHA has carbon price of 40$/tCO2, and all other regions have carbon price of 50$/tCO2. *** Important note: If regional carbon prices in the start year are manually set, the regional values are used as lower bounds for pm_taxCO2eq $setglobal cm_taxCO2_regiDiff_startyearValue endogenous !! def = "endogenous" - +*' cm_budgetCO2from2020RegiShare "switch to set eoc regional carbon budget shares by region (for easier comparison than total budgets, endogenous calculation possible)" +$setglobal cm_budgetCO2from2020RegiShare off !! def = off *** cm_ind_energy_limit Switch for setting upper limits on industry energy *** efficiency improvements. See ./modules/37_subsectors/datainput.gms for *** implementation. @@ -1946,6 +2078,19 @@ $setglobal cm_subsec_model_steel processes !! def = processes !! regexp = pro *** (off) no bounds for 2025 *** (on) some generous bounds for 2025 assuming that certain developments are not possible anymore even for fast growing technologies given 2023 data $setglobal cm_tech_bounds_2025 on !! def = on !! regexp = on|off +*' c_NearTermProjectCompletion +*' Choose assumptions on completion rates, i.e. the share of planned capacity additions of technologies in the near-term that will actually be completed and start operation. +*' This would effect, for example, the share of planned/under construction coal power projects that will reach completion in the first future time step. +*' The implementation serves to set near-term bounds in the model. There are two options: +*' (conservative) conservative assumptions on completion rates (high completion rates of fossil technologies, low completion rates of clean technologies) +*' (transformative) transformative assumptions on completion rates (low completion rates of fossil technologies, high completion rates of clean technologies) +$setglobal c_NearTermProjectCompletion conservative !! def = conservative !! regexp = conservative|transformative +*** cm_VREminCap_Ger +*** activate bounds lower bounds for capacities of VRE technologies in Germany by 2030 based on different trend assessment of the current project pipeline +*** (off) no bounds for 2030 +*** (CurrPol) moderate growth assumptions on renewable power and centralized heat pumps for Germany between 2025 and 2030 +*** (Opt) optimistic growth assumptions on renewable power and centralized heat pumps for Germany between 2025 and 2030 +$setglobal cm_VREminCap_Ger CurrPol !! def = CurrPol *** set conopt version. Warning: conopt4 is in beta $setGlobal cm_conoptv conopt3 !! def = conopt3 *' c_empty_model "Short-circuit the model, just use the input as solution" @@ -1994,6 +2139,15 @@ $setglobal cm_repeatNonOpt off !! def = off !! regexp = off|on *' @stop *------------------------------------------------------------------------------------- +*** Track runtime +File runtime /runtime.log /; +***runtime.pc = 5; +runtime.nd = 0; +runtime.ap = 1; +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," 0:0; + +*------------------------------------------------------------------------------------- + *** automated checks and settings *ag* set conopt version option nlp = %cm_conoptv%; diff --git a/modules/04_PE_FE_parameters/iea2014/datainput.gms b/modules/04_PE_FE_parameters/iea2014/datainput.gms index 295ba6877f..f9d940c06b 100644 --- a/modules/04_PE_FE_parameters/iea2014/datainput.gms +++ b/modules/04_PE_FE_parameters/iea2014/datainput.gms @@ -179,6 +179,23 @@ pm_secBioShare(ttot,regi,entyFe,sector)$((seAgg2fe("all_seso",entyFe) OR seAgg2f sum((entySe,all_enty,all_te)$entyFeSec2entyFeDetail(entyFe,sector,all_enty), f04_IO_output(ttot,regi,entySe,all_enty,all_te) ) ; + +*** adjustment of biomass shares in demand sectors specifically for Germany +*** 1. adjustment of 2020 shares based on AGEB data +*** 2. assumptions on non-increasing coal shares for after 2020 in industry and buildings +loop(regi$(sameAs("DEU", regi)), +*** set 2020 biomass share in LDV transport in Germany to 6% based on AGEB data +*** https://ag-energiebilanzen.de/daten-und-fakten/auswertungstabellen/ + pm_secBioShare("2020",regi,"fepet","trans") = 0.06; +*** set 2020 biomass share in in non-LDV transport in Germany to 5% based on AGEB data +*** biofuel share in HDV road transport liquids about 7%, translated to total non-LDV liqiuds about 5% + pm_secBioShare("2020",regi,"fedie","trans") = 0.05; +*** set 2020 biomass share in industry solids to 20% based on AGEB data + pm_secBioShare("2020",regi,"fesos","indst") = 0.2; +*** set maximum coal share in buildings after 2020 to 2020 value as residential coal heating is not going to recover once phased out + pm_secBioShare(t,regi,"fesos","build")$(t.val gt 2020) = pm_secBioShare("2020",regi,"fesos","build"); +); + display pm_secBioShare; pm_IO_input(regi,all_enty,all_enty2,all_te) = 0; @@ -289,7 +306,8 @@ p04_prodCoupleGlob("pebiolc","seliqbio","bioftcrec","seel") = 0.108; p04_prodCoupleGlob("segabio","fegas","tdbiogas","seel") = -0.05; p04_prodCoupleGlob("segafos","fegas","tdfosgas","seel") = -0.05; p04_prodCoupleGlob("pegeo","sehe","geohe","seel") = -0.3; -p04_prodCoupleGlob("cco2","ico2","ccsinje","seel") = -0.005; +p04_prodCoupleGlob("cco2","ico2","ccsinjeon","seel") = -0.005; +p04_prodCoupleGlob("cco2","ico2","ccsinjeoff","seel") = -0.005; !!DKX assumption correct? *** Co-Production based on Dorndorf et al (in review) p04_prodCoupleGlob("pebiolc","sebiochar","biopyronly","seel") = -0.04; !! 2% of biomass input (Fawzy et al., 2022, https://doi.org/10.1016/j.jclepro.2022.133660) diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms index 44693d3263..560dca5e6c 100644 --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -411,6 +411,23 @@ pm_eta_conv(ttot,regi,teChp) = pm_data(regi,"eta",teChp); pm_eta_conv(ttot,regi,"elh2") = pm_dataeta(ttot,regi,"elh2"); +*** Replace 1st gen biomass conversion efficiencies with global values for all +*** regions. The regionalized calibration to historical input and output values +*** created via mrremind::calcIO does not work for these technologies, because +*** the data that is currently being used does not give information on +*** feedstock inputs, such that technically input and output are equal, which +*** leads to a conversion efficiency of 1 in all regions that historically +*** already deploy 1st gen biomass. While this is actually true for `bioeths`, +*** because we assume that the conversion to ethanol has already happened, i.e. +*** this technology simply passes PE to SE without any further conversion, this +*** is not correct for `biodiesel`. Here we assume that the oil feedstock is +*** already transformed to plant oil, but the conversion to biodiesel still has +*** to happen. To avoid confusion, we use global values for both technologies +*** (i.e., also for `bioeths` where it does not make a difference, but using +*** the global value of 1 makes it explicitly clear that no conversion is +*** happening). +pm_eta_conv(ttot,regi,"bioeths") = fm_dataglob("eta","bioeths"); +pm_eta_conv(ttot,regi,"biodiesel") = fm_dataglob("eta","biodiesel"); *** Increase SE2FE efficiency for gases in DEU following AGEB data from 2020 diff --git a/modules/11_aerosols/exoGAINS2025/datainput.gms b/modules/11_aerosols/exoGAINS2025/datainput.gms index 3a34ab37ae..3d6f635fe7 100644 --- a/modules/11_aerosols/exoGAINS2025/datainput.gms +++ b/modules/11_aerosols/exoGAINS2025/datainput.gms @@ -23,10 +23,6 @@ $ifthen.checkssp1 "%cm_APssp%" == "SSP4" abort "SSP4 not available for SMIPbySSP scenario. Please select another scenario x ssp combination." $endif.checkssp1 $endif.checkscen1 -*** GAINSlegacy not available in exoGAINS2025 -$ifthen.checkssp2 "%cm_APssp%" == "GAINSlegacy" -abort "GAINSlegacy not supported by exoGAINS2025. Please switch to exoGAINS for using GAINSlegacy."; -$endif.checkssp2 *** initialize p11_share_trans with the global value, will be updated after each negishi/nash iteration p11_share_trans("2005",regi) = 0.617; @@ -50,86 +46,29 @@ p11_share_trans("2130",regi) = 0.865; p11_share_trans("2150",regi) = 0.872; *** GAINS2025 emission factors -------------------------------------------------------------------------- -parameter f11_emifacs_sectREMIND_sourceCEDS(tall,all_regi,all_enty,all_enty,all_te,all_sectorEmi,emisForEmiFac,all_APscen,all_APssp) "GAINS2025 emission factors weighted by CEDS emissions" +parameter f11_emifacs_sectREMIND_sourceCEDS(tall,all_regi,all_enty,all_enty,all_te,all_sectorEmi11,emisForEmiFac11,all_APscen,all_APssp) "GAINS2025 emission factors weighted by CEDS emissions" / $ondelim $include "./modules/11_aerosols/exoGAINS2025/input/f11_emifacs_sectREMIND_sourceCEDS.cs4r" $offdelim / ; -parameter f11_emifacs_sectREMIND_sourceGAINS(tall,all_regi,all_enty,all_enty,all_te,all_sectorEmi,emisForEmiFac,all_APscen,all_APssp) "GAINS2025 emission factors weighted by GAINS emissions" +parameter f11_emifacs_sectREMIND_sourceGAINS(tall,all_regi,all_enty,all_enty,all_te,all_sectorEmi11,emisForEmiFac11,all_APscen,all_APssp) "GAINS2025 emission factors weighted by GAINS emissions" / $ondelim $include "./modules/11_aerosols/exoGAINS2025/input/f11_emifacs_sectREMIND_sourceGAINS.cs4r" $offdelim / ; -p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi,emisForEmiFac)$(ttot.val ge 2005) = 0.0; +p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi11,emisForEmiFac11)$(ttot.val ge 2005) = 0.0; if (cm_APsource eq 1, !! CEDS - p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi,emisForEmiFac)$(ttot.val ge 2005) = f11_emifacs_sectREMIND_sourceCEDS(ttot,regi,enty,enty2,te,sectorEndoEmi,emisForEmiFac,"%cm_APscen%","%cm_APssp%"); + p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi11,emisForEmiFac11)$(ttot.val ge 2005) = f11_emifacs_sectREMIND_sourceCEDS(ttot,regi,enty,enty2,te,sectorEndoEmi11,emisForEmiFac11,"%cm_APscen%","%cm_APssp%"); elseIf cm_APsource eq 2, !! GAINS - p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi,emisForEmiFac)$(ttot.val ge 2005) = f11_emifacs_sectREMIND_sourceGAINS(ttot,regi,enty,enty2,te,sectorEndoEmi,emisForEmiFac,"%cm_APscen%","%cm_APssp%"); + p11_emiFacAP(ttot,regi,enty,enty2,te,sectorEndoEmi11,emisForEmiFac11)$(ttot.val ge 2005) = f11_emifacs_sectREMIND_sourceGAINS(ttot,regi,enty,enty2,te,sectorEndoEmi11,emisForEmiFac11,"%cm_APscen%","%cm_APssp%"); else abort "cm_APsource must be either CEDS or GAINS" ); -*** load emission data from land use change -*** TODO this is outdated and not used anymore in coupled runs, should be replaced to correctly account for air pollutant emissions in MAgPIE -parameter f11_emiAPexoAgricult(tall,all_regi,all_enty,all_exogEmi,all_rcp_scen) "ECLIPSE emission factors of air pollutants" -/ -$ondelim -$include "./modules/11_aerosols/exoGAINS2025/input/f11_emiAPexoAgricult.cs4r" -$offdelim -/ -; -p11_emiAPexoAgricult(t,regi,enty,all_exogEmi) = f11_emiAPexoAgricult(t,regi,enty,all_exogEmi,"%cm_rcp_scen%"); - - -if ( (cm_startyear gt 2005), -Execute_Loadpoint 'input_ref' p11_emiAPexo = p11_emiAPexo; -); - -p11_emiAPexo(t,regi,enty,"Agriculture") = p11_emiAPexoAgricult(t,regi,enty,"Agriculture"); -p11_emiAPexo(t,regi,enty,"AgWasteBurning") = p11_emiAPexoAgricult(t,regi,enty,"AgWasteBurning"); -p11_emiAPexo(t,regi,enty,"ForestBurning") = p11_emiAPexoAgricult(t,regi,enty,"ForestBurning"); -p11_emiAPexo(t,regi,enty,"GrasslandBurning") = p11_emiAPexoAgricult(t,regi,enty,"GrasslandBurning"); - -display p11_emiAPexo; - -*** Initialize p11_emiAPexsolve to zero -*** TODO Could be improved by using values from previous run if available -p11_emiAPexsolve(tall,all_regi,all_sectorEmi,emiRCP) = 0; - -*JS* exogenous air pollutant emissions from land use, land use change, and industry processes -*** TODO These emissions are outdated, needs to be updated to include outputs from MAgPIE -pm_emiExog(t,regi,"SO2") = p11_emiAPexo(t,regi,"SO2","AgWasteBurning") - + p11_emiAPexo(t,regi,"SO2","Agriculture") - + p11_emiAPexo(t,regi,"SO2","ForestBurning") - + p11_emiAPexo(t,regi,"SO2","GrasslandBurning") - + p11_emiAPexsolve(t,regi,"waste","SOx") - + p11_emiAPexsolve(t,regi,"solvents","SOx") - + p11_emiAPexsolve(t,regi,"extraction","SOx") - + p11_emiAPexsolve(t,regi,"indprocess","SOx"); -pm_emiExog(t,regi,"BC") = p11_emiAPexo(t,regi,"BC","AgWasteBurning") - + p11_emiAPexo(t,regi,"BC","Agriculture") - + p11_emiAPexo(t,regi,"BC","ForestBurning") - + p11_emiAPexo(t,regi,"BC","GrasslandBurning") - + p11_emiAPexsolve(t,regi,"waste","BC") - + p11_emiAPexsolve(t,regi,"solvents","BC") - + p11_emiAPexsolve(t,regi,"extraction","BC") - + p11_emiAPexsolve(t,regi,"indprocess","BC"); -pm_emiExog(t,regi,"OC") = p11_emiAPexo(t,regi,"OC","AgWasteBurning") - + p11_emiAPexo(t,regi,"OC","Agriculture") - + p11_emiAPexo(t,regi,"OC","ForestBurning") - + p11_emiAPexo(t,regi,"OC","GrasslandBurning") - + p11_emiAPexsolve(t,regi,"waste","OC") - + p11_emiAPexsolve(t,regi,"solvents","OC") - + p11_emiAPexsolve(t,regi,"extraction","OC") - + p11_emiAPexsolve(t,regi,"indprocess","OC"); - -display p11_emiFacAP; -display pm_emiExog; - parameter p11_share_ind_fehos(tall,all_regi) "Share of heating oil used in the industry (rest is residential)" / $ondelim @@ -146,7 +85,7 @@ else ); *** Initialise sector shares to 1 -p11_share_sector(ttot,sectorEndoEmi2te(enty,enty2,te,sectorEndoEmi),regi) = 1.0; +p11_share_sector(ttot,sectorEndoEmi2te11(enty,enty2,te,sectorEndoEmi11),regi) = 1.0; *** Compute sector shares loop ((t,regi)$( t.val ge 2005 ), @@ -275,8 +214,8 @@ p11_costpollution("tdfoshos", "BC", "res") = 110; p11_costpollution("tdfosdie", "BC", "trans") = 40000; p11_costpollution("tdfospet", "BC", "trans") = 40000; -p11_EF_uncontr(enty,enty2,te,regi,"SO2",sectorEndoEmi)$(sectorEndoEmi2te(enty,enty2,te,sectorEndoEmi)) = pm_emifac("2005",regi,enty,enty2,te,"SO2") + 0.0001; -p11_EF_uncontr(enty,enty2,te,regi,"BC",sectorEndoEmi)$(sectorEndoEmi2te(enty,enty2,te,sectorEndoEmi)) = pm_emifac("2005",regi,enty,enty2,te,"BC") + 0.0001; -p11_EF_uncontr(enty,enty2,te,regi,"OC",sectorEndoEmi)$(sectorEndoEmi2te(enty,enty2,te,sectorEndoEmi)) = pm_emifac("2005",regi,enty,enty2,te,"OC") + 0.0001; +p11_EF_uncontr(enty,enty2,te,regi,"SO2",sectorEndoEmi11)$(sectorEndoEmi2te11(enty,enty2,te,sectorEndoEmi11)) = pm_emifac("2005",regi,enty,enty2,te,"SO2") + 0.0001; +p11_EF_uncontr(enty,enty2,te,regi,"BC",sectorEndoEmi11)$(sectorEndoEmi2te11(enty,enty2,te,sectorEndoEmi11)) = pm_emifac("2005",regi,enty,enty2,te,"BC") + 0.0001; +p11_EF_uncontr(enty,enty2,te,regi,"OC",sectorEndoEmi11)$(sectorEndoEmi2te11(enty,enty2,te,sectorEndoEmi11)) = pm_emifac("2005",regi,enty,enty2,te,"OC") + 0.0001; *** EOF ./modules/11_aerosols/exoGAINS2025/datainput.gms diff --git a/modules/11_aerosols/exoGAINS2025/declarations.gms b/modules/11_aerosols/exoGAINS2025/declarations.gms index 248ad84980..f088891811 100644 --- a/modules/11_aerosols/exoGAINS2025/declarations.gms +++ b/modules/11_aerosols/exoGAINS2025/declarations.gms @@ -7,31 +7,23 @@ *** SOF ./modules/11_aerosols/exoGAINS2025/declarations.gms variables -vm_costpollution(tall,all_regi) "costs of air pollution policies [T$]" +vm_costpollution(tall,all_regi) "costs of air pollution policies [T$]" ; parameter -pm_emiExog(tall,all_regi,all_enty) "exogenous emissions from air pollutants [Mt SO2, Mt BC, Mt OC]" +p11_emiFacAP(tall,all_regi,all_enty,all_enty,all_te,sectorEndoEmi11,all_enty) "air pollutant emission factors [Gt(species)/TWa]" +p11_share_sector(tall,all_enty,all_enty,all_te,sectorEndoEmi11,all_regi) "share of technology that goes into industry, residential, and transport sectorEndoEmi11 [1]" +p11_costpollution(all_te,all_enty,sectorEndoEmi11) "pollutant abatement costs in [$/t]" -p11_emiFacAP(tall,all_regi,all_enty,all_enty,all_te,sectorEndoEmi,all_enty) "air pollutant emission factors [Gt(species)/TWa]" -p11_share_sector(tall,all_enty,all_enty,all_te,sectorEndoEmi,all_regi) "share of technology that goes into industry, residential, and transport sectorEndoEmi [1]" -p11_costpollution(all_te,all_enty,sectorEndoEmi) "pollutant abatement costs in [$/t]" +p11_EF_uncontr(all_enty,all_enty,all_te,all_regi,all_enty,sectorEndoEmi11) "regional uncontrolled pollutant emission factor" +p11_EF_mean(all_enty,all_enty,all_te,all_enty) "global mean pollutant emission factor in 2005" +p11_cesIO(tall,all_regi,all_in) "cesIO parameter specific for the module" -p11_EF_uncontr(all_enty,all_enty,all_te,all_regi,all_enty,sectorEndoEmi) "regional uncontrolled pollutant emission factor" -p11_EF_mean(all_enty,all_enty,all_te,all_enty) "global mean pollutant emission factor in 2005" -p11_cesIO(tall,all_regi,all_in) "cesIO parameter specific for the module" - -p11_emiAPexsolve(tall,all_regi,all_sectorEmi,emiRCP) "emission of air pollutants from the exoGAINS2025 script" -p11_emiAPexsolveGDX(tall,all_regi,all_sectorEmi,emiRCP) "parameter p11_emiAPexsolve loaded from the gdx" - -p11_emiAPexoAgricult(ttot,all_regi,all_enty,all_exogEmi) "Air pollution generated by exoGAINSAirpollutants.R" -p11_emiAPexo(ttot,all_regi,all_enty,all_exogEmi) "exogenous emissions from RCP scenarios" - -p11_share_trans(tall,all_regi) "share of transport FE liquids (fedie and fepet) and all FE liquids [share]" +p11_share_trans(tall,all_regi) "share of transport FE liquids (fedie and fepet) and all FE liquids [share]" ; equations -q11_costpollution(tall,all_regi) "calculates the costs for air pollution policies" +q11_costpollution(tall,all_regi) "calculates the costs for air pollution policies" ; *** EOF ./modules/11_aerosols/exoGAINS2025/declarations.gms diff --git a/modules/11_aerosols/exoGAINS2025/equations.gms b/modules/11_aerosols/exoGAINS2025/equations.gms index beb6229e0a..64d6cfe3b5 100644 --- a/modules/11_aerosols/exoGAINS2025/equations.gms +++ b/modules/11_aerosols/exoGAINS2025/equations.gms @@ -18,22 +18,22 @@ vm_costpollution(t,regi)=e=sum(emi2te(enty,enty2,te,enty3), * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"indst",regi) * p11_costpollution(te,enty3,"indst") - )$( sectorEndoEmi2te(enty,enty2,te,"indst") AND pe2se(enty,enty2,te) ) + )$( sectorEndoEmi2te11(enty,enty2,te,"indst") AND pe2se(enty,enty2,te) ) + ( (p11_EF_uncontr(enty,enty2,te,regi,enty3,"res")-pm_emifac(t,regi,enty,enty2,te,enty3)) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"res",regi) * p11_costpollution(te,enty3,"res") - )$(sectorEndoEmi2te(enty,enty2,te,"res") AND pe2se(enty,enty2,te) ) + )$(sectorEndoEmi2te11(enty,enty2,te,"res") AND pe2se(enty,enty2,te) ) + ( (p11_EF_uncontr(enty,enty2,te,regi,enty3,"trans")-pm_emifac(t,regi,enty,enty2,te,enty3)) * vm_prodFe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"trans",regi) * p11_costpollution(te,enty3,"trans") - )$(sectorEndoEmi2te(enty,enty2,te,"trans") AND se2fe(enty,enty2,te) ) + )$(sectorEndoEmi2te11(enty,enty2,te,"trans") AND se2fe(enty,enty2,te) ) + ( (p11_EF_mean(enty,enty2,te,enty3)-pm_emifac(t,regi,enty,enty2,te,enty3) ) * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"power",regi) * p11_costpollution(te,enty3,"power") - )$(sectorEndoEmi2te(enty,enty2,te,"power") AND pe2se(enty,enty2,te) ) + )$(sectorEndoEmi2te11(enty,enty2,te,"power") AND pe2se(enty,enty2,te) ) + ( (p11_EF_uncontr("peoil","seel","dot",regi,enty3,"power")-p11_EF_mean("peoil","seel","dot",enty3)) * vm_demPe(t,regi,"peoil","seel","dot") * p11_costpollution("dot",enty3,"power") @@ -42,7 +42,7 @@ vm_costpollution(t,regi)=e=sum(emi2te(enty,enty2,te,enty3), * vm_demPe(t,regi,enty,enty2,te) * p11_share_sector(t,enty,enty2,te,"trans",regi) * p11_costpollution(te,enty3,"trans") - )$(sectorEndoEmi2te(enty,enty2,te,"trans") AND pe2se(enty,enty2,te) ) + )$(sectorEndoEmi2te11(enty,enty2,te,"trans") AND pe2se(enty,enty2,te) ) ) ); diff --git a/modules/11_aerosols/exoGAINS2025/input/files b/modules/11_aerosols/exoGAINS2025/input/files index d54e169814..f5c87ee812 100644 --- a/modules/11_aerosols/exoGAINS2025/input/files +++ b/modules/11_aerosols/exoGAINS2025/input/files @@ -1,8 +1,3 @@ -emi2020_sectGAINS_sourceCEDS.cs4r -emifacs_sectGAINS_sourceCEDS.cs4r f11_emifacs_sectREMIND_sourceCEDS.cs4r -emi2020_sectGAINS_sourceGAINS.cs4r -emifacs_sectGAINS_sourceGAINS.cs4r f11_emifacs_sectREMIND_sourceGAINS.cs4r -f11_emiAPexoAgricult.cs4r p11_share_ind_fehos.cs4r \ No newline at end of file diff --git a/modules/11_aerosols/exoGAINS2025/input/mappingGAINS2025toREMIND.csv b/modules/11_aerosols/exoGAINS2025/input/mappingGAINS2025toREMIND.csv deleted file mode 100644 index c8d98c7e96..0000000000 --- a/modules/11_aerosols/exoGAINS2025/input/mappingGAINS2025toREMIND.csv +++ /dev/null @@ -1,35 +0,0 @@ -GAINSsector,REMINDsector,REMINDactivity,elasticity,constantef,constantemi -CEMENT,indprocess,Production|Industry|Cement (Mt/yr),1,0,0 -CHEM,solvents,FE|Industry|Chemicals (EJ/yr),1,0,0 -CUSM,indprocess,Production|Industry|Steel (Mt/yr),1,0,0 -NACID,indprocess,FE|Industry|Chemicals (EJ/yr),1,0,0 -PAPER,indprocess,Value Added|Industry|Other Industry (billion US$2017/yr),0.9,0,0 -STEEL,indprocess,Production|Industry|Steel|Primary (Mt/yr),1,0,0 -End_Use_Industry_Bio_Trad,indst,FE|Industry|Solids|Biomass|Traditional (EJ/yr),1,0,0 -End_Use_Industry_Coal,indst,FE|Industry|Solids|Coal (EJ/yr),1,0,0 -End_Use_Industry_HLF,indst,FE|Industry|Liquids (EJ/yr),1,0,0 -End_Use_Industry_LLF,indst,FE|Industry|Liquids (EJ/yr),1,0,0 -End_Use_Industry_NatGas,indst,FE|Industry|Gases (EJ/yr),1,0,0 -End_Use_Residential_Bio_Mod,res,FE|Solids|Biomass|Modern (EJ/yr),1,0,0 -End_Use_Residential_Bio_Trad,res,FE|Solids|Biomass|Traditional (EJ/yr),1,0,0 -End_Use_Residential_Coal,res,FE|Solids|Fossil|Coal (EJ/yr),1,0,0 -End_Use_Residential_HLF,res,FE|Buildings|Liquids (EJ/yr),1,0,0 -End_Use_Residential_LLF,res,FE|Buildings|Liquids (EJ/yr),1,0,0 -End_Use_Residential_NatGas,res,FE|Buildings|Gases (EJ/yr),1,0,0 -End_Use_Services_Bio_Trad,res,FE|Solids|Biomass|Traditional (EJ/yr),1,0,0 -End_Use_Services_Coal,res,FE|Solids without BioTrad (EJ/yr),1,0,0 -End_Use_Transport_HLF,trans,FE|Transport|Liquids (EJ/yr),1,0,0 -End_Use_Transport_LLF,trans,FE|Transport|Liquids (EJ/yr),1,0,0 -End_Use_Transport_NatGas,trans,FE|Transport|Gases (EJ/yr),1,0,0 -Losses_Coal,extraction,PE|Coal (EJ/yr),1,0,0 -Losses_Vent_Flare,extraction,PE|Gas (EJ/yr),1,0,0 -Power_Gen_Bio_Trad,power,SE|Electricity|Coal (EJ/yr),1,0,0 -Power_Gen_Coal,power,SE|Electricity|Coal (EJ/yr),1,0,0 -Power_Gen_HLF,power,SE|Electricity|Oil (EJ/yr),1,0,0 -Power_Gen_LLF,power,SE|Electricity|Oil (EJ/yr),1,0,0 -Power_Gen_NatGas,power,SE|Electricity|Gas (EJ/yr),1,0,0 -Transformations_Coal,power,SE|Solids|Coal (EJ/yr),1,0,0 -Transformations_HLF_Refinery,power,PE|Oil (EJ/yr),1,0,0 -Transformations_NatGas,power,PE|Gas (EJ/yr),1,0,0 -Waste_Solid_Municipal,waste,GDP|MER (billion US$2017/yr),0.4,0,0 -Waste_Water_Municipal,waste,GDP|MER (billion US$2017/yr),0.4,0,0 \ No newline at end of file diff --git a/modules/11_aerosols/exoGAINS2025/postsolve.gms b/modules/11_aerosols/exoGAINS2025/postsolve.gms deleted file mode 100644 index 2886d5d07b..0000000000 --- a/modules/11_aerosols/exoGAINS2025/postsolve.gms +++ /dev/null @@ -1,37 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/11_aerosols/exoGAINS2025/postsolve.gms - -*-------------------------------------------------------------------------- -*** save gdx -*-------------------------------------------------------------------------- - -*** run exoGAINS2025 from iteration 2 onwards to avoid incomplete GDX files when running it in the first iteration -if (iteration.val ge 2, - -*** write data to file if an optimal solution was found -if((o_modelstat le 2), - Execute_Unload 'fulldata_exoGAINS2025'; -); - -*** Calculate AP emissions -Execute "Rscript exoGAINS2025Airpollutants.R"; - -*** Read input ref results for tall with following dimensions: p11_emiAPexsolve(tall,all_regi,all_sectorEmi,emiRCP) -if((cm_startyear gt 2005), -Execute_Loadpoint 'input_ref' p11_emiAPexsolveGDX = p11_emiAPexsolve; -p11_emiAPexsolve(tall,regi,all_sectorEmi,emiRCP) = p11_emiAPexsolveGDX(tall,regi,all_sectorEmi,emiRCP); - ); - -*** Read result with following dimensions: p11_emiAPexsolve(t,all_regi,all_sectorEmi,emiRCP) -Execute_Loadpoint 'p11_emiAPexsolve' p11_emiAPexsolveGDX = p11_emiAPexsolve; -p11_emiAPexsolve(t,regi,all_sectorEmi,emiRCP) = p11_emiAPexsolveGDX(t,regi,all_sectorEmi,emiRCP); - -display p11_emiAPexsolve; - -); -*** EOF ./modules/11_aerosols/exoGAINS2025/postsolve.gms diff --git a/modules/11_aerosols/exoGAINS2025/realization.gms b/modules/11_aerosols/exoGAINS2025/realization.gms index ae6fe239f2..28fc72c848 100644 --- a/modules/11_aerosols/exoGAINS2025/realization.gms +++ b/modules/11_aerosols/exoGAINS2025/realization.gms @@ -5,8 +5,15 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de *** SOF ./modules/11_aerosols/exoGAINS2025/realization.gms - -*' @description Bundle the air pollution emission results from different sources. We calculate the emissions for sectors that are available in the GAINS model with the interactively run script exoGAINS2025Airpollutants.R. Land related emissions are taken from MAGPIE. + +*' @description Calculation of air pollution emissions for those sectors +*' (currently indst, trans, res, and power) and species +*' (currently BC, OC, and SO2) that are priced in REMIND. +*' It uses the emission factors from mrremind::calcGAINS2025. +*' Important note: These emissions are not reported, but only used to +*' calculate air pollution costs. Instead, the air pollutant emissions +*' for all species and all 35 GAINS sectors are calculated and reported +*' in remind2::reportAirPollutantEmissions. *' @limitations EDGE-transport runs in between iterations and is therefore not fully optimized. @@ -17,6 +24,5 @@ $Ifi "%phase%" == "declarations" $include "./modules/11_aerosols/exoGAINS2025/de $Ifi "%phase%" == "datainput" $include "./modules/11_aerosols/exoGAINS2025/datainput.gms" $Ifi "%phase%" == "equations" $include "./modules/11_aerosols/exoGAINS2025/equations.gms" $Ifi "%phase%" == "presolve" $include "./modules/11_aerosols/exoGAINS2025/presolve.gms" -$Ifi "%phase%" == "postsolve" $include "./modules/11_aerosols/exoGAINS2025/postsolve.gms" *######################## R SECTION END (PHASES) ############################### *** EOF ./modules/11_aerosols/exoGAINS2025/realization.gms diff --git a/modules/11_aerosols/exoGAINS2025/sets.gms b/modules/11_aerosols/exoGAINS2025/sets.gms index 46b6a4c84f..45e2589b1d 100644 --- a/modules/11_aerosols/exoGAINS2025/sets.gms +++ b/modules/11_aerosols/exoGAINS2025/sets.gms @@ -6,18 +6,74 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/11_aerosols/exoGAINS2025/sets.gms sets -emisForEmiFac(all_enty) "types of emissions that are only calculated in a post-processing routine after the optimization" +emisForEmiFac11(all_enty) "types of emissions that are only calculated in a post-processing routine after the optimization" / - NOx - CO - VOC - SO2 - BC - OC - NH3 + nox + co + voc + so2 + bc + oc + nh3 / -sectorEndoEmi2te_dyn11(all_enty,all_enty,all_te,sectorEndoEmi) "map sectors to technologies" +all_sectorEmi11 "all sectors with emissions" +/ indst "emissions from industry sector" + res "emissions from residential sector" + trans "emissions from transport sector" + power "emissions from power sector" + solvents "emissions from solvents" + extraction "emissions from fuel extraction" + indprocess "process emissions from industry" + waste "emissions from waste" +/ + +sectorEndoEmi11(all_sectorEmi11) "sectors with endogenous emissions" +/ + indst "industry" + res "residential" + trans "transport" + power "power" +/ + +sectorEndoEmi2te11(all_enty,all_enty,all_te,sectorEndoEmi11) "map sectors to technologies" +/ + pegas.seel.ngcc.power + pegas.seel.ngt.power + seh2.seel.h2turb.power + pegas.seel.gaschp.power + pegas.sehe.gashp.power + pegas.segafos.gastr.indst + pegas.segafos.gastr.res + pecoal.seel.pc.power + pecoal.seel.coalchp.power + pecoal.sehe.coalhp.power + pecoal.sesofos.coaltr.indst + pecoal.sesofos.coaltr.res + peoil.seliqfos.refliq.trans + peoil.seliqfos.refliq.indst + peoil.seliqfos.refliq.res + peoil.seel.dot.power + pebiolc.seel.biochp.power + pebiolc.sehe.biohp.power + pebiolc.sesobio.biotr.indst + pebiolc.sesobio.biotr.res + pebiolc.sesobio.biotrmod.indst + seliqbio.fehos.tdbiohos.indst + seliqfos.fehos.tdfoshos.indst + seliqsyn.fehos.tdsynhos.indst + seliqbio.fehos.tdbiohos.res + seliqfos.fehos.tdfoshos.res + seliqsyn.fehos.tdsynhos.res + seliqbio.fedie.tdbiodie.trans + seliqfos.fedie.tdfosdie.trans + seliqsyn.fedie.tdsyndie.trans + seliqbio.fepet.tdbiopet.trans + seliqfos.fepet.tdfospet.trans + seliqsyn.fepet.tdsynpet.trans +/ + +sectorEndoEmi2te_dyn11(all_enty,all_enty,all_te,sectorEndoEmi11) "map sectors to technologies" / pecoal.seel.igcc.power pecoal.seel.igccc.power @@ -31,6 +87,6 @@ pebiolc.segabio.biogas.power ***------------------------------------------------------------------------- *** add module specific sets and mappings to the global sets and mappings ***------------------------------------------------------------------------- -sectorEndoEmi2te(sectorEndoEmi2te_dyn11) = YES; +sectorEndoEmi2te11(sectorEndoEmi2te_dyn11) = YES; *** EOF ./modules/11_aerosols/exoGAINS2025/sets.gms diff --git a/modules/11_aerosols/module.gms b/modules/11_aerosols/module.gms index 4be5de2089..5a284d99e7 100644 --- a/modules/11_aerosols/module.gms +++ b/modules/11_aerosols/module.gms @@ -8,9 +8,16 @@ *' @title aerosols *' -*' @description The 11_aerosols module calculates the air pollution emissions. +*' @description The 11_aerosols module calculates air pollution emissions for those +*' sectors (currently indst, trans, res, and power) and species +*' (currently BC, OC, and SO2) that are priced in REMIND. +*' It uses the emission factors from mrremind::calcGAINS2025. +*' Important note: These emissions are not reported, but only used to +*' calculate air pollution costs. Instead, the air pollutant emissions +*' for all species and all 35 GAINS sectors are calculated and reported +*' in remind2::reportAirPollutantEmissions. *' -*' @authors Sebastian Rauner, David Klein, Jessica Strefler, Laurin Köhler-Schindler +*' @authors Sebastian Rauner, David Klein, Jessica Strefler *###################### R SECTION START (MODULETYPES) ########################## $Ifi "%aerosols%" == "exoGAINS2025" $include "./modules/11_aerosols/exoGAINS2025/realization.gms" diff --git a/modules/15_climate/magicc7_ar6/datainput.gms b/modules/15_climate/magicc7_ar6/datainput.gms index 9375f8cedd..f1bffa2a47 100644 --- a/modules/15_climate/magicc7_ar6/datainput.gms +++ b/modules/15_climate/magicc7_ar6/datainput.gms @@ -72,8 +72,8 @@ display pm_emicapglob; pm_gmt_conv = 1; p15_gmt0(tall) = 1; -pm_globalMeanTemperature(tall) = 0; -pm_globalMeanTemperatureZeroed1900(tall) = 0; +pm_globalMeanTemperature(tall) = 1; +pm_globalMeanTemperatureZeroed1900(tall) = 1; pm_temperatureImpulseResponseCO2(tall,tall) = 0; *** EOF ./modules/15_climate/magicc7_ar6/datainput.gms diff --git a/modules/15_climate/magicc7_ar6/postsolve.gms b/modules/15_climate/magicc7_ar6/postsolve.gms index 9ac96d909c..427b6351bd 100644 --- a/modules/15_climate/magicc7_ar6/postsolve.gms +++ b/modules/15_climate/magicc7_ar6/postsolve.gms @@ -15,10 +15,21 @@ ***--------------------------------------------------------------------------- *' @code -* Run only on first iteration to avoid incomplete GDXs +*run only after 1st iteration due to incomplete reporting otherwise + +if(iteration.val gt 1, + Execute_unload 'fulldata_postsolve'; * Run the climate assessment script. Takes around 2-3m for a single parameter set, including harmonization and infilling + +*** Track runtime +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",climateAssessmentInterimRun," iteration.val:0; + Execute "Rscript climateAssessmentInterimRun.R"; + +*** Track runtime +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," iteration.val:0; + * Read in results Execute_Loadpoint 'p15_forc_magicc' p15_forc_magicc; Execute_Loadpoint 'p15_magicc_temp' pm_globalMeanTemperature = pm_globalMeanTemperature; @@ -69,6 +80,8 @@ if( ((iteration.val le 10) or ( mod(iteration.val,5 ) eq 0)) , *NOTE the MAGICC results (*.OUT files) are from the last pulse experiment now, so take care if reading them in after this point. $endif.cm_magicc_tirf +) + ***--------------------------------------------------------------------------- *' __Iterative adjustment of budgets or carbon taxes to meet forcing target__ ***--------------------------------------------------------------------------- diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index d0f816a158..2feb13ece1 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -54,21 +54,6 @@ $offdelim ; -Parameter f21_max_fe_sub(tall,all_regi,all_enty) "maximum final energy subsidy levels (in $/Gj) from REMIND version prior to rev. 5429" - / -$ondelim -$include "./modules/21_tax/on/input/f21_max_fe_sub.cs4r" -$offdelim - / -; - -Parameter f21_prop_fe_sub(tall,all_regi,all_enty) "subsidy proportional cap to avoid liquids increasing dramatically" - / -$ondelim -$include "./modules/21_tax/on/input/f21_prop_fe_sub.cs4r" -$offdelim - / -; *** transfer data to parameters and rescaling of FE parameters from $/GJ to trillion $ / TWa (subsidies also get adjusted in preloop.gms to avoid neg. prices) @@ -76,10 +61,6 @@ $offdelim p21_tau_fe_sub(ttot,all_regi,emi_sectors,entyFe)$f21_tau_fe_sub(ttot,all_regi,emi_sectors,entyFe) = f21_tau_fe_sub(ttot,all_regi,emi_sectors,entyFe)*0.001/sm_EJ_2_TWa; p21_tau_fuEx_sub(ttot,regi,entyPe)$f21_tau_fuEx_sub(ttot,regi,entyPe) = f21_tau_fuEx_sub(ttot,regi,entyPe)*0.001/sm_EJ_2_TWa; - p21_max_fe_sub(ttot,all_regi,entyFe)$f21_max_fe_sub(ttot,all_regi,entyFe) = f21_max_fe_sub(ttot,all_regi,entyFe)*0.001/sm_EJ_2_TWa; - p21_prop_fe_sub(ttot,all_regi,entyFe)$f21_prop_fe_sub(ttot,all_regi,entyFe) = f21_prop_fe_sub(ttot,all_regi,entyFe); - - *** -------------------------PE2SE Taxes--------------------------(Primary to secondary energy technology taxes, specified by technology) *** cb 20110923 load paths for technology taxes, subsidies and inconvenience costs @@ -169,8 +150,8 @@ Execute_Loadpoint 'input_ref' p21_ref_costInvTeAdj_RE = vm_costInvTeAdj.l; $endif.importtaxrc if (cm_startyear gt 2005, -execute_load "input_ref.gdx", pm_taxrevCO2LUC0; -execute_load "input_ref.gdx", pm_taxrevGHG0; +Execute_Loadpoint "input_ref.gdx", pm_taxrevCO2LUC0; +Execute_Loadpoint "input_ref.gdx", pm_taxrevGHG0; ); ***initialize co2 market taxes diff --git a/modules/21_tax/on/declarations.gms b/modules/21_tax/on/declarations.gms index efc90a6f95..4ba04585c3 100644 --- a/modules/21_tax/on/declarations.gms +++ b/modules/21_tax/on/declarations.gms @@ -53,8 +53,6 @@ p21_tau_CO2_tax_gdx_bau(ttot,all_regi) "tax path fr p21_tau_so2_tax(tall,all_regi) "so2 tax path" p21_tau_pe2se_tax(tall,all_regi,all_te) "tax path for PE2SE technologies" -p21_max_fe_sub(tall,all_regi,all_enty) "maximum final energy subsidy levels from REMIND version prior to rev. 5429 [$/TWa]" -p21_prop_fe_sub(tall,all_regi,all_enty) "subsidy proportional cap to avoid liquids increasing dramatically" p21_tau_fuEx_sub(tall,all_regi,all_enty) "subsidy path for fuel extraction [$/TWa]" p21_bio_EF(ttot,all_regi) "bioenergy emission factor, which is used to calculate the emission-factor-based tax level [GtC/TWa]" p21_tau_Import(ttot,all_regi,all_enty,tax_import_type_21) "tax on energy imports, only works on energy carriers traded on nash markets, tax defined as share of world market price pm_pvp [Unit: share]" diff --git a/modules/21_tax/on/equations.gms b/modules/21_tax/on/equations.gms index f614c22d6d..971c025c04 100644 --- a/modules/21_tax/on/equations.gms +++ b/modules/21_tax/on/equations.gms @@ -317,9 +317,13 @@ q21_taxrevFlex(t,regi)$( t.val ge max(2010, cm_startyear) ) .. ***--------------------------------------------------------------------------- q21_taxrevCCS(t,regi)$(t.val ge max(2010,cm_startyear)).. v21_taxrevCCS(t,regi) - =e= cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(t,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) ) - * (1/pm_ccsinjecrate(regi)) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1") !! fraction of injection constraint per year + =e= + cm_frac_CCS + * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), + pm_data(regi,"omf",te) * pm_inco0_t(t,regi,te) + * vm_co2CCS(t,regi,enty,enty2,te,rlf) + * vm_co2CCS(t,regi,enty,enty2,te,rlf) / (pm_dataccs(regi,"quan",te) * pm_ccsinjecrate(regi)) !! fraction of injection constraint per year + )) - p21_taxrevCCS0(t,regi) ; diff --git a/modules/21_tax/on/input/files b/modules/21_tax/on/input/files index 7d4b16dcb1..601ddbbb20 100644 --- a/modules/21_tax/on/input/files +++ b/modules/21_tax/on/input/files @@ -1,7 +1,5 @@ f21_tau_fe_tax.cs4r f21_tau_fe_sub.cs4r -f21_max_fe_sub.cs4r -f21_prop_fe_sub.cs4r f21_tau_pe_sub.cs4r f21_tax_convergence.cs4r f21_tax_convergence_rollback.cs4r diff --git a/modules/21_tax/on/postsolve.gms b/modules/21_tax/on/postsolve.gms index b8ea8879ca..d9f8ad42a5 100644 --- a/modules/21_tax/on/postsolve.gms +++ b/modules/21_tax/on/postsolve.gms @@ -21,9 +21,14 @@ OPTION decimals =3; pm_taxrevGHG0(t,regi) = pm_taxCO2eqSum(t,regi) * (vm_co2eq.l(t,regi) - vm_emiMacSector.l(t,regi,"co2luc")$(cm_multigasscen ne 3)); pm_taxrevCO2Sector0(ttot,regi,emi_sectors) = p21_CO2TaxSectorMarkup(ttot,regi,emi_sectors) * pm_taxCO2eqSum(ttot,regi) * vm_emiCO2Sector.l(ttot,regi,emi_sectors); pm_taxrevCO2LUC0(t,regi) = pm_taxCO2eqSum(t,regi) * vm_emiMacSector.l(t,regi,"co2luc")$(cm_multigasscen ne 3); -p21_taxrevCCS0(ttot,regi) = cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(ttot,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) ) - * (1/pm_ccsinjecrate(regi)) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); + +p21_taxrevCCS0(ttot,regi) = cm_frac_CCS + * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), + pm_data(regi,"omf",te) * pm_inco0_t(ttot,regi,te) + * vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) + * vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) / ( pm_dataccs(regi,"quan",te) * pm_ccsinjecrate(regi)) + )); + pm_taxrevNetNegEmi0(ttot,regi) = s21_frac_NetNegEmi * pm_taxCO2eqSum(ttot,regi) * ( (1 - cm_NetNegEmi_calculation) * vm_emiAllco2neg.l(ttot,regi) + cm_NetNegEmi_calculation * v21_emiAllco2neg_acrossIterations.l(ttot,regi) ); p21_taxrevFE0(ttot,regi) = sum((entyFe,sector)$entyFe2Sector(entyFe,sector), ( p21_tau_fe_tax(ttot,regi,sector,entyFe) + p21_tau_fe_sub(ttot,regi,sector,entyFe) ) diff --git a/modules/21_tax/on/preloop.gms b/modules/21_tax/on/preloop.gms index cd743efd52..3bbae621e5 100644 --- a/modules/21_tax/on/preloop.gms +++ b/modules/21_tax/on/preloop.gms @@ -7,13 +7,6 @@ *** SOF ./modules/21_tax/on/preloop.gms -*** Adjustment of final energy subsidies to avoid neg. implicit 2005 prices that result in huge demand increases in 2010 and 2015 -*** Maximum final energy subsidy levels (in $/Gj) from REMIND version prior to rev. 5429 -p21_tau_fe_sub(ttot,regi,sector,entyFe)$p21_max_fe_sub(ttot,regi,entyFe) = max(p21_tau_fe_sub(ttot,regi,sector,entyFe),-p21_max_fe_sub(ttot,regi,entyFe)); -*** Subsidy proportional cap to avoid liquids increasing dramatically -p21_tau_fe_sub(ttot,regi,sector,entyFe)$p21_prop_fe_sub(ttot,regi,entyFe) = p21_tau_fe_sub(ttot,regi,sector,entyFe) * p21_prop_fe_sub(ttot,regi,entyFe); - - *** ------------------------- Temporal development of final energy TAXES and SUBSIDIES, depending on cm_fetaxscen *** Set time path for: *** - final energy taxes (p21_tau_fe_tax, p21_tau_pe2se_tax) diff --git a/modules/21_tax/on/presolve.gms b/modules/21_tax/on/presolve.gms index 8f74fcfe58..f52c5bff6a 100644 --- a/modules/21_tax/on/presolve.gms +++ b/modules/21_tax/on/presolve.gms @@ -27,9 +27,14 @@ p21_tau_so2_tax(ttot,regi)$(ttot.val>2100)=p21_tau_so2_tax("2100",regi); pm_taxrevGHG0(t,regi) = pm_taxCO2eqSum(t,regi) * (vm_co2eq.l(t,regi) - vm_emiMacSector.l(t,regi,"co2luc")$(cm_multigasscen ne 3)); pm_taxrevCO2Sector0(ttot,regi,emi_sectors) = p21_CO2TaxSectorMarkup(ttot,regi,emi_sectors) * pm_taxCO2eqSum(ttot,regi) * vm_emiCO2Sector.l(ttot,regi,emi_sectors); pm_taxrevCO2LUC0(t,regi) = pm_taxCO2eqSum(t,regi) * vm_emiMacSector.l(t,regi,"co2luc")$(cm_multigasscen ne 3); -p21_taxrevCCS0(ttot,regi) = cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(ttot,regi,"ccsinje") - * ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) ) - * (1/pm_ccsinjecrate(regi)) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1"); + +p21_taxrevCCS0(ttot,regi) = cm_frac_CCS + * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCo2(enty),enty2,te), + pm_data(regi,"omf",te) * pm_inco0_t(ttot,regi,te) + * vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) + * vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf) / ( pm_dataccs(regi,"quan",te) * pm_ccsinjecrate(regi)) + )); + pm_taxrevNetNegEmi0(ttot,regi) = s21_frac_NetNegEmi * pm_taxCO2eqSum(ttot,regi) * ( (1 - cm_NetNegEmi_calculation) * vm_emiAllco2neg.l(ttot,regi) + cm_NetNegEmi_calculation * v21_emiAllco2neg_acrossIterations.l(ttot,regi) ); p21_emiAllco2neg0(ttot,regi) = vm_emiAllco2neg.l(ttot,regi); p21_emiAllco2neg_acrossIterations0(ttot,regi) = v21_emiAllco2neg_acrossIterations.l(ttot,regi); diff --git a/modules/24_trade/se_trade/datainput.gms b/modules/24_trade/se_trade/datainput.gms index 0964c75235..52be871a2d 100644 --- a/modules/24_trade/se_trade/datainput.gms +++ b/modules/24_trade/se_trade/datainput.gms @@ -186,8 +186,8 @@ $endif.import_h2_EU p24_seAggReference(ttot,regi,seAgg) = sum(enty$seAgg2se(seAgg,enty), sum(se2fe(enty,enty2,te), pm_prodFEReference(ttot,regi,enty,enty2,te))); p24_FEregiShareInRegiGroup(ttot,ext_regi,regi,seAgg)$(regi_group(ext_regi,regi) and p24_seAggReference(ttot,regi,seAgg)) = p24_seAggReference(ttot,regi,seAgg) / sum(regi2$regi_group(ext_regi,regi2), p24_seAggReference(ttot,regi2,seAgg)); -execute_load "input_ref.gdx", p24_demFeForEsReference = vm_demFeForEs.l; -execute_load "input_ref.gdx", p24_demFeIndSubReference = o37_demFeIndSub; +Execute_Loadpoint "input_ref.gdx", p24_demFeForEsReference = vm_demFeForEs.l; +Execute_Loadpoint "input_ref.gdx", p24_demFeIndSubReference = o37_demFeIndSub; *** calculate regional share of each region in the total of region group ext_regi with respect to FE demand, for chemicals + aviation liquids p24_aviationAndChemicalsFE(ttot,regi) = p24_demFeForEsReference(ttot,regi,"fedie","esdie_pass_lo","te_esdie_pass_lo") + !! aviation FE demand diff --git a/modules/26_agCosts/costs/datainput.gms b/modules/26_agCosts/costs/datainput.gms index a7f9918a6d..730c9bb783 100644 --- a/modules/26_agCosts/costs/datainput.gms +++ b/modules/26_agCosts/costs/datainput.gms @@ -5,7 +5,8 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de *** SOF ./modules/26_agCosts/costs/datainput.gms -*FP* read agricultural costs (all except bioenergy) from MAgPIE + +***FP* read agricultural costs (all except bioenergy) from MAgPIE pm_NXagr(tall,all_regi) = 0; @@ -21,17 +22,11 @@ $offdelim / ; -*' In coupled runs landuse costs are directly transferred from MAgPIE run instead of reading them from the look-up table. -$if %cm_MAgPIE_coupling% == "on" table p26_totLUcost_coupling(tall,all_regi) "total landuse cost from MAgPIE" -$if %cm_MAgPIE_coupling% == "on" $ondelim -$if %cm_MAgPIE_coupling% == "on" $include "./modules/26_agCosts/costs/input/p26_totLUcost_coupling.csv"; -$if %cm_MAgPIE_coupling% == "on" $offdelim -$if %cm_MAgPIE_coupling% == "on" ; +*' In coupled runs landuse costs are first read from the look-up table and get updated (in presolve) when MAgPIE has run. *** Total land use costs including MAC costs (either from look-up table for standalone runs or from MAgPIE in coupled runs) *' @code -$if %cm_MAgPIE_coupling% == "off" p26_totLUcosts_withMAC(ttot,regi) = p26_totLUcostLookup(ttot,regi,"%cm_LU_emi_scen%","%cm_rcp_scen%"); -$if %cm_MAgPIE_coupling% == "on" p26_totLUcosts_withMAC(ttot,regi) = p26_totLUcost_coupling(ttot,regi); +p26_totLUcosts_withMAC(ttot,regi) = p26_totLUcostLookup(ttot,regi,"%cm_LU_emi_scen%","%cm_rcp_scen%"); *' **Land use emissions MAC cost** *' In *standalone runs* land use MAC costs are calculated endogenously in REMIND. Since they are also included @@ -48,9 +43,7 @@ $offdelim / ; -*' @code *** MAC costs (either from look-up table for standalone runs or zero in coupled runs because MAgPIE's total costs already include MAC costs) -$if %cm_MAgPIE_coupling% == "off" p26_macCostLu(ttot,regi) = p26_macCostLuLookup(ttot,regi,"%cm_LU_emi_scen%","%cm_rcp_scen%"); -$if %cm_MAgPIE_coupling% == "on" p26_macCostLu(ttot,regi) = 0; -*' @stop +p26_macCostLu(ttot,regi) = p26_macCostLuLookup(ttot,regi,"%cm_LU_emi_scen%","%cm_rcp_scen%"); + *** EOF ./modules/26_agCosts/costs/datainput.gms diff --git a/modules/26_agCosts/costs/declarations.gms b/modules/26_agCosts/costs/declarations.gms index e871569fe0..61966729c3 100644 --- a/modules/26_agCosts/costs/declarations.gms +++ b/modules/26_agCosts/costs/declarations.gms @@ -7,9 +7,14 @@ *** SOF ./modules/26_agCosts/costs/declarations.gms parameter pm_totLUcosts_excl_costFuBio(tall,all_regi) "Total landuse costs (agriculture, MAC, etc) excluding bioenergy. In standalone runs MAC costs are substituted by costs from the endogenous REMIND-MAC [T$US]" +p26_totLUcost_coupling(tall,all_regi) "Total landuse cost read from magpie.gdx in coupling [T$US]" p26_totLUcosts_withMAC(tall,all_regi) "Total landuse costs including agricultural MAC costs (agriculture, bioenergy, MAC, etc) [T$US]" p26_macCostLu(tall,all_regi) "Land use emissions MAC cost [T$US]" pm_NXagr(tall,all_regi) "Net agricultural exports" + +o_p26_totLUcosts_withMAC(iteration,ttot,all_regi) "track p26_totLUcosts_withMAC across Nash iterations" +o_pm_totLUcosts_excl_costFuBio(iteration,ttot,all_regi) "track pm_totLUcosts across Nash iterations" +o_p26_macCostLu(iteration,ttot,all_regi) "track p26_macCostLu across Nash iterations" ; *** EOF ./modules/26_agCosts/costs/declarations.gms diff --git a/modules/26_agCosts/costs/presolve.gms b/modules/26_agCosts/costs/presolve.gms index aa0e8b6d0c..a93084bfcc 100644 --- a/modules/26_agCosts/costs/presolve.gms +++ b/modules/26_agCosts/costs/presolve.gms @@ -7,6 +7,22 @@ *** SOF ./modules/26_agCosts/costs/presolve.gms *' @code + +*** Since in the coupling MAgPIE data is first required in core/presolve +*** MAgPIE is executed there. + + +*** MAC costs must be zero once MAgPIE has run for the first time because MAgPIE's total costs (see below) already include MAC costs. +if(sm_magpieIter gt 0, + p26_macCostLu(ttot,regi) = 0; +); + +*' Update landuse costs only and every time MAgPIE actually has run. +if(sm_updateMagpieData gt 0, + Execute_Loadpoint 'magpieData.gdx' p26_totLUcost_coupling; + p26_totLUcosts_withMAC(ttot,regi) = p26_totLUcost_coupling(ttot,regi); +); + *' **Total agricultural costs (excluding MAC costs)** *' For standalone runs replace exogenous land use MAC cots (p26_macCostLu) with endogenous land use MAC costs (pm_macCost). *' Note: dont include mac costs for CO2luc, because they are already implicitly included in p26_totLUcosts_withMAC (and not in p26_macCostLu). @@ -29,4 +45,9 @@ pm_totLUcosts_excl_costFuBio(ttot,regi) = p26_totLUcosts_withMAC(ttot,regi) *' @stop +*** Save values for tracking across Nash iterations +o_p26_totLUcosts_withMAC(iteration,ttot,regi) = p26_totLUcosts_withMAC(ttot,regi); +o_pm_totLUcosts_excl_costFuBio(iteration,ttot,regi) = pm_totLUcosts_excl_costFuBio(ttot,regi); +o_p26_macCostLu(iteration,ttot,regi) = p26_macCostLu(ttot,regi); + *** EOF ./modules/26_agCosts/costs/presolve.gms diff --git a/modules/26_agCosts/costs_trade/not_used.txt b/modules/26_agCosts/costs_trade/not_used.txt index 80d5d8deb8..a586a6b2cd 100644 --- a/modules/26_agCosts/costs_trade/not_used.txt +++ b/modules/26_agCosts/costs_trade/not_used.txt @@ -6,4 +6,6 @@ # | Contact: remind@pik-potsdam.de name,type,reason pm_macCost,input,questionnaire -pm_pebiolc_costs_emu_preloop,input,irrelevant \ No newline at end of file +pm_pebiolc_costs_emu_preloop,input,irrelevant +sm_magpieIter,switch,not needed +sm_updateMagpieData,switch,not needed \ No newline at end of file diff --git a/modules/26_agCosts/off/not_used.txt b/modules/26_agCosts/off/not_used.txt index 80d5d8deb8..a586a6b2cd 100644 --- a/modules/26_agCosts/off/not_used.txt +++ b/modules/26_agCosts/off/not_used.txt @@ -6,4 +6,6 @@ # | Contact: remind@pik-potsdam.de name,type,reason pm_macCost,input,questionnaire -pm_pebiolc_costs_emu_preloop,input,irrelevant \ No newline at end of file +pm_pebiolc_costs_emu_preloop,input,irrelevant +sm_magpieIter,switch,not needed +sm_updateMagpieData,switch,not needed \ No newline at end of file diff --git a/modules/29_CES_parameters/calibrate/datainput.gms b/modules/29_CES_parameters/calibrate/datainput.gms index b65b3fbabc..361ab61eb7 100644 --- a/modules/29_CES_parameters/calibrate/datainput.gms +++ b/modules/29_CES_parameters/calibrate/datainput.gms @@ -152,14 +152,14 @@ $offdelim / parameter -f29_capitalQuantity(tall,all_regi,all_demScen,all_in) "capital quantities" +f29_capitalQuantity(tall,all_regi,all_GDPpopScen,all_in) "capital quantities" / $ondelim $include "./modules/29_CES_parameters/calibrate/input/f29_capitalQuantity.cs4r" $offdelim / ; -p29_capitalQuantity(t,regi,ppfKap) = f29_capitalQuantity(t,regi,"%cm_demScen%",ppfKap); +p29_capitalQuantity(t,regi,ppfKap) = f29_capitalQuantity(t,regi,"%cm_GDPpopScen%",ppfKap); *** fix industry energy efficiency capital for mrremind rounding loop ((ttot,regi,ppfKap_industry_dyn37(in))$( t(ttot-1) AND t(ttot+1) ), @@ -195,7 +195,7 @@ p29_capitalQuantity(tall,all_regi,"kap") *** Substract the end-use capital quantities from the aggregate capital *** Load CES parameters from the last run -Execute_Load 'input' p29_cesdata_load = pm_cesdata; +Execute_Loadpoint 'input' p29_cesdata_load = pm_cesdata; $ifthen.testOneRegi "%optimization%" == "testOneRegi" !! optimization !! carry along CES parameters for other regions in testOneRegi runs pm_cesdata(t,regi,in,cesParameter)$( NOT regi_dyn29(regi) ) diff --git a/modules/29_CES_parameters/calibrate/preloop.gms b/modules/29_CES_parameters/calibrate/preloop.gms index 4df3d8e840..b74642df9f 100644 --- a/modules/29_CES_parameters/calibrate/preloop.gms +++ b/modules/29_CES_parameters/calibrate/preloop.gms @@ -26,7 +26,7 @@ display "check starting pm_cesdata", pm_cesdata; *** Abort if new structure flag is not set but should be $ifthen.old_structure %c_CES_calibration_new_structure% == "0" -Execute_Load 'input' ces2_29=cesOut2cesIn; +Execute_Loadpoint 'input' ces2_29=cesOut2cesIn; sm_tmp = 0; loop ( ces2_29(out,in)$( NOT cesOut2cesIn2(out,in) ), sm_tmp = 1); loop (cesOut2cesIn2(out,in)$( NOT ces2_29(out,in) ), sm_tmp = 1); @@ -35,7 +35,7 @@ if (sm_tmp, abort "CES structure does not match. Enable c_CES_calibration_new_structure"; ); -Execute_Load 'input' regi_29_load=regi; +Execute_Loadpoint 'input' regi_29_load=regi; sm_tmp = 0; loop ( regi_29_load(regi2)$( NOT regi(regi2) ), sm_tmp = 1); loop (regi(regi2)$( NOT regi_29_load(regi2) ), sm_tmp = 1); diff --git a/modules/30_biomass/magpie_40/bounds.gms b/modules/30_biomass/magpie/bounds.gms similarity index 55% rename from modules/30_biomass/magpie_40/bounds.gms rename to modules/30_biomass/magpie/bounds.gms index 299a002fed..96c47e8fd7 100644 --- a/modules/30_biomass/magpie_40/bounds.gms +++ b/modules/30_biomass/magpie/bounds.gms @@ -4,30 +4,83 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/bounds.gms +*** SOF ./modules/30_biomass/magpie/bounds.gms *' @code{extrapage: "00_model_assumptions"} *** ------------------------------------------------------------- *' #### Bounds on 1st generation biomass annual production *** ------------------------------------------------------------- -*' Prescribe upper and lower limit for first generation biomass from 2030 on, -*' so REMIND has some freedom before. After 2030 the production of 1st -*' generation biofuels should be fixed (within a 90-100% range to avoid -*' infeasibilities), since production values are exogenously harmonized with -*' MAgPIE. -*' Note: these bounds need to be updated since they are, in some regions, too -*' strict to be compatible with historically installed capacities, such that -*' the bounds in its current form can only be satisfied in combination with -*' early retirement. -vm_fuExtr.up(t,regi,"pebios","5")$(t.val ge 2030) = p30_datapebio(regi,"pebios","5","maxprod",t); -vm_fuExtr.up(t,regi,"pebioil","5")$(t.val ge 2030) = p30_datapebio(regi,"pebioil","5","maxprod",t); - -if(cm_1stgen_phaseout=0, - vm_fuExtr.lo(t,regi,"pebios","5")$(t.val ge 2030) = 0.9 * p30_datapebio(regi,"pebios","5","maxprod",t); - vm_fuExtr.lo(t,regi,"pebioil","5")$(t.val ge 2030) = 0.9 * p30_datapebio(regi,"pebioil","5","maxprod",t); -else - vm_fuExtr.lo(t,regi,"pebios","5")$(t.val eq 2030) = 0.9 * p30_datapebio(regi,"pebios","5","maxprod",t); - vm_fuExtr.lo(t,regi,"pebioil","5")$(t.val eq 2030) = 0.9 * p30_datapebio(regi,"pebioil","5","maxprod",t); +*' 1st generation biofuel quantities (from sugar/starch and oil crops) are not +*' endogenously modeled but follow exogenous trajectories from IEA and FAO data +*' and some future projections for the near term (until 2030). To align data +*' with MAgPIE we mostly rely on FAO data for historic feedstock quantities, so +*' `vm_fuExtr` is fixed to values from `p30_datapebio`, coming from FAO. +*' Additionally there is the constraint to match historical capacities for the +*' respective conversion technologies in 2005 from the IEA. Thus, the bound on +*' vm_fuExtr is only applied from 2010 on (in 2005 feedstock quantities are +*' fully determined via `p05_cap0`). However, in some cases the capacities that +*' were build in 2005 or before require a feedstock supply that is higher +*' than what the FAO-based bound on `vm_fuExtr` would allow for, i.e., FAO and +*' IEA data do not match. In that case we relax the upper bound for all time +*' steps such that the 2005 capacity constraint implcitly derived from IEA can +*' still be matched. Eventually the lower bound is set to (almost) the upper +*' bound to enforce matching the historical feedstock quantities. Please note +*' that the link between capacity additions `vm_deltaCap` and the feedstock +*' quantities basically follows what happens in the equations `qm_fuel2pe`, +*' `q_balPe`, `q_transPe2se`, `q_limitCapSe` and `q_cap`. It is a bit +*' simplified here, assuming that there is a one to one mapping between PE +*' (pebios, pebioil) and the respective conversion technologies (bioeths, +*' biodiesel, respectively), which is currently the case. If this changes in +*' the future (which is unlikely), this part needs to be adapted. + +*** Set exogenous trajectory for sugar/starch crop feedstocks, using a corridor +*** for lower and upper bounds of 0.99 to 1.01 for numerical flexibility +vm_fuExtr.up(t, regi, "pebios", "5")$(t.val ge 2010 AND t.val ge cm_startyear) = 1.01 * max( + !! Use original bounds based on (mainly) FAO inpout data. + p30_datapebio(regi,"pebios","5","maxprod",t), + + !! If historic capacities from IEA input require a larger feedstock supply, + !! relax the bound in 2010 and in all following time steps. We assume that + !! the bound should never fall below the feedstock supply in 2005. For that + !! we convert the sum of all (depreciated) historic capacity additions + !! `vm_deltaCap` in 2005 to feedstock supply quantities. + 1 / pm_eta_conv(t,regi,"bioeths") * pm_cf(t,regi,"bioeths") * pm_dataren(regi,"nur","1","bioeths") + * sum(ttot$(ttot.val eq 2005), + sum(opTimeYr2te("bioeths",opTimeYr) $ (tsu2opTimeYr(ttot,opTimeYr) AND (opTimeYr.val ge 1)), + pm_ts(ttot - (pm_tsu2opTimeYr(ttot,opTimeYr) - 1)) + * pm_omeg(regi,opTimeYr+1,"bioeths") + * vm_deltaCap.up(ttot - (pm_tsu2opTimeYr(ttot,opTimeYr) - 1),regi,"bioeths","1") + ) + ) + ); +vm_fuExtr.lo(t, regi, "pebios", "5")$(t.val ge 2010 AND t.val ge cm_startyear) = 0.98 * vm_fuExtr.up(t, regi, "pebios", "5"); + +*** Set exogenous trajectory for oil crop feedstocks, using a corridor for +*** lower and upper bounds of 0.99 to 1.01 for numerical flexibility +vm_fuExtr.up(t, regi, "pebioil", "5")$(t.val ge 2010 AND t.val ge cm_startyear) = 1.01 * max( + !! Use original bounds based on (mainly) FAO inpout data. + p30_datapebio(regi,"pebioil","5","maxprod",t), + + !! If historic capacities from IEA input require a larger feedstock supply, + !! relax the bound in 2010 and in all following time steps. We assume that + !! the bound should never fall below the feedstock supply in 2005. For that + !! we convert the sum of all (depreciated) historic capacity additions + !! `vm_deltaCap` in 2005 to feedstock supply quantities. + 1 / pm_eta_conv(t,regi,"biodiesel") * pm_cf(t,regi,"biodiesel") * pm_dataren(regi,"nur","1","biodiesel") + * sum(ttot$(ttot.val eq 2005), + sum(opTimeYr2te("biodiesel",opTimeYr) $ (tsu2opTimeYr(ttot,opTimeYr) AND (opTimeYr.val ge 1)), + pm_ts(ttot - (pm_tsu2opTimeYr(ttot,opTimeYr) - 1)) + * pm_omeg(regi,opTimeYr+1,"biodiesel") + * vm_deltaCap.up(ttot - (pm_tsu2opTimeYr(ttot,opTimeYr) - 1),regi,"biodiesel","1") + ) + ) + ); +vm_fuExtr.lo(t, regi, "pebioil", "5")$(t.val ge 2010 AND t.val ge cm_startyear) = 0.98 * vm_fuExtr.up(t, regi, "pebioil", "5"); + +*** Relax lower bound after 2030 in case of a 1st gen phaseout scenario. +if(cm_1stgen_phaseout=1, + vm_fuExtr.lo(t,regi,"pebios","5")$(t.val gt 2030) = 0; + vm_fuExtr.lo(t,regi,"pebioil","5")$(t.val gt 2030) = 0; ); @@ -127,7 +180,7 @@ if (cm_phaseoutBiolc eq 1, $IFTHEN.bioprod_regi_lim not "%cm_bioprod_regi_lim%" == "off" loop( ext_regi$(p30_bioprod_regi_lim(ext_regi)), loop(regi$regi_groupExt(ext_regi,regi), - v30_BioPEProdTotal.up(t,regi)$(t.val ge 2035)= p30_bioprod_regi_lim(ext_regi)*sm_EJ_2_TWa + v30_BioPEProdTotal.up(t,regi)$(t.val ge max(2010, cm_startyear))= p30_bioprod_regi_lim(ext_regi)*sm_EJ_2_TWa *** distribute across regions in a region group by share in 2005 biomass production as the model is initialized in 2005 with fixed historic production * v30_BioPEProdTotal.l("2005",regi) / sum(regi2$regi_groupExt(ext_regi,regi2), @@ -136,4 +189,4 @@ loop( ext_regi$(p30_bioprod_regi_lim(ext_regi)), ); $ENDIF.bioprod_regi_lim -*** EOF ./modules/30_biomass/magpie_40/bounds.gms +*** EOF ./modules/30_biomass/magpie/bounds.gms diff --git a/modules/30_biomass/magpie_40/datainput.gms b/modules/30_biomass/magpie/datainput.gms similarity index 66% rename from modules/30_biomass/magpie_40/datainput.gms rename to modules/30_biomass/magpie/datainput.gms index b41fc32d38..8f1e7fe825 100644 --- a/modules/30_biomass/magpie_40/datainput.gms +++ b/modules/30_biomass/magpie/datainput.gms @@ -4,19 +4,19 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/datainput.gms +*** SOF ./modules/30_biomass/magpie/datainput.gms *** read in regional maxprod of pebioil and pebios (1st generation) biomass. table p30_bio1stgen(tall,all_regi,all_enty) "regional maximal production potential for 1st generation crops only (pebioil, pebios)" $ondelim -$include "./modules/30_biomass/magpie_40/input/p30_bio1stgen.cs3r" +$include "./modules/30_biomass/magpie/input/p30_bio1stgen.cs3r" $offdelim ; *** read in regional maxprod of pebiolc residues table p30_biolcResidues(tall,all_regi,all_LU_emi_scen) "regional potential for pebiolc residues" $ondelim -$include "./modules/30_biomass/magpie_40/input/p30_biolcResidues.cs3r" +$include "./modules/30_biomass/magpie/input/p30_biolcResidues.cs3r" $offdelim ; @@ -35,48 +35,34 @@ p30_datapebio(regi,"pebios","5","maxprod",ttot)$(ttot.val ge 2005) = p30_bio1stg p30_datapebio(regi,"pebioil","5","maxprod",ttot)$(ttot.val ge 2005) = p30_bio1stgen(ttot,regi,"pebioil") * sm_EJ_2_TWa / 1000; display p30_datapebio; -*DK* Read prices and costs for 2nd gen. purpose grown bioenergy from MAgPIE (calculated with demnad from previous Remind run) p30_pebiolc_pricemag(ttot,regi) = 0; -$if %cm_MAgPIE_coupling% == "on" table p30_pebiolc_pricemag_coupling(tall,all_regi) "prices and costs for 2nd gen. purpose grown bioenergy from MAgPIE" -$if %cm_MAgPIE_coupling% == "on" $ondelim -$if %cm_MAgPIE_coupling% == "on" $include "./modules/30_biomass/magpie_40/input/p30_pebiolc_pricemag_coupling.csv"; -$if %cm_MAgPIE_coupling% == "on" $offdelim -$if %cm_MAgPIE_coupling% == "on" ; -$if %cm_MAgPIE_coupling% == "on" p30_pebiolc_pricemag(ttot,regi) = p30_pebiolc_pricemag_coupling(ttot,regi); +*** In coupled runs p30_pebiolc_pricemag gets updated in presolve since it changes between Nash iterations *** Read production of ligno-cellulosic purpose grown bioenergy from look-up table (used to calculate bioenergy costs in standalone runs and substract them from budget equation) parameter p30_biolcProductionLookup(tall,all_regi,all_LU_emi_scen,all_rcp_scen) "regional production of pebiolc purpose grown" / $ondelim -$include "./modules/30_biomass/magpie_40/input/p30_biolcProductionLookup.cs4r" +$include "./modules/30_biomass/magpie/input/p30_biolcProductionLookup.cs4r" $offdelim / ; *** select pebiolc productoion from look-up table according to SSP and RCP pm_pebiolc_demandmag(ttot,regi) = p30_biolcProductionLookup(ttot,regi,"%cm_LU_emi_scen%","%cm_rcp_scen%"); - -*DK* In coupled runs overwrite pebiolc production from look-up table with actual MAgPIE values. -*DK* Read production of 2nd gen. purpose grown bioenergy from MAgPIE (given to MAgPIE from previous Remind run) -$if %cm_MAgPIE_coupling% == "on" table pm_pebiolc_demandmag_coupling(tall,all_regi) "production of 2nd gen. purpose grown bioenergy from MAgPIE" -$if %cm_MAgPIE_coupling% == "on" $ondelim -$if %cm_MAgPIE_coupling% == "on" $include "./modules/30_biomass/magpie_40/input/pm_pebiolc_demandmag_coupling.csv"; -$if %cm_MAgPIE_coupling% == "on" $offdelim -$if %cm_MAgPIE_coupling% == "on" ; -$if %cm_MAgPIE_coupling% == "on" pm_pebiolc_demandmag(ttot,regi) = pm_pebiolc_demandmag_coupling(ttot,regi); +*** In coupled runs pm_pebiolc_demandmag gets updated in presolve since it changes between Nash iterations *** Read parameters for bioenergy supply curve parameter f30_bioen_price(tall,all_regi,all_LU_emi_scen,all_rcp_scen,all_charScen) "time dependent fit coefficients for bioenergy price formula" / $ondelim -$include "./modules/30_biomass/magpie_40/input/f30_bioen_price.cs4r" +$include "./modules/30_biomass/magpie/input/f30_bioen_price.cs4r" $offdelim / ; - +*** Why is this necessary? Isn't pm_pebiolc_costs_emu_preloop ALWAYS calculated in preloop, overwriting what has been loaded here? if (cm_startyear gt 2005, -execute_load "input_ref.gdx", pm_pebiolc_costs_emu_preloop; +Execute_Loadpoint "input_ref.gdx", pm_pebiolc_costs_emu_preloop; ); *** Select bioenergy bioenergy supply curve according to SSP scenario @@ -93,4 +79,4 @@ loop(ttot$( (ttot.val = 2005) OR (ttot.val = 2010) ), ); display i30_bioen_price_a, i30_bioen_price_b; -*** EOF ./modules/30_biomass/magpie_40/datainput.gms +*** EOF ./modules/30_biomass/magpie/datainput.gms diff --git a/modules/30_biomass/magpie_40/declarations.gms b/modules/30_biomass/magpie/declarations.gms similarity index 79% rename from modules/30_biomass/magpie_40/declarations.gms rename to modules/30_biomass/magpie/declarations.gms index 58fce4aace..6a67f93cf9 100644 --- a/modules/30_biomass/magpie_40/declarations.gms +++ b/modules/30_biomass/magpie/declarations.gms @@ -4,7 +4,7 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/declarations.gms +*** SOF ./modules/30_biomass/magpie/declarations.gms scalars s30_D2TD "Multiplicative factor to convert from Dollar to TeraDollar" /1.0e-12/ @@ -20,17 +20,16 @@ p30_max_pebiolc_path_glob(tall) "Time path of global maximal peb p30_maxprod_residue(ttot,all_regi) "Maximal potential of residues enhanced by demand of biotr [TWa]" p30_pebiolc_pricemag(tall,all_regi) "Prices for lignocellulosic purpose grown bioenergy from MAgPIE [T$US/TWa]" pm_pebiolc_demandmag(tall,all_regi) "Production of lignocellulosic purpose grown bioenergy from MAgPIE [TWa]" +p30_pebiolc_demand_helper_level(tall,all_regi) "Save level of vm_fuelex for a better starting point since it is overwritten between nash iterations" +p30_pebiolc_demand_helper_upper(tall,all_regi) "Save upper bound on vm_fuelex to preserve it across Nash iterations since it is overwritten between nash iterations" p30_demPe(ttot,all_regi) "Primary energy demand imported from gdx or previous iteration [TWa]" - $IFTHEN.bioprod_regi_lim not "%cm_bioprod_regi_lim%" == "off" p30_bioprod_regi_lim(ext_regi) "limit of total biomass production per region or region group [EJ/yr]" / %cm_bioprod_regi_lim% / $ENDIF.bioprod_regi_lim - - *** Shift factor calculation -pm_pebiolc_costs_emu_preloop(ttot,all_regi) "Bioenergy costs calculated with emulator using MAgPIE demand. For shift factor calculation [T$US]" +pm_pebiolc_costs_emu_preloop(ttot,all_regi) "Bioenergy costs calculated with emulator using MAgPIE demand. For shift factor calculation [T$US]" p30_pebiolc_price_emu_preloop(ttot,all_regi) "Bioenergy price calculated with emulator using MAgPIE demand. For shift factor calculation [T$US/TWa]" p30_pebiolc_price_emu_preloop_shifted(ttot,all_regi) "Bioenergy price calculated with emulator using MAgPIE demand after shift factor calculation [T$US/TWa]" p30_pebiolc_pricshift(ttot,all_regi) "Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices [-]" @@ -46,10 +45,18 @@ i30_bioen_price_b(ttot,all_regi) "Time dependent slope in bioenergy price form p30_pebiolc_price_dummy "Dummy for the bio-energy price to match the bioenergy bound cm_maxProdBiolc" p30_max_pebiolc_dummy "Dummy for bio energy supply at p30_pebiolc_price_dummy" p30_fuelex_dummy(all_regi) "Dummy for bio-energy supply per region" + +*** Parameters used to track other parameters across Nash iterations +o_p30_pebiolc_pricmult(iteration,ttot,all_regi) "track p30_pebiolc_pricmult across Nash iterations" +o_p30_pebiolc_pricemag(iteration,ttot,all_regi) "track o_p30_pebiolc_pricemag across Nash iterations" +o_p30_pebiolc_price_emu_preloop(iteration,ttot,all_regi) "track p30_pebiolc_price_emu_preloop across Nash iterations" +o_p30_pebiolc_price_emu_preloop_shifted(iteration,ttot,all_regi) "track p30_pebiolc_price_emu_preloop_shifted across Nash iterations" +o_pm_pebiolc_costs_emu_preloop(iteration,ttot,all_regi) "track p30_pebiolc_costs_emu_preloop across Nash iterations" +o_v30_pebiolc_costs(iteration,ttot,all_regi) "track v30_pebiolc_costs across Nash iterations" ; variables -vm_costFuBio(ttot,all_regi) "fuel costs from bioenergy production (can be negative depending on total agricultural cost) [T$]" +vm_costFuBio(ttot,all_regi) "fuel costs from bioenergy production [T$US]" vm_pebiolc_price(ttot,all_regi) "bioenergy price based on MAgPIE supply curves [T$/TWa]" v30_pebiolc_costs(ttot,all_regi) "Bioenergy costs according to MAgPIE supply curves [T$US]" v30_shift_r2 "Least square to minimize during shift calculation" @@ -76,4 +83,4 @@ q30_limitTeBio(ttot,all_regi) "Limit BECCS in policy runs relative to refer q30_BioPEProdTotal(ttot,all_regi) "Calculate total domestic PE biomass production" q30_limitBiotrmod(ttot,all_regi) "limit the total amount of modern biomass use for solids to the amount of coal use for solids" ; -*** EOF ./modules/30_biomass/magpie_40/declarations.gms +*** EOF ./modules/30_biomass/magpie/declarations.gms diff --git a/modules/30_biomass/magpie_40/equations.gms b/modules/30_biomass/magpie/equations.gms similarity index 96% rename from modules/30_biomass/magpie_40/equations.gms rename to modules/30_biomass/magpie/equations.gms index d9618df386..04505620d4 100644 --- a/modules/30_biomass/magpie_40/equations.gms +++ b/modules/30_biomass/magpie/equations.gms @@ -4,7 +4,7 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/equations.gms +*** SOF ./modules/30_biomass/magpie/equations.gms ***--------------------------------------------------------------------------- *** FUEL COSTS FOR BIOENERGY ***--------------------------------------------------------------------------- @@ -23,8 +23,9 @@ q30_costFuBio(ttot,regi)$(ttot.val ge cm_startyear).. vm_costFuBio(ttot,regi) =e= sum(peren2rlf30(enty,rlf), p30_datapebio(regi,enty,rlf,"cost",ttot) * vm_fuExtr(ttot,regi,enty,rlf)) + -$if %cm_MAgPIE_coupling% == "on" (v30_pebiolc_costs(ttot,regi) * v30_multcost(ttot,regi)) -$if %cm_MAgPIE_coupling% == "off" (v30_pebiolc_costs(ttot,regi)) + (v30_pebiolc_costs(ttot,regi) * v30_multcost(ttot,regi))$(sm_magpieIter gt 0) + + + (v30_pebiolc_costs(ttot,regi) )$(sm_magpieIter eq 0) + sum(peren2cont30(enty,rlf), vm_fuExtr(ttot,regi,enty,rlf) * pm_costsTradePeFinancial(regi,"use",enty)); @@ -146,4 +147,4 @@ q30_limitBiotrmod(t,regi)$(t.val > 2020).. *' @stop -*** EOF ./modules/30_biomass/magpie_40/equations.gms +*** EOF ./modules/30_biomass/magpie/equations.gms diff --git a/modules/30_biomass/magpie_40/input/files b/modules/30_biomass/magpie/input/files similarity index 100% rename from modules/30_biomass/magpie_40/input/files rename to modules/30_biomass/magpie/input/files diff --git a/modules/30_biomass/magpie_40/not_used.txt b/modules/30_biomass/magpie/not_used.txt similarity index 100% rename from modules/30_biomass/magpie_40/not_used.txt rename to modules/30_biomass/magpie/not_used.txt diff --git a/modules/30_biomass/magpie_40/output.gms b/modules/30_biomass/magpie/output.gms similarity index 93% rename from modules/30_biomass/magpie_40/output.gms rename to modules/30_biomass/magpie/output.gms index db98293b0f..45ad5a5319 100644 --- a/modules/30_biomass/magpie_40/output.gms +++ b/modules/30_biomass/magpie/output.gms @@ -4,7 +4,7 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/output.gms +*** SOF ./modules/30_biomass/magpie/output.gms *LB* save data for exogenous biomass module file p30_fix_costfu_bio; put p30_fix_costfu_bio; @@ -41,4 +41,4 @@ put remind_modelstat; put o_modelstat /; putclose; -*** EOF ./modules/30_biomass/magpie_40/output.gms +*** EOF ./modules/30_biomass/magpie/output.gms diff --git a/modules/30_biomass/magpie/postsolve.gms b/modules/30_biomass/magpie/postsolve.gms new file mode 100644 index 0000000000..ac082e1812 --- /dev/null +++ b/modules/30_biomass/magpie/postsolve.gms @@ -0,0 +1,13 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de + +*** SOF ./modules/30_biomass/magpie/postsolve.gms + +*** Save values for tracking across Nash iterations +o_v30_pebiolc_costs(iteration,ttot,regi) = v30_pebiolc_costs.l(ttot,regi); + +*** EOF ./modules/30_biomass/magpie/postsolve.gms diff --git a/modules/30_biomass/magpie/preloop.gms b/modules/30_biomass/magpie/preloop.gms new file mode 100644 index 0000000000..aee9f4dc1a --- /dev/null +++ b/modules/30_biomass/magpie/preloop.gms @@ -0,0 +1,65 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/30_biomass/magpie/preloop.gms + +***--------- declare models ----------------- +model +model_biopresolve_p /q30_pebiolc_price/ +; +model +model_priceshift /q30_priceshift, q30_pebiolc_price/ +; +model +model_biopresolve_c /q30_pebiolc_costs/ +; + +*** Calculate biomass costs for standalone runs. +*** If REMIND runs coupled to MAgPIE they get updated in presolve.gms +v30_priceshift.fx(ttot,regi) = 0; +v30_pricemult.fx(ttot,regi) = 1; +vm_pebiolc_price.l(ttot,regi)$(ttot.val ge 2005) = 0; +*** Also save it to p30_pebiolc_pricmult so that it can be tracked before MAgPIE runs for the first time +p30_pebiolc_pricmult(ttot,regi)$(v30_pricemult.l(ttot,regi) gt 0) = v30_pricemult.l(ttot,regi); + +***------------ Step 1: Fix fuelex to MAgPIE demand ------------- +*** BEFORE calculation: Regular emulator equations are applied to calculate costs. +*** Therefore set demand (fuelex) in the cost emulator equations to demand from lookup table. +*** This step is repeated in presolve only if MAgPIE has run before. +vm_fuExtr.fx(ttot,regi,"pebiolc","1") = pm_pebiolc_demandmag(ttot,regi); + +***------------ Step 2: calculate shift factors ------------- +*** Is done in presolve and only if MAgPIE has run before. + +***------------ Step 3: calculate bioenergy costs ------------- +*** The costs are calculated applying the regular (unshifted) cost equation. +*** This step is repeated in presolve only if MAgPIE has been run before. + +if (execError > 0, + execute_unload "abort.gdx"; + abort "at least one execution error occured, abort.gdx written"; +); + +solve model_biopresolve_c using cns; !!! nothing has to be optimized here, just pure calculation + +pm_pebiolc_costs_emu_preloop(t,regi) = v30_pebiolc_costs.l(t,regi); + +display pm_pebiolc_costs_emu_preloop; + +***------------ Step 4: Release bounds on fuelex ------------- +*** AFTER calculations: prepare for main solve, therefore release bounds on fuelex. +*** This step is repeated in presolve only if MAgPIE has been run before. +vm_fuExtr.lo(ttot,regi,"pebiolc","1") = 0; +vm_fuExtr.up(ttot,regi,"pebiolc","1") = inf; +*** Provide start values for fuelex +vm_fuExtr.l(ttot,regi,"pebiolc","1") = pm_pebiolc_demandmag(ttot,regi); + +*** load values of v30_BioPEProdTotal from input GDX as this is required for switch cm_bioprod_regi_lim +$IFTHEN.bioprod_regi_lim not "%cm_bioprod_regi_lim%" == "off" +Execute_Loadpoint 'input' v30_BioPEProdTotal.l = v30_BioPEProdTotal.l; +$ENDIF.bioprod_regi_lim + +*** EOF ./modules/30_biomass/magpie/preloop.gms \ No newline at end of file diff --git a/modules/30_biomass/magpie_40/preloop.gms b/modules/30_biomass/magpie/presolve.gms similarity index 55% rename from modules/30_biomass/magpie_40/preloop.gms rename to modules/30_biomass/magpie/presolve.gms index 13a350a2b0..f76ffa9ebc 100644 --- a/modules/30_biomass/magpie_40/preloop.gms +++ b/modules/30_biomass/magpie/presolve.gms @@ -4,7 +4,26 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/preloop.gms + +*** SOF ./modules/30_biomass/magpie/presolve.gms + +*** If MAgPIE runs inbetween the Nash iterations: +*** ============================================================ +if(sm_updateMagpieData gt 0, +*** ============================================================ + +*** Since in the coupling MAgPIE data is first required in core/presolve +*** MAgPIE is executed there. + +*** Update biomass prices and biomass production with MAgPIE's results +*** The landuse emissions are updated in the core/presolve.gms + +*** Read prices and costs for 2nd gen. purpose grown bioenergy from MAgPIE (calculated with demnad from previous Remind run) +Execute_Loadpoint 'magpieData.gdx' p30_pebiolc_pricemag; + +*** In coupled runs overwrite pebiolc production from look-up table with actual MAgPIE values. +*** Read production of 2nd gen. purpose grown bioenergy from MAgPIE (given to MAgPIE from previous Remind run) +*** Moved to core/presolve.gms because it is needed there for calcualtions ***============================================================= *** BEGIN: calculate shift factors for bioenergy prices @@ -18,31 +37,22 @@ *** 4 Release the bound on fuelex (to be precise: fuelex has to be fixed only for 2a and 3) *** Note: In the cost formula in 3a the price shift factor is used! -*** Eliminate effect of shift and mult for calculating the original emulator price -v30_priceshift.fx(ttot,regi) = 0; -v30_pricemult.fx(ttot,regi) = 1; -vm_pebiolc_price.l(ttot,regi)$(ttot.val ge 2005) = 0; - ***--------- declare models ----------------- -model -model_biopresolve_p /q30_pebiolc_price/ -; -model -model_priceshift /q30_priceshift, q30_pebiolc_price/ -; -model -model_biopresolve_c /q30_pebiolc_costs/ -; +*** Models cant be delcard inside a loop. +*** They are therefore declared in preloop.gms. ***------------ Step 1: Fix fuelex to MAgPIE demand ------------- *** BEFORE calculation: Regular emulator equations are applied to calculate costs and prices. Therefore set demand (fuelex) in *** the emulator equations for price and costs to demand from MAgPIE reporting +*** Save level of vm_fuelex to continue at the same point for the next nash iteration +p30_pebiolc_demand_helper_level(ttot,regi) = vm_fuExtr.l(ttot,regi,"pebiolc","1"); +p30_pebiolc_demand_helper_upper(ttot,regi) = vm_fuExtr.up(ttot,regi,"pebiolc","1"); + vm_fuExtr.fx(ttot,regi,"pebiolc","1") = pm_pebiolc_demandmag(ttot,regi); -*** Shift factors only have to be calculateed if REMIND is run coupled to MAgPIE, else they are set to 1 -*** ============================================================ -$ifthen %cm_MAgPIE_coupling% == "on" -*** ============================================================ +*** Eliminate effect of shift and mult for calculating the original emulator price (p30_pebiolc_price_emu_preloop) +v30_priceshift.fx(ttot,regi) = 0; +v30_pricemult.fx(ttot,regi) = 1; ***------------ Step 2a: calculate bioenergy prices ------------- if (execError > 0, @@ -50,9 +60,8 @@ if (execError > 0, abort "at least one execution error occured, abort.gdx written"; ); - solve model_biopresolve_p using cns; !!! nothing has to be optimized here, just pure calculation -p30_pebiolc_price_emu_preloop(ttot,regi) = vm_pebiolc_price.l(ttot,regi); !!! save for shift factor calculation and reporting +p30_pebiolc_price_emu_preloop(ttot,regi) = vm_pebiolc_price.l(ttot,regi); !!! save for reporting ***------------ Step 2b: Calculate shift factor for prices ------------- *** In the current coupling shift remains fixed to 0 (no shift, change of slope only) @@ -65,7 +74,7 @@ if (execError > 0, abort "at least one execution error occured, abort.gdx written"; ); -Solve model_priceshift using nlp minimizing v30_shift_r2; +solve model_priceshift using nlp minimizing v30_shift_r2; *** Initialize shift factors p30_pebiolc_pricshift(t,regi) = 0; p30_pebiolc_pricmult(t,regi) = 1; @@ -75,6 +84,10 @@ p30_pebiolc_pricmult(ttot,regi)$(v30_pricemult.l(ttot,regi) gt 0) = v30_pricemul v30_pricemult.fx(ttot,regi) = p30_pebiolc_pricmult(ttot,regi); v30_priceshift.fx(ttot,regi) = p30_pebiolc_pricshift(ttot,regi); +s30_switch_shiftcalc = 0; !!! deactivate equations for shift calculation. This is necessary because the main model uses /all/ + +***display p30_pebiolc_pricmult, p30_pebiolc_pricshift; + *** Calculate shifted prices if (execError > 0, execute_unload "abort.gdx"; @@ -84,13 +97,8 @@ if (execError > 0, solve model_biopresolve_p using cns; !!! nothing has to be optimized here, just pure calculation p30_pebiolc_price_emu_preloop_shifted(ttot,regi) = vm_pebiolc_price.l(ttot,regi); !!! save for reporting -s30_switch_shiftcalc = 0; !!! deactivate equations for shift calculation. This is necessary because the main model uses /all/ - -display p30_pebiolc_pricmult, p30_pebiolc_pricshift,p30_pebiolc_price_emu_preloop_shifted; +***display p30_pebiolc_price_emu_preloop_shifted; -*** ============================================================ -$endif -*** ============================================================ ***------------ Step 3: calculate bioenergy costs ------------- *** The costs are calculated applying the regular cost equation. @@ -106,24 +114,52 @@ solve model_biopresolve_c using cns; !!! nothing has to be optimized here, just pm_pebiolc_costs_emu_preloop(t,regi) = v30_pebiolc_costs.l(t,regi); -display pm_pebiolc_costs_emu_preloop; +***display pm_pebiolc_costs_emu_preloop; ***------------ Step 4: Release bounds on fuelex ------------- -*** AFTER presolve calculations: prepare for main solve, therefore release bounds on fuelex +*** AFTER presolve calculations: prepare for main solve, therefore restore bounds on fuelex vm_fuExtr.lo(ttot,regi,"pebiolc","1") = 0; -vm_fuExtr.up(ttot,regi,"pebiolc","1") = inf; -*** Provide start values for fuelex -vm_fuExtr.l(ttot,regi,"pebiolc","1") = pm_pebiolc_demandmag(ttot,regi); +vm_fuExtr.up(ttot,regi,"pebiolc","1") = p30_pebiolc_demand_helper_upper(ttot,regi); +*** Provide start values for fuelex taken from last iteration +vm_fuExtr.l(ttot,regi,"pebiolc","1") = p30_pebiolc_demand_helper_level(ttot,regi); ***------------------------------------------------------------- *** END: calculate shift factors ***------------------------------------------------------------- +*** ============================================================ +); +*** ============================================================ -*** load values of v30_BioPEProdTotal from input GDX as this is required for switch cm_bioprod_regi_lim -$IFTHEN.bioprod_regi_lim not "%cm_bioprod_regi_lim%" == "off" -Execute_Loadpoint 'input' v30_BioPEProdTotal.l = v30_BioPEProdTotal.l; -$ENDIF.bioprod_regi_lim - +*** Calculate total primary energy to limit BECCS (see q30_limitTeBio) +*** The summation is devided into actual primary energy carriers, e.g. coal or biomass, +*** and primary-energy-equivalent secondary energy carriers like wind and solar. +*** This must be calculated outside the optimization and stored in a +*** parameter to not create an incentive to increase the total +*** PE demand just to increase the BECCS limit. +*** Using the substitution method to adjust vm_prodSE from non-fossil +*** energy sources to the primary energy inputs that would be needed +*** if it was generated from fossil fuels with an average efficiency of 40%. + +p30_demPe(ttot,regi) = + sum(pe2se(enty,enty2,te)$(sameas(enty,"peoil") OR sameas(enty,"pecoal") OR sameas(enty,"pegas") OR sameas(enty,"pebiolc") OR sameas(enty,"pebios") OR sameas(enty,"pebioil")), + vm_demPe.l(ttot,regi,enty,enty2,te) + ) + + sum(entySe, + sum(te, + vm_prodSe.l(ttot,regi,"pegeo",entySe,te) + + vm_prodSe.l(ttot,regi,"pehyd",entySe,te) + + vm_prodSe.l(ttot,regi,"pewin",entySe,te) + + vm_prodSe.l(ttot,regi,"pesol",entySe,te) + + vm_prodSe.l(ttot,regi,"peur",entySe,te) + ) + ) * 100/40 !!! substitution method +; -*** EOF ./modules/30_biomass/magpie_40/preloop.gms +*** Save values for tracking across Nash iterations +o_p30_pebiolc_pricmult(iteration,ttot,regi) = p30_pebiolc_pricmult(ttot,regi); +o_p30_pebiolc_pricemag(iteration,ttot,regi) = p30_pebiolc_pricemag(ttot,regi); +o_p30_pebiolc_price_emu_preloop(iteration,ttot,regi) = p30_pebiolc_price_emu_preloop(ttot,regi); +o_p30_pebiolc_price_emu_preloop_shifted(iteration,ttot,regi) = p30_pebiolc_price_emu_preloop_shifted(ttot,regi); +o_pm_pebiolc_costs_emu_preloop(iteration,ttot,regi) = pm_pebiolc_costs_emu_preloop(ttot,regi); +*** EOF ./modules/30_biomass/magpie/presolve.gms diff --git a/modules/30_biomass/magpie_40/realization.gms b/modules/30_biomass/magpie/realization.gms similarity index 73% rename from modules/30_biomass/magpie_40/realization.gms rename to modules/30_biomass/magpie/realization.gms index e90929ac06..1febd742e7 100644 --- a/modules/30_biomass/magpie_40/realization.gms +++ b/modules/30_biomass/magpie/realization.gms @@ -4,20 +4,21 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/realization.gms +*** SOF ./modules/30_biomass/magpie/realization.gms *' @description *' The costs for purpose grown ligno-cellulosic biomass -*' are the integral under the supplycurve. The supplycurves have been derived from MAgPIE 4.1 +*' are the integral under the supplycurve. The supplycurves have been derived from MAgPIE *####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "sets" $include "./modules/30_biomass/magpie_40/sets.gms" -$Ifi "%phase%" == "declarations" $include "./modules/30_biomass/magpie_40/declarations.gms" -$Ifi "%phase%" == "datainput" $include "./modules/30_biomass/magpie_40/datainput.gms" -$Ifi "%phase%" == "equations" $include "./modules/30_biomass/magpie_40/equations.gms" -$Ifi "%phase%" == "preloop" $include "./modules/30_biomass/magpie_40/preloop.gms" -$Ifi "%phase%" == "bounds" $include "./modules/30_biomass/magpie_40/bounds.gms" -$Ifi "%phase%" == "presolve" $include "./modules/30_biomass/magpie_40/presolve.gms" -$Ifi "%phase%" == "output" $include "./modules/30_biomass/magpie_40/output.gms" +$Ifi "%phase%" == "sets" $include "./modules/30_biomass/magpie/sets.gms" +$Ifi "%phase%" == "declarations" $include "./modules/30_biomass/magpie/declarations.gms" +$Ifi "%phase%" == "datainput" $include "./modules/30_biomass/magpie/datainput.gms" +$Ifi "%phase%" == "equations" $include "./modules/30_biomass/magpie/equations.gms" +$Ifi "%phase%" == "preloop" $include "./modules/30_biomass/magpie/preloop.gms" +$Ifi "%phase%" == "bounds" $include "./modules/30_biomass/magpie/bounds.gms" +$Ifi "%phase%" == "presolve" $include "./modules/30_biomass/magpie/presolve.gms" +$Ifi "%phase%" == "postsolve" $include "./modules/30_biomass/magpie/postsolve.gms" +$Ifi "%phase%" == "output" $include "./modules/30_biomass/magpie/output.gms" *######################## R SECTION END (PHASES) ############################### -*** EOF ./modules/30_biomass/magpie_40/realization.gms +*** EOF ./modules/30_biomass/magpie/realization.gms diff --git a/modules/30_biomass/magpie_40/sets.gms b/modules/30_biomass/magpie/sets.gms similarity index 89% rename from modules/30_biomass/magpie_40/sets.gms rename to modules/30_biomass/magpie/sets.gms index a6b0a9f190..a2f6364d48 100644 --- a/modules/30_biomass/magpie_40/sets.gms +++ b/modules/30_biomass/magpie/sets.gms @@ -4,7 +4,7 @@ *** | AGPL-3.0, you are granted additional permissions described in the *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/30_biomass/magpie_40/sets.gms +*** SOF ./modules/30_biomass/magpie/sets.gms sets all_charScen "coefficients of the emulator formulas" @@ -24,4 +24,4 @@ peren2cont30(all_enty,rlf) "map biomass energy to grades with continous supply ; -*** EOF ./modules/30_biomass/magpie_40/sets.gms +*** EOF ./modules/30_biomass/magpie/sets.gms diff --git a/modules/30_biomass/magpie_40/presolve.gms b/modules/30_biomass/magpie_40/presolve.gms deleted file mode 100644 index 36940cbe79..0000000000 --- a/modules/30_biomass/magpie_40/presolve.gms +++ /dev/null @@ -1,36 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de - -*** SOF ./modules/30_biomass/magpie_40/presolve.gms - -*** Calculate total primary energy to limit BECCS (see q30_limitTeBio) -*** The summation is devided into actual primary energy carriers, e.g. coal or biomass, -*** and primary-energy-equivalent secondary energy carriers like wind and solar. -*** This must be calculated outside the optimization and stored in a -*** parameter to not create an incentive to increase the total -*** PE demand just to increase the BECCS limit. -*** Using the substitution method to adjust vm_prodSE from non-fossil -*** energy sources to the primary energy inputs that would be needed -*** if it was generated from fossil fuels with an average efficiency of 40%. - -p30_demPe(ttot,regi) = - sum(pe2se(enty,enty2,te)$(sameas(enty,"peoil") OR sameas(enty,"pecoal") OR sameas(enty,"pegas") OR sameas(enty,"pebiolc") OR sameas(enty,"pebios") OR sameas(enty,"pebioil")), - vm_demPe.l(ttot,regi,enty,enty2,te) - ) - + sum(entySe, - sum(te, - vm_prodSe.l(ttot,regi,"pegeo",entySe,te) - + vm_prodSe.l(ttot,regi,"pehyd",entySe,te) - + vm_prodSe.l(ttot,regi,"pewin",entySe,te) - + vm_prodSe.l(ttot,regi,"pesol",entySe,te) - + vm_prodSe.l(ttot,regi,"peur",entySe,te) - ) - ) * 100/40 !!! substitution method -; - - -*** EOF ./modules/30_biomass/magpie_40/presolve.gms diff --git a/modules/30_biomass/module.gms b/modules/30_biomass/module.gms index c824ca3350..8021f372c0 100644 --- a/modules/30_biomass/module.gms +++ b/modules/30_biomass/module.gms @@ -14,6 +14,6 @@ *' @authors David Klein *###################### R SECTION START (MODULETYPES) ########################## -$Ifi "%biomass%" == "magpie_40" $include "./modules/30_biomass/magpie_40/realization.gms" +$Ifi "%biomass%" == "magpie" $include "./modules/30_biomass/magpie/realization.gms" *###################### R SECTION END (MODULETYPES) ############################ *** EOF ./modules/30_biomass/module.gms diff --git a/modules/32_power/IntC/equations.gms b/modules/32_power/IntC/equations.gms index 0881ec88a7..840ecef3fc 100644 --- a/modules/32_power/IntC/equations.gms +++ b/modules/32_power/IntC/equations.gms @@ -18,10 +18,10 @@ q32_balSe(t,regi,enty2)$(sameas(enty2,"seel")).. pm_prodCouple(regi,enty,enty3,te,enty2) * vm_prodSe(t,regi,enty,enty3,te) ) + sum(pc2te(enty4,entyFe(enty5),te,enty2), pm_prodCouple(regi,enty4,enty5,te,enty2) * vm_prodFe(t,regi,enty4,enty5,te) ) - + sum(pc2te(enty,enty3,te,enty2), + + sum(pc2te(enty,enty3,te,enty2), sum(teCCS2rlf(te,rlf), pm_prodCouple(regi,enty,enty3,te,enty2) * vm_co2CCS(t,regi,enty,enty3,te,rlf) ) ) - + vm_Mport(t,regi,enty2) + + vm_Mport(t,regi,enty2) =e= sum(se2fe(enty2,enty3,te), vm_demSe(t,regi,enty2,enty3,te) ) + sum(se2se(enty2,enty3,te), vm_demSe(t,regi,enty2,enty3,te) ) diff --git a/modules/33_CDR/portfolio/bounds.gms b/modules/33_CDR/portfolio/bounds.gms index 54c9a2fa3e..b92ba791a7 100644 --- a/modules/33_CDR/portfolio/bounds.gms +++ b/modules/33_CDR/portfolio/bounds.gms @@ -44,6 +44,13 @@ if (te_used33("dac"), v33_FEdemand.fx(t,regi,"feh2s","fehes","dac") = 0; ); +*** Bounds for Biochar application: Upper limit based on use on croplands and substituting cement +*** For cropland assumption, see description in inputdata file +*** Cement substitution percentage in literature ranges from 1-10%, with most around 2-4% (see https://doi.org/10.1038/s44284-024-00086-w, Table 7). +vm_demSeOth.up(t,regi,"sebiochar","biocharuse") = (0.03 * vm_cesIO.l(t,regi,"ue_cement") * sm_giga_2_non !! [tBC/t cement] * [Gt cement]*[10^9 t/Gt] + + p33_BiocharLimitCropland(regi) * 1e6) !! [Mt BC] * [t/Mt] + * sm_tBC_2_TWa ; !!* [TWa BC/tBC] + *** Bounds for enhanced weathering if(te_used33("weathering"), v33_EW_onfield_tot.up(t,regi,rlf_cz33,rlf) = s33_step; diff --git a/modules/33_CDR/portfolio/datainput.gms b/modules/33_CDR/portfolio/datainput.gms index 38ba2e267e..6557ebdf20 100644 --- a/modules/33_CDR/portfolio/datainput.gms +++ b/modules/33_CDR/portfolio/datainput.gms @@ -91,6 +91,13 @@ else p33_BiocharPrice(ttot) = cm_33_BCpriceForm / sm_tBC_2_TWa / sm_trillion_2_non * sm_D2015_2_D2017; ); +parameter p33_BiocharLimitCropland(all_regi) "Limits on Biochar deployment on land based on cropland in 2020. Assumption: max 50 t BC / ha / 10 yrs = 5 t BC / ha / yr. Unit: [Mt BC/ yr]" +/ +$ondelim +$include "./modules/33_CDR/portfolio/input/p33_BiocharLimitCropland.cs4r" +$offdelim +/; + *------------------------------------------------------------------------------------ *' #### ocean alkalinity enhancement input data (Kowalczyk et al., 2024) *------------------------------------------------------------------------------------ diff --git a/modules/33_CDR/portfolio/declarations.gms b/modules/33_CDR/portfolio/declarations.gms index 83e862e81f..c916f7b1a7 100644 --- a/modules/33_CDR/portfolio/declarations.gms +++ b/modules/33_CDR/portfolio/declarations.gms @@ -77,7 +77,7 @@ q33_emiCDR(ttot,all_regi) "aggregates the (negative) emissions captured by the q33_H2bio_lim(ttot,all_regi) "limits H2 from bioenergy to FE - H2 demand from CDR, i.e. no H2 from bioenergy for DAC" q33_capconst(ttot,all_regi,all_te) "calculates amount of carbon captured by DAC and OAE" q33_cco2_cdr_fromFE(ttot,all_regi,all_te) "calculates the amount of captured CO2 that comes from burning gas" -q33_ccsbal(ttot,all_regi,all_enty,all_enty,all_te) "calculates CCS emissions from CDR technologies" +q33_ccsbal(ttot,all_regi) "calculates CCS emissions from CDR technologies" *** DAC q33_DAC_FEdemand(ttot,all_regi,all_enty) "calculates final energy demand from DAC" diff --git a/modules/33_CDR/portfolio/equations.gms b/modules/33_CDR/portfolio/equations.gms index 0208d94da2..b74b8fdec1 100644 --- a/modules/33_CDR/portfolio/equations.gms +++ b/modules/33_CDR/portfolio/equations.gms @@ -74,8 +74,8 @@ q33_cco2_cdr_fromFE(t, regi, te_ccs33).. *' the second part is CO2 captured from energy usage (OAE or DAC) *' the third part is CO2 captured from calcination for OAE ***--------------------------------------------------------------------------- -q33_ccsbal(t, regi, ccs2te(ccsCo2(enty), enty2, te)).. - sum(teCCS2rlf(te, rlf), vm_co2capture_cdr(t, regi, enty, enty2, te, rlf)) +q33_ccsbal(t, regi).. + sum(teCCS2rlf(te, rlf), vm_co2capture_cdr(t, regi, "cco2", "ico2", te, rlf)) =e= - vm_emiCdrTeDetail(t, regi, "dac") + sm_capture_rate_cdrmodule * ( diff --git a/modules/33_CDR/portfolio/input/files b/modules/33_CDR/portfolio/input/files index cb71b2b1d2..b5893ff687 100644 --- a/modules/33_CDR/portfolio/input/files +++ b/modules/33_CDR/portfolio/input/files @@ -1,4 +1,5 @@ f33_maxProdGradeRegiWeathering.cs3r p33_transportCostsWeathering.cs4r p33_EEZdistribution.cs4r -p33_BiocharPricePath.cs4r \ No newline at end of file +p33_BiocharPricePath.cs4r +p33_BiocharLimitCropland.cs4r \ No newline at end of file diff --git a/modules/33_CDR/portfolio/sets.gms b/modules/33_CDR/portfolio/sets.gms index 83e331e3e1..f39886efce 100644 --- a/modules/33_CDR/portfolio/sets.gms +++ b/modules/33_CDR/portfolio/sets.gms @@ -11,8 +11,8 @@ te_all33(all_te) "all CDR technologies" / weathering "enhanced weathering" dac "direct air capture" - oae_ng "ocean akalinity ehnacement via ocean liming using a traditional calciner" - oae_el "ocean akalinity ehnacement via ocean liming using a novel calciner technology" + oae_ng "ocean alkalinity enhancement via ocean liming using a traditional calciner" + oae_el "ocean alkalinity enhancement via ocean liming using a novel calciner technology" / te_used33(all_te) "used CDR technologies (specified by switches)" diff --git a/modules/35_transport/edge_esm/presolve.gms b/modules/35_transport/edge_esm/presolve.gms index fe0d37d1ba..ccbc3e03b9 100644 --- a/modules/35_transport/edge_esm/presolve.gms +++ b/modules/35_transport/edge_esm/presolve.gms @@ -6,11 +6,14 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/35_transport/edge_esm/presolve.gms $ifthen.calibrate %CES_parameters% == "load" -if( (ord(iteration) le 25 and ord(iteration) ge cm_startIter_EDGET and (mod(ord(iteration), 2) eq 0)) - or (ord(iteration) le 45 and ord(iteration) gt 25 and (mod(ord(iteration), 3) eq 0)) - or (ord(iteration) gt 45 and (mod(ord(iteration), 5) eq 0)), +if(edgeTransportIter(iteration), + +*** Track runtime + putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",iterativeEdgeTransport," iteration.val:0; Execute "Rscript -e 'library(edgeTransport); edgeTransport::iterativeEdgeTransport()'"; +*** Track runtime + putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," iteration.val:0; Execute_Loadpoint 'p35_esCapCost' p35_esCapCost; pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val le 2100) = p35_esCapCost(t,regi,"%cm_GDPpopScen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); @@ -31,3 +34,5 @@ if( (ord(iteration) le 25 and ord(iteration) ge cm_startIter_EDGET and (mod(ord( $endif.calibrate *** EOF ./modules/35_transport/edge_esm/presolve.gms + + diff --git a/modules/35_transport/edge_esm/sets.gms b/modules/35_transport/edge_esm/sets.gms index a113213675..844cde91cb 100644 --- a/modules/35_transport/edge_esm/sets.gms +++ b/modules/35_transport/edge_esm/sets.gms @@ -135,6 +135,10 @@ NAV_all CAMP_lscWeak CAMP_lscStrong CAMP_lscLow +Mix2ICEban_lowAvShip +Mix4ICEban_lowAvShip +Mix2ICEban_justMIP +Mix4ICEban_justMIP / EDGE_scenario(EDGE_scenario_all) "Selected EDGE-T scenario" diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index caec6a4bce..105d3a9cc9 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -35,15 +35,17 @@ pm_cesdata_sigma(ttot,"enhgab")$ (ttot.val eq 2040) = 3; *** floor space demand for reporting + Parameter -p36_floorspace_scen(tall, all_regi, all_demScen) "floorspace, in buildings simple realization only used for reporting at the moment, not in optimization itself" +p36_floorspace_scen(tall, all_regi, all_demScen, secBuild36) "floorspace, in buildings simple realization only used for reporting at the moment, not in optimization itself" / $ondelim -$include "./modules/36_buildings/simple/input/p36_floorspace_scen.cs4r" +$include "./modules/36_buildings/simple/input/f36_floorspace_scen.cs4r" $offdelim / ; -p36_floorspace(ttot,regi) = p36_floorspace_scen(ttot,regi,"%cm_demScen%") * 1e-3; !! from million to billion m2 +p36_floorspace(ttot,regi,secBuild36) = + p36_floorspace_scen(ttot,regi,"%cm_demScen%",secBuild36) * 1e-3; !! from million to billion m2 *** UE demand for reporting @@ -58,7 +60,7 @@ $offdelim *** load UE demand for reporting from input_ref.gdx cm_startyear if (cm_startyear gt 2005, - execute_load "input_ref.gdx", p36_uedemand_build; + Execute_Loadpoint "input_ref.gdx", p36_uedemand_build; ); p36_uedemand_build(t,regi,in) = f36_uedemand_build(t,regi,"%cm_demScen%","%cm_rcp_scen_build%",in); @@ -66,13 +68,22 @@ p36_uedemand_build(t,regi,in) = f36_uedemand_build(t,regi,"%cm_demScen%","%cm_rc *** Scale UE demand and floor space in the building sector $ifthen.scaleDemand not "%cm_scaleDemand%" == "off" loop((tall,tall2,regi) $ pm_scaleDemand(tall,tall2,regi), -*FL* rescaled demand = normal demand * [ scaling factor + (1-scaling factor) * remaining phase-in, between zero and one ] - p36_uedemand_build(t,regi,in) = p36_uedemand_build(t,regi,in) * ( pm_scaleDemand(tall,tall2,regi) + (1-pm_scaleDemand(tall,tall2,regi)) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) ); +*FL* rescaled demand = normal demand * [ scaling factor + (1-scaling factor) * remaining phase-in, between zero and one ] + p36_uedemand_build(t,regi,in) = p36_uedemand_build(t,regi,in) * ( pm_scaleDemand(tall,tall2,regi) + (1-pm_scaleDemand(tall,tall2,regi)) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) ); *RH* We assume that the reduction in final energy demand is only partially driven by floor space reduction (exponent 0.3). - p36_floorspace(t,regi) = p36_floorspace(t,regi) * ( pm_scaleDemand(tall,tall2,regi)**0.3 + (1-pm_scaleDemand(tall,tall2,regi)**0.3) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) ); + p36_floorspace(t,regi,secBuild36) = p36_floorspace(t,regi,secBuild36) * ( pm_scaleDemand(tall,tall2,regi)**0.3 + (1-pm_scaleDemand(tall,tall2,regi)**0.3) * min(1, max(0, tall2.val-t.val) / (tall2.val-tall.val)) ); ); $endif.scaleDemand +*** Scale UE demand and floor space in the building sector +$ifthen.scaleDemandBuildTable not "%cm_scaleDemandBuildTable%" == "off" + loop( (t,regi), + p36_uedemand_build(t,regi,in) = p36_uedemand_build(t,regi,in) * pm_scaleDemandBuildTable(t,regi) ; +*RH* We assume that the reduction in final energy demand is only partially driven by floor space reduction (exponent 0.3). + p36_floorspace(t,regi,secBuild36) = p36_floorspace(t,regi,secBuild36) * pm_scaleDemandBuildTable(t,regi)**0.3 ; + ); +$endif.scaleDemandBuildTable + ***----------------------------------------------------------------------------- * FE Share Bounds diff --git a/modules/36_buildings/simple/declarations.gms b/modules/36_buildings/simple/declarations.gms index ec0df72c82..7b0c1cdf52 100644 --- a/modules/36_buildings/simple/declarations.gms +++ b/modules/36_buildings/simple/declarations.gms @@ -8,7 +8,7 @@ Parameters p36_CESMkup(ttot,all_regi,all_in) "parameter for those CES markup cost accounted as investment cost in the budget [trUSD/CES input]" - p36_floorspace(tall,all_regi) "buildings floorspace, billion m2, in simple realization only used for reporting" + p36_floorspace(tall,all_regi,secBuild36) "buildings floorspace, billion m2, in simple realization only used for reporting" p36_uedemand_build(tall,all_regi,all_in) "useful energy demand in buildings in TWh/a, in simple realization only used for reporting" ; diff --git a/modules/36_buildings/simple/input/files b/modules/36_buildings/simple/input/files index 8a689883db..8b218bfc09 100644 --- a/modules/36_buildings/simple/input/files +++ b/modules/36_buildings/simple/input/files @@ -1,3 +1,3 @@ -p36_floorspace_scen.cs4r +f36_floorspace_scen.cs4r f36_uedemand_build.cs4r f_fedemand_build.cs4r diff --git a/modules/36_buildings/simple/sets.gms b/modules/36_buildings/simple/sets.gms index 78b6ea5db5..c720c59a83 100644 --- a/modules/36_buildings/simple/sets.gms +++ b/modules/36_buildings/simple/sets.gms @@ -22,7 +22,16 @@ Sets / ppfen_buildings_dyn36(all_in) "primary production factors energy - buildings" - / fesob, fehob, fegab, feh2b, feheb, feelcb, feelhpb, feelrhb / + / + fesob + fehob + fegab + feh2b + feheb + feelcb + feelhpb + feelrhb + / cal_ppf_buildings_dyn36(all_in) "primary production factors for calibration - buildings" @@ -56,21 +65,28 @@ Sets fe_tax_sub36(all_in,all_in) "correspondence between tax and subsidy input data resolution and model sectoral resolution" / - fesob . fesob - fehob . fehob - fegab . fegab - feh2b . feh2b - feheb . feheb - feelb . (feelcb,feelhpb,feelrhb) + fesob . fesob + fehob . fehob + fegab . fegab + feh2b . feh2b + feheb . feheb + feelb . (feelcb,feelhpb,feelrhb) / ue_dyn36(all_in) "useful energy items" // - ppfen_MkupCost36(all_in) "primary production factors in buildings on which CES mark-up cost can be levied that are counted as expenses in the macroeconomic budget equation" + ppfen_MkupCost36(all_in) "primary production factors in buildings on which CES mark-up cost can be levied that are counted as expenses in the macroeconomic budget equation" + / + feelhpb + feheb + / + + secBuild36 "Buildings subsectors, only for floor space reporting" / - feelhpb - feheb + buildings + residential + commercial / ; diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 7e0d2c36eb..3cbfeedb8a 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -648,7 +648,7 @@ $offdelim *' load baseline industry ETS solids demand if (cm_startyear ne 2005, !! not a BAU scenario -execute_load "input_ref.gdx", vm_demFeSector_afterTax; +Execute_Loadpoint "input_ref.gdx", vm_demFeSector_afterTax; p37_BAU_industry_ETS_solids(t,regi) = sum(se2fe(entySe,"fesos",te), vm_demFeSector_afterTax.l(t,regi,entySe,"fesos","indst","ETS") @@ -869,7 +869,7 @@ if (cm_startyear gt 2005, ); if (cm_startyear gt 2005, - execute_load "input_ref.gdx" v37_plasticWaste.l = v37_plasticWaste.l; + Execute_Loadpoint "input_ref.gdx" v37_plasticWaste.l = v37_plasticWaste.l; ); *** EOF ./modules/37_industry/subsectors/datainput.gms diff --git a/modules/40_techpol/CombLowCandCoalPO/not_used.txt b/modules/40_techpol/CombLowCandCoalPO/not_used.txt index 1cc2ff0451..ebc44455cc 100644 --- a/modules/40_techpol/CombLowCandCoalPO/not_used.txt +++ b/modules/40_techpol/CombLowCandCoalPO/not_used.txt @@ -18,3 +18,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire cm_phaseoutBiolc,input,questionnaire cm_nucscen,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/NDC/bounds.gms b/modules/40_techpol/NDC/bounds.gms index 3986b2709b..cc40142538 100755 --- a/modules/40_techpol/NDC/bounds.gms +++ b/modules/40_techpol/NDC/bounds.gms @@ -9,8 +9,8 @@ ***AM the lowbound of solar and pv for 2030 to be taken from the NDCs (in GW), therefore multiplying by 0.001 for TW* *** FS: activate capacity tarets only from 2025 on to be better in line with current trends vm_cap.lo(t,regi,"spv","1")$(t.val ge 2025) = p40_TechBound(t,regi,"spv")*0.001; -vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2025) = p40_TechBound(t,regi,"tnrs")*0.001; -vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2025) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch +vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2030) = p40_TechBound(t,regi,"tnrs")*0.001; !! for 2025, we now have actual capacity values as bounds, so the techbounds should not overwrite them +vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2030) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch vm_cap.lo(t,regi,"hydro","1")$(t.val ge 2035) = p40_TechBound(t,regi,"hydro")*0.001; vm_cap.lo(t,regi,"windon","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windon")*0.001; vm_cap.lo(t,regi,"windoff","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windoff")*0.001; diff --git a/modules/40_techpol/NDC/not_used.txt b/modules/40_techpol/NDC/not_used.txt index c2eb9b0807..1bc66aa35a 100644 --- a/modules/40_techpol/NDC/not_used.txt +++ b/modules/40_techpol/NDC/not_used.txt @@ -11,3 +11,4 @@ vm_capEarlyReti,input,questionnaire pm_regiEarlyRetiRate,input,questionnaire pm_pop,input,not needed pm_gdp,input,not needed +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/NDCplus/bounds.gms b/modules/40_techpol/NDCplus/bounds.gms index 13a1fd9838..0e4a664080 100644 --- a/modules/40_techpol/NDCplus/bounds.gms +++ b/modules/40_techpol/NDCplus/bounds.gms @@ -8,8 +8,8 @@ ***AM the lowbound of solar and pv for 2025 and 2030 to be taken from the NDCs (in GW), therefore multiplying by 0.001 for TW* vm_cap.lo(t,regi,"spv","1")$(t.val lt 2031 AND t.val gt 2024) = p40_TechBound(t,regi,"spv")*0.001; -vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2025) = p40_TechBound(t,regi,"tnrs")*0.001; -vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2025) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch +vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2030) = p40_TechBound(t,regi,"tnrs")*0.001; !! for 2025, we now have actual capacity values as bounds, so the techbounds should not overwrite them +vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2030) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch vm_cap.lo(t,regi,"hydro","1")$(t.val lt 2031 AND t.val gt 2024) = p40_TechBound(t,regi,"hydro")*0.001; vm_cap.lo(t,regi,"windon","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windon")*0.001; vm_cap.lo(t,regi,"windoff","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windoff")*0.001; diff --git a/modules/40_techpol/NDCplus/not_used.txt b/modules/40_techpol/NDCplus/not_used.txt index 2cec58eeee..5a3784856e 100644 --- a/modules/40_techpol/NDCplus/not_used.txt +++ b/modules/40_techpol/NDCplus/not_used.txt @@ -9,3 +9,4 @@ pm_ttot_val,parameter,??? pm_eta_conv,input,questionnaire cm_startyear,input,questionnaire cm_H2targets,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/NPi2018/bounds.gms b/modules/40_techpol/NPi2018/bounds.gms index bdeaa04c79..3ccdcc81aa 100644 --- a/modules/40_techpol/NPi2018/bounds.gms +++ b/modules/40_techpol/NPi2018/bounds.gms @@ -9,8 +9,8 @@ *** AM the lowbound of solar and pv for 2030 to be taken from the NDCs (in GW), therefore multiplying by 0.001 for TW* *** NPi bounds are only applied after 2020, as NPi scenarios should always have cm_startyear higher than 2020. vm_cap.lo(t,regi,"spv","1")$(t.val gt 2020) = p40_TechBound(t,regi,"spv")*0.001; -vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2025) = p40_TechBound(t,regi,"tnrs")*0.001; -vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2025) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch +vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2030) = p40_TechBound(t,regi,"tnrs")*0.001; !! for 2025, we now have actual capacity values as bounds, so the techbounds should not overwrite them +vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2030) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch vm_cap.lo(t,regi,"windon","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windon")*0.001; vm_cap.lo(t,regi,"windoff","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windoff")*0.001; *** Bound only applies from 2030 onward when technologies have historical values in 2025 diff --git a/modules/40_techpol/NPi2018/not_used.txt b/modules/40_techpol/NPi2018/not_used.txt index a86ba9e9dd..c007b9414e 100644 --- a/modules/40_techpol/NPi2018/not_used.txt +++ b/modules/40_techpol/NPi2018/not_used.txt @@ -15,3 +15,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire pm_pop,input,not needed pm_gdp,input,not needed +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/NPi2025/bounds.gms b/modules/40_techpol/NPi2025/bounds.gms index 98642c73cd..4f177c671c 100644 --- a/modules/40_techpol/NPi2025/bounds.gms +++ b/modules/40_techpol/NPi2025/bounds.gms @@ -7,6 +7,14 @@ *** SOF ./modules/40_techpol/NPi2025/bounds.gms + +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Capacity Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + + *** Léa to do: technologies still missing are h2 to electricity and "coal to electricity" *** Keep historical data until 2020 @@ -14,8 +22,8 @@ *** NPi bounds are only applied after 2020, as NPi scenarios should always have cm_startyear higher than 2020. vm_cap.lo(t,regi,"spv","1")$(t.val gt 2025) = p40_TechBound(t,regi,"spv")*0.001; vm_cap.lo(t,regi,"csp","1")$(t.val gt 2025) = p40_TechBound(t,regi,"csp")*0.001; -vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2025) = p40_TechBound(t,regi,"tnrs")*0.001; -vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2025) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch +vm_cap.lo(t,regi,"tnrs","1")$(t.val ge 2030) = p40_TechBound(t,regi,"tnrs")*0.001; !! for 2025, we now have actual capacity values as bounds, so the techbounds should not overwrite them +vm_cap.lo(t,regi_nucscen,"tnrs",rlf)$((t.val ge 2030) and (cm_nucscen eq 5)) = 0; !! we assume: Nucscen (limiting nuclear deployment) overrides NDC targets -> resetting lower bound to value defined at cm_nucscen switch vm_cap.lo(t,regi,"hydro","1")$(t.val gt 2025) = p40_TechBound(t,regi,"hydro")*0.001; vm_cap.lo(t,regi,"windon","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windon")*0.001; vm_cap.lo(t,regi,"windoff","1")$(t.val gt 2025) = p40_TechBound(t,regi,"windoff")*0.001; diff --git a/modules/40_techpol/NPi2025/datainput.gms b/modules/40_techpol/NPi2025/datainput.gms index 58c28d4a04..95a3503c77 100644 --- a/modules/40_techpol/NPi2025/datainput.gms +++ b/modules/40_techpol/NPi2025/datainput.gms @@ -6,6 +6,12 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/40_techpol/NPi2025/datainput.gms +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Capacity Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + Table f40_TechBound(ttot,all_regi,NPi_version,all_te) "Table for all NPi versions with NPi capacity targets (GW)" $offlisting $ondelim @@ -28,21 +34,29 @@ if (cm_phaseoutBiolc eq 1, p40_ElecBioBound(t,regi) = 0; ); -*** inputs for hard-coded share targets: they only apply if the respective country (or EU28) is a native region in the chosen REMIND setting -*** otherwise, they are not considered in the model -*** to add further targets, include both the respective parameter value below, and extend the equation domain in equations.gms -p40_noncombust_acc_eff(t,iso_regi,te) = 1;!!general efficiency 100% for non-combustible energy -p40_PEgasBound(t,iso_regi) = 0; -p40_PElowcarbonBound(t,iso_regi) = 0; -p40_El_RenShare(t,iso_regi) = 0; -p40_CoalBound(t,iso_regi) = 0; -p40_FE_RenShare(t,iso_regi) = 0; - -*** EU lower bound on renewable share in gross final energy (=secondary energy in REMIND) -p40_FE_RenShare(t,"EUR")$(t.val ge 2030) = 0.425; display p40_ElecBioBound; -display p40_TechBound; !! good to see if the input is displayed correctly +display p40_TechBound; + +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Renewable Share Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + + +*** renewable share targets per REMIND region from input data +table f40_RenShareTargets(ttot,all_regi,RenShareTargetType) "input data of renewable share targets in NPi [share]" +$ondelim +$include "./modules/40_techpol/NPi2025/input/f40_RenShareTargets.cs3r" +$offdelim +; + +*** apply renewable share targets to target year and all time steps afterwards +loop( (ttot,all_regi,RenShareTargetType)$(f40_RenShareTargets(ttot,all_regi,RenShareTargetType)), + p40_RenShareTargets(t,all_regi,RenShareTargetType)$(t.val ge ttot.val) = f40_RenShareTargets(ttot,all_regi,RenShareTargetType); +); + *** EOF ./modules/40_techpol/NPi2025/datainput.gms diff --git a/modules/40_techpol/NPi2025/declarations.gms b/modules/40_techpol/NPi2025/declarations.gms index 09ef5c07b9..fad9a0ac90 100644 --- a/modules/40_techpol/NPi2025/declarations.gms +++ b/modules/40_techpol/NPi2025/declarations.gms @@ -7,21 +7,38 @@ *** SOF ./modules/40_techpol/NPi2025/declarations.gms - +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Capacity Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ Parameter p40_TechBound(ttot,all_regi,all_te) "NPI capacity targets for solar (pv, csp), wind (total, onshore, offshore), nuclear, hydro, biomass, nuclear (GW)" p40_ElecBioBound(ttot,all_regi) "level for lower bound on biomass tech. absolute capacities, in GW" - p40_noncombust_acc_eff(ttot,iso_regi,all_te) "Efficiency used for the accounting of non-combustibles PE, e.g. 0.45 for 45% under substitution method, eq 1 for all carriers under direct accounting method" - p40_PEgasBound(ttot,iso_regi) "level for lower bound of gas share in PE, e.g. 0.2 for 20%" - p40_PElowcarbonBound(ttot,iso_regi) "Lower bound on low carbon share, e.g. 0.2 for 20%" - p40_El_RenShare(ttot,iso_regi) "Lower bound on low carbon share, e.g. 0.2 for 20%" p40_CoalBound(ttot,iso_regi) "level for upper bound on absolute capacities, in GW for all technologies except electromobility" - p40_FE_RenShare(ttot,iso_regi) "Lower bound on ren share, e.g. 0.2 for 20%"; -* p40_ElCap_RenShare(ttot,all_regi) "Lower bound on low carbon share in total installed capacity, e.g. 0.2 for 20%"; +; + + +Equation + q40_ElecBioBound "equation low-carbon push technology policy for bio power" + q40_windBound "lower bound on combined wind onshore and offshore" +; + +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Renewable Share Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + + +Parameter + p40_RenShareTargets(ttot,all_regi,RenShareTargetType) "renewable share targets in NPi per REMIND region aggregated from country-level targets [share]" +; + +Equation + q40_RenShare "constraint to enforce minimum share of renewables based on renewable share targets of NPi" +; -Equation q40_ElecBioBound "equation low-carbon push technology policy for bio power"; -Equation q40_FE_RenShare "Lower bound on renewable share"; -Equation q40_windBound "lower bound on combined wind onshore and offshore"; *** EOF ./modules/40_techpol/NPi2025/declarations.gms diff --git a/modules/40_techpol/NPi2025/equations.gms b/modules/40_techpol/NPi2025/equations.gms index 71a05f89b9..c979f20b7b 100644 --- a/modules/40_techpol/NPi2025/equations.gms +++ b/modules/40_techpol/NPi2025/equations.gms @@ -8,7 +8,11 @@ *' @equations - +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Capacity Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ ***am minimum targets for certain technologies q40_ElecBioBound(t,regi)$(t.val gt 2025).. @@ -22,17 +26,52 @@ q40_windBound(t,regi)$(t.val gt 2025 AND p40_TechBound(t,regi,"wind") gt 0).. =g= p40_TechBound(t,regi,"wind") * 0.001 ; - q40_FE_RenShare(t,regi)$(t.val ge 2025 AND sameas(regi,"EUR")).. -***cb for EUR, renewable SE must be greater than lowCarbonshare times total SE - ( sum(pe2se(enty,enty2,te)$(sameas(enty,"pegeo") OR sameas(enty,"pehyd") OR sameas(enty,"pewin") OR sameas(enty,"pesol") OR sameas(enty,"pebiolc") OR sameas(enty,"pebios") OR sameas(enty,"pebioil")), vm_prodSe(t,regi,enty,enty2,te)) - + sum(pc2te(enty,enty2,te,entySe(enty3))$peBio(enty), - max(0, pm_prodCouple(regi,enty,enty2,te,enty3)) * vm_prodSe(t,regi,enty,enty2,te)) +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Renewable Share Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + + +*** Minimum shares of renewable energy should be met in target year based on renewable energy share targets of NPI scenario. +*** Constraint currently supports the following target types (RenShareTargetType): +*** 1. RenElec "renewable share in secondary energy electricity" +*** 2. NonBioRenElec "non-biomass renewable share in secondary energy electricity" +*** 3. NonFossilElec "non-fossil share in secondary energy electricity" +*** 4. RenFE "renewable share in total final energy" +*** Note that for 4. we approximately use the renewable share in total secondary energy instead of final energy to reduce the complexity of the implementation. +*** Moreover, we count hydrogen as a renewable source by assumption since most hydrogen in REMIND is of renewable origin. +q40_RenShare(t,regi,RenShareTargetType)$(p40_RenShareTargets(t,regi,RenShareTargetType) + AND cm_RenShareTargets eq 1).. + sum(TargetType2ShareEnty(RenShareTargetType,enty), + sum(TargetType2TotalEnty(RenShareTargetType,enty2), +*** Renewable SE production of output SE carrier (enty2) as main product + sum(en2en(enty,enty2,te), + vm_prodSe(t,regi,enty,enty2,te) + ) + + +*** Renewable SE production of output SE carrier (enty2) as second product + sum(pc2te(enty,enty3,te,enty2), + max(0, pm_prodCouple(regi,enty,enty3,te,enty2)) + * vm_prodSe(t,regi,enty,enty3,te) + ) + ) ) - =g= sum(iso_regi$map_iso_regi(iso_regi,regi),p40_FE_RenShare(t,iso_regi))* - ( sum(pe2se(enty,enty2,te), vm_prodSe(t,regi,enty,enty2,te)) - + sum(pc2te(enty,enty2,te,entySe(enty3)), - max(0, pm_prodCouple(regi,enty,enty2,te,enty3)) * vm_prodSe(t,regi,enty,enty2,te)) - ); + =g= + p40_RenShareTargets(t,regi,RenShareTargetType) + * sum(TargetType2TotalEnty(RenShareTargetType,enty2), +*** Total SE production of SE output SE carrier (enty2) as main product + sum(en2en(enty,enty2,te), + vm_prodSe(t,regi,enty,enty2,te) + ) + + +*** Total SE production of SE output SE carrier (enty2) as second product + sum(pc2te(enty,enty3,te,enty2), + max(0, pm_prodCouple(regi,enty,enty3,te,enty2)) + * vm_prodSe(t,regi,enty,enty3,te) + ) + ) + ; *' @stop diff --git a/modules/40_techpol/NPi2025/input/files b/modules/40_techpol/NPi2025/input/files index 1e6cde5d95..8733548607 100644 --- a/modules/40_techpol/NPi2025/input/files +++ b/modules/40_techpol/NPi2025/input/files @@ -1 +1,2 @@ f40_NewClimate.cs3r +f40_RenShareTargets.cs3r diff --git a/modules/40_techpol/NPi2025/realization.gms b/modules/40_techpol/NPi2025/realization.gms index 97fad780cd..575c36c445 100644 --- a/modules/40_techpol/NPi2025/realization.gms +++ b/modules/40_techpol/NPi2025/realization.gms @@ -6,6 +6,7 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/40_techpol/NPi2025/realization.gms *####################### R SECTION START (PHASES) ############################## +$Ifi "%phase%" == "sets" $include "./modules/40_techpol/NPi2025/sets.gms" $Ifi "%phase%" == "declarations" $include "./modules/40_techpol/NPi2025/declarations.gms" $Ifi "%phase%" == "datainput" $include "./modules/40_techpol/NPi2025/datainput.gms" $Ifi "%phase%" == "equations" $include "./modules/40_techpol/NPi2025/equations.gms" diff --git a/modules/40_techpol/NPi2025/sets.gms b/modules/40_techpol/NPi2025/sets.gms new file mode 100644 index 0000000000..de5ab1588c --- /dev/null +++ b/modules/40_techpol/NPi2025/sets.gms @@ -0,0 +1,68 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/40_techpol/NPi2025/sets.gms + + + +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Renewable Share Targets +*------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ + + +*** Sets neeed for renewable share targets +Sets +RenShareTargetType "Renewable share target types" +/ + RenElec "renewable share in secondary energy electricity" + NonBioRenElec "non-biomass renewable share in secondary energy electricity" + NonFossilElec "non-fossil share in secondary energy electricity" + RenFE "renewable share in total final energy" +/ +; + +Sets +*** Mappings needed for renewable share targets (set filled with entries in sets_calculations.gms) +TargetType2ShareEnty(RenShareTargetType,all_enty) "map renewable share target type to energy carriers used to calculate numerator of share, e.g. renewable electricity" +/ +/ + +TargetType2TotalEnty(RenShareTargetType,all_enty) "map renewable share target type to energy carriers used to calculate denominator of share, e.g. total electricity" +/ +/ +; + + +*** Fill TargetType2ShareEnty and TargetType2TotalEnty mappings to calculate correct renewable shares depending on target type + +*** 1. RenElec: "renewable share in secondary energy electricity" +*** For renewable electricity share targets include all electricity produced from primary energy renewables as well as electricity produced from hydrogen. +*** Hydrogen is by assumption exclusively low-carbon hydrogen in REMIND and predominantly renewable-based hydrogen. +TargetType2ShareEnty("RenElec",enty)$( peRe(enty) OR sameas(enty,"seh2") ) = YES; +TargetType2TotalEnty("RenElec","seel") = YES; + + +*** 2. NonBioRenElec: "non-biomass renewable share in secondary energy electricity" +*** For non-biomass renewable electricity share targets include all electricity produced from primary energy renewables except bioenergy as well as electricity produced from hydrogen. +TargetType2ShareEnty("NonBioRenElec",enty)$( ( peRe(enty) OR sameas(enty,"seh2") ) AND NOT peBio(enty) ) = YES; +TargetType2TotalEnty("NonBioRenElec","seel") = YES; + +*** 3. NonFossilElec: "non-fossil share in secondary energy electricity" +*** For non-fossil electricity share targets include all electricity produced non-fossil sources. +TargetType2ShareEnty("NonFossilElec",enty)$( NOT peFos(enty) ) = YES; +TargetType2TotalEnty("NonFossilElec","seel") = YES; + +*** 4. RenFE: "renewable share in total final energy" +*** For renewable share target in total final energy, use share of renewable-based secondary energy in total secondary energy as an approximation. +*** Tracing back final energy to its primary energy origin (e.g. fossil or renewable) is more complicated. +*** Hence, this measure is not exactly the renewable share in final energy due to transmission losses between secondary energy and final energy. +TargetType2ShareEnty("RenFE",enty)$( peRe(enty) OR sameas(enty,"seh2") ) = YES; +TargetType2TotalEnty("RenFE",entySe) = YES; + + +*** EOF ./modules/40_techpol/NPi2025/sets.gms \ No newline at end of file diff --git a/modules/40_techpol/coalPhaseout/not_used.txt b/modules/40_techpol/coalPhaseout/not_used.txt index a6af5262ba..657d2a9570 100644 --- a/modules/40_techpol/coalPhaseout/not_used.txt +++ b/modules/40_techpol/coalPhaseout/not_used.txt @@ -19,3 +19,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire cm_phaseoutBiolc,input,questionnaire cm_nucscen,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/coalPhaseoutRegional/not_used.txt b/modules/40_techpol/coalPhaseoutRegional/not_used.txt index f8adbbf625..bdbe50b288 100644 --- a/modules/40_techpol/coalPhaseoutRegional/not_used.txt +++ b/modules/40_techpol/coalPhaseoutRegional/not_used.txt @@ -18,3 +18,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire cm_phaseoutBiolc,input,questionnaire cm_nucscen,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/lowCarbonPush/not_used.txt b/modules/40_techpol/lowCarbonPush/not_used.txt index 78fb573d9f..2fa5f68a95 100644 --- a/modules/40_techpol/lowCarbonPush/not_used.txt +++ b/modules/40_techpol/lowCarbonPush/not_used.txt @@ -20,3 +20,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire cm_phaseoutBiolc,input,questionnaire cm_nucscen,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/40_techpol/none/not_used.txt b/modules/40_techpol/none/not_used.txt index 9704d34699..448a8de85e 100644 --- a/modules/40_techpol/none/not_used.txt +++ b/modules/40_techpol/none/not_used.txt @@ -21,3 +21,4 @@ cm_startyear,input,questionnaire cm_H2targets,input,questionnaire cm_phaseoutBiolc,input,questionnaire cm_nucscen,input,questionnaire +cm_RenShareTargets,input,not needed diff --git a/modules/41_emicapregi/AbilityToPay/not_used.txt b/modules/41_emicapregi/AbilityToPay/not_used.txt index 009a793d19..3131f6520b 100644 --- a/modules/41_emicapregi/AbilityToPay/not_used.txt +++ b/modules/41_emicapregi/AbilityToPay/not_used.txt @@ -10,3 +10,5 @@ pm_gdp_gdx, parameter, ??? pm_budgetCO2eq, parameter, ??? vm_co2eqGlob,input,questionnaire cm_emiscen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? diff --git a/modules/41_emicapregi/CandC/not_used.txt b/modules/41_emicapregi/CandC/not_used.txt index e7413e8496..b3699610aa 100644 --- a/modules/41_emicapregi/CandC/not_used.txt +++ b/modules/41_emicapregi/CandC/not_used.txt @@ -13,3 +13,5 @@ pm_budgetCO2eq, parameter, ??? pm_shPPPMER,input,questionnaire pm_gdp,input,questionnaire cm_permittradescen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? diff --git a/modules/41_emicapregi/GDPint/not_used.txt b/modules/41_emicapregi/GDPint/not_used.txt index 22f931e772..4a39a3e606 100644 --- a/modules/41_emicapregi/GDPint/not_used.txt +++ b/modules/41_emicapregi/GDPint/not_used.txt @@ -13,3 +13,5 @@ pm_budgetCO2eq, parameter, ??? pm_shPPPMER,input,questionnaire pm_gdp,input,questionnaire cm_permittradescen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? diff --git a/modules/41_emicapregi/POPint/not_used.txt b/modules/41_emicapregi/POPint/not_used.txt index 1f082f491d..f3df1eafc1 100644 --- a/modules/41_emicapregi/POPint/not_used.txt +++ b/modules/41_emicapregi/POPint/not_used.txt @@ -11,3 +11,5 @@ vm_Mport,input,questionnaire pm_shPPPMER,input,questionnaire pm_gdp,input,questionnaire cm_permittradescen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? \ No newline at end of file diff --git a/modules/41_emicapregi/PerCapitaConvergence/not_used.txt b/modules/41_emicapregi/PerCapitaConvergence/not_used.txt index 78c95ab216..7f60d3e45d 100644 --- a/modules/41_emicapregi/PerCapitaConvergence/not_used.txt +++ b/modules/41_emicapregi/PerCapitaConvergence/not_used.txt @@ -12,3 +12,5 @@ vm_co2eqGlob,input,questionnaire pm_shPPPMER,input,questionnaire pm_gdp,input,questionnaire cm_emiscen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? \ No newline at end of file diff --git a/modules/41_emicapregi/TradingOnRef/bounds.gms b/modules/41_emicapregi/TradingOnRef/bounds.gms new file mode 100755 index 0000000000..b186a9c62b --- /dev/null +++ b/modules/41_emicapregi/TradingOnRef/bounds.gms @@ -0,0 +1,25 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/41_emicapregi/TradingOnRef/bounds.gms +*** calculate emission cap in absolute terms +vm_perm.fx(t,regi) = p41_co2eq(t,regi); + +display vm_perm.up; + +*** deactivate permit trade +if(cm_permittradescen eq 2, +vm_Xport.fx(t,regi,"perm") = 0; +vm_Mport.fx(t,regi,"perm") = 0; +); +*** limited permit trade: limit in terms of share of allocated permits +if(cm_permittradescen eq 3, +vm_Xport.fx(t,regi,"perm") = 0; +vm_Xport.up(t,regi,"perm") $ (t.val > 2025 and t.val <= cm_permitTradeFinalYr) = cm_permitTradeRatio * abs(p41_co2eq(t,regi)); +vm_Mport.fx(t,regi,"perm") = 0; +vm_Mport.up(t,regi,"perm") $ (t.val > 2025 and t.val <= cm_permitTradeFinalYr) = cm_permitTradeRatio * abs(p41_co2eq(t,regi)); +); +*** EOF ./modules/41_emicapregi/TradingOnRef/bounds.gms diff --git a/modules/41_emicapregi/TradingOnRef/datainput.gms b/modules/41_emicapregi/TradingOnRef/datainput.gms new file mode 100755 index 0000000000..6ca8b2bb39 --- /dev/null +++ b/modules/41_emicapregi/TradingOnRef/datainput.gms @@ -0,0 +1,22 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/41_emicapregi/TradingOnRef/datainput.gms + + +*** read in data of cost-optimal reference climate policy run +*' load CO2 emissions from reference run to assing the allocates permits + +Execute_Loadpoint "input_ref" p41_co2eq_in = vm_emiAll.l; +p41_co2eq(t, regi) = p41_co2eq_in(t,regi,"co2"); + + +*** initialization of pm_shPermit +pm_emicapglob(t) = sum(regi, p41_co2eq(t,regi)); +pm_shPerm(t,regi) = p41_co2eq(t,regi) / pm_emicapglob(t); + + +*** EOF ./modules/41_emicapregi/TradingOnRef/datainput.gms diff --git a/modules/41_emicapregi/TradingOnRef/declarations.gms b/modules/41_emicapregi/TradingOnRef/declarations.gms new file mode 100755 index 0000000000..37ad76b9ab --- /dev/null +++ b/modules/41_emicapregi/TradingOnRef/declarations.gms @@ -0,0 +1,20 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/41_emicapregi/TradingOnRef/declarations.gms + +variables +vm_perm(ttot,all_regi) "emission allowances [GtCeq]" +; + +parameter +pm_shPerm(tall, all_regi) "emission permit shares [share]" +pm_emicapglob(tall) "global emission cap [GtC]" +p41_co2eq_in(ttot,all_regi,all_enty) "emissions from cost-optimal reference run" +p41_co2eq(ttot,all_regi) "emissions from cost-optimal reference run" +; + +*** EOF ./modules/41_emicapregi/TradingOnRef/declarations.gms diff --git a/modules/46_carbonpriceRegi/NDC/not_used.txt b/modules/41_emicapregi/TradingOnRef/not_used.txt old mode 100644 new mode 100755 similarity index 51% rename from modules/46_carbonpriceRegi/NDC/not_used.txt rename to modules/41_emicapregi/TradingOnRef/not_used.txt index 85ff9312ef..0580ec5176 --- a/modules/46_carbonpriceRegi/NDC/not_used.txt +++ b/modules/41_emicapregi/TradingOnRef/not_used.txt @@ -4,4 +4,15 @@ # | AGPL-3.0, you are granted additional permissions described in the # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de -name,type,reason +name, type, reason +sm_budgetCO2eqGlob, parameter, ??? +pm_gdp_gdx, parameter, ??? +pm_budgetCO2eq, parameter, ??? +vm_co2eqGlob,input,questionnaire +cm_emiscen,input,questionnaire +p41_precorrection_reduction, parameter, ??? +p41_correct_factor, parameter, ??? +pm_shPPPMER,input,questionnaire +pm_pop, parameter, ??? +pm_gdp,input,questionnaire +p41_co2eq_bau, parameter, ??? \ No newline at end of file diff --git a/modules/41_emicapregi/TradingOnRef/realization.gms b/modules/41_emicapregi/TradingOnRef/realization.gms new file mode 100755 index 0000000000..f1229f9770 --- /dev/null +++ b/modules/41_emicapregi/TradingOnRef/realization.gms @@ -0,0 +1,24 @@ +*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/41_emicapregi/TradingOnRef/realization.gms + +*' @description: Emission caps/permits are allocated according to a reference run +*' There are three different trade patterns currently available. +*' cm_permittradescen = 1; !! def = 1 !! regexp = [1-3] +*' * (1): full permit trade (no restrictions) +*' * (2): no permit trade (only domestic mitigation) +*' * (3): limited trade (certain percentage of regional allowances) +*' for limited trade use cm_pemittradefinalyr to set the final year until permit trading is allowed +*' with cm_pemittraderatio set the percentage of allowed trade + + +*####################### R SECTION START (PHASES) ############################## +$Ifi "%phase%" == "declarations" $include "./modules/41_emicapregi/TradingOnRef/declarations.gms" +$Ifi "%phase%" == "datainput" $include "./modules/41_emicapregi/TradingOnRef/datainput.gms" +$Ifi "%phase%" == "bounds" $include "./modules/41_emicapregi/TradingOnRef/bounds.gms" +*######################## R SECTION END (PHASES) ############################### +*** EOF ./modules/41_emicapregi/TradingOnRef/realization.gms diff --git a/modules/41_emicapregi/exog/not_used.txt b/modules/41_emicapregi/exog/not_used.txt index ad24171408..5e9156d090 100644 --- a/modules/41_emicapregi/exog/not_used.txt +++ b/modules/41_emicapregi/exog/not_used.txt @@ -16,3 +16,5 @@ cm_emiscen, switch, ??? pm_shPPPMER,input,questionnair pm_gdp,input,questionnaire cm_permittradescen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? diff --git a/modules/41_emicapregi/module.gms b/modules/41_emicapregi/module.gms index e8e89b5406..14ae2e4d0e 100644 --- a/modules/41_emicapregi/module.gms +++ b/modules/41_emicapregi/module.gms @@ -26,6 +26,7 @@ $Ifi "%emicapregi%" == "CandC" $include "./modules/41_emicapregi/CandC/realizati $Ifi "%emicapregi%" == "GDPint" $include "./modules/41_emicapregi/GDPint/realization.gms" $Ifi "%emicapregi%" == "POPint" $include "./modules/41_emicapregi/POPint/realization.gms" $Ifi "%emicapregi%" == "PerCapitaConvergence" $include "./modules/41_emicapregi/PerCapitaConvergence/realization.gms" +$Ifi "%emicapregi%" == "TradingOnRef" $include "./modules/41_emicapregi/TradingOnRef/realization.gms" $Ifi "%emicapregi%" == "exog" $include "./modules/41_emicapregi/exog/realization.gms" $Ifi "%emicapregi%" == "none" $include "./modules/41_emicapregi/none/realization.gms" *###################### R SECTION END (MODULETYPES) ############################ diff --git a/modules/41_emicapregi/none/not_used.txt b/modules/41_emicapregi/none/not_used.txt index f08fbec934..2ae02ab04f 100644 --- a/modules/41_emicapregi/none/not_used.txt +++ b/modules/41_emicapregi/none/not_used.txt @@ -14,3 +14,5 @@ cm_emiscen, switch, ??? pm_shPPPMER,input,questionnaire pm_gdp,input,questionnaire cm_permittradescen,input,questionnaire +cm_permitTradeFinalYr, input, ??? +cm_permitTradeRatio, input, ??? diff --git a/modules/45_carbonprice/NDC/datainput.gms b/modules/45_carbonprice/NDC/datainput.gms index 66b1f4f5e6..ad35620425 100644 --- a/modules/45_carbonprice/NDC/datainput.gms +++ b/modules/45_carbonprice/NDC/datainput.gms @@ -6,25 +6,12 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/NDC/datainput.gms -*** CO2 tax level from business as usual run, serves as minimal tax in NDC +*** load carbon price trajectory from reference run (NPi scenario) Execute_Loadpoint "input_ref" p45_taxCO2eq_bau = pm_taxCO2eq; -pm_taxCO2eq(t,regi) = p45_taxCO2eq_bau(t,regi) - -*** parameters for exponential increase after NDC targets -Scalar p45_taxCO2eqGlobal2030 "startprice in 2030 of global CO2eq taxes towards which countries converge [T$/GtC]"; -p45_taxCO2eqGlobal2030 = 30 * sm_D2005_2_D2017 * sm_DptCO2_2_TDpGtC; -Scalar p45_taxCO2eqYearlyIncrease "yearly multiplicative increase of co2 tax, write 3% as 1.03 [1]" /1.0125/; - -Scalar p45_taxCO2eqConvergenceYear "year until which CO2eq taxes have converged globally [year]" /2100/; -*** set Years for CO2eq taxes to converge after 2030 -if(cm_NDC_divergentScenario = 0, - p45_taxCO2eqConvergenceYear = 2100; -elseif cm_NDC_divergentScenario = 1, - p45_taxCO2eqConvergenceYear = 2150; -elseif cm_NDC_divergentScenario = 2, - p45_taxCO2eqConvergenceYear = 3000; -); +*** initialize carbon price trajectory before target adjustment iterations by setting carbon price to NPi +pm_taxCO2eq(t,regi) = p45_taxCO2eq_bau(t,regi); + *** load NDC data Table f45_factorTargetyear(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with multiplier for target year emissions vs 2015 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]" @@ -40,18 +27,18 @@ p45_factorTargetyear(t,all_regi) = f45_factorTargetyear(t,all_regi,"%cm_NDC_vers display p45_factorTargetyear; -Table f45_2015shareTarget(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with 2015 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]" +Table f45_shareTarget(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with estimated target year GHG emissions share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]" $offlisting $ondelim -$include "./modules/45_carbonprice/NDC/input/fm_2015shareTarget.cs3r" +$include "./modules/45_carbonprice/NDC/input/fm_shareTarget.cs3r" $offdelim $onlisting ; -Parameter p45_2015shareTarget(ttot,all_regi) "2015 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]"; -p45_2015shareTarget(t,all_regi) = f45_2015shareTarget(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%"); +Parameter p45_shareTarget(ttot,all_regi) "Estimated target year GHG emissions share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]"; +p45_shareTarget(t,all_regi) = f45_shareTarget(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%"); -display p45_2015shareTarget; +display p45_shareTarget; Parameter p45_BAU_reg_emi_wo_LU_wo_bunkers(ttot,all_regi) "regional GHG emissions (without LU and without bunkers) in BAU scenario [MtCO2eq/yr]" / @@ -63,21 +50,19 @@ $offdelim / ; *** parameters for selecting NDC years -Scalar p45_ignoreNDCbefore "NDC targets before this years are ignored, for example to exclude 2030 targets [year]" /2024/; -p45_ignoreNDCbefore = max(p45_ignoreNDCbefore, cm_startyear) -Scalar p45_ignoreNDCafter "NDC targets after this years are ignored, for example to exclude 2050 net zero targets [year]" /2030/; -Scalar p45_minRatioOfCoverageToMax "only targets whose coverage is this times p45_bestNDCcoverage are considered. Use 1 for only best [0..1]" /1.0/; -Scalar p45_useSingleYearCloseTo "if 0: use all. If > 0: use only one single NDC target per country closest to this year (use 2030.4 to prefer 2030 over 2035 over 2025) [year]" /2030.4/; - -Set p45_NDCyearSet(ttot,all_regi) "YES for years whose NDC targets is used"; -Parameter p45_bestNDCcoverage(all_regi) "highest coverage of NDC targets within region [0..1]"; -Parameter p45_distanceToOptyear(ttot,all_regi) "distance to p45_useSingleYearCloseTo to favor years in case of multiple equally good targets [year]"; -Parameter p45_minDistanceToOptyear(all_regi) "minimal distance to p45_useSingleYearCloseTo per region [year]"; - -p45_bestNDCcoverage(regi) = smax(t$(t.val <= p45_ignoreNDCafter AND t.val >= p45_ignoreNDCbefore), p45_2015shareTarget(t,regi)); +Set t_NDC_targetYear(ttot) "Years for which NDC emissions targets can be applied [0 or 1]" / %cm_NDC_targetYear% /; +Scalar p45_minRatioOfCoverageToMax "only targets whose coverage is this times p45_bestNDCcoverage are considered. Use 1 for only best [0..1]" /0/; +Scalar p45_useSingleYearCloseTo "if 0: use all. If > 0: use only one single NDC target per country closest to this year (use 2030.4 to prefer 2030 over 2035 over 2025) [year]" /0/; +Set p45_NDCyearSet(ttot,all_regi) "YES for years whose NDC targets is used"; +Parameter p45_bestNDCcoverage(all_regi) "highest coverage of NDC targets within region [0..1]"; +Parameter p45_distanceToOptyear(ttot,all_regi) "distance to p45_useSingleYearCloseTo to favor years in case of multiple equally good targets [year]"; +Parameter p45_minDistanceToOptyear(all_regi) "minimal distance to p45_useSingleYearCloseTo per region [year]"; + + +p45_bestNDCcoverage(regi) = smax(t$(t_NDC_targetYear(t)), p45_shareTarget(t,regi)); display p45_bestNDCcoverage; -p45_NDCyearSet(t,regi)$(t.val <= p45_ignoreNDCafter AND t.val >= p45_ignoreNDCbefore) = p45_2015shareTarget(t,regi) >= p45_minRatioOfCoverageToMax * p45_bestNDCcoverage(regi); +p45_NDCyearSet(t,regi)$(t_NDC_targetYear(t)) = p45_shareTarget(t,regi) >= p45_minRatioOfCoverageToMax * p45_bestNDCcoverage(regi); if(p45_useSingleYearCloseTo > 0, p45_distanceToOptyear(p45_NDCyearSet(t,regi)) = abs(t.val - p45_useSingleYearCloseTo); @@ -93,17 +78,7 @@ p45_lastNDCyear(regi) = smax( p45_NDCyearSet(t, regi), t.val ); display p45_NDCyearSet,p45_firstNDCyear,p45_lastNDCyear; -*** adjust reduction value for LAM based on the assumption that Brazilian reduction targets are only from landuse, see https://climateactiontracker.org/countries/brazil/ -*** the adjustment were calculated such that Brazil is assumed to maintain its 2015 non-landuse emissions, as follows: -*** Use R and the code in https://github.com/pik-piam/mrremind/blob/master/R/calcEmiTarget.R to calculate dummy1, ghgTarget, ghgfactor, then run the following code: -*** countries <- toolGetMapping("regionmappingREMIND.csv",where = "mappingfolder",type = "regional") -*** LAMCountries <- countries$CountryCode[countries$RegionCode == "LAM"] -*** shareWithinTargetCountries <- dummy1[LAMCountries,"y2030",] * ghgTarget[LAMCountries,"y2030",] / dimSums(dummy1[LAMCountries,"y2030",] * ghgTarget[LAMCountries,"y2030", ], dim=1) -*** print(shareWithinTargetCountries["BRA",,]*(as.numeric(ghg["BRA","y2015"])/as.numeric(ghg["BRA","y2005"])-as.numeric(ghgfactor["BRA","y2030","SSP2"]))) -*** 0.2 is a rounded value valid for all except 2018_uncond, because Brazil had no unconditional target then. - -if (not sameas("%cm_NDC_version%","2018_uncond"), - p45_factorTargetyear(t,regi)$(sameas(regi,"LAM") AND sameas(t,"2030")) = p45_factorTargetyear(t,regi) + 0.2; -); +*** switch off MAC abatement of land emissions, scenario should only have Magpie baseline emissions +pm_macSwitch(ttot,regi,emiMacMagpie) = 0; *** EOF ./modules/45_carbonprice/NDC/datainput.gms diff --git a/modules/45_carbonprice/NDC/declarations.gms b/modules/45_carbonprice/NDC/declarations.gms index 9b463ba588..23ad5b2bf4 100644 --- a/modules/45_carbonprice/NDC/declarations.gms +++ b/modules/45_carbonprice/NDC/declarations.gms @@ -15,8 +15,11 @@ p45_factorRescaleCO2TaxLtd(ttot,all_regi) "multiplicative factor p45_factorRescaleCO2Tax_iter(iteration,ttot,all_regi) "Track the changes of p45_factorRescaleCO2Tax over the iterations [1]" p45_factorRescaleCO2TaxLtd_iter(iteration,ttot,all_regi) "Track the changes of p45_factorRescaleCO2TaxLimited over the iterations [1]" p45_taxCO2eqFirstNDCyear(all_regi) "CO2eq tax in p45_firstNDCyear [T$/GtC]" -p45_taxCO2eqLastNDCyear(all_regi) "CO2eq tax in p45_lastNDCyear [T$/GtC]" p45_taxCO2eq_bau(ttot,all_regi) "level of CO2 taxes in business as usual run [T$/GtC]" +pm_NDCEmiTargetDeviation(ttot,all_regi) "deviation of REMIND emissions to NDC target emissions in last iteration normalized to NDC target emissions [0-1]" +$ifthen not "%cm_NDC_CO2PriceLimit%" == "off" +p45_CO2PriceLimitNDC(ttot,all_regi) "Upper limit of CO2 price in NDC realization, read from switch cm_NDC_CO2PriceLimit [$/tCO2]" / %cm_NDC_CO2PriceLimit% / +$endif ; Scalar p45_adjustExponent "exponent in tax adjustment process [1]"; diff --git a/modules/45_carbonprice/NDC/input/files b/modules/45_carbonprice/NDC/input/files index 8c7d777df8..663ab8945b 100644 --- a/modules/45_carbonprice/NDC/input/files +++ b/modules/45_carbonprice/NDC/input/files @@ -1,2 +1,2 @@ -fm_2015shareTarget.cs3r +fm_shareTarget.cs3r fm_factorTargetyear.cs3r \ No newline at end of file diff --git a/modules/45_carbonprice/NDC/not_used.txt b/modules/45_carbonprice/NDC/not_used.txt index ef40b6165a..a9f1f08515 100644 --- a/modules/45_carbonprice/NDC/not_used.txt +++ b/modules/45_carbonprice/NDC/not_used.txt @@ -38,3 +38,14 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck +cm_startyear,input,not used +sm_D2005_2_D2017,input,not used +cm_iterative_target_adj,input,not used diff --git a/modules/45_carbonprice/NDC/postsolve.gms b/modules/45_carbonprice/NDC/postsolve.gms index 3ce1dc2dfc..6462b09613 100644 --- a/modules/45_carbonprice/NDC/postsolve.gms +++ b/modules/45_carbonprice/NDC/postsolve.gms @@ -6,7 +6,6 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/NDC/postsolve.gms -if(cm_iterative_target_adj eq 3, display pm_taxCO2eq; @@ -25,6 +24,10 @@ p45_CO2eqwoLU_actual(p45_NDCyearSet(t,regi)) = pm_taxCO2eq_iter(iteration,p45_NDCyearSet(t,regi)) = pm_taxCO2eq(t,regi); p45_CO2eqwoLU_actual_iter(iteration,p45_NDCyearSet(t,regi)) = p45_CO2eqwoLU_actual(t,regi); +*** calculate relative deviation of actual emissions from target emissions +** as measure how close we are to reaching NDC emissions target +pm_NDCEmiTargetDeviation(p45_NDCyearSet(t,regi)) = (p45_CO2eqwoLU_goal(t,regi) - p45_CO2eqwoLU_actual(t,regi)) / p45_CO2eqwoLU_goal(t,regi); + display vm_co2eq.l; display p45_CO2eqwoLU_actual; display p45_CO2eqwoLU_goal; @@ -52,9 +55,17 @@ p45_factorRescaleCO2TaxLtd_iter(iteration,t,regi) = p45_factorRescaleCO2TaxLtd(t display p45_factorRescaleCO2TaxLtd_iter; -*CB* special case SSA: maximum carbon price at 30 in 2025, 45 in 2030, to reflect low energy productivity of region, and avoid high losses -pm_taxCO2eq(t,regi)$(sameas(t,"2025") AND sameas(regi,"SSA")) = min(pm_taxCO2eq("2025",regi)$(sameas(regi,"SSA")),30 * sm_DptCO2_2_TDpGtC); -pm_taxCO2eq(t,regi)$(sameas(t,"2030") AND sameas(regi,"SSA")) = min(pm_taxCO2eq("2030",regi)$(sameas(regi,"SSA")),45 * sm_DptCO2_2_TDpGtC); + +$ifThen.cm_NDC_CO2PriceLimit not "%cm_NDC_CO2PriceLimit%" == "off" +*** limit CO2 prices in NDC realization according to switch cm_NDC_CO2PriceLimit + loop( p45_NDCyearSet(t,regi)$( p45_CO2PriceLimitNDC(t,regi) > 0 ) , + pm_taxCO2eq(t,regi) = min( pm_taxCO2eq(t,regi), + p45_CO2PriceLimitNDC(t,regi) * sm_DptCO2_2_TDpGtC ); +*** after target year, CO2 price limit increases by 20%/yr + pm_taxCO2eq(t2,regi)$( t2.val gt t.val) = min( pm_taxCO2eq(t2,regi), + ( p45_CO2PriceLimitNDC(t,regi) * (1 + 0.2 * (t2.val - t.val)) ) * sm_DptCO2_2_TDpGtC ); + ); +$endif.cm_NDC_CO2PriceLimit *** calculate tax path until NDC target year - linear increase p45_taxCO2eqFirstNDCyear(regi) = smax(t$(t.val = p45_firstNDCyear(regi)), pm_taxCO2eq(t,regi)); @@ -65,26 +76,47 @@ loop( p45_NDCyearSet(t2,regi) , pm_taxCO2eq(t,regi)$(t.val > t2.val AND not p45_NDCyearSet(t,regi)) = pm_taxCO2eq(t2,regi); ) ; -*** convergence scheme post NDC target year: exponential increase AND regional convergence until p45_taxCO2eqConvergenceYear -p45_taxCO2eqLastNDCyear(regi) = smax(t$(t.val = p45_lastNDCyear(regi)), pm_taxCO2eq(t,regi)); - -pm_taxCO2eq(t,regi)$(t.val gt p45_lastNDCyear(regi)) - = ( !! regional, weight going from 1 in NDC target year to 0 in 2100 - p45_taxCO2eqLastNDCyear(regi) * p45_taxCO2eqYearlyIncrease**(t.val-p45_lastNDCyear(regi)) * (max(p45_taxCO2eqConvergenceYear,t.val) - t.val) - !! global, weight going from 0 in NDC target year to 1 in and after 2100 - + p45_taxCO2eqGlobal2030 * p45_taxCO2eqYearlyIncrease**(t.val-2030) * (min(t.val,p45_taxCO2eqConvergenceYear) - p45_lastNDCyear(regi)) - )/(p45_taxCO2eqConvergenceYear - p45_lastNDCyear(regi)); - -***as a minimum, use BAU and have linear price increase starting from 1$ in 2030 -pm_taxCO2eq(t,regi)$(t.val ge 2030) = max( - pm_taxCO2eq(t,regi), - p45_taxCO2eq_bau(t,regi), - 1 * sm_DptCO2_2_TDpGtC * (1+(t.val-2030)*9/7), p45_taxCO2eq_bau(t,regi) + +*** post-NDC target year development of CO2 price depends on switch cm_NDC_postTargetDevelopment +$ifThen.cm_NDC_postTargetDevelopment "%cm_NDC_postTargetDevelopment%" == "constant" +loop(regi, + loop( t2$( t2.val eq p45_lastNDCyear(regi) ) , + pm_taxCO2eq(t,regi)$(t.val gt t2.val) = pm_taxCO2eq(t2,regi); + ); +); +$elseif.cm_NDC_postTargetDevelopment "%cm_NDC_postTargetDevelopment%" == "global_conv" +*** set carbon price to 100$/tCO2 from 2100 +pm_taxCO2eq(t,regi)$( t.val ge 2100) = 100 * sm_DptCO2_2_TDpGtC; +*** linearly converge from carbon price of last NDC target year to 100$/tCO2 in 2100 for all regions +loop(regi, + loop( t2$( t2.val eq p45_lastNDCyear(regi) ) , + pm_taxCO2eq(t,regi)$(t.val gt t2.val AND t.val le 2100) = pm_taxCO2eq(t2,regi) + + (pm_taxCO2eq("2100",regi)-pm_taxCO2eq(t2,regi)) + * (t.val - t2.val) + / (2100 - t2.val); + ); +); +$endif.cm_NDC_postTargetDevelopment + +*** apply assumption about minimum CO2 price according to switch cm_NDC_CO2PriceMinimum +$ifThen.cm_NDC_CO2PriceMinimum "%cm_NDC_CO2PriceMinimum%" == "zero" +*** no minimum CO2 price after first NDC target year, i.e. CO2 price can decrease to zero after first NDC target year, so do nothing +$elseif.cm_NDC_CO2PriceMinimum "%cm_NDC_CO2PriceMinimum%" == "NPi" +*** CO2 price cannot fall below carbon price of NPi run as this represents the development of current policies +*** CO2 Price of NPi stored in p45_taxCO2eq_bau +pm_taxCO2eq(t,regi) = max( pm_taxCO2eq(t,regi), + p45_taxCO2eq_bau(t,regi) ); +$elseif.cm_NDC_CO2PriceMinimum "%cm_NDC_CO2PriceMinimum%" == "NonDecreasing" +*** CO2 price cannot decrease after first NDC target year, but can increase or remain constant +loop(regi, + loop( t2$( t2.val eq p45_lastNDCyear(regi) ) , + pm_taxCO2eq(t,regi)$(t.val gt t2.val) = max( pm_taxCO2eq(t,regi), + pm_taxCO2eq(t2,regi) ); ); +); +$endif.cm_NDC_CO2PriceMinimum display pm_taxCO2eq; -*** end if from beginning of file (cm_iterative_target_adj eq 3) -); *** EOF ./modules/45_carbonprice/NDC/postsolve.gms diff --git a/modules/45_carbonprice/NDC/preloop.gms b/modules/45_carbonprice/NDC/preloop.gms index 9709307588..2ed128f97b 100644 --- a/modules/45_carbonprice/NDC/preloop.gms +++ b/modules/45_carbonprice/NDC/preloop.gms @@ -6,30 +6,16 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/NDC/preloop.gms -*** first calculate tax path until last NDC target year - linear increase -pm_taxCO2eq(t,regi)$(t.val gt 2021 AND t.val le p45_lastNDCyear(regi)) = pm_taxCO2eq("2020",regi)*(t.val-2015)/5; - -*** convergence scheme after the last NDC target year: exponential increase with 1.25% AND regional convergence until p45_taxCO2eqConvergenceYear -p45_taxCO2eqLastNDCyear(regi) = smax(t$(t.val = p45_lastNDCyear(regi)), pm_taxCO2eq(t,regi)); - -pm_taxCO2eq(t,regi)$(t.val gt p45_lastNDCyear(regi)) - = ( !! regional, weight going from 1 in last NDC target year to 0 in 2100 - p45_taxCO2eqLastNDCyear(regi) * p45_taxCO2eqYearlyIncrease**(t.val-p45_lastNDCyear(regi)) * (max(p45_taxCO2eqConvergenceYear,t.val) - t.val) - !! global, weight going from 0 in NDC target year to 1 in and after 2100 - + p45_taxCO2eqGlobal2030 * p45_taxCO2eqYearlyIncrease**(t.val-2030) * (min(p45_taxCO2eqConvergenceYear,t.val) - p45_lastNDCyear(regi)) - )/(p45_taxCO2eqConvergenceYear - p45_lastNDCyear(regi)); - -pm_taxCO2eq(t,regi) = max(pm_taxCO2eq(t,regi), p45_taxCO2eq_bau(t,regi)); - -display pm_taxCO2eq; *#' @equations -*#' calculate level of emission target that it should converge to, composed of: -*#' emission target relative to 2005 emissions (factor_targetyear) for part of region with NDC target -*#' baseline for the rest of the countries +*#' calculate level of emission target per REMIND region. It is componsed to two terms: +*#' 1. Contribution of countries within REMIND region with NDC target: +*#' share of emissions covered by NDC in particular region * REMIND NPI emissions in 2015 * (country-aggregated) relative NDC emissions target with respect to 2015 +*#' 2. Contribution of countries within REMIND region without NDC target: +*#' (1 - share of emissions covered by NDC in particular region) * REMIND NPI emissions in target year p45_CO2eqwoLU_goal(p45_NDCyearSet(t,regi)) = - p45_2015shareTarget(t,regi) * p45_BAU_reg_emi_wo_LU_wo_bunkers("2015",regi) * p45_factorTargetyear(t,regi) !! share with NDC target - + (1-p45_2015shareTarget(t,regi)) * p45_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); !! baseline for share of countries without NDC target + p45_shareTarget(t,regi) * p45_BAU_reg_emi_wo_LU_wo_bunkers("2015",regi) * p45_factorTargetyear(t,regi) !! share with NDC target + + (1-p45_shareTarget(t,regi)) * p45_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); !! baseline for share of countries without NDC target display pm_taxCO2eq,p45_CO2eqwoLU_goal; diff --git a/modules/45_carbonprice/NPi/datainput.gms b/modules/45_carbonprice/NPi/datainput.gms index c74a2fbfd1..3036055369 100644 --- a/modules/45_carbonprice/NPi/datainput.gms +++ b/modules/45_carbonprice/NPi/datainput.gms @@ -22,4 +22,8 @@ pm_taxCO2eq(ttot,regi)$(ttot.val gt 2100) = pm_taxCO2eq("2100",regi); display pm_taxCO2eq; + +*** switch off MAC abatement of land emissions, scenario should only have Magpie baseline emissions +pm_macSwitch(ttot,regi,emiMacMagpie) = 0; + *** EOF ./modules/45_carbonprice/NPi/datainput.gms diff --git a/modules/45_carbonprice/NPi/not_used.txt b/modules/45_carbonprice/NPi/not_used.txt index 58db7d143c..b1a01d2cdb 100644 --- a/modules/45_carbonprice/NPi/not_used.txt +++ b/modules/45_carbonprice/NPi/not_used.txt @@ -22,7 +22,6 @@ cm_iterative_target_adj,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_startyear,input,added by codeCheck @@ -47,3 +46,12 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,vm_co2eadded by codeCheckq +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/NPi2025/datainput.gms b/modules/45_carbonprice/NPi2025/datainput.gms index 0df1afacae..e76fc90d9e 100755 --- a/modules/45_carbonprice/NPi2025/datainput.gms +++ b/modules/45_carbonprice/NPi2025/datainput.gms @@ -10,14 +10,49 @@ *** CO2 Tax level growing exponentially from 2025 value taken from input data ***---------------------------- +*** for years up to 2025 take CO2 price defined by fm_taxCO2eqHist +*** fm_taxCO2eqHist reflects historical carbon prices and +*** assumptions on current aggregate effect of other policies pm_taxCO2eq(ttot,regi)$(ttot.val le 2025) = fm_taxCO2eqHist(ttot,regi) * sm_DptCO2_2_TDpGtC; -pm_taxCO2eq(t,regi)$(t.val gt 2025) = sum(ttot, pm_taxCO2eq(ttot,regi)$(ttot.val eq 2025)) + (t.val - 2025) * (20/75) * sm_DptCO2_2_TDpGtC; +*** for years after 2025, constant carbon prices (2025-2100) +!! In mid to long-term the REMIND current policy scenario is more optimistic than other projections like UNEP or CAT +!! Therefore, a constant carbon price beyond 2025 represents more realistic trajectories for the NPi scenario to this date (source: IEA Current Policies) +pm_taxCO2eq(t,regi)$(t.val gt 2025) = sum(ttot, pm_taxCO2eq(ttot,regi)$(ttot.val eq 2025)) ; +*** for EU, take carbon price from fm_taxCO2eqHist up to 2030 +!! In case of the EU, a more stringent political landscape feeds the assumption that the carbon price would increase in the short- and mid-term. +!! The carbon price in 2030-2050 is aligned with the binding targets and credible policies included in the PBL protocol 2025 (source: NewClimate). +!! In particular, this includes reaching the FF55 -55% GHG reduction in 2030, and the assumption that the EU would get close but miss the net-zero ETS emissions in 2040. loop(ext_regi$sameas(ext_regi, "EUR_regi"), - pm_taxCO2eq(t,regi)$(t.val ge 2030 AND regi_group(ext_regi,regi)) = (fm_taxCO2eqHist("2030",regi)+ (t.val - 2030) * (20/75)) * sm_DptCO2_2_TDpGtC; - ); +*** 1. add 2030 + pm_taxCO2eq(t,regi)$(t.val = 2030 AND regi_group(ext_regi,regi)) + = fm_taxCO2eqHist("2030",regi) * sm_DptCO2_2_TDpGtC; -pm_taxCO2eq(t,regi)$(t.val gt 2100) = pm_taxCO2eq("2100",regi); !! to prevent huge taxes after 2100 and the resulting convergence problems, set taxes after 2100 equal to 2100 value +*** 2. linear interpolation from 2030 value to 200 in 2050 + pm_taxCO2eq(t,regi)$(t.val > 2030 AND t.val < 2050 AND regi_group(ext_regi,regi)) + = fm_taxCO2eqHist("2030",regi) * sm_DptCO2_2_TDpGtC + * (2050 - t.val) / (2050 - 2030) + + 200 * sm_DptCO2_2_TDpGtC + * (t.val - 2030) / (2050 - 2030); + +*** 3. constant after 2050 + pm_taxCO2eq(t,regi)$(t.val ge 2050 AND regi_group(ext_regi,regi)) + = 200 * sm_DptCO2_2_TDpGtC; + +); + +*** for USA drop carbon pricing to 0 due roll back policies +!! In case of the US, the carbon price is dropped completely, to reflect government decisions of withdrawing from the IRA and Paris Agreement, +!! also in line with the PBL protocol 2025 (source: NewClimate). +loop(ext_regi$sameas(ext_regi,"USA_regi"), + pm_taxCO2eq(t,regi)$(t.val ge 2030 AND regi_group(ext_regi,regi)) + = 0; +); +*** after 2100, keep CO2 price constant at 2100 level +pm_taxCO2eq(t,regi)$(t.val gt 2100) = pm_taxCO2eq("2100",regi); + +*** switch off MAC abatement of land emissions, scenario should only have Magpie baseline emissions +pm_macSwitch(ttot,regi,emiMacMagpie) = 0; *** EOF ./modules/45_carbonprice/NPi2025/datainput.gms diff --git a/modules/45_carbonprice/NPi2025/not_used.txt b/modules/45_carbonprice/NPi2025/not_used.txt index 0a78bbd317..11d549acfd 100755 --- a/modules/45_carbonprice/NPi2025/not_used.txt +++ b/modules/45_carbonprice/NPi2025/not_used.txt @@ -23,7 +23,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_peakBudgYr,input,not needed @@ -47,3 +46,12 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/NPi2025expo/datainput.gms b/modules/45_carbonprice/NPi2025expo/datainput.gms index dccbc659da..5062431d0a 100755 --- a/modules/45_carbonprice/NPi2025expo/datainput.gms +++ b/modules/45_carbonprice/NPi2025expo/datainput.gms @@ -20,4 +20,7 @@ loop(ext_regi$sameas(ext_regi, "EUR_regi"), pm_taxCO2eq(t,regi)$(t.val gt 2100) = pm_taxCO2eq("2100",regi); !! to prevent huge taxes after 2100 and the resulting convergence problems, set taxes after 2100 equal to 2100 value +*** switch off MAC abatement of land emissions, scenario should only have Magpie baseline emissions +pm_macSwitch(ttot,regi,emiMacMagpie) = 0; + *** EOF ./modules/45_carbonprice/NPi2025expo/datainput.gms diff --git a/modules/45_carbonprice/NPi2025expo/not_used.txt b/modules/45_carbonprice/NPi2025expo/not_used.txt index a6e73d533a..7e7d60386d 100755 --- a/modules/45_carbonprice/NPi2025expo/not_used.txt +++ b/modules/45_carbonprice/NPi2025expo/not_used.txt @@ -23,7 +23,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_peakBudgYr,input,not needed @@ -46,3 +45,12 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/exogenous/not_used.txt b/modules/45_carbonprice/exogenous/not_used.txt index ffc1c822e0..47f080affa 100644 --- a/modules/45_carbonprice/exogenous/not_used.txt +++ b/modules/45_carbonprice/exogenous/not_used.txt @@ -20,7 +20,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire sm_DptCO2_2_TDpGtC,input,questionnaire @@ -47,3 +46,13 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/exogenousExpo/not_used.txt b/modules/45_carbonprice/exogenousExpo/not_used.txt index 8031627d09..cf43557bfc 100755 --- a/modules/45_carbonprice/exogenousExpo/not_used.txt +++ b/modules/45_carbonprice/exogenousExpo/not_used.txt @@ -22,7 +22,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire sm_DptCO2_2_TDpGtC,input,added by codeCheck @@ -47,3 +46,13 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/expoLinear/not_used.txt b/modules/45_carbonprice/expoLinear/not_used.txt index d84e26fba8..4a6f958870 100644 --- a/modules/45_carbonprice/expoLinear/not_used.txt +++ b/modules/45_carbonprice/expoLinear/not_used.txt @@ -19,7 +19,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_peakBudgYr,input,added by codeCheck @@ -42,3 +41,13 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/functionalForm/datainput.gms b/modules/45_carbonprice/functionalForm/datainput.gms index 06e3a54e13..4385c320ec 100644 --- a/modules/45_carbonprice/functionalForm/datainput.gms +++ b/modules/45_carbonprice/functionalForm/datainput.gms @@ -7,7 +7,7 @@ *** SOF ./modules/45_carbonprice/functionalForm/datainput.gms *** Check that cm_iterative_target_adj is equal to 0, 5, 7, or 9 -if( not ((cm_iterative_target_adj = 0) or (cm_iterative_target_adj eq 5) or (cm_iterative_target_adj eq 7) or (cm_iterative_target_adj eq 9) ), +if( not ((cm_iterative_target_adj = 0) or (cm_iterative_target_adj eq 5) or (cm_iterative_target_adj eq 7) or (cm_iterative_target_adj eq 9)), abort "The realization 45_carbonprice/functionalForm is only compatible with cm_iterative_target_adj = 0, 5, 7 or 9. Please adjust config file accordingly" ); @@ -18,7 +18,6 @@ display p45_taxCO2eq_path_gdx_ref; *** -------- initial declaration of parameters for iterative target adjustment o45_reached_until2150pricepath(iteration) = 0; - ***----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** Part I (Global anchor trajectory): The functional form (linear/exponential) of the global anchor trajectory is chosen via cm_taxCO2_functionalForm. *** The (initial) global anchor carbon price in cm_startyear is chosen via cm_taxCO2_startyear. Alternatively, the (initial) global anchor carbon price in cm_peakBudgYr is chosen via cm_taxCO2_peakBudgYr. @@ -122,7 +121,7 @@ $endIf.taxCO2globalAnchor p45_taxCO2eq_anchor_until2150(ttot) = p45_taxCO2eq_anchor(ttot); *** Adjust global anchor trajectory so that after cm_peakBudgYr, it increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr -if((cm_iterative_target_adj = 0) or (cm_iterative_target_adj = 9), +if((cm_iterative_target_adj = 0) or (cm_iterative_target_adj = 9) or ((cm_iterative_target_adj eq 5) AND (cm_taxCO2_Shape eq 2)), p45_taxCO2eq_anchor(t)$(t.val gt cm_peakBudgYr) = sum(t2$(t2.val eq cm_peakBudgYr), p45_taxCO2eq_anchor_until2150(t2)) !! CO2 tax in peak budget year + (t.val - cm_peakBudgYr) * cm_taxCO2_IncAfterPeakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year ); diff --git a/modules/45_carbonprice/functionalForm/not_used.txt b/modules/45_carbonprice/functionalForm/not_used.txt index d24cbab924..79096c7c9c 100644 --- a/modules/45_carbonprice/functionalForm/not_used.txt +++ b/modules/45_carbonprice/functionalForm/not_used.txt @@ -13,7 +13,6 @@ pm_GDPGross,input,questionnaire pm_ttot_2_tall,input,questionnaire cm_expoLinear_yearStart,input,questionnaire cm_carbonprice_temperatureLimit,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire pm_consPC,input,questionnaire pm_prtp,input,questionnaire vm_demFeSector,input,questionnaire @@ -21,3 +20,12 @@ pm_emifac,input,questionnaire sm_D2005_2_D2017,input,not needed fm_taxCO2eqHist,input,not needed sm_c_2_co2,input,added by codeCheck +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/functionalForm/postsolve.gms b/modules/45_carbonprice/functionalForm/postsolve.gms index 81f623b140..f291cdda90 100644 --- a/modules/45_carbonprice/functionalForm/postsolve.gms +++ b/modules/45_carbonprice/functionalForm/postsolve.gms @@ -109,7 +109,7 @@ $endIf.taxCO2functionalForm4 !! Use rescaled p45_taxCO2eq_anchor_until2150 as starting point for re-defining p45_taxCO2eq_anchor p45_taxCO2eq_anchor(ttot)$(ttot.val ge 2005) = p45_taxCO2eq_anchor_until2150(ttot); - if(cm_iterative_target_adj = 9, !! After cm_peakBudgYr, the global anchor trajectory increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr + if(cm_iterative_target_adj = 9 OR ((cm_iterative_target_adj eq 5) AND (cm_taxCO2_Shape eq 2)), !! After cm_peakBudgYr, the global anchor trajectory increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr p45_taxCO2eq_anchor(t)$(t.val gt cm_peakBudgYr) = sum(t2$(t2.val eq cm_peakBudgYr), p45_taxCO2eq_anchor_until2150(t2)) !! CO2 tax in peak budget year + (t.val - cm_peakBudgYr) * cm_taxCO2_IncAfterPeakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year ); diff --git a/modules/45_carbonprice/functionalFormRegi/datainput.gms b/modules/45_carbonprice/functionalFormRegi/datainput.gms new file mode 100644 index 0000000000..e9eafacf17 --- /dev/null +++ b/modules/45_carbonprice/functionalFormRegi/datainput.gms @@ -0,0 +1,207 @@ +*** | (C) 2006-2023 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/45_carbonprice/functionalFormRegi/datainput.gms + +*** Check that cm_iterative_target_adj is equal to 5 and that a valid carbon price trajectory is set +if( not ((cm_iterative_target_adj = 5)), + abort "The realization 45_carbonprice/functionalFormRegi is only compatible with cm_iterative_target_adj = 5. Please adjust config file accordingly" +); + +$ifthen.PriceShapeCombination "%cm_taxCO2_functionalForm%" == "exponential" + if(cm_CPslopeAdjustment = 1, + abort "The carbon price slope can only be adjusted if cm_taxCO2_functionalForm == 'linear'. Set cm_CPslopeAdjustment = 0 for an exponential price curve." + ); +$endif.PriceShapeCombination + +***---------------------------------------------------------------------------------- +*** ---- Miscellaneous datainput calculations + +*** Calculation of regional budgets if provided by p45_budgetCO2from2020RegiShare +p45_budgetCO2from2020Regi(regi) = p45_budgetCO2from2020RegiShare(regi) * cm_budgetCO2from2020; + +*** Save the absolute budget deviation tolerance level; currently the same for all regions - may need regional specification in the future, thus already with (regi) +pm_regionalBudget_absDevTol(regi) = cm_budgetCO2_absDevTol; + +*** Calculation of the funnel for p45_factorRescale_taxCO2Regi (only upper multiplier value, lower = 1/Upper) +loop(iteration, +p45_FunnelUpper(iteration) = 2 * EXP(-0.15 * iteration.val) + 1.005; +); + +*** Other +s45_YearBeforeStartYear = smax(ttot$( ttot.val lt cm_startyear ), ttot.val); !! Timestep before startyear + + +***---------------------------------------------------------------------------------- +*** ---- Derive the starting co2 price path and shape + +*** Read pm_taxCO2eq from the input_ref and the specified input file +Execute_Loadpoint 'input_ref' p45_taxCO2eq_path_gdx_ref = pm_taxCO2eq; +Execute_Loadpoint 'input' p45_taxCO2eq_path_gdx_input = pm_taxCO2eq; + +display p45_taxCO2eq_path_gdx_ref; + +*** Convert tax values from $/t CO2eq to T$/GtC +s45_taxCO2_startyear = cm_taxCO2_startyear * sm_DptCO2_2_TDpGtC; +s45_taxCO2_peakBudgYr = cm_taxCO2_peakBudgYr * sm_DptCO2_2_TDpGtC; + +*** --- +* Part I (General Shape): +!! always set the carbon price equal to the reference runs' carbon price prior to start year +p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val le s45_YearBeforeStartYear) = p45_taxCO2eq_path_gdx_ref(ttot,regi); + +!! (A) Exponential CO2 price ---------------------------------------------------------------------------------- +$ifThen.taxCO2GeneralShape "%cm_taxCO2_functionalForm%" == "exponential" +!! (A.a) no input gdx specified in config.csv => the carbon price increases exponentially, starting from the input_ref's carbon prices for the last fixed year in each region +if(cm_useInputGdxForCarbonPrice eq 0, + p45_taxCO2refYear(regi) = sum(ttot$(ttot.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot,regi)); + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val gt s45_YearBeforeStartYear) = p45_taxCO2refYear(regi) * cm_taxCO2_expGrowth**(ttot.val - s45_YearBeforeStartYear); + +!! (A.b) an input.gdx is specified in config.csv => the carbon price reaches the 2100 value in 2100 or the specified peak year +else + if(cm_taxCO2_Shape eq 1, !! if increase until EOC + p45_taxCO2refYear(regi) = p45_taxCO2eq_path_gdx_input("2100",regi); !! save 2100 CO2 price from the input.gdx as reference point + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val gt s45_YearBeforeStartYear AND ttot.val le 2100) = + p45_taxCO2refYear(regi) / (cm_taxCO2_expGrowth**(2100 - ttot.val)); + !! carbon price post 2100 is set in Part II for all cm_taxCO2_functionalForm + + else !! increase until cm_peakBudgYr + p45_taxCO2refYear(regi) = sum(ttot$(ttot.val eq cm_peakBudgYr), p45_taxCO2eq_path_gdx_input(ttot,regi)); !! save cm_peakBudgYr CO2 price from the input.gdx as reference point + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val gt s45_YearBeforeStartYear AND ttot.val le cm_peakBudgYr) = + p45_taxCO2refYear(regi) / (cm_taxCO2_expGrowth**(cm_peakBudgYr - ttot.val)); + !! carbon price post peak year is set in Part II for all cm_taxCO2_functionalForm + ); !! EOC or Peak +); !! use input.gdx information or not + +!! (B) Linear CO2 price ---------------------------------------------------------------------------------- +$elseIf.taxCO2GeneralShape "%cm_taxCO2_functionalForm%" == "linear" + +***---------------------------------------------------------------------------------- +!! (B.1) For setting a global carbon price slope, for the case that the slope is not adjusted OR if the carbon price information from input.gdx is not used => analogous to functionalForm + +*** Step I.1: Determine the point (s45_taxCO2_historicalYr, s45_taxCO2_historical) +*** Set s45_taxCO2_historicalYr based on the switch cm_taxCO2_historicalYr +$ifthen.taxCO2historicalYr "%cm_taxCO2_historicalYr%" == "last" +*** Choose s45_taxCO2_historicalYr to be the last time period before start year +s45_taxCO2_historicalYr = smax(ttot$( ttot.val lt cm_startyear ), ttot.val); +$else.taxCO2historicalYr +*** Set s45_taxCO2_historicalYr to be the value provided by the switch +s45_taxCO2_historicalYr = %cm_taxCO2_historicalYr%; +$endif.taxCO2historicalYr +*** Check validity of s45_taxCO2_historicalYr +if((s45_taxCO2_historicalYr lt 2005) or (s45_taxCO2_historicalYr ge cm_startyear) or (sum(ttot$(ttot.val eq s45_taxCO2_historicalYr),1)=0), + abort "please choose cm_taxCO2_historicalYr to be an element of ttot that is at least 2005 and strictly smaller than cm_startyear" +); +display s45_taxCO2_historicalYr; + +*** Set s45_taxCO2_historical based on the switch cm_taxCO2_historical +$ifthen.taxCO2historical "%cm_taxCO2_historical%" == "gdx_ref" +*** Extract level of carbon price in s45_taxCO2_historicalYr (defined as maximum of pm_taxCO2eq over all regions) +s45_taxCO2_historical = smax( regi , sum ( ttot$(ttot.val eq s45_taxCO2_historicalYr) , p45_taxCO2eq_path_gdx_ref(ttot,regi) ) ); +$else.taxCO2historical +*** Set s45_taxCO2_historical to be the value provided by the switch, converted from $/t CO2eq to T$/GtC +s45_taxCO2_historical = %cm_taxCO2_historical% * sm_DptCO2_2_TDpGtC; +$endif.taxCO2historical + +display s45_taxCO2_historical; + +*** Step I.2: Create linear global anchor trajectory through the points (s45_taxCO2_historicalYr, s45_taxCO2_historical), and (cm_startyear, s45_taxCO2_startyear) or (cm_peakBudgYr, cm_taxCO2_peakBudgYr) + +if((cm_taxCO2_startyear gt 0) and (cm_taxCO2_peakBudgYr eq -1), !! Initial global carbon price trajectory defined via (cm_startyear, s45_taxCO2_startyear) + + !! Make sure that initial carbon price trajectory is non-decreasing + if(s45_taxCO2_startyear lt s45_taxCO2_historical, + display cm_taxCO2_startyear; + abort "please make sure that cm_taxCO2_startyear is at least as large as the value provided by cm_taxCO2_historical" + ); + p45_taxCO2eq_anchor(ttot)$(ttot.val ge s45_taxCO2_historicalYr) = + s45_taxCO2_historical + + (s45_taxCO2_startyear - s45_taxCO2_historical) / (cm_startyear - s45_taxCO2_historicalYr) !! Yearly increase of carbon price + * (ttot.val - s45_taxCO2_historicalYr) ; + +elseif (cm_taxCO2_startyear eq -1) and (cm_taxCO2_peakBudgYr gt 0) , !! Initial global carbon price trajetory defined via (cm_peakBudgYr, s45_taxCO2_peakBudgYr) + + !! Make sure that initial carbon price trajectory is non-decreasing, and cm_peakBudgYr is at least cm_startyear + if (cm_peakBudgYr lt cm_startyear, + abort "please initialize cm_peakBudgYr by setting it to a value that is larger or equal to cm_startyear" + elseif s45_taxCO2_peakBudgYr lt s45_taxCO2_historical, + display cm_taxCO2_peakBudgYr; + abort "please make sure that cm_taxCO2_peakBudgYr is at least as large as the value provided by cm_taxCO2_historical" + ); + p45_taxCO2eq_anchor(ttot)$(ttot.val ge s45_taxCO2_historicalYr) = + s45_taxCO2_historical + + (s45_taxCO2_peakBudgYr - s45_taxCO2_historical) / (cm_peakBudgYr - s45_taxCO2_historicalYr) !! Yearly increase of carbon price + * (ttot.val - s45_taxCO2_historicalYr) ; + +elseif (cm_taxCO2_startyear eq -1) and (cm_taxCO2_peakBudgYr le 0) , + abort "please initialize cm_taxCO2_peakBudgYr by setting it to a positive value" +else + abort "please initialize cm_taxCO2_startyear by setting it to a positive value. Note that cm_taxCO2_peakBudgYr must be kept at default value -1 if not used." +); + +p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_startyear) = p45_taxCO2eq_anchor(ttot); + +***---------------------------------------------------------------------------------- +!! (B.2) If carbon price is adjusted and the carbon price information from input.gdx should be used: overwrite the previously derived data +if((cm_CPslopeAdjustment eq 1) and (cm_useInputGdxForCarbonPrice eq 1), +p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_startyear) = + !! start value + sum(ttot2$(ttot2.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot2,regi)) + !! Yearly regional increase of carbon price in input.gdx in the time step after cm_startyear + + (sum(ttot3$(ttot3.val eq cm_startyear), p45_taxCO2eq_path_gdx_input(ttot3+1,regi) - p45_taxCO2eq_path_gdx_input(ttot3,regi)) + / sum(ttot3$(ttot3.val eq cm_startyear), pm_dt(ttot3))) + !! times years from last given time step + * (ttot.val - s45_YearBeforeStartYear) ; + +!! Check if this leads to negative values and set the 2100 price to 1 USD/tCO2 in that case. (possible if negative slope and different starting point in path_gdx_ref and path_gdx_input) +loop(regi, +if(p45_taxCO2eq_anchorRegi("2100",regi) le 0, + p45_taxCO2eq_anchorRegi("2100",regi) = 1 * sm_DptCO2_2_TDpGtC; + !! start value + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_startyear) = + !! start value + sum(ttot2$(ttot2.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot2,regi)) + !! Yearly regional increase of carbon price in input.gdx in the time step after cm_startyear + + ((sum(ttot3$(ttot3.val eq 2100), p45_taxCO2eq_anchorRegi(ttot3,regi)) + - sum(ttot4$(ttot4.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot4,regi))) + / (2100 - s45_YearBeforeStartYear)) + !! times years from last given time step + * (ttot.val - s45_YearBeforeStartYear) ; + ); +); +); !! If carbon price information from input.gdx should be used + +$endif.taxCO2GeneralShape +!! exponential and linear shape specification + +***------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- +*** Part II (Post-peak behaviour): The global anchor trajectory can be adjusted after reaching the peak of global CO2 emissions in cm_peakBudgYr. +*** The choice of cm_peakBudgYr is adjusted if cm_taxCO2_Shape is set to "Peak" + +*** Adjust global anchor trajectory so that after cm_peakBudgYr, it increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr +if(cm_taxCO2_Shape eq 2, + p45_taxCO2eq_anchorRegi(t,regi)$(t.val gt cm_peakBudgYr) = sum(t2$(t2.val eq cm_peakBudgYr), p45_taxCO2eq_anchorRegi(t2,regi)) !! CO2 tax in peak budget year + + (t.val - cm_peakBudgYr) * cm_taxCO2_IncAfterPeakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year +); + +*** Always set carbon price constant after 2100 to prevent huge taxes after 2100 and the resulting convergence problems +p45_taxCO2eq_anchorRegi(t,regi)$(t.val gt 2100) = p45_taxCO2eq_anchorRegi("2100",regi); + +*** Set pm_taxCO2eq to that value for the first iteration. +pm_taxCO2eq(ttot,regi) = p45_taxCO2eq_anchorRegi(ttot,regi); + +*** Lower bound pm_taxCO2eq by p45_taxCO2eq_path_gdx_ref if switch cm_taxCO2_lowerBound_path_gdx_ref is on +if(cm_taxCO2_lowerBound_path_gdx_ref = 1, + pm_taxCO2eq(t,regi) = max(pm_taxCO2eq(t,regi), p45_taxCO2eq_path_gdx_ref(t,regi)); + display pm_taxCO2eq; +); + +display p45_taxCO2eq_anchorRegi; + +*** Save the form of the regional anchor trajectory from the first iteration !! CHECK if necessary +p45_taxCO2eq_anchorRegi_until2150(ttot,regi) = p45_taxCO2eq_anchorRegi(ttot,regi); + +*** EOF ./modules/45_carbonprice/functionalFormRegi/datainput.gms \ No newline at end of file diff --git a/modules/45_carbonprice/functionalFormRegi/declarations.gms b/modules/45_carbonprice/functionalFormRegi/declarations.gms new file mode 100644 index 0000000000..744a536f3a --- /dev/null +++ b/modules/45_carbonprice/functionalFormRegi/declarations.gms @@ -0,0 +1,62 @@ +*** | (C) 2006-2023 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/45_carbonprice/functionalFormRegi/declarations.gms + +scalars +s45_taxCO2_startyear "CO2 tax provided by cm_taxCO2_startyear converted from $/t CO2eq to T$/GtC" +s45_taxCO2_peakBudgYr "CO2 tax provided by cm_taxCO2_peakBudgYr converted from $/t CO2eq to T$/GtC" +s45_YearBeforeStartYear "The REMIND year before cm_startyear" + +$ifThen.taxCO2functionalForm1 "%cm_taxCO2_functionalForm%" == "linear" +s45_taxCO2_historical "historical level of CO2 tax converted from $/t CO2eq to T$/GtC" +s45_taxCO2_historicalYr "year of s45_taxCO2_historical" +$endIf.taxCO2functionalForm1 +; + +parameters +p45_taxCO2eq_anchor(ttot) "global anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC" +p45_taxCO2eq_anchor_until2150(ttot) "global anchor trajectory continued until 2150 - as if there was no change in trajectory after cm_peakBudgYr. Needed if cm_peakBudgYr was shifted right" +p45_taxCO2eq_regiDiff(ttot,all_regi) "regional differentiated CO2 price trajectories in T$/GtC = $/kgC, used as intermediate step in deriving pm_taxCO2eq from p45_taxCO2eq_anchor" +p45_taxCO2eq_path_gdx_ref(ttot,all_regi) "CO2 tax trajectories from path_gdx_ref" + +p45_regiDiff_ratio(ttot,all_regi) "ratio between global anchor and regional differentiated CO2 price trajectories" +p45_regiDiff_startYr(all_regi) "start year of convergence from regionally differentiated carbon prices to global anchor trajectory" +p45_regiDiff_initialRatio(all_regi) "inital ratio between global anchor and regional differentiated CO2 price trajectories" +p45_regiDiff_endYr(all_regi) "end year of regional differentiation, i.e. regional carbon price equal to global anchor trajectory thereafter" +p45_regiDiff_exponent(all_regi) "regional convergence exponent for ratio between global anchor and regional differentiated CO2 price trajectories" + +p45_taxCO2eq_path_gdx_input(ttot,all_regi) "CO2 tax trajectories from path_gdx" +p45_taxCO2refYear(all_regi) "CO2 tax in reference year for derivation of the carbon price trajectory in the first iteration, can be in last fixed time step, or peak carbon price year depending on the shape" + +*** If there is a regional budget, read regional carbon budget from switch and set additionally needed parameters +p45_budgetCO2from2020Regi(all_regi) "regional carbon budget (Gt CO2)" +p45_budgetCO2from2020RegiShare(all_regi) "share of region in global carbon budget" /%cm_budgetCO2from2020RegiShare%/ +p45_actualbudgetco2Regi_2100(all_regi) "regional - actual level of 2020-2100 cumulated emissions, including all CO2 for last iteration" +p45_actualbudgetco2Regi_2100_iter(iteration,all_regi) "regional - actual level of 2020-2100 cumulated emissions, including all CO2 for last iteration" +p45_factorRescale_taxCO2Regi(iteration,all_regi) "regional - Multiplicative factor for rescaling the CO2 price to reach the target" +p45_factorRescale_taxCO2Regi_Funneled(iteration, all_regi) "regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled (static)" +pm_factorRescale_taxCO2Regi_Funneled2(iteration, all_regi) "regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled (interactive, incl. adjustments based on last iterations)" +p45_factorRescale_taxCO2Regi_Final(iteration, all_regi) "regional - Multiplicative factor for rescaling the CO2 price to reach the target - Funnelled, may include up/downward iteration differentiation" +p45_taxCO2eq_anchorRegi(ttot,all_regi) "regional anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC" +p45_taxCO2eq_anchorRegi_iter(ttot, all_regi, iteration) "regional anchor trajectory for regional CO2 price trajectories in T$/GtC = $/kgC across iterations" +p45_taxCO2eq_anchorRegi_until2150(ttot,all_regi) "save the p45_taxCO2eq_anchorRegi derived in datainput.gms" +p45_temp_anchor(ttot,all_regi) "regionally shifted anchor for all iterations (helper, may be removed)" +pm_budgetDeviation(all_regi) "deviations from regional targets" +p45_budgetDeviation_iter(iteration, all_regi) "deviations from regional targets across iterations" +pm_regionalBudget_absDevTol(all_regi) "tolerance of deviation from regional targets in absolute terms" + +p45_TaxBudgetSlopeCurrent(all_regi) "regional carbon price change/regional carbon budget change - from the last 2 iterations" +p45_TaxBudgetSlopeCurrent_iter(iteration, all_regi) "regional carbon price change/regional carbon budget change - from the last 2 iterations, for each iteration. 0 when no carbon price change" +p45_TaxBudgetSlopeBest(all_regi) "last available regional carbon price change/regional carbon budget change that is negative" +p45_TaxBudgetSlopeBest_iter(iteration, all_regi) "last available regional carbon price change/regional carbon budget change that is negative for each iteration" +p45_CarbonPriceSlope(all_regi) "when carbon price slope is regionally adjusted: increase of carbon price per year" +p45_CarbonPriceSlope_iter(iteration,all_regi) "when carbon price slope is regionally adjusted: increase of carbon price per year for each iteration" + +p45_FunnelUpper(iteration) "upper bound on regional carbon price funnel" +; + +*** EOF ./modules/45_carbonprice/functionalFormRegi/declarations.gms diff --git a/modules/45_carbonprice/functionalFormRegi/not_used.txt b/modules/45_carbonprice/functionalFormRegi/not_used.txt new file mode 100644 index 0000000000..fc804103c6 --- /dev/null +++ b/modules/45_carbonprice/functionalFormRegi/not_used.txt @@ -0,0 +1,40 @@ +# | (C) 2006-2023 Potsdam Institute for Climate Impact Research (PIK) +# | authors, and contributors see CITATION.cff file. This file is part +# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +# | AGPL-3.0, you are granted additional permissions described in the +# | REMIND License Exception, version 1.0 (see LICENSE file). +# | Contact: remind@pik-potsdam.de +name,type,reason +sm_c_2_co2,input,added by codeCheck +sm_D2005_2_D2017,input,added by codeCheck +sm_budgetCO2eqGlob,input,added by codeCheck +sm_globalBudget_absDev,input,added by codeCheck +vm_co2eq,input,added by codeCheck +vm_emiAll,input,added by codeCheck +vm_emiFgas,input,added by codeCheck +vm_demFeSector,input,added by codeCheck +pm_shPPPMER,input,added by codeCheck +fm_taxCO2eqHist,input,added by codeCheck +pm_taxCO2eq_anchor_iterationdiff,input,added by codeCheck +pm_pop,input,added by codeCheck +pm_gdp,input,added by codeCheck +pm_macSwitch,input,added by codeCheck +pm_emifac,input,added by codeCheck +pm_budgetCO2eq,input,added by codeCheck +pm_actualbudgetco2,input,added by codeCheck +pm_ttot_val,input,added by codeCheck +pm_ttot_2_tall,input,added by codeCheck +cm_iteration_max,input,added by codeCheck +cm_emiscen,input,added by codeCheck +cm_expoLinear_yearStart,input,added by codeCheck +cm_taxCO2_regiDiff,input,added by codeCheck +cm_taxCO2_interpolation,input,added by codeCheck +cm_carbonprice_temperatureLimit,input,added by codeCheck +pm_consPC,input,added by codeCheck +pm_prtp,input,added by codeCheck +pm_globalMeanTemperature,input,added by codeCheck +pm_temperatureImpulseResponseCO2,input,added by codeCheck +sm_peakBudgYr_check,input,added by codeCheck +sm_peakbudget_diff,input,added by codeCheck +pm_NDCEmiTargetDeviation,input,added by codeCheck +pm_GDPGross,input,added by codeCheck diff --git a/modules/45_carbonprice/functionalFormRegi/postsolve.gms b/modules/45_carbonprice/functionalFormRegi/postsolve.gms new file mode 100644 index 0000000000..364ef64dc9 --- /dev/null +++ b/modules/45_carbonprice/functionalFormRegi/postsolve.gms @@ -0,0 +1,244 @@ +*** | (C) 2006-2023 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/45_carbonprice/functionalFormRegi/postsolve.gms + +***------------------------------------------------------------------------------------------------------------------------------------------------ +*** regional eoc emission budget: +***------------------------------------------------------------------------------------------------------------------------------------------------ +if(cm_iterative_target_adj eq 5, +*** 1. Get the relevant information from this iteration + !! Update the actual budget by region and save across iterations for debugging + p45_actualbudgetco2Regi_2100(regi) = sum(t$(t.val eq 2100), pm_actualbudgetco2Regi(t,regi)); + p45_actualbudgetco2Regi_2100_iter(iteration, regi) = p45_actualbudgetco2Regi_2100(regi); + + !! Save pm_taxCO2eq over iterations + pm_taxCO2eq_iter(iteration,ttot,regi) = pm_taxCO2eq(ttot,regi); + + !! Compute deviation from regional target budget + pm_budgetDeviation(regi) = p45_actualbudgetco2Regi_2100(regi) - p45_budgetCO2from2020Regi(regi); + p45_budgetDeviation_iter(iteration, regi) = pm_budgetDeviation(regi) ; + + !! Save the best available information about the reaction of the actual budget to the change in prices + if (iteration.val ge 2, + !! determine the (price change / budget change) in the last iteration. If no change in tax, then 0; no change of budget at all is very unlikely, thus negligible risk of infeasibility + loop(regi, + if ((p45_actualbudgetco2Regi_2100_iter(iteration, regi) - p45_actualbudgetco2Regi_2100_iter(iteration - 1, regi)) ne 0, + p45_TaxBudgetSlopeCurrent(regi) = (pm_taxCO2eq_iter(iteration, "2100", regi) - pm_taxCO2eq_iter(iteration-1, "2100", regi)) + / (p45_actualbudgetco2Regi_2100_iter(iteration, regi) - p45_actualbudgetco2Regi_2100_iter(iteration - 1, regi)); + else + p45_TaxBudgetSlopeCurrent(regi) = 1000; !! TBD: it has now happened, that there was absolutely no change in the budget between iterations. + !! How to deal with that case? Preliminary idea: 1000 as a marker for this case + ); !! If condition + ); !! Regi loop + p45_TaxBudgetSlopeCurrent_iter(iteration, regi) = p45_TaxBudgetSlopeCurrent(regi); + + !! The slope is expected to be negative (i.e. price increase leads to lower actual budget). + !! If it is indeed negative, update the information from the previous iterations. (if there was no change, then the previously established relation remains available) + loop(regi, + if((p45_TaxBudgetSlopeCurrent(regi) <0), + p45_TaxBudgetSlopeBest(regi) = p45_TaxBudgetSlopeCurrent(regi); + ); !! If condition + ); !! Regi loop + p45_TaxBudgetSlopeBest_iter(iteration,regi) = p45_TaxBudgetSlopeBest(regi); + + ); + +*** 2. Compute the rescaling factor +loop(regi, + !! No adjustment if within tolerance +if (abs(pm_budgetDeviation(regi)) < abs(pm_regionalBudget_absDevTol(regi) ), + p45_factorRescale_taxCO2Regi(iteration, regi) = 1; + +else !! if not yet within tolerance +*** 2.1 for later iterations and if there is information about the carbon price adjustment leading into the right direction + if ((iteration.val ge 3) AND (p45_TaxBudgetSlopeBest(regi) lt 0), !! i.e. increase in carbon price led to reduction in budget, or vice versa; i.e. slope was meaningful + p45_factorRescale_taxCO2Regi(iteration, regi) = (pm_taxCO2eq("2100", regi) + !! price in the previous iteration + (- pm_budgetDeviation(regi) * p45_TaxBudgetSlopeBest(regi))) !! price change needed according to p45_TaxBudgetSlopeBest + / pm_taxCO2eq("2100", regi); + !! Note: p45_factorRescale_taxCO2Regi from this calculation coudl be negative when |pm_taxCO2eq| < |negative required price change|. + !! This is the case when the carbon-price-sensitivity is very low compared to the required budget change. + !! Leaving it for now, because the funnel takes care of it. +*** 2.2 for the first iteration or if p45_TaxBudgetSlopeBest is not yet established + else !! i.e. if iteration.val < 3 or unintuitive change + !! a) positive budget target + if (p45_budgetCO2from2020Regi(regi) > 0, + !! a1) positive actual budget => case analogous to global target default case: ratio = (actual budget/target) + if (p45_actualbudgetco2Regi_2100(regi) >= 0, + p45_factorRescale_taxCO2Regi(iteration, regi) = max(0.5, (p45_actualbudgetco2Regi_2100(regi) / p45_budgetCO2from2020Regi(regi))); + !! a2) negative actual budget => ratio = (positive target) / (absolute difference). Potential problem: Approaches 1 for small negative budgets + else + p45_factorRescale_taxCO2Regi(iteration, regi) = + max(0.5, (p45_budgetCO2from2020Regi(regi) / (p45_budgetCO2from2020Regi(regi) + abs(p45_actualbudgetco2Regi_2100(regi))) ) ) ; + ) !! positive target sub-categories + !! b) negative budget target + else + !! b1) positive actual budget => take the absolute deviation & rescale to get a factor: ratio = log(actual + asb(target)) + if (p45_actualbudgetco2Regi_2100(regi) >= 0, + p45_factorRescale_taxCO2Regi(iteration, regi) = log(abs(p45_budgetCO2from2020Regi(regi)) + p45_actualbudgetco2Regi_2100(regi)) + !! b2) negative actual budget => case reverse to global target default case: ratio = (target/actual budget) + else + p45_factorRescale_taxCO2Regi(iteration, regi) = max(0.5, (p45_budgetCO2from2020Regi(regi) / p45_actualbudgetco2Regi_2100(regi)))) + ) !! target type + ); !! earlier vs. later iterations + ); !! tolerance check + ); !! regi loop for scaling factor calculation + +*** 3. add a funnel to avoid excessive adjustments. + !! regi loop 3 + loop(regi, + p45_factorRescale_taxCO2Regi_Funneled(iteration, regi) + = max(min( 2 * EXP( -0.15 * iteration.val) + 1.005, !! a) a maximum adjustment value which decreases with the number of iterations + p45_factorRescale_taxCO2Regi(iteration,regi)), + 1/ ( 2 * EXP( -0.15 * iteration.val) + 1.005) !! b) a minimum adjustment value which increases with the number of iterations (0.95 for iter 25) + ); + ); !! regi loop 3 (funnelling the rescaling factor) + + !! copy the information before further funnel adjustments + pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) = p45_factorRescale_taxCO2Regi_Funneled(iteration, regi) ; + + !! check how the rescaling factor changed over the last three iterations to dampen or expand the rescaling factor depending on the case + if ((iteration.val ge 4), + loop(regi, + !! if the factor was set to the *upper* bound for this and the last 2 iterations: increase the allowed factor this iteration + if (( (pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) ge p45_FunnelUpper(iteration)) !! ge because last iteration may have already been adjusted upwards + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-1, regi) ge p45_FunnelUpper(iteration-1)) + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-2, regi) ge p45_FunnelUpper(iteration-2))), + pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) = min(1.2 * p45_FunnelUpper(iteration), !! if funnel was 1.001, it is now 1.201 + p45_factorRescale_taxCO2Regi(iteration,regi)); !! unless the original planned rescaling factor was less + ); + + !! if the factor was set to the *lower* bound for this and the last 2 iterations: increase the allowed factor this iteration + if (( (pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) le (1/p45_FunnelUpper(iteration))) !! le because last iteration may have already been adjusted upwards + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-1, regi) le (1/p45_FunnelUpper(iteration-1))) + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-2, regi) le (1/p45_FunnelUpper(iteration-2)))), + pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) = max( (1/p45_FunnelUpper(iteration)) / 1.2, + p45_factorRescale_taxCO2Regi(iteration,regi)); + ); + !! if the factor jumping pos-neg-pos or neg-pos-neg or if it was already on 1 for the last two iterations -> make the last increase only 30% of what was intended + if (( (pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) le 1) !! ge because last iteration may have already been adjusted upwards + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-1, regi) ge 1) + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-2, regi) le 1)) + OR + ( (pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) ge 1) !! ge because last iteration may have already been adjusted upwards + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-1, regi) le 1) + AND (pm_factorRescale_taxCO2Regi_Funneled2(iteration-2, regi) ge 1)), + pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) = 1 - (0.3 * (1-p45_factorRescale_taxCO2Regi_Funneled(iteration, regi))); !! decrease the distance to 1 + ); + ); !! regi loop + ); !! if iteration far enough + +!! Simultaneous up- and downward adjustment of carbon prices in early iterations +if (iteration.val le 12, + p45_factorRescale_taxCO2Regi_Final(iteration, regi) = pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi); + !! For later iterations, set the adjustment factors to 1 according to iteration number + else + !! a) uneven iteration => only update downwards + if ((mod(iteration.val, 2) eq 1), + loop(regi, + if(pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) gt 1, + p45_factorRescale_taxCO2Regi_Final(iteration, regi) = 1; + else + p45_factorRescale_taxCO2Regi_Final(iteration, regi) = pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi); + ); !! if condition + ); !! regi Loop + !! b) even iteration => only update upwards + else + loop(regi, + if(pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi) lt 1, + p45_factorRescale_taxCO2Regi_Final(iteration, regi) = 1; + else + p45_factorRescale_taxCO2Regi_Final(iteration, regi) = pm_factorRescale_taxCO2Regi_Funneled2(iteration, regi); + ); !! if condition + ); !! regi Loop + ); !! un/even iteration +); + +*** 4. Shift anchor curve with regional adjustment factor +!! 4.1. get the carbon price trajectory used in this iteration +p45_taxCO2eq_anchorRegi(ttot, regi)$(ttot.val gt 2005) = pm_taxCO2eq(ttot,regi); + +!! Option 4A: slope of CP is not adjusted --> entire trajectory is rescaled, values will be used as of cm_startyear (see below) +if(cm_CPslopeAdjustment = 0, + !! A4.2. Scale the anchor trajectory in this iteration to get the adjusted trajectory to be used in iteration+1 + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val gt 2005) = + p45_taxCO2eq_anchorRegi(ttot, regi) * p45_factorRescale_taxCO2Regi_Final(iteration,regi); + + !! Adjust the shape if the peak-budget carbon price shape is set + if(cm_taxCO2_Shape eq 2, + !! After cm_peakBudgYr, the global anchor trajectory increases linearly with fixed annual increase given by cm_taxCO2_IncAfterPeakBudgYr + p45_taxCO2eq_anchorRegi(t,regi)$(t.val gt cm_peakBudgYr) = sum(t2$(t2.val eq cm_peakBudgYr), p45_taxCO2eq_anchorRegi(t2,regi)) !! CO2 tax in peak budget year + + (t.val - cm_peakBudgYr) * cm_taxCO2_IncAfterPeakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year + ); !! peak shape +); !! no CP slope adjustment + +!! Option 4B: slope of CP is adjusted (only compatible with cm_taxCO2_functionalForm == "lin2peak" or "linear") +$ifthen.PriceIsLinear "%cm_taxCO2_functionalForm%" == "linear" +if(cm_CPslopeAdjustment = 1, + !! B4.2: Save the carbon price. The values prior to cm_startyear will not be adjusted + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge 2005) = pm_taxCO2eq(ttot,regi); + p45_temp_anchor(ttot,regi)$(ttot.val ge 2005) = pm_taxCO2eq(ttot,regi); !! helper + + !! Option (a): If peak-budget shape: + if(cm_taxCO2_Shape eq 2, + !! B4.3a: Set the rescaled anchor trajectory as of cm_peakBudgYr + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val eq cm_peakBudgYr) = + p45_temp_anchor(ttot,regi) * p45_factorRescale_taxCO2Regi_Final(iteration,regi); + !! Set the peakBudgYr value plus predefined increase thereafter (the only currently tested version is post-increase slope = 0) (necessary because initial shape & thus all following are taken from the anchor trajectory) + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_peakBudgYr) = + sum(ttot2$(ttot2.val eq cm_peakBudgYr), p45_taxCO2eq_anchorRegi(ttot2,regi)) !! CO2 tax in peak budget year + + (ttot.val - cm_peakBudgYr) * cm_taxCO2_IncAfterPeakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year + + !! B4.4a: Calculate the slope for a linear connection between the last carbon price from input data and the Price in the Peak Budget year + p45_CarbonPriceSlope(regi) = (sum(ttot2$(ttot2.val eq cm_peakBudgYr), p45_taxCO2eq_anchorRegi(ttot2,regi)) + - sum(ttot3$(ttot3.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot3,regi))) + / (cm_peakBudgYr - s45_YearBeforeStartYear); + p45_CarbonPriceSlope_iter(iteration,regi) = p45_CarbonPriceSlope(regi); + + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_startyear AND ttot.val lt cm_peakBudgYr) = + sum(ttot3$(ttot3.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot3,regi)) !! CO2 tax in last fixed period + + (ttot.val - s45_YearBeforeStartYear) * p45_CarbonPriceSlope(regi) ; + + !! Option (b): If increase until EOC + elseif(cm_taxCO2_Shape eq 1), + !! B2.3b: Set the rescaled anchor trajectory as of cm_peakBudgYr + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val eq 2100) = + p45_temp_anchor(ttot,regi) * p45_factorRescale_taxCO2Regi_Final(iteration,regi); + + !! Calculate the carbon price slope between last year from input gdx and 2100 + p45_CarbonPriceSlope(regi) = (sum(ttot2$(ttot2.val eq 2100), p45_taxCO2eq_anchorRegi(ttot2,regi)) + - sum(ttot3$(ttot3.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot3,regi))) + / (2100- s45_YearBeforeStartYear); + + p45_CarbonPriceSlope_iter(iteration,regi) = p45_CarbonPriceSlope(regi); + + p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val ge cm_startyear AND ttot.val lt 2100) = + sum(ttot3$(ttot3.val eq s45_YearBeforeStartYear), p45_taxCO2eq_anchorRegi(ttot3,regi)) !! CO2 tax in last fixed period + + (ttot.val - s45_YearBeforeStartYear) * p45_CarbonPriceSlope(regi) ; + ); !! Peak shape +);!! CP slope adjustment +$endif.PriceIsLinear + +!! 4.4. Always set carbon price constant after 2100 to prevent huge taxes after 2100 and the resulting convergence problems +p45_taxCO2eq_anchorRegi(ttot,regi)$(ttot.val gt 2100) = p45_taxCO2eq_anchorRegi("2100",regi); + +!! 4.5. assign p45_taxCO2eq_anchorRegi as the new value of pm_taxCO2eq that will be used in the next iteration +pm_taxCO2eq(ttot,regi)$(ttot.val ge cm_startyear) = p45_taxCO2eq_anchorRegi(ttot,regi); + +!! save the adjusted carbon price trajectory +p45_taxCO2eq_anchorRegi_iter(ttot, regi, iteration) = p45_taxCO2eq_anchorRegi(ttot, regi); +); !! closing the overarching cm_iterative Target condition + +*** Lower bound pm_taxCO2eq by p45_taxCO2eq_path_gdx_ref if switch cm_taxCO2_lowerBound_path_gdx_ref is on +if(cm_taxCO2_lowerBound_path_gdx_ref = 1, + pm_taxCO2eq(t,regi) = max(pm_taxCO2eq(t,regi), p45_taxCO2eq_path_gdx_ref(t,regi)); + display pm_taxCO2eq; +); + +***------------------------------------------------------------------------------------------------------------------------------------------------ +***END regional eoc emission budget +***------------------------------------------------------------------------------------------------------------------------------------------------ +*** EOF ./modules/45_carbonprice/functionalFormRegi/postsolve.gms diff --git a/modules/45_carbonprice/functionalFormRegi/realization.gms b/modules/45_carbonprice/functionalFormRegi/realization.gms new file mode 100644 index 0000000000..392ff732f1 --- /dev/null +++ b/modules/45_carbonprice/functionalFormRegi/realization.gms @@ -0,0 +1,19 @@ +*** | (C) 2006-2023 Potsdam Institute for Climate Impact Research (PIK) +*** | authors, and contributors see CITATION.cff file. This file is part +*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +*** | AGPL-3.0, you are granted additional permissions described in the +*** | REMIND License Exception, version 1.0 (see LICENSE file). +*** | Contact: remind@pik-potsdam.de +*** SOF ./modules/45_carbonprice/functionalFormRegi/realization.gms + +*' @description: Carbon price trajectory follows a prescribed functional form (linear/exponential) - either until peak year or until end-of-century. +*' It is endogenously adjusted to meet regional end-of-century CO2 budget targets. + + +*####################### R SECTION START (PHASES) ############################## +$Ifi "%phase%" == "declarations" $include "./modules/45_carbonprice/functionalFormRegi/declarations.gms" +$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/functionalFormRegi/datainput.gms" +$Ifi "%phase%" == "postsolve" $include "./modules/45_carbonprice/functionalFormRegi/postsolve.gms" +*######################## R SECTION END (PHASES) ############################### + +*** EOF ./modules/45_carbonprice/functionalFormRegi/realization.gms diff --git a/modules/45_carbonprice/module.gms b/modules/45_carbonprice/module.gms index aa60da7d07..4c4d0a43f6 100644 --- a/modules/45_carbonprice/module.gms +++ b/modules/45_carbonprice/module.gms @@ -29,6 +29,7 @@ $Ifi "%carbonprice%" == "exogenous" $include "./modules/45_carbonprice/exogenous $Ifi "%carbonprice%" == "exogenousExpo" $include "./modules/45_carbonprice/exogenousExpo/realization.gms" $Ifi "%carbonprice%" == "expoLinear" $include "./modules/45_carbonprice/expoLinear/realization.gms" $Ifi "%carbonprice%" == "functionalForm" $include "./modules/45_carbonprice/functionalForm/realization.gms" +$Ifi "%carbonprice%" == "functionalFormRegi" $include "./modules/45_carbonprice/functionalFormRegi/realization.gms" $Ifi "%carbonprice%" == "none" $include "./modules/45_carbonprice/none/realization.gms" $Ifi "%carbonprice%" == "temperatureNotToExceed" $include "./modules/45_carbonprice/temperatureNotToExceed/realization.gms" *###################### R SECTION END (MODULETYPES) ############################ diff --git a/modules/45_carbonprice/none/not_used.txt b/modules/45_carbonprice/none/not_used.txt index 684d8a6833..f34e925068 100644 --- a/modules/45_carbonprice/none/not_used.txt +++ b/modules/45_carbonprice/none/not_used.txt @@ -24,7 +24,6 @@ pm_ttot_2_tall,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_peakBudgYr,input,added by codeCheck @@ -49,3 +48,13 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,cadded by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/45_carbonprice/temperatureNotToExceed/not_used.txt b/modules/45_carbonprice/temperatureNotToExceed/not_used.txt index 1ddf3503d2..607eadb1cd 100644 --- a/modules/45_carbonprice/temperatureNotToExceed/not_used.txt +++ b/modules/45_carbonprice/temperatureNotToExceed/not_used.txt @@ -16,7 +16,6 @@ cm_expoLinear_yearStart,input,questionnaire pm_shPPPMER,input,questionnaire pm_pop,input,questionnaire pm_gdp,input,questionnaire -cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_peakBudgYr,input,added by codeCheck @@ -41,3 +40,13 @@ cm_taxCO2_interpolation,input,added by codeCheck cm_taxCO2_lowerBound_path_gdx_ref,input,added by codeCheck sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +pm_macSwitch,input,not needed because default MAC curve settings are used +pm_NDCEmiTargetDeviation,input,not used +pm_actualbudgetco2Regi,input,added by codeCheck +pm_dt,input,added by codeCheck +cm_taxCO2_Shape,input,added by codeCheck +cm_CPslopeAdjustment,input,added by codeCheck +cm_useInputGdxForCarbonPrice,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck diff --git a/modules/46_carbonpriceRegi/NDC/datainput.gms b/modules/46_carbonpriceRegi/NDC/datainput.gms deleted file mode 100644 index 41776b95b3..0000000000 --- a/modules/46_carbonpriceRegi/NDC/datainput.gms +++ /dev/null @@ -1,122 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/46_carbonpriceRegi/NDC/datainput.gms - -*** parameters for exponential increase after NDC targets -Scalar p46_taxCO2eqConvergenceYear "year until which CO2eq taxes have converged globally" /2100/; -Scalar p46_taxCO2eqGlobal2030 "startprice in 2030 (unit TDpGtC) of global CO2eq taxes towards which countries converge"; -p46_taxCO2eqGlobal2030 = 0 * sm_DptCO2_2_TDpGtC; -Scalar p46_taxCO2eqYearlyIncrease "yearly multiplicative increase of co2 tax, write 3% as 1.03" /1/; - -*** load NDC data -Table f46_factorTargetyear(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with multiplier for target year emissions vs 2015 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]" -$offlisting -$ondelim -$include "./modules/46_carbonpriceRegi/NDC/input/fm_factorTargetyear.cs3r" -$offdelim -$onlisting -; - -Parameter p46_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2015 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]"; -p46_factorTargetyear(t,all_regi) = f46_factorTargetyear(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%"); - -display p46_factorTargetyear; - -Table f46_2015shareTarget(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with 2015 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [1]" -$offlisting -$ondelim -$include "./modules/46_carbonpriceRegi/NDC/input/fm_2015shareTarget.cs3r" -$offdelim -$onlisting -; - -Parameter p46_2015shareTarget(ttot,all_regi) "2015 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [1]"; -p46_2015shareTarget(t,all_regi) = f46_2015shareTarget(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%"); - -display p46_2015shareTarget; - -Parameter p46_BAU_reg_emi_wo_LU_wo_bunkers(ttot,all_regi) "regional GHG emissions (without LU and bunkers) in BAU scenario [MtCO2eq/yr]" - / -$ondelim -$ifthen exist "./modules/46_carbonpriceRegi/NDC/input/pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r" -$include "./modules/46_carbonpriceRegi/NDC/input/pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r" -$endif -$offdelim - /; - -*** adjust reduction value for LAM based on the assumption that Brazilian reduction targets are only from landuse, see https://climateactiontracker.org/countries/brazil/ -*** the adjustment were calculated such that Brazil is assumed to maintain its 2015 non-landuse emissions, as follows: -*** Use R and the code in https://github.com/pik-piam/mrremind/blob/master/R/calcEmiTarget.R to calculate dummy1, ghgTarget, ghgfactor, then run the following code: -*** countries <- toolGetMapping("regionmappingREMIND.csv",where = "mappingfolder",type = "regional") -*** LAMCountries <- countries$CountryCode[countries$RegionCode == "LAM"] -*** shareWithinTargetCountries <- dummy1[LAMCountries,"y2030",] * ghgTarget[LAMCountries,"y2030",] / dimSums(dummy1[LAMCountries,"y2030",] * ghgTarget[LAMCountries,"y2030", ], dim=1) -*** print(shareWithinTargetCountries["BRA",,]*(as.numeric(ghg["BRA","y2015"])/as.numeric(ghg["BRA","y2015"])-as.numeric(ghgfactor["BRA","y2030","SSP2"]))) -*** 0.2 is a rounded value valid for all except 2018_uncond, because Brazil had no unconditional target then. - -if (not sameas("%cm_NDC_version%","2018_uncond"), - p46_factorTargetyear(t,regi)$(sameas(regi,"LAM") AND sameas(t,"2030")) = p46_factorTargetyear(t,regi) + 0.2; -); - -*** add 2060 GHG net zero target for China, not yet in the UNFCCC_NDC database -p46_factorTargetyear(t,regi)$(sameas(regi,"CHA") AND sameas(t,"2060")) = 0; -p46_2015shareTarget(t,regi)$(sameas(regi,"CHA") AND sameas(t,"2060")) = 1; - -$ifthen.p46_netZero "%cm_netZeroScen%" == "NGFS_v4_20pc" - p46_factorTargetyear(t,regi)$(sameas(regi,"CAZ") AND sameas(t,"2050")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"CAZ") AND sameas(t,"2050")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"EUR") AND sameas(t,"2050")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"EUR") AND sameas(t,"2050")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"JPN") AND sameas(t,"2050")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"JPN") AND sameas(t,"2050")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"LAM") AND sameas(t,"2050")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"LAM") AND sameas(t,"2050")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"USA") AND sameas(t,"2050")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"USA") AND sameas(t,"2050")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"CHA") AND sameas(t,"2060")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"CHA") AND sameas(t,"2060")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"REF") AND sameas(t,"2060")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"REF") AND sameas(t,"2060")) = 0.8; - p46_factorTargetyear(t,regi)$(sameas(regi,"IND") AND sameas(t,"2070")) = 0; - p46_2015shareTarget(t,regi)$(sameas(regi,"IND") AND sameas(t,"2070")) = 0.8; -$endif.p46_netZero - - -*** parameters for selecting NDC years -Scalar p46_ignoreNDCbefore "NDC targets before this years are ignored, for example to exclude 2030 targets [year]" /2028/; -p46_ignoreNDCbefore = max(p46_ignoreNDCbefore, cm_startyear) -Scalar p46_ignoreNDCafter "NDC targets after this years are ignored, for example to exclude 2050 net zero targets [year]" /2100/; -Scalar p46_minRatioOfCoverageToMax "only targets whose coverage is this times p46_bestNDCcoverage are considered. Use 1 for only best. [0..1]" /0.7/; -Scalar p46_useSingleYearCloseTo "if 0: use all. If > 0: use only one single NDC target per country closest to this year (use 2030.4 to prefer 2030 over 2035 over 2025) [year]" /0/; - -Set p46_NDCyearSet(ttot,all_regi) "YES for years whose NDC targets is used"; -Parameter p46_bestNDCcoverage(all_regi) "highest coverage of NDC targets within region [0..1]"; -Parameter p46_distanceToOptyear(ttot,all_regi) "distance to p46_useSingleYearCloseTo to favor years in case of multiple equally good targets [year]"; -Parameter p46_minDistanceToOptyear(all_regi) "minimal distance to p46_useSingleYearCloseTo per region [year]"; - -p46_bestNDCcoverage(regi) = smax(t$(t.val <= p46_ignoreNDCafter AND t.val >= p46_ignoreNDCbefore), p46_2015shareTarget(t,regi)); -display p46_bestNDCcoverage; - -p46_NDCyearSet(t,regi)$(t.val <= p46_ignoreNDCafter AND t.val >= p46_ignoreNDCbefore) = p46_2015shareTarget(t,regi) >= p46_minRatioOfCoverageToMax * p46_bestNDCcoverage(regi); - -if(p46_useSingleYearCloseTo > 0, - p46_distanceToOptyear(p46_NDCyearSet(t,regi)) = abs(t.val - p46_useSingleYearCloseTo); - p46_minDistanceToOptyear(regi) = smin(t$(p46_NDCyearSet(t,regi)), p46_distanceToOptyear(t,regi)); - p46_NDCyearSet(t,regi) = p46_distanceToOptyear(t,regi) = p46_minDistanceToOptyear(regi); -); - -*** first and last NDC year as a number -Parameter p46_firstNDCyear(all_regi) "last year with NDC coverage within region [year]"; -p46_firstNDCyear(regi) = smin( p46_NDCyearSet(t, regi), t.val ); -Parameter p46_lastNDCyear(all_regi) "last year with NDC coverage within region [year]"; -p46_lastNDCyear(regi) = smax( p46_NDCyearSet(t, regi), t.val ); - -display p46_NDCyearSet,p46_firstNDCyear,p46_lastNDCyear; - -***initialize parameter -p46_taxCO2eqLast(t,regi) = 0; - -*** EOF ./modules/46_carbonpriceRegi/NDC/datainput.gms diff --git a/modules/46_carbonpriceRegi/NDC/declarations.gms b/modules/46_carbonpriceRegi/NDC/declarations.gms deleted file mode 100644 index 011881a45f..0000000000 --- a/modules/46_carbonpriceRegi/NDC/declarations.gms +++ /dev/null @@ -1,32 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/46_carbonpriceRegi/NDC/declarations.gms - -Parameter -p46_CO2eqwoLU_actual(ttot,all_regi) "actual level of regional GHG emissions in previous iteration [MtCO2eq/yr]" -p46_CO2eqwoLU_goal(ttot,all_regi) "regional NDC target level of GHG [MtCO2eq/yr]" -p46_factorRescaleCO2Tax(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets [1]" -p46_factorRescaleCO2TaxLtd(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets limited to not-so-fast adaption [1]" -p46_factorRescaleCO2Tax_iter(iteration,ttot,all_regi) "Track the changes of p46_factorRescaleCO2Tax over the iterations [1]" -p46_factorRescaleCO2TaxLtd_iter(iteration,ttot,all_regi) "Track the changes of p46_factorRescaleCO2TaxLimited over the iterations [1]" -p46_vm_co2eq_iter(iteration,ttot,all_regi) "Track the changes of vm_co2eq over the iterations [GtC/yr]" -p46_taxCO2eqFirstNDCyear(all_regi) "CO2eq tax in p46_firstNDCyear [T$/GtC]" -p46_taxCO2eqLastNDCyear(all_regi) "CO2eq tax in p46_lastNDCyear [T$/GtC]" -p46_vm_CO2eq_2020(all_regi) "2020 reference emissions value for normalization of deviation from zero [MtCO2eq/yr]" -p46_taxCO2eq_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations [T$/GtC]" -p46_taxCO2eqRegi_iter(iteration,ttot,all_regi) "CO2eq tax regi tracked over iterations [T$/GtC]" -p46_taxCO2eqLast(ttot,all_regi) "general carbon price in last iteration [T$/GtC]" -pm_taxCO2eqRegi(ttot,all_regi) "Additional regional CO2 tax path calulated in in 46_carbonpriceRegi module to reach regional emissions targets [T$/GtC]. To get $/tCO2, multiply with 272 = 1 / sm_DptCO2_2_TDpGtC" -pm_taxCO2eqSum(ttot,all_regi) "sum of pm_taxCO2eq, pm_taxCO2eqRegi, pm_taxCO2eqSCC [T$/GtC]. To get $/tCO2, multiply with 272 = 1 / sm_DptCO2_2_TDpGtC" -; - -Scalar p46_adjustExponent "exponent in tax adjustment process [1]"; -Scalar p46_startInIteration "first iteration to start adapting pm_taxCO2eqRegi [1]" / 5 /; -Scalar p46_previousYearInLoop "previous year in loop, required for linear interpolation in postsolve [year]"; -Scalar p46_taxPreviousYearInLoop "tax of previous year in loop, required for linear interpolation in postsolve [year]"; - -*** EOF ./modules/46_carbonpriceRegi/NDC/declarations.gms diff --git a/modules/46_carbonpriceRegi/NDC/input/files b/modules/46_carbonpriceRegi/NDC/input/files deleted file mode 100644 index 8c7d777df8..0000000000 --- a/modules/46_carbonpriceRegi/NDC/input/files +++ /dev/null @@ -1,2 +0,0 @@ -fm_2015shareTarget.cs3r -fm_factorTargetyear.cs3r \ No newline at end of file diff --git a/modules/46_carbonpriceRegi/NDC/postsolve.gms b/modules/46_carbonpriceRegi/NDC/postsolve.gms deleted file mode 100644 index aed194b895..0000000000 --- a/modules/46_carbonpriceRegi/NDC/postsolve.gms +++ /dev/null @@ -1,105 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/46_carbonpriceRegi/NDC/postsolve.gms - -if(sameas("%carbonprice%","none"), p46_startInIteration = 0); - -if(ord(iteration) > p46_startInIteration, !!start only after p46_startInIteration iterations, so to already have some stability of the overall carbon price trajectory - -*#' @equations -*#' calculate emission variable to be used for NDC target: GHG emissions w/o land-use change and w/o transport bunker emissions, unit [Mt CO2eq/yr] -p46_CO2eqwoLU_actual(p46_NDCyearSet(t,regi)) = - vm_co2eq.l(t,regi) * sm_c_2_co2*1000 -*** add F-Gases - + vm_emiFgas.L(t,regi,"emiFgasTotal") -*** substract bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,"co2") - * vm_demFeSector.l(t,regi,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -*** Indias 2070 target is not CO2eq, but CO2. Then use CO2 emissions minus substract bunker emissions -p46_CO2eqwoLU_actual(p46_NDCyearSet(t,regi))$(sameas(regi,"IND") AND sameas(t,"2070")) = - (vm_emiTe.l(t,regi,"co2") + vm_emiMac.L(t,regi,"co2") + vm_emiCdr.L(t,regi,"co2"))*sm_c_2_co2*1000 - - sum(se2fe(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,"co2") - * vm_demFeSector.l(t,regi,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -display vm_co2eq.l; -display p46_CO2eqwoLU_actual; -display p46_CO2eqwoLU_goal; - -*#' calculate emissions in 2020 as reference -p46_vm_CO2eq_2020(regi) = vm_co2eq.l("2020",regi)*sm_c_2_co2*1000; - -*#' nash compatible convergence scheme: adjustment of co2 tax for next iteration based on deviation of emissions in this iteration (actual) from target emissions (ref) -*#' maximum possible change between iterations decreases with increase of iteration number - -*** rescale regi tax by comparing the required emission reduction with 2020 emission levels -p46_factorRescaleCO2Tax(p46_NDCyearSet(t,regi)) = 1+(p46_CO2eqwoLU_actual(t,regi) - p46_CO2eqwoLU_goal(t,regi))/p46_vm_CO2eq_2020(regi); - -p46_factorRescaleCO2TaxLtd(p46_NDCyearSet(t,regi)) = - min( -*** sets upper bound that decreases with iterations - max(2-(iteration.val-p46_startInIteration)/15,1.01-(iteration.val-p46_startInIteration)/10000), -*** sets lower bound of 0.1 - max(0.1, p46_factorRescaleCO2Tax(t,regi) - )); - -*** min((( max(0.1, (p46_CO2eqwoLU_actual(t,regi)+0.0001)/(p46_CO2eqwoLU_goal(t,regi)+0.0001) ) )**p46_adjustExponent),max(2-(iteration.val-p46_startInIteration)/15,1.01-(iteration.val-p46_startInIteration)/10000)); -*** use max(0.1, ...) to make sure that negative emission values cause no problem, use +0.0001 such that net zero targets cause no problem - -pm_taxCO2eqRegi(p46_NDCyearSet(t,regi)) = - max( - !! set lower bound of 0.1 $/t to avoid that the model never gets the carbon price back up - 0.1 * sm_DptCO2_2_TDpGtC, - !! set regi tax such that total CO2 tax changes by desired factor, taking into account changed pm_taxCO2eq taxes - p46_factorRescaleCO2TaxLtd(t,regi) * (pm_taxCO2eqRegi(t,regi) + p46_taxCO2eqLast(t,regi)) - - pm_taxCO2eq(t,regi) - ); - -p46_previousYearInLoop = 2020; - -*** interpolate taxCO2eq linearly from 0 in 2020 to first NDC target and between NDC targets -loop(regi, - p46_previousYearInLoop = 2020; - p46_taxPreviousYearInLoop = smax(t$(t.val = p46_previousYearInLoop), pm_taxCO2eqRegi(t,regi) ); - loop(p46_NDCyearSet(t,regi) , - pm_taxCO2eqRegi(t2,regi)$(t2.val > p46_previousYearInLoop AND t2.val < t.val) - = p46_taxPreviousYearInLoop + (t2.val - p46_previousYearInLoop) * (pm_taxCO2eqRegi(t,regi) - p46_taxPreviousYearInLoop)/(t.val - p46_previousYearInLoop); - p46_previousYearInLoop = t.val; - p46_taxPreviousYearInLoop = smax(t2$(t2.val = p46_previousYearInLoop), pm_taxCO2eqRegi(t2,regi) ); - ); -); - -*** convergence scheme after last NDC target year: exponential increase AND regional convergence until p46_taxCO2eqConvergenceYear -p46_taxCO2eqLastNDCyear(regi) = smax(t$(t.val = p46_lastNDCyear(regi)), pm_taxCO2eqRegi(t,regi)); - -pm_taxCO2eqRegi(t,regi)$(t.val gt p46_lastNDCyear(regi)) - = ( !! regional, weight going from 1 in NDC target year to 0 in 2100 - p46_taxCO2eqLastNDCyear(regi) * p46_taxCO2eqYearlyIncrease**(t.val-p46_lastNDCyear(regi)) * (max(p46_taxCO2eqConvergenceYear,t.val) - t.val) - !! global, weight going from 0 in NDC target year to 1 in and after 2100 - + p46_taxCO2eqGlobal2030 * p46_taxCO2eqYearlyIncrease**(t.val-2030) * (min(t.val,p46_taxCO2eqConvergenceYear) - p46_lastNDCyear(regi)) - )/(p46_taxCO2eqConvergenceYear - p46_lastNDCyear(regi)); - - -display p46_factorRescaleCO2TaxLtd, pm_taxCO2eqRegi; - -p46_factorRescaleCO2Tax_iter(iteration,p46_NDCyearSet(t,regi)) = p46_factorRescaleCO2Tax(t,regi); -p46_factorRescaleCO2TaxLtd_iter(iteration,p46_NDCyearSet(t,regi)) = p46_factorRescaleCO2TaxLtd(t,regi); - - -); !! end ord(iteration) > p46_startInIteration - -p46_taxCO2eqLast(t,regi) = pm_taxCO2eq(t,regi); - -p46_taxCO2eqRegi_iter(iteration,p46_NDCyearSet(t,regi)) = pm_taxCO2eqRegi(t,regi); -p46_taxCO2eq_iter(iteration,p46_NDCyearSet(t,regi)) = pm_taxCO2eq(t,regi); -p46_vm_co2eq_iter(iteration,p46_NDCyearSet(t,regi)) = vm_co2eq.l(t,regi); - -*** EOF ./modules/46_carbonpriceRegi/NDC/postsolve.gms diff --git a/modules/46_carbonpriceRegi/NDC/preloop.gms b/modules/46_carbonpriceRegi/NDC/preloop.gms deleted file mode 100644 index 569d1e2176..0000000000 --- a/modules/46_carbonpriceRegi/NDC/preloop.gms +++ /dev/null @@ -1,39 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/46_carbonpriceRegi/NDC/preloop.gms - -*** first calculate tax path until last NDC target year - linear increase, set total tax to 30$/t for fully covered countries -pm_taxCO2eqRegi(t,regi)$(t.val gt 2016 AND t.val le p46_lastNDCyear(regi)) - = max( - 0.1 * sm_DptCO2_2_TDpGtC, - (30 * p46_bestNDCcoverage(regi) * sm_DptCO2_2_TDpGtC - pm_taxCO2eq(t,regi)) - )*(t.val-2015)/5; - -*** convergence scheme after the last NDC target year: exponential increase AND regional convergence until p46_taxCO2eqConvergenceYear -*** note that with p46_taxCO2eqYearlyIncrease = 1 and p46_taxCO2eqGlobal2030, the tax decreases linearly to zero in 2100 -p46_taxCO2eqLastNDCyear(regi) = smax(t$(t.val = p46_lastNDCyear(regi)), pm_taxCO2eqRegi(t,regi)); - -pm_taxCO2eqRegi(t,regi)$(t.val gt p46_lastNDCyear(regi)) - = ( !! regional, weight going from 1 in last NDC target year to 0 in 2100 - p46_taxCO2eqLastNDCyear(regi) * p46_taxCO2eqYearlyIncrease**(t.val-p46_lastNDCyear(regi)) * (max(p46_taxCO2eqConvergenceYear,t.val) - t.val) - !! global, weight going from 0 in NDC target year to 1 in and after 2100 - + p46_taxCO2eqGlobal2030 * p46_taxCO2eqYearlyIncrease**(t.val-2030) * (min(p46_taxCO2eqConvergenceYear,t.val) - p46_lastNDCyear(regi)) - )/(p46_taxCO2eqConvergenceYear - p46_lastNDCyear(regi)); - -display pm_taxCO2eqRegi; - -*#' @equations -*#' calculate level of emission target that it should converge to, composed of: -*#' emission target relative to 2005 emissions (factor_targetyear) for part of region with NDC target -*#' baseline for the rest of the countries -p46_CO2eqwoLU_goal(p46_NDCyearSet(t,regi)) = - p46_2015shareTarget(t,regi) * p46_BAU_reg_emi_wo_LU_wo_bunkers("2015",regi) * p46_factorTargetyear(t,regi) !! share with NDC target - + (1-p46_2015shareTarget(t,regi)) * p46_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); !! baseline for share of countries without NDC target - -display pm_taxCO2eqRegi,p46_CO2eqwoLU_goal; - -*** EOF ./modules/46_carbonpriceRegi/NDC/preloop.gms diff --git a/modules/46_carbonpriceRegi/NDC/realization.gms b/modules/46_carbonpriceRegi/NDC/realization.gms deleted file mode 100644 index 8f9cf58ff5..0000000000 --- a/modules/46_carbonpriceRegi/NDC/realization.gms +++ /dev/null @@ -1,23 +0,0 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -*** | authors, and contributors see CITATION.cff file. This file is part -*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -*** | AGPL-3.0, you are granted additional permissions described in the -*** | REMIND License Exception, version 1.0 (see LICENSE file). -*** | Contact: remind@pik-potsdam.de -*** SOF ./modules/46_carbonpriceRegi/NDC/realization.gms - -*' @description This realization implements a regional carbon markup consistent with the NDC targets - -*' @limitations The NDC emission target refers to GHG emissions w/o land-use change and international bunkers. However, the submitted NDC targets of -*' several countries include land-use emissions (e.g. Australia and US). See https://www4.unfccc.int/sites/NDCStaging/Pages/All.aspx. To be checked! - -*' For more information, see 45_carbonprice/NDC - -*####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "declarations" $include "./modules/46_carbonpriceRegi/NDC/declarations.gms" -$Ifi "%phase%" == "datainput" $include "./modules/46_carbonpriceRegi/NDC/datainput.gms" -$Ifi "%phase%" == "preloop" $include "./modules/46_carbonpriceRegi/NDC/preloop.gms" -$Ifi "%phase%" == "postsolve" $include "./modules/46_carbonpriceRegi/NDC/postsolve.gms" -*######################## R SECTION END (PHASES) ############################### - -*** EOF ./modules/46_carbonpriceRegi/NDC/realization.gms diff --git a/modules/46_carbonpriceRegi/module.gms b/modules/46_carbonpriceRegi/module.gms index 7bc53befd2..cab3e3fd27 100644 --- a/modules/46_carbonpriceRegi/module.gms +++ b/modules/46_carbonpriceRegi/module.gms @@ -9,14 +9,13 @@ *' @title CarbonpriceRegi *' *' @description -*' The carbonpriceRegi module defines a regional CO2eq tax markup pm_taxCO2eqRegi to satisfy NDC or netZero targets. +*' The carbonpriceRegi module defines a regional CO2eq tax markup pm_taxCO2eqRegi to satisfy netZero targets. *' The carbon price markup is interpolated linearly between the years with policy goals. -*' It can be used jointly with the 45_carbonprice module and adds to the carbonprice calculated there. +*' It can be used jointly with the 45_carbonprice module and adds to the carbon price calculated there. -*' @authors Oliver Richters +*' @authors Rahel Mandaroux, Fabrice Lécuyer *###################### R SECTION START (MODULETYPES) ########################## -$Ifi "%carbonpriceRegi%" == "NDC" $include "./modules/46_carbonpriceRegi/NDC/realization.gms" $Ifi "%carbonpriceRegi%" == "netZero" $include "./modules/46_carbonpriceRegi/netZero/realization.gms" $Ifi "%carbonpriceRegi%" == "none" $include "./modules/46_carbonpriceRegi/none/realization.gms" *###################### R SECTION END (MODULETYPES) ############################ diff --git a/modules/46_carbonpriceRegi/netZero/datainput.gms b/modules/46_carbonpriceRegi/netZero/datainput.gms index 20192257eb..c8936908c6 100644 --- a/modules/46_carbonpriceRegi/netZero/datainput.gms +++ b/modules/46_carbonpriceRegi/netZero/datainput.gms @@ -6,72 +6,42 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/46_carbonpriceRegi/netZero/datainput.gms -p46_zeroYear = 2100; -$ifthen.p46_zeroYear "%cm_netZeroScen%" == "ELEVATE2p3" - p46_zeroYear = 2200; -$endif.p46_zeroYear - -$ifthen.p46_zeroYear "%cm_netZeroScen%" == "NGFS_v4_20pc" - p46_zeroYear = 2200; -$endif.p46_zeroYear -$ifthen.p46_zeroYear "%cm_netZeroScen%" == "NGFS_v4" - p46_zeroYear = 2200; -$endif.p46_zeroYear - -***profile for countries with 2050 target -pm_taxCO2eqRegi(t,nz_reg2050)$sameas(t,"2035")=5; -pm_taxCO2eqRegi(t,nz_reg2050)$sameas(t,"2040")=10; -pm_taxCO2eqRegi(t,nz_reg2050)$sameas(t,"2045")=15; -pm_taxCO2eqRegi(t,nz_reg2050)$sameas(t,"2050")=20; -pm_taxCO2eqRegi(t,nz_reg2050)$(t.val > 2050) = max(0, pm_taxCO2eqRegi("2050", nz_reg2050) * (t.val - p46_zeroYear) / (2050 - p46_zeroYear)); - -*** profile for countries with 2055 CO2 target -pm_taxCO2eqRegi(t,nz_reg2055)$sameas(t,"2035")=3; -pm_taxCO2eqRegi(t,nz_reg2055)$sameas(t,"2040")=6; -pm_taxCO2eqRegi(t,nz_reg2055)$sameas(t,"2045")=10; -pm_taxCO2eqRegi(t,nz_reg2055)$sameas(t,"2050")=16; -pm_taxCO2eqRegi(t,nz_reg2055)$sameas(t,"2055")=24; -pm_taxCO2eqRegi(t,nz_reg2055)$(t.val > 2055) = max(0, pm_taxCO2eqRegi("2055", nz_reg2055) * (t.val - p46_zeroYear) / (2055 - p46_zeroYear)); - -*** profile for countries with 2060 target -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2035")=2; -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2040")=5; -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2045")=9; -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2050")=14; -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2055")=20; -pm_taxCO2eqRegi(t,nz_reg2060)$sameas(t,"2060")=28; -pm_taxCO2eqRegi(t,nz_reg2060)$(t.val > 2060) = max(0, pm_taxCO2eqRegi("2060", nz_reg2060) * (t.val - p46_zeroYear) / (2060 - p46_zeroYear)); - -*** profile for countries with 2070 target -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2035")=2; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2040")=5; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2045")=9; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2050")=13; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2055")=17; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2060")=21; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2065")=25; -pm_taxCO2eqRegi(t,nz_reg2070)$sameas(t,"2070")=29; -pm_taxCO2eqRegi(t,nz_reg2070)$(t.val > 2070) = max(0, pm_taxCO2eqRegi("2070", nz_reg2070) * (t.val - p46_zeroYear) / (2070 - p46_zeroYear)); - -*** profile for countries with 2080 target -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2035")=2; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2040")=4; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2045")=7; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2050")=10; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2055")=13; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2060")=16; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2065")=19; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2070")=22; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2075")=25; -pm_taxCO2eqRegi(t,nz_reg2080)$sameas(t,"2080")=28; -pm_taxCO2eqRegi(t,nz_reg2080)$(t.val > 2080) = max(0, pm_taxCO2eqRegi("2080", nz_reg2080) * (t.val - p46_zeroYear) / (2080 - p46_zeroYear)); - -***rescale -pm_taxCO2eqRegi(t,regi) = sm_DptCO2_2_TDpGtC * pm_taxCO2eqRegi(t,regi); - -***initialize parameter -p46_taxCO2eqRegiLast(t,regi) = 0; -p46_taxCO2eqLast(t,regi) = 0; +if(not (cm_multigasscen = 2), + abort "Error: module 46 netZero requires cm_multigasscen = 2, because all pledges include all GHG emissions including LULUCF"; +); + +if(sum(regi $ sameAs(regi,"EUR"),1) = 0, + abort "Error: module 46 netZero only works with the H12 regions including EUR."; +); + + +*' For each region, define its net-zero target year and emission coverage for a certain set of gas species. +*' The coverage reduces if not all countries in the region have a target, and if targets exlude certain emissions. +*' Coverage shares are calculated using PBL's Net-Zero Calculator based on https://zerotracker.net/ +*' (methodology and more information at https://zerotracker.net/methodology) and further +*' adaptations based on Climate Action Tracker information, literature or expert opinion. +*' Net-zero claculator "ELEVATE T6.3 Scenario Protocol NDC and LTS information v3.xlsx" +*' "The current CPDB is informed by the annual update cycle for 2025. It contains policies adopted up to and including March 2025." Luka (NCI) +*** The current protocol includes policies until March 2025 (see https://github.com/NewClimateInstitute/policy-modelling/issues/6#event-22523859766) +*' CO2 targets of Countries that are represented by a native REMIND region follow it directly instead of using PBL's coverage shares. +parameter +p46_netZeroTargetCoverage(all_regi,ttot,targetSpecies) "Coverage of emissions in net-zero targets for a given region, year and gas species [1]" / + CAZ . 2050 . GHG_target 1 + EUR . 2050 . GHG_target 1 + JPN . 2050 . GHG_target 1 + LAM . 2050 . GHG_target 0.83 + + MEA . 2055 . GHG_target 0.41 + NEU . 2055 . GHG_target 0.8 + OAS . 2055 . GHG_target 0.86 + SSA . 2055 . GHG_target 0.56 + + CHA . 2060 . CO2_target 1 !! CO2 target of China + REF . 2060 . GHG_target 0.87 + + IND . 2070 . CO2_target 1 !! CO2 target of India +/; + +pm_taxCO2eqRegi(ttot,regi) = 0; *** EOF ./modules/46_carbonpriceRegi/netZero/datainput.gms - diff --git a/modules/46_carbonpriceRegi/netZero/declarations.gms b/modules/46_carbonpriceRegi/netZero/declarations.gms index 8865931bf9..397ea01df1 100644 --- a/modules/46_carbonpriceRegi/netZero/declarations.gms +++ b/modules/46_carbonpriceRegi/netZero/declarations.gms @@ -6,25 +6,33 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/46_carbonpriceRegi/netZero/declarations.gms -Parameter -p46_emi_actual(all_regi) "greenhouse gas or CO2 emissions in target year [MtCO2eq/yr]" -p46_emi_2020(all_regi) "2020 reference emissions value for normalization of deviation from zero [MtCO2eq/yr]" -p46_factorRescaleCO2TaxRegi(all_regi) "factor of change for additional carbon price [1]" -p46_taxCO2eqRegiLast(tall,all_regi) "additional carbon price to reach net-zero target in last iteration [T$/GtC]" -p46_taxCO2eqLast(ttot,all_regi) "general carbon price in last iteration [T$/GtC]" -p46_factorRescaleCO2Tax(all_regi) "required change of overall tax rate to assure net-zero emission [1]" -p46_taxCO2eq_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations [T$/GtC]" -p46_taxCO2eqRegi_iter(iteration,ttot,all_regi) "CO2eq tax regi tracked over iterations [T$/GtC]" -p46_factorRescaleCO2TaxLtd_iter(iteration,all_regi) "Track the changes of p46_factorRescaleCO2TaxLimited over the iterations [1]" -p46_emi_actual_iter(iteration,ttot,all_regi) "Track the changes of p46_emi_actual over the iterations [MtCO2eq/yr]" -p46_offset(all_regi) "allowed emissions in netZero year [MtCO2eq/yr]" -p46_ref_co2eq (ttot,all_regi) "emissions in reference run" -pm_taxCO2eqRegi(ttot,all_regi) "Additional regional CO2 tax path calulated in in 46_carbonpriceRegi module to reach regional emissions targets [T$/GtC]. To get $/tCO2, multiply with 272 = 1 / sm_DptCO2_2_TDpGtC" -pm_taxCO2eqSum(ttot,all_regi) "sum of pm_taxCO2eq, pm_taxCO2eqRegi, pm_taxCO2eqSCC [T$/GtC]. To get $/tCO2, multiply with 272 = 1 / sm_DptCO2_2_TDpGtC" +Parameter +p46_emi_targetYr(all_regi) "Greenhouse gas or CO2 emissions in target year [MtCO2eq/yr]" +p46_emi_targetYr_iter(iteration,ttot,all_regi) "Track the changes of p46_emi_targetYr over the iterations [MtCO2eq/yr]" +p46_emi_offset(all_regi) "Allowed offset emissions in net-zero year [MtCO2eq/yr]" +p46_emi_refYr(all_regi) "2025 reference emissions value for normalization of deviation from zero [MtCO2eq/yr]" +p46_emi_refRun(all_regi) "Emissions in reference BAU run in the target year [MtCO2eq/yr]" +p46_refRun_co2eq(ttot,all_regi) "Container for input_bau values of co2eq" +p46_refRun_emiFgas(ttot,all_regi,all_enty) "Container for input_bau values of emiFgas" +p46_refRun_emiTe(ttot,all_regi,all_enty) "Container for input_bau values of emiTe" +p46_refRun_emiMac(ttot,all_regi,all_enty) "Container for input_bau values of emiMac" +p46_refRun_emiCdr(ttot,all_regi,all_enty) "Container for input_bau values of emiCdr" + +p46_taxCO2eqRegiPeak(all_regi) "Peak value of the additional regional CO2 tax in target year, updated by the algorithm in module 46 [T$/GtC]" +pm_taxCO2eqRegi(ttot,all_regi) "Additional markup carbon in 46_carbonpriceRegi module to reach net-zero targets [T$/GtC]. Multiply by 272 to convert to $/tCO2." +pm_taxCO2eqSum(ttot,all_regi) "Total CO2 price including general trajectory (pm_taxCO2eq), regional markup (pm_taxCO2eqRegi) and social cost of carbon (pm_taxCO2eqSCC) [T$/GtC]. Multiply by 272 to convert to $/tCO2." +p46_taxCO2eqRegi_iter(iteration,ttot,all_regi) "Track regional CO2eq tax over iterations [T$/GtC]" +p46_taxCO2eq_iter(iteration,ttot,all_regi) "Track general CO2eq tax over iterations [T$/GtC]" + +p46_targetDeviation(all_regi) "Deviation from net-zero target rescaled to reference emission [1]" +p46_factorRescaleCO2Tax(all_regi) "Required change factor of overall tax rate to assure net-zero emission [1]" +p46_iterDamping "Lower bound on the price rescaling to avoid oscillations and favour convergence, between 0.25 and 1" +p46_targetCoverage(all_regi) "Share of the region that is covered by a net-zero target [1]" ; -Scalar p46_zeroYear "between the netZero goal and this scalar, pm_taxCO2eqRegi linearly drops to zero [year]" -Scalar p46_startInIteration "first iteration to start adapting pm_taxCO2eqRegi [1]" / 10 /; +Scalar +p46_startInIteration "First iteration to start adapting pm_taxCO2eqRegi [1]" / 10 / +; *** EOF ./modules/46_carbonpriceRegi/netZero/declarations.gms diff --git a/modules/46_carbonpriceRegi/netZero/not_used.txt b/modules/46_carbonpriceRegi/netZero/not_used.txt index 2619d7da51..85ff9312ef 100644 --- a/modules/46_carbonpriceRegi/netZero/not_used.txt +++ b/modules/46_carbonpriceRegi/netZero/not_used.txt @@ -5,4 +5,3 @@ # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de name,type,reason -cm_startyear,switch,not needed diff --git a/modules/46_carbonpriceRegi/netZero/postsolve.gms b/modules/46_carbonpriceRegi/netZero/postsolve.gms index e909b760a0..486d5985e3 100644 --- a/modules/46_carbonpriceRegi/netZero/postsolve.gms +++ b/modules/46_carbonpriceRegi/netZero/postsolve.gms @@ -6,166 +6,92 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/46_carbonpriceRegi/netZero/postsolve.gms -if(sameas("%carbonprice%","none"), p46_startInIteration = 0); - -if(ord(iteration) > p46_startInIteration, !!start only after 10 iterations, so to already have some stability of the overall carbon price trajectory - -p46_emi_2020(regi) = vm_co2eq.l("2020",regi) * sm_c_2_co2 * 1000; - -***define offsets -p46_offset(all_regi) = 0; -$ifthen.offsets "%cm_netZeroScen%" == "ELEVATE2p3" - p46_offset(nz_reg)$(sameas(nz_reg, "EUR")) = 100; - - - Execute_Loadpoint 'input_bau' p46_ref_co2eq = vm_co2eq.l; -*** Coverage shares are calculated using PBL's Net-Zero Calculator based on https://zerotracker.net/ -*** (methodology and more information at https://zerotracker.net/methodology) and further -*** adaptations based on Climate Action Tracker information, literature or expert opinion. - p46_offset(nz_reg)$(sameas(nz_reg, "LAM")) = (1 - 0.68) * p46_ref_co2eq("2050", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "MEA")) = (1 - 0.40) * p46_ref_co2eq("2055", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "NEU")) = (1 - 0.83) * p46_ref_co2eq("2055", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "OAS")) = (1 - 0.88) * p46_ref_co2eq("2055", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "SSA")) = (1 - 0.58) * p46_ref_co2eq("2055", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "REF")) = (1 - 0.83) * p46_ref_co2eq("2060", nz_reg) * sm_c_2_co2 * 1000; - -$elseif.offsets "%cm_netZeroScen%" == "NGFS_v4_20pc" - p46_offset(nz_reg) = 0.2 * vm_co2eq.l("2020", nz_reg) * sm_c_2_co2 * 1000; - p46_offset(nz_reg)$(sameas(nz_reg, "LAM")) = 0.6 * vm_co2eq.l("2020", nz_reg) * sm_c_2_co2 * 1000; -$elseif.offsets "%cm_netZeroScen%" == "NGFS_v4" - p46_offset(nz_reg)$(sameas(nz_reg, "LAM")) = 0.5 * vm_co2eq.l("2020", nz_reg) * sm_c_2_co2 * 1000; -$endif.offsets - -display p46_offset; - -*** OR: calculate actual emissions for all with GHG target - -p46_emi_actual(nz_reg2050(all_regi))$(not nz_reg_CO2(all_regi)) - = vm_co2eq.l("2050",nz_reg2050)*sm_c_2_co2*1000 + vm_emiFgas.L("2050",nz_reg2050,"emiFgasTotal") -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2050",nz_reg2050,enty,enty2,te,"co2") - * vm_demFeSector.l("2050",nz_reg2050,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2055(all_regi))$(not nz_reg_CO2(all_regi)) - = vm_co2eq.l("2055",nz_reg2055)*sm_c_2_co2*1000 + vm_emiFgas.L("2055",nz_reg2055,"emiFgasTotal") -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2055",nz_reg2055,enty,enty2,te,"co2") - * vm_demFeSector.l("2055",nz_reg2055,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2060(all_regi))$(not nz_reg_CO2(all_regi)) - = vm_co2eq.l("2060",nz_reg2060)*sm_c_2_co2*1000 + vm_emiFgas.L("2060",nz_reg2060,"emiFgasTotal") -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2060",nz_reg2060,enty,enty2,te,"co2") - * vm_demFeSector.l("2060",nz_reg2060,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2070(all_regi))$(not nz_reg_CO2(all_regi)) - = vm_co2eq.l("2070",nz_reg2070)*sm_c_2_co2*1000 + vm_emiFgas.L("2070",nz_reg2070,"emiFgasTotal") -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2070",nz_reg2070,enty,enty2,te,"co2") - * vm_demFeSector.l("2070",nz_reg2070,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2080(all_regi))$(not nz_reg_CO2(all_regi)) - = vm_co2eq.l("2080",nz_reg2080)*sm_c_2_co2*1000 + vm_emiFgas.L("2080",nz_reg2080,"emiFgasTotal") -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2080",nz_reg2080,enty,enty2,te,"co2") - * vm_demFeSector.l("2080",nz_reg2080,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -*** OR: calculate actual emissions for all with CO2 target - -p46_emi_actual(nz_reg2050(all_regi))$(nz_reg_CO2(all_regi)) - = (vm_emiTe.l("2050",nz_reg2050,"co2") + vm_emiMac.L("2050",nz_reg2050,"co2") + vm_emiCdr.L("2050",nz_reg2050,"co2"))*sm_c_2_co2*1000 -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2050",nz_reg2050,enty,enty2,te,"co2") - * vm_demFeSector.l("2050",nz_reg2050,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2055(all_regi))$(nz_reg_CO2(all_regi)) - = (vm_emiTe.l("2055",nz_reg2055,"co2") + vm_emiMac.L("2055",nz_reg2055,"co2") + vm_emiCdr.L("2055",nz_reg2055,"co2"))*sm_c_2_co2*1000 -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2055",nz_reg2055,enty,enty2,te,"co2") - * vm_demFeSector.l("2055",nz_reg2055,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2060(all_regi))$(nz_reg_CO2(all_regi)) - = (vm_emiTe.l("2060",nz_reg2060,"co2") + vm_emiMac.L("2060",nz_reg2060,"co2") + vm_emiCdr.L("2060",nz_reg2060,"co2"))*sm_c_2_co2*1000 -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2060",nz_reg2060,enty,enty2,te,"co2") - * vm_demFeSector.l("2060",nz_reg2060,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2070(all_regi))$(nz_reg_CO2(all_regi)) - = (vm_emiTe.l("2070",nz_reg2070,"co2") + vm_emiMac.L("2070",nz_reg2070,"co2") + vm_emiCdr.L("2070",nz_reg2070,"co2"))*sm_c_2_co2*1000 -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2070",nz_reg2070,enty,enty2,te,"co2") - * vm_demFeSector.l("2070",nz_reg2070,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -p46_emi_actual(nz_reg2080(all_regi))$(nz_reg_CO2(all_regi)) - = (vm_emiTe.l("2080",nz_reg2080,"co2") + vm_emiMac.L("2080",nz_reg2080,"co2") + vm_emiCdr.L("2080",nz_reg2080,"co2"))*sm_c_2_co2*1000 -*** substract the bunker emissions - - sum(se2fe(enty,enty2,te), - pm_emifac("2080",nz_reg2080,enty,enty2,te,"co2") - * vm_demFeSector.l("2080",nz_reg2080,enty,enty2,"trans","other") * sm_c_2_co2 * 1000 - ); - -***calculate relative change of overall price required to bring emissions to zero -p46_factorRescaleCO2Tax(nz_reg)=(max(0.3, (1+((p46_emi_actual(nz_reg)-p46_offset(nz_reg))/p46_emi_2020(nz_reg)))))**2; - -***calculate relative change in markup, taking into account change in tax -***add a small amount at the end to avoid division by zero in case of mark-up being not necessary -p46_factorRescaleCO2TaxRegi(nz_reg2050) = max(1-0.75*1.01**(-iteration.val),((p46_taxCO2eqLast("2050",nz_reg2050)+p46_taxCO2eqRegiLast("2050",nz_reg2050))*p46_factorRescaleCO2Tax(nz_reg2050)-pm_taxCO2eq("2050",nz_reg2050)) - /(p46_taxCO2eqRegiLast("2050",nz_reg2050)+0.0001)); -p46_factorRescaleCO2TaxRegi(nz_reg2055) = max(1-0.75*1.01**(-iteration.val),((p46_taxCO2eqLast("2055",nz_reg2055)+p46_taxCO2eqRegiLast("2055",nz_reg2055))*p46_factorRescaleCO2Tax(nz_reg2055)-pm_taxCO2eq("2055",nz_reg2055)) - /(p46_taxCO2eqRegiLast("2055",nz_reg2055)+0.0001)); -p46_factorRescaleCO2TaxRegi(nz_reg2060) = max(1-0.75*1.01**(-iteration.val),((p46_taxCO2eqLast("2060",nz_reg2060)+p46_taxCO2eqRegiLast("2060",nz_reg2060))*p46_factorRescaleCO2Tax(nz_reg2060)-pm_taxCO2eq("2060",nz_reg2060)) - /(p46_taxCO2eqRegiLast("2060",nz_reg2060)+0.0001)); -p46_factorRescaleCO2TaxRegi(nz_reg2070) = max(1-0.75*1.01**(-iteration.val),((p46_taxCO2eqLast("2070",nz_reg2070)+p46_taxCO2eqRegiLast("2070",nz_reg2070))*p46_factorRescaleCO2Tax(nz_reg2070)-pm_taxCO2eq("2070",nz_reg2070)) - /(p46_taxCO2eqRegiLast("2070",nz_reg2070)+0.0001)); -p46_factorRescaleCO2TaxRegi(nz_reg2080) = max(1-0.75*1.01**(-iteration.val),((p46_taxCO2eqLast("2080",nz_reg2080)+p46_taxCO2eqRegiLast("2080",nz_reg2080))*p46_factorRescaleCO2Tax(nz_reg2080)-pm_taxCO2eq("2080",nz_reg2080)) - /(p46_taxCO2eqRegiLast("2080",nz_reg2080)+0.0001)); - -p46_factorRescaleCO2TaxLtd_iter(iteration,nz_reg) = p46_factorRescaleCO2TaxRegi(nz_reg); - -***calculate new mark-up: -pm_taxCO2eqRegi(t,nz_reg)=pm_taxCO2eqRegi(t,nz_reg)*p46_factorRescaleCO2TaxRegi(nz_reg); - - - -);!! ord(iteration) > p46_startInIteration - -display p46_emi_actual,p46_emi_2020,p46_factorRescaleCO2Tax, p46_factorRescaleCO2TaxRegi, pm_taxCO2eqRegi, p46_taxCO2eqRegiLast; - -p46_taxCO2eqRegiLast(t,regi) = pm_taxCO2eqRegi(t,regi); -p46_taxCO2eqLast(t,regi) = pm_taxCO2eq(t,regi); - -p46_taxCO2eqRegi_iter(iteration,t,nz_reg2050)$sameas(t,"2050") = pm_taxCO2eqRegi(t,nz_reg2050); -p46_taxCO2eqRegi_iter(iteration,t,nz_reg2055)$sameas(t,"2055") = pm_taxCO2eqRegi(t,nz_reg2055); -p46_taxCO2eqRegi_iter(iteration,t,nz_reg2060)$sameas(t,"2060") = pm_taxCO2eqRegi(t,nz_reg2060); -p46_taxCO2eqRegi_iter(iteration,t,nz_reg2070)$sameas(t,"2070") = pm_taxCO2eqRegi(t,nz_reg2070); -p46_taxCO2eqRegi_iter(iteration,t,nz_reg2080)$sameas(t,"2080") = pm_taxCO2eqRegi(t,nz_reg2080); -p46_taxCO2eq_iter(iteration,t,nz_reg2050)$sameas(t,"2050") = pm_taxCO2eq(t,nz_reg2050); -p46_taxCO2eq_iter(iteration,t,nz_reg2055)$sameas(t,"2055") = pm_taxCO2eq(t,nz_reg2055); -p46_taxCO2eq_iter(iteration,t,nz_reg2060)$sameas(t,"2060") = pm_taxCO2eq(t,nz_reg2060); -p46_taxCO2eq_iter(iteration,t,nz_reg2070)$sameas(t,"2070") = pm_taxCO2eq(t,nz_reg2070); -p46_taxCO2eq_iter(iteration,t,nz_reg2080)$sameas(t,"2080") = pm_taxCO2eq(t,nz_reg2080); -p46_emi_actual_iter(iteration,t,nz_reg2050)$sameas(t,"2050") = p46_emi_actual(nz_reg2050); -p46_emi_actual_iter(iteration,t,nz_reg2055)$sameas(t,"2055") = p46_emi_actual(nz_reg2055); -p46_emi_actual_iter(iteration,t,nz_reg2060)$sameas(t,"2060") = p46_emi_actual(nz_reg2060); -p46_emi_actual_iter(iteration,t,nz_reg2070)$sameas(t,"2070") = p46_emi_actual(nz_reg2070); -p46_emi_actual_iter(iteration,t,nz_reg2080)$sameas(t,"2080") = p46_emi_actual(nz_reg2080); +if(sameAs("%carbonprice%","none"), p46_startInIteration = 1); +if(iteration.val = p46_startInIteration, !! let the carbon price stabilise over 10 iterations before adding regional markups +*' Define initial values for the regional carbon price markup designed to reach net-zero targets. + p46_taxCO2eqRegiPeak(regi) = 100 * sm_DptCO2_2_TDpGtC; !! [$/tCO2 converted to T$/GtC] + p46_taxCO2eqRegi_iter(iteration,t,regi) = 0; !! initialisation required for compilation +); + + +if(iteration.val > p46_startInIteration, !! adapt carbon price markup depending on previous iteration reaching net-zero targets +*** --------------------------------------------------------------------------- +*' #### 1. Calculating emissions +*** --------------------------------------------------------------------------- +*' Define reference emissions: +*' - 2025 serves to normalise regional emissions and to allow for incomplete net-zero targets with `cm_netZeroPercent` +*' - the baseline run indicates the emissions of countries without net-zero targets + Execute_Loadpoint 'input_bau' !! read from path_gdx_bau + p46_refRun_co2eq = vm_co2eq.l, + p46_refRun_emiFgas = vm_emiFgas.l, + p46_refRun_emiTe = vm_emiTe.l, + p46_refRun_emiMac = vm_emiMac.l, + p46_refRun_emiCdr = vm_emiCdr.l; + +*** In this module, t3 is used to loop over the years of net-zero targets, while t is used for general model time steps. + loop((regi,t3,targetSpecies) $ p46_netZeroTargetCoverage(regi,t3,targetSpecies), + + if(sameAs(targetSpecies,"GHG_target"), + p46_emi_targetYr(regi) = vm_co2eq.l(t3,regi) / sm_MtCO2_2_GtC + vm_emiFgas.l(t3,regi,"emiFgasTotal"); + p46_emi_refYr(regi) = vm_co2eq.l("2025",regi) / sm_MtCO2_2_GtC + vm_emiFgas.l("2025",regi,"emiFgasTotal"); + p46_emi_refRun(regi) = p46_refRun_co2eq(t3,regi) / sm_MtCO2_2_GtC + p46_refRun_emiFgas(t3,regi,"emiFgasTotal"); + + elseif sameAs(targetSpecies,"CO2_target"), + p46_emi_targetYr(regi) = ( vm_emiTe.l(t3,regi,"co2") + vm_emiMac.l(t3,regi,"co2") + vm_emiCdr.l(t3,regi,"co2")) / sm_MtCO2_2_GtC; + p46_emi_refYr(regi) = ( vm_emiTe.l("2025",regi,"co2") + vm_emiMac.l("2025",regi,"co2") + vm_emiCdr.l("2025",regi,"co2")) / sm_MtCO2_2_GtC; + p46_emi_refRun(regi) = (p46_refRun_emiTe(t3,regi,"co2") + p46_refRun_emiMac(t3,regi,"co2") + p46_refRun_emiCdr(t3,regi,"co2")) / sm_MtCO2_2_GtC; + ); + +*' Define emission offset [MtCO2eq/yr], which are the emissions not covered by the target. +*' Offset represents the fact that not all countries, species and sectors are included in the net-zero target. + p46_emi_offset(regi) = + (1 - p46_netZeroTargetCoverage(regi,t3,targetSpecies)) * p46_emi_refRun(regi) !! offset countries that are not covered + + pm_emiLULUCF_GrassiShift("2020",regi) / sm_MtCO2_2_GtC !! ensure that the land-use C02 emissions are in line with national accounting + + sum(se2fe(enty,enty2,te), !! bunker emissions are not included in any of the targets + pm_emifac(t3,regi,enty,enty2,te,"co2") * vm_demFeSector.l(t3,regi,enty,enty2,"trans","other")) / sm_MtCO2_2_GtC; + +*** --------------------------------------------------------------------------- +*' #### 2. Calculating regional markup carbon tax +*** --------------------------------------------------------------------------- +*' Step 1: Error signal calculation with tolerance share (cm_netZeroPercent) for squared price response + p46_targetDeviation(regi) = (p46_emi_targetYr(regi) - p46_emi_offset(regi)) / p46_emi_refYr(regi) - cm_netZeroPercent; + p46_factorRescaleCO2Tax(regi) = max(0.3, 1 + p46_targetDeviation(regi)) ** 2; + +*' Step 2: Iteration-dependent damping - prevents oscillation, ensures convergence +*' Concave curve growing from 0 at iteration 0 to 1 at cm_iteration_max https://www.desmos.com/calculator/ekpauw9fxx + p46_iterDamping = 1 - (1 - iteration.val / cm_iteration_max) ** 2; + +*' Step 3: Price decomposition - adjusts only markup (pm_taxCO2eqRegi), preserves base trajectory (pm_taxCO2eq and pm_taxCO2eqSCC). +*' Calculate markup adjustment factor by applying p46_factorRescaleCO2Tax to total tax, then isolating markup component. +*' Markup only applies after year cm_LTSstartYr (default 2040 to first meet 2035 NDC targets in NDC-LTS scenario, or 2035 to directly reach net-zero in scenario LTS). + p46_taxCO2eqRegiPeak(regi) = max( + pm_taxCO2eqSum(t3,regi) * p46_factorRescaleCO2Tax(regi) - pm_taxCO2eq(t3,regi) - pm_taxCO2eqSCC(t3,regi), + p46_taxCO2eqRegi_iter(iteration-1,t3,regi) * p46_iterDamping + ); + ); !! loop over net-zero targets + + display p46_emi_offset, p46_emi_targetYr, p46_emi_refYr, p46_factorRescaleCO2Tax, pm_taxCO2eqRegi; +); !! iteration.val > p46_startInIteration + + + +*** --------------------------------------------------------------------------- +*' #### 3. Carbon price shape and tracking across iterations +*** --------------------------------------------------------------------------- +*' Define shape of pm_taxCO2eqRegi to grow linearly from zero in cm_LTSstartYr to p46_taxCO2eqRegiPeak in the target year, then back toward zero in 2200. +*' Store current prices for next iteration's learning algorithm. +*' Track evolution across iterations for debugging and analysis. +loop((regi,t3,targetSpecies) $ p46_netZeroTargetCoverage(regi,t3,targetSpecies), + pm_taxCO2eqRegi(t,regi) $ (cm_LTSstartYr <= t.val and t.val <= t3.val) = macro_interpolate(t.val, cm_LTSstartYr-5, t3.val, 0, p46_taxCO2eqRegiPeak(regi)); + if(cm_LTSendYr = 0, + pm_taxCO2eqRegi(t,regi) $ (t3.val < t.val) = p46_taxCO2eqRegiPeak(regi); + else + pm_taxCO2eqRegi(t,regi) $ (t3.val < t.val) = macro_interpolate(t.val, t3.val, cm_LTSendYr, p46_taxCO2eqRegiPeak(regi), 0); + ); + + p46_emi_targetYr_iter(iteration,t3,regi) = p46_emi_targetYr(regi); +); +p46_taxCO2eqRegi_iter(iteration,t,regi) = pm_taxCO2eqRegi(t,regi); +p46_taxCO2eq_iter(iteration,t,regi) = pm_taxCO2eq(t,regi); *** EOF ./modules/46_carbonpriceRegi/netZero/postsolve.gms diff --git a/modules/46_carbonpriceRegi/netZero/realization.gms b/modules/46_carbonpriceRegi/netZero/realization.gms index 152b1ef769..37290f88bf 100644 --- a/modules/46_carbonpriceRegi/netZero/realization.gms +++ b/modules/46_carbonpriceRegi/netZero/realization.gms @@ -6,13 +6,12 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/46_carbonpriceRegi/netZero/realization.gms -*' @description This realization adds a regional CO2 tax markup to satisfy the net-zero targets -*' the carbon price follows a triangular trajectory, increasing until the net-zero year and going back to zero in 2100. -*' this realization should best be combined with a global CO2 trajectory defined in 45_carbonprice - -*' @limitations Only regions where all countries have the same target are considered -*' If you require this partial targets, use 46/NDC, but this has issues differentiating CO2 and GHG goals - +*' @description This realization adds a regional CO2 tax markup to satisfy the net-zero targets. +*' The carbon price markup increases until the net-zero year then decreases toward zero in 2200. +*' This realization best combines with a global CO2 trajectory defined in 45_carbonprice. +*' Regional carbon price markups (pm_taxCO2eqRegi) are adjusted through an iterative feedback +*' to achieve net-zero emissions targets. +*' *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "sets" $include "./modules/46_carbonpriceRegi/netZero/sets.gms" $Ifi "%phase%" == "declarations" $include "./modules/46_carbonpriceRegi/netZero/declarations.gms" diff --git a/modules/46_carbonpriceRegi/netZero/sets.gms b/modules/46_carbonpriceRegi/netZero/sets.gms index f200f099bb..56fbd08d40 100644 --- a/modules/46_carbonpriceRegi/netZero/sets.gms +++ b/modules/46_carbonpriceRegi/netZero/sets.gms @@ -6,32 +6,8 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/46_carbonpriceRegi/netZero/sets.gms -$ifthenE.scen (sameas("%cm_netZeroScen%","NGFS_v4"))or(sameas("%cm_netZeroScen%","NGFS_v4_20pc")) -SETS - nz_reg2050(all_regi) "regions with net-zero 2050 target" / "CAZ","EUR","JPN","LAM","USA" / - nz_reg2055(all_regi) "regions with net-zero 2055 target" / / - nz_reg2060(all_regi) "regions with net-zero 2060 target" / "CHA","REF" / - nz_reg2070(all_regi) "regions with net-zero 2070 target" / "IND" / - nz_reg2080(all_regi) "regions with net-zero 2080 target" / / - nz_reg_CO2(all_regi) "regions with CO2, not GHG target" / "CHA","IND" / -; -$elseif.scen "%cm_netZeroScen%" == "ELEVATE2p3" -SETS - nz_reg2050(all_regi) "regions with net-zero 2050 target" / "CAZ","EUR","JPN","USA","LAM" / - nz_reg2055(all_regi) "regions with net-zero 2055 target" / "MEA","NEU","OAS", "SSA" / - nz_reg2060(all_regi) "regions with net-zero 2060 target" / "CHA","REF" / - nz_reg2070(all_regi) "regions with net-zero 2070 target" / "IND" / - nz_reg2080(all_regi) "regions with net-zero 2080 target" / / - nz_reg_CO2(all_regi) "regions with CO2, not GHG target" / "OAS","NEU","SSA", "LAM","MEA", "REF", "CHA", "IND" / -; -$else.scen - $error 'In 46_carbonpriceRegi/netZero/sets.gms, no settings for the specified cm_netZeroScen found' -$endif.scen +sets -SETS - nz_reg(all_regi) "all regions with a net-zero target" -; -nz_reg(all_regi) = nz_reg2050(all_regi) + nz_reg2055(all_regi) + nz_reg2060(all_regi) + nz_reg2070(all_regi) + nz_reg2080(all_regi); +targetSpecies "Gases included in national net-zero targets" / CO2_target, GHG_target /; -display nz_reg; *** EOF ./modules/46_carbonpriceRegi/netZero/sets.gms diff --git a/modules/46_carbonpriceRegi/none/not_used.txt b/modules/46_carbonpriceRegi/none/not_used.txt index 5c2e4fc663..e70b9f9ac4 100644 --- a/modules/46_carbonpriceRegi/none/not_used.txt +++ b/modules/46_carbonpriceRegi/none/not_used.txt @@ -5,8 +5,6 @@ # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de name,type,reason -cm_startyear,switch,not needed -sm_c_2_co2,input,questionnaire vm_co2eq,input,questionnaire vm_emiFgas,input,questionnaire vm_demFeSector,input,questionnaire @@ -14,3 +12,10 @@ pm_emifac,input,questionnaire vm_emiTe,input,questionnaire vm_emiCdr,input,questionnaire vm_emiMac,input,questionnaire +sm_MtCO2_2_GtC,input,not needed +cm_iteration_max,input,not needed +cm_LTSstartYr,input,not needed +cm_LTSendYr,input,not needed +cm_netZeroPercent,input,not needed +cm_multigasscen,input,not needed +pm_emiLULUCF_GrassiShift,input,not needed diff --git a/modules/47_regipol/none/bounds.gms b/modules/47_regipol/none/bounds.gms index 87585ad1f3..60d4c3d867 100644 --- a/modules/47_regipol/none/bounds.gms +++ b/modules/47_regipol/none/bounds.gms @@ -21,7 +21,7 @@ loop(regi$(sameAs(regi,"DEU")), *** only small amount of co2 injection ccs until 2030 in Germany -vm_co2CCS.up(t,regi,"cco2","ico2",te,rlf)$((t.val le 2030) AND (sameas(regi,"DEU"))) = 1e-3; +vm_co2CCS.up(t,regi,"cco2","ico2",te,rlf)$((t.val le 2030) AND (sameas(regi,"DEU"))) = 1e-3; !! DKX assumptions for ccsinjeoff *** no Pe2Se fossil CCS in Germany, if c_noPeFosCCDeu = 1 chosen vm_emiTeDetail.up(t,regi,peFos,entySe,teFosCCS,"cco2")$((sameas(regi,"DEU")) AND (cm_noPeFosCCDeu = 1)) = 1e-4; *** limit German CDR amount (Energy system BECCS, DACCS, EW and negative Landuse Change emissions), conversion from MtCO2 to GtC diff --git a/modules/47_regipol/none/not_used.txt b/modules/47_regipol/none/not_used.txt index 37b84ba93c..6771749a6c 100644 --- a/modules/47_regipol/none/not_used.txt +++ b/modules/47_regipol/none/not_used.txt @@ -81,3 +81,5 @@ sm_D2005_2_D2017,input,no conversion needed cm_budgetCO2_absDevTol,input,added by codeCheck vm_emiCdrTeDetail,input,added by codeCheck vm_demFeNonEnergySector,input,added by codeCheck +sm_MtCO2_2_GtC,input,not needed +pm_emiLULUCF_GrassiShift,input,not needed diff --git a/modules/47_regipol/regiCarbonPrice/bounds.gms b/modules/47_regipol/regiCarbonPrice/bounds.gms index 7ff70aa14a..bc1a517d46 100644 --- a/modules/47_regipol/regiCarbonPrice/bounds.gms +++ b/modules/47_regipol/regiCarbonPrice/bounds.gms @@ -21,16 +21,34 @@ *' ####### Power Sector $ifThen.tech_bounds_2025 "%cm_tech_bounds_2025%" == "on" +*' Set bounds for renewable power capacity in 2025 based on recent and historic growth rates *' This limits wind and solar PV capacity additions for 2025 in light of recent slow developments as of 2023. *' Upper bound is double the historic maximum capacity addition in 2011-2020. *' In addition: Limit solar PV capacity to 120 GW in 2025 (2023-2027 average) given that we are at only 76 GW PV in 2023 loop(regi$(sameAs(regi,"DEU")), vm_deltaCap.up("2025",regi,"windon","1")=2*smax(tall$(tall.val ge 2011 and tall.val le 2020), pm_delta_histCap(tall,regi,"windon")); vm_deltaCap.up("2025",regi,"spv","1")=2*smax(tall$(tall.val ge 2011 and tall.val le 2020), pm_delta_histCap(tall,regi,"spv")); - vm_cap.up("2025",regi,"spv","1")=0.12; + +*' 2025 lower bounds for VRE capacities based on installed capacity by 2024 and recent yearly growth rates + vm_cap.lo("2025",regi,"spv","1")=0.096+0.014; + vm_cap.lo("2025",regi,"windon","1")=0.062+0.003; + vm_cap.lo("2025",regi,"windoff","1")=0.009+0.001; ); $endIf.tech_bounds_2025 +*' make assumptions on minimum renewable power and heat pump growth for Germany between 2025 and 2030 and distinguish two different scenarios ("Current Policies" and "Optimistic") +$ifthen.cm_VREminCap_Ger "%cm_VREminCap_Ger%" == "CurrPol" + vm_deltaCap.lo("2030",regi,"windon","1")$(sameAs(regi,"DEU")) = 6/1000; + vm_deltaCap.lo("2030",regi,"windoff","1")$(sameAs(regi,"DEU")) = 2/1000; + vm_cap.lo("2030",regi,"geohe","1")$(sameAs(regi,"DEU")) = 7/1000; +$endIf.cm_VREminCap_Ger + +$ifthen.cm_VREminCap_Ger "%cm_VREminCap_Ger%" == "Opt" + vm_deltaCap.lo("2030",regi,"windon","1")$(sameAs(regi,"DEU")) = 7.5/1000; + vm_deltaCap.lo("2030",regi,"windoff","1")$(sameAs(regi,"DEU")) = 3/1000; + vm_cap.lo("2030",regi,"geohe","1")$(sameAs(regi,"DEU")) = 7/1000; +$endIf.cm_VREminCap_Ger + *' These bounds account for historic gas power development. *' TODO: Historical fixings should be done in the core the via input data from mrremind, this still needs to be moved @@ -181,21 +199,29 @@ vm_cap.up("2020",regi,"pc","1")$((cm_startyear le 2020) and (sameas(regi,"UKI")) $IFTHEN.NucRegiPol not "%cm_NucRegiPol%" == "off" *' Germany Nuclear phase-out vm_cap.up(t,regi,"tnrs","1")$((t.val ge 2025) and (t.val ge cm_startyear) and (sameas(regi,"DEU"))) = 1E-6; + vm_cap.lo(t,regi,"tnrs","1")$((t.val ge 2025) and (t.val ge cm_startyear) and (sameas(regi,"DEU"))) = 0; *' ESC -> no new Nuclear capacity (Italy had a plebiscite for this and Greece should not have any new capacity) vm_deltaCap.up(t,regi,"tnrs","1")$((t.val ge 2020) and (t.val ge cm_startyear) and (sameas(regi,"ESC"))) = 0; +*' Neither France, ENC, NEN, ECS, ESW or ECE currently plan to early-retire any of their current fleet until 2050 + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"FRA")) ) = 1e-3; + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"ENC")) ) = 1e-3; + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"NEN")) ) = 1e-3; + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"ECS")) ) = 1e-3; + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"ESW")) ) = 1e-3; + vm_capEarlyReti.up(t,regi,"tnrs") $ ( (t.val ge cm_startyear) AND (t.val le 2050) AND (sameas(regi,"ECE")) ) = 1e-3; $ENDIF.NucRegiPol *' Extended nuclear policies: $IFTHEN.proNucRegiPol not "%cm_proNucRegiPol%" == "off" *' Pro nuclear countries tend to keep nuclear production by political decision *' assuming France would keep at least 80% of its 2015 nuclear capacity in the future. -vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) and (sameas(regi,"FRA"))) = 0.8*pm_histCap("2015",regi,"tnrs"); +vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) AND (t.val ge 2030) AND (sameas(regi,"FRA"))) = 0.8*pm_histCap("2015",regi,"tnrs"); *' Assuming Czech Republic would keep at least its 2015 nuclear capacity in the future (CZE corresponds to 61.8% of nuclear capacity of ECE in 2015) -vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) and (sameas(regi,"ECE"))) = 0.618*pm_histCap("2015",regi,"tnrs"); +vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) AND (t.val ge 2030) AND (sameas(regi,"ECE"))) = 0.618*pm_histCap("2015",regi,"tnrs"); *' Assuming Finland would keep at least its 2015 nuclear capacity in the future (FIN corresponds to 21.6% of nuclear capacity of ENC in 2015) -vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) and (sameas(regi,"ENC"))) = 0.216*pm_histCap("2015",regi,"tnrs"); +vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) AND (t.val ge 2030) AND (sameas(regi,"ENC"))) = 0.216*pm_histCap("2015",regi,"tnrs"); *' Assuming Romania would keep at least its 2015 nuclear capacity in the future (ROU corresponds to 22.1% of nuclear capacity of ECS in 2015) -vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) and (sameas(regi,"ECS"))) = 0.221*pm_histCap("2015",regi,"tnrs"); +vm_cap.lo(t,regi,"tnrs","1")$((t.val ge cm_startyear) AND (t.val ge 2030) AND (sameas(regi,"ECS"))) = 0.221*pm_histCap("2015",regi,"tnrs"); $ENDIF.proNucRegiPol *' This accounts for different CCS policies that can be chosen for the EU subregions. diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index ce29d6ecbc..358d7f883b 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -237,29 +237,6 @@ $IFTHEN.renewablesFloorCost not "%cm_renewables_floor_cost%" == "off" pm_data(regi,"floorcost",te)$((regi_group("EUR_regi",regi)) AND (p_new_renewables_floor_cost(te))) = pm_data(regi,"floorcost",te) + p_new_renewables_floor_cost(te); $ENDIF.renewablesFloorCost -*** VRE capacity factor adjustments for Germany in line with results from detailed models in ARIADNE project - loop(te$sameas(te,"windon"), - loop(regi$sameas(regi,"DEU"), - pm_cf("2025",regi,te) = 1.04 * pm_cf("2025",regi,te); - pm_cf("2030",regi,te) = 1.08 * pm_cf("2030",regi,te); - pm_cf("2035",regi,te) = 1.12 * pm_cf("2035",regi,te); - pm_cf("2040",regi,te) = 1.16 * pm_cf("2040",regi,te); - pm_cf("2045",regi,te) = 1.2 * pm_cf("2045",regi,te); - pm_cf(t,regi,te)$(t.val gt 2045) = pm_cf("2045",regi,te); - ); -); - -loop(te$sameas(te,"spv"), - loop(regi$sameas(regi,"DEU"), - pm_cf("2025",regi,te) = 1.02 * pm_cf("2025",regi,te); - pm_cf("2030",regi,te) = 1.04 * pm_cf("2030",regi,te); - pm_cf("2035",regi,te) = 1.06 * pm_cf("2035",regi,te); - pm_cf("2040",regi,te) = 1.08 * pm_cf("2040",regi,te); - pm_cf("2045",regi,te) = 1.10 * pm_cf("2045",regi,te); - pm_cf(t,regi,te)$(t.val gt 2045) = pm_cf("2045",regi,te); - ); -); - *** p_EmiLULUCFCountryAcc contains historic LULUCF emissions from UNFCCC, *** used for rescaling land-use change emissions for emissions targets based on national accounting @@ -271,19 +248,8 @@ $offdelim / ; -*** difference between 2020 land-use change emissions from Magpie and UNFCCC 2015 and 2020 moving average land-use change emissions -p47_LULUCFEmi_GrassiShift(ttot,regi)$(p47_EmiLULUCFCountryAcc("2020",regi)) = - pm_macBaseMagpie("2020",regi,"co2luc") - - - ( - ( - ((p47_EmiLULUCFCountryAcc("2013",regi) + p47_EmiLULUCFCountryAcc("2014",regi) + p47_EmiLULUCFCountryAcc("2015",regi) + p47_EmiLULUCFCountryAcc("2016",regi) + p47_EmiLULUCFCountryAcc("2017",regi))/5) - + - ((p47_EmiLULUCFCountryAcc("2018",regi) + p47_EmiLULUCFCountryAcc("2019",regi) + p47_EmiLULUCFCountryAcc("2020",regi) + p47_EmiLULUCFCountryAcc("2021",regi))/4) - )/2 - * 1e-3/sm_c_2_co2 - ) -; + +*** Moved calculation of pm_emiLULUCF_GrassiShift to 47_regipol/regiCarbonPrice/presolve.gms *** -------------------------Primary Energy Tax-------------------------- diff --git a/modules/47_regipol/regiCarbonPrice/declarations.gms b/modules/47_regipol/regiCarbonPrice/declarations.gms index a3b1be7b4b..071a9337b2 100644 --- a/modules/47_regipol/regiCarbonPrice/declarations.gms +++ b/modules/47_regipol/regiCarbonPrice/declarations.gms @@ -13,7 +13,7 @@ Parameter s47_firstFreeYear "value of first free year for the carbon price trajectory" s47_prefreeYear "value of the last non-free year for the carbon price trajectory" - p47_LULUCFEmi_GrassiShift(ttot,all_regi) "difference between Magpie land-use change emissions and UNFCCC emissions in 2015 to correct for national accounting in emissions targets" + pm_emiLULUCF_GrassiShift(ttot,all_regi) "difference between Magpie land-use change emissions and UNFCCC emissions in 2015 to correct for national accounting in emissions targets [GtC]" pm_emiMktTarget_dev(ttot,ttot2,ext_regi,emiMktExt) "deviation of emissions of current iteration from target emissions, for budget target this is the difference normalized by target emissions, while for year targets this is the difference normalized by 2005 emissions [%]" pm_taxemiMkt(ttot,all_regi,all_emiMkt) "CO2 tax path per region and emissions market [T$/GtC]" pm_taxemiMkt_iteration(iteration,ttot,all_regi,all_emiMkt) "CO2 tax path per region and emissions market calculated from previous iteration [T$/GtC]" @@ -258,5 +258,25 @@ q47_prodSEtotal(ttot,all_regi,all_enty,all_enty) "calculate total SE production +***--------------------------------------------------------------------------- +*** Exogenous CO2 tax level from another run: +***--------------------------------------------------------------------------- +$ifThen.regiExoPrice_fromFile not "%cm_regiExoPrice_fromFile%" == "off" + +File co2price_scenario / "%cm_regiExoPrice_fromFile%" /; + +Parameter + p47_exoCo2tax_fromFile(ttot,all_regi,emiMkt) "Exogenous CO2 tax level from of GDX file. Overrides carbon prices in pm_taxCO2eq, only if explicitly defined. [T$/GtC]" + +; + +Execute_Loadpoint "%cm_regiExoPrice_fromFile%" p47_exoCo2tax_fromFile = pm_taxemiMkt; + +execute_unload "exoCO2Tax_fromFile", p47_exoCo2tax_fromFile; +display p47_exoCo2tax_fromFile; + +$endIf.regiExoPrice_fromFile + + *** EOF ./modules/47_regipol/regiCarbonPrice/declarations.gms diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index a289d1d218..3f92dfdf1b 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -96,27 +96,27 @@ p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_noLULUCF_noBunkers") = *** net CO2 per Mkt with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_LULUCFGrassi") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); *** net CO2 per Mkt without bunkers and with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_LULUCFGrassi_noBunkers") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_noBunkers") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); *** net GHG per Mkt with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_LULUCFGrassi") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); *** net GHG per Mkt without bunkers and with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_LULUCFGrassi_noBunkers") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_noBunkers") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")); *** net CO2 per Mkt without bunkers and with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_LULUCFGrassi_intraRegBunker") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_noBunkers") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")) + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")) + ( sum(se2fe(enty,enty2,te), pm_emifac(ttot,regi,enty,enty2,te,"co2") @@ -127,7 +127,7 @@ p47_emiTargetMkt(ttot,regi, emiMktExt,"netCO2_LULUCFGrassi_intraRegBunker") = *** net GHG per Mkt without bunkers and with Grassi LULUCF shift p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_LULUCFGrassi_intraRegBunker") = p47_emiTargetMkt(ttot,regi, emiMktExt,"netGHG_noBunkers") - - ( p47_LULUCFEmi_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")) + - ( pm_emiLULUCF_GrassiShift(ttot,regi) )$(sameas(emiMktExt,"other") or sameas(emiMktExt,"all")) + ( sum(se2fe(enty,enty2,te), pm_emifac(ttot,regi,enty,enty2,te,"co2") @@ -939,4 +939,30 @@ loop((ttot,ext_regi)$p47_exoCo2tax(ext_regi,ttot), display 'update of CO2 prices due to exogenously given CO2 prices in p47_exoCo2tax', pm_taxCO2eq; $endIf.regiExoPrice + +$ifThen.regiExoPrice_fromFile not "%cm_regiExoPrice_fromFile%" == "off" + + +*** Removing the existent co2 tax parameters for regions with exogenous set prices + pm_taxCO2eqSum(ttot,regi)$(ttot.val ge cm_startyear) = 0; + pm_taxCO2eq(ttot,regi)$(ttot.val ge cm_startyear) = 0; + pm_taxCO2eqRegi(ttot,regi)$(ttot.val ge cm_startyear)= 0; + pm_taxCO2eqSCC(ttot,regi)$(ttot.val ge cm_startyear) = 0; + + pm_taxrevGHG0(ttot,regi)$(ttot.val ge cm_startyear) = 0; + pm_taxrevCO2Sector0(ttot,regi,emi_sectors)$(ttot.val ge cm_startyear) = 0; + pm_taxrevCO2LUC0(ttot,regi)$(ttot.val ge cm_startyear) = 0; + pm_taxrevNetNegEmi0(ttot,regi)$(ttot.val ge cm_startyear) = 0; + + pm_taxemiMkt(ttot,regi,emiMkt)$(ttot.val ge cm_startyear) = 0; + + +*** setting exogenous CO2 prices from GDX file + pm_taxCO2eq(t,regi) = p47_exoCo2tax_fromFile(t,regi,"ETS"); + pm_taxCO2eqSum(t,regi) = pm_taxCO2eq(t,regi); + +execute_unload "postsolve_pm_taxCO2eq_fromFile", pm_taxCO2eq; +display pm_taxCO2eq; +$endIf.regiExoPrice_fromFile + *** EOF ./modules/47_regipol/regiCarbonPrice/postsolve.gms diff --git a/modules/47_regipol/regiCarbonPrice/presolve.gms b/modules/47_regipol/regiCarbonPrice/presolve.gms index 49e0b31afc..a169f2361f 100644 --- a/modules/47_regipol/regiCarbonPrice/presolve.gms +++ b/modules/47_regipol/regiCarbonPrice/presolve.gms @@ -6,6 +6,12 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/47_regipol/regiCarbonPrice/presolve.gms +*** difference between 2020 land-use change emissions from Magpie and UNFCCC 2013-2022 average land-use change emissions [GtC] +pm_emiLULUCF_GrassiShift(ttot,regi) $ (p47_EmiLULUCFCountryAcc("2020",regi)) = + pm_macBaseMagpie("2020",regi,"co2luc") + - sum(tall $ (2012 < tall.val and tall.val <= 2022), p47_EmiLULUCFCountryAcc(tall,regi)) / 10 * sm_MtCO2_2_GtC +; + ***-------------------------------------------------- *** Emission markets (EU Emission trading system and Effort Sharing) ***-------------------------------------------------- diff --git a/modules/50_damages/KotzWenz/postsolve.gms b/modules/50_damages/KotzWenz/postsolve.gms index 637353d998..2543481761 100644 --- a/modules/50_damages/KotzWenz/postsolve.gms +++ b/modules/50_damages/KotzWenz/postsolve.gms @@ -1,5 +1,13 @@ *** SOF ./modules/50_damages/KotzWenz/postsolve.gms + +*** Track runtime +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",run_KotzWenz_damages," iteration.val:0; + execute "Rscript run_KotzWenz_damages.R" + +*** Track runtime +putclose runtime gyear(jnow):0:0 "-" gmonth(jnow):0:0 "-" gday(jnow):0:0 " " ghour(jnow):0:0 ":" gminute(jnow):0:0 ":" gsecond(jnow):0:0 ",GAMS," iteration.val:0; + execute_loadpoint 'pm_KotzWenz_damageIso' p50_damageIsoPerc=pm_damageIso; execute_loadpoint 'pm_KotzWenz_damageMarginalIso' p50_damageMarginalIsoPerc=pm_damageMarginalIso; diff --git a/modules/80_optimization/nash/datainput.gms b/modules/80_optimization/nash/datainput.gms index 2588cb4055..c24ea97c16 100644 --- a/modules/80_optimization/nash/datainput.gms +++ b/modules/80_optimization/nash/datainput.gms @@ -37,7 +37,7 @@ cm_iteration_max = 100; ***convergences thresholds - very coarse p80_surplusMaxTolerance(tradePe) = 2* 1.5 * sm_EJ_2_TWa; !! convert EJ/yr into internal unit TWa p80_surplusMaxTolerance("good") = 2* 100/1000; !! in internal unit, trillion Dollar - p80_surplusMaxTolerance("perm") = 2* 300 * 12/44 / 1000; !! convert MtCO2eq into internal unit GtC + p80_surplusMaxTolerance("perm") = 3* 300 * 12/44 / 1000; !! convert MtCO2eq into internal unit GtC ); ); @@ -54,12 +54,12 @@ p80_etaXp("perm") = 0.2; *LB* parameter for Nash price algorithm between different iterations p80_etaLT(trade) = 0; -p80_etaLT("perm") = 0.03; +p80_etaLT("perm") = 0.04; ***These parameters are pretty sensitive. If market surpluses diverge, try higher values (up to 1). If surpluses oscillate, try lower values. p80_etaST(tradePe) = 0.3; p80_etaST("good") = 0.25; -p80_etaST("perm") = 0.3; +p80_etaST("perm") = 0.8; $ifi %banking% == "banking" p80_etaST("perm") = 0.2; !! in banking mode, the permit market reacts more sensitively. $ifi %emicapregi% == "budget" p80_etaST("perm") = 0.25; !! in budget mode, the permit market reacts more sensitively. diff --git a/modules/80_optimization/nash/declarations.gms b/modules/80_optimization/nash/declarations.gms index acc7f6d463..0c56505c94 100644 --- a/modules/80_optimization/nash/declarations.gms +++ b/modules/80_optimization/nash/declarations.gms @@ -103,6 +103,7 @@ $ifthen.cm_implicitQttyTarget not "%cm_implicitQttyTarget%" == "off" p80_implicitQttyTarget_dev_iter(iteration,ttot,ext_regi,qttyTarget,qttyTargetGroup) "deviation of current iteration quantity target from target per iteration - relative for total targets, absolute (= share points) for share targets" $endif.cm_implicitQttyTarget p80_globalBudget_absDev_iter(iteration) "absolute deviation of global cumulated CO2 emissions budget from target budget" +p80_regionalBudget_absDev_iter(iteration,all_regi) "absolute deviation of regional cumulated CO2 emissions target budgets" p80_sccConvergenceMaxDeviation_iter(iteration) "max deviation of SCC from last iteration per iteration [percent]" p80_gmt_conv_iter(iteration) "global mean temperature convergence per iteration" ; diff --git a/modules/80_optimization/nash/equations.gms b/modules/80_optimization/nash/equations.gms index 8bc6b50d25..b7d46b2781 100644 --- a/modules/80_optimization/nash/equations.gms +++ b/modules/80_optimization/nash/equations.gms @@ -44,7 +44,7 @@ q80_costAdjNash(ttot,regi)$( ttot.val ge cm_startyear ) .. ; *' link between permit budget and emission budget -q80_budgetPermRestr(regi)$(cm_emiscen=6) .. +q80_budgetPermRestr(regi)$(cm_emiscen=6 OR cm_emiscen = 4) .. sum(ttot$(ttot.val lt sm_endBudgetCO2eq and ttot.val ge cm_startyear), pm_ts(ttot)* vm_perm(ttot,regi)) + sum(ttot$(ttot.val eq sm_endBudgetCO2eq),pm_ts(ttot)/2 * (vm_perm(ttot,regi))) =l= pm_budgetCO2eq(regi) - sum(ttot $((ttot.val ge 2005) and (ttot.val lt cm_startyear)), pm_ts(ttot)* vm_co2eq(ttot,regi)); diff --git a/modules/80_optimization/nash/not_used.txt b/modules/80_optimization/nash/not_used.txt index 128a397686..125b61d2c8 100644 --- a/modules/80_optimization/nash/not_used.txt +++ b/modules/80_optimization/nash/not_used.txt @@ -7,6 +7,5 @@ name,type,reason cm_solver_try_max, switch, not needed pm_prtp, parameter, ??? -pm_taxCO2eq, parameter, ??? pm_ttot_val, parameter, ??? pm_welf, parameter, ??? diff --git a/modules/80_optimization/nash/postsolve.gms b/modules/80_optimization/nash/postsolve.gms index 982ef409f6..dc3bd518be 100644 --- a/modules/80_optimization/nash/postsolve.gms +++ b/modules/80_optimization/nash/postsolve.gms @@ -344,6 +344,24 @@ loop((ttot,ttot2,ext_regi,emiMktExt)$pm_emiMktTarget_dev(ttot,ttot2,ext_regi,emi ); $endif.emiMkt + +$ifthen.NDC "%carbonprice%" == "NDC" +$ifthen.targetCheck "%cm_NDC_TargetCheckConv%" == "on" +*** additional criterion: Were NDC emissions targets reached? +loop((t,regi)$pm_NDCEmiTargetDeviation(t,regi), +*** pm_NDCEmiTargetDeviation gives the difference between actual model emissions and target emissions normalized to target emissions, +*** so a negative value means that actual emissions are below target, while a positive value means that actual emissions are above target. +*** The convergence criterion is that actual emissions should at max up to cm_NDC_target_DevTol above the target. + if( (pm_NDCEmiTargetDeviation(t,regi) le -cm_NDC_target_DevTol), + s80_bool = 0; + p80_messageShow("NDC") = YES; + ); +); +$endif.targetCheck +$endif.NDC + + + *** additional criterion: Were the quantity targets reached by implicit taxes and/or subsidies? $ifthen.cm_implicitQttyTarget not "%cm_implicitQttyTarget%" == "off" p80_implicitQttyTarget_dev_iter(iteration,ttot,ext_regi,qttyTarget,qttyTargetGroup) = pm_implicitQttyTarget_dev(ttot,ext_regi,qttyTarget,qttyTargetGroup); @@ -380,21 +398,31 @@ loop((t,regi,entyPe)$pm_implicitPePriceTarget(t,regi,entyPe), ); $endIf.cm_implicitPePriceTarget -*** check global budget target from core/postsolve, must be within cm_budgetCO2_absDevTol (default 2 Gt) of target value +$ifthen.carbonprice %carbonprice% == "functionalForm" +*** check global budget target from 45_carbonprice/functionalForm/postsolve +*** convergence criterion defined via cm_budgetCO2_absDevTol [default = 2 Gt CO2] +*** positive values of sm_globalBudget_absDev mean that target budget is exceeded (sm_globalBudget_absDev = s45_actualbudgetco2 - cm_budgetCO2from2020) +*** if damages are not internalized, check positive and negative deviation from target budget +*** if damages are internalized, only check positive deviation from target budget p80_globalBudget_absDev_iter(iteration) = sm_globalBudget_absDev; -if ( abs(p80_globalBudget_absDev_iter(iteration)) gt cm_budgetCO2_absDevTol , !! check if CO2 budget met in tolerance range, - s80_bool = 0; - p80_messageShow("globalbudget") = YES; -); - +$ifthen.globalBudget "%internalizeDamages%" == "off" + if (abs(p80_globalBudget_absDev_iter(iteration)) gt cm_budgetCO2_absDevTol, + s80_bool = 0; + p80_messageShow("globalbudget") = YES; + ); +$else.globalBudget + if (p80_globalBudget_absDev_iter(iteration) gt cm_budgetCO2_absDevTol, + s80_bool = 0; + p80_messageShow("globalbudget") = YES; + ); +$endIf.globalBudget -$ifthen.carbonprice %carbonprice% == "functionalForm" *** check whether cm_peakBudgYr corresponds to year of maximum cumulative CO2 emissions -if ( ( cm_iterative_target_adj eq 9 - AND cm_peakBudgYr ne sm_peakBudgYr_check ), - s80_bool = 0; - p80_messageShow("peakbudgyr") = YES; -); +*if ( ( cm_iterative_target_adj eq 9 +* AND cm_peakBudgYr ne sm_peakBudgYr_check ), +* s80_bool = 0; +* p80_messageShow("peakbudgyr") = YES; +*); *** Check whether difference in cumulative emissions between both time steps is greater than sm_peakbudget_diff_tolerance if ( ( cm_iterative_target_adj eq 9 @@ -404,6 +432,28 @@ if ( ( cm_iterative_target_adj eq 9 ); $endIf.carbonprice +$ifthen.carbonpriceRegi %carbonprice% == "functionalFormRegi" +*** check regional budget target, must be within tolerance level of target value + p80_regionalBudget_absDev_iter(iteration,regi) = pm_budgetDeviation(regi); + loop(regi, + !! If the deviation is positive, i.e. budget is too high and requires an increase in Carbon Price => always throw an error + if(p80_regionalBudget_absDev_iter(iteration,regi) ge 0, + if (abs(p80_regionalBudget_absDev_iter(iteration,regi)) gt pm_regionalBudget_absDevTol(regi), !! If the deviation is + s80_bool = 0; + p80_messageShow("regiBudget") = YES; + ); + !! If the deviation is negative, i.e. budget is too low and would require a decrease of the Carbon Price => only "not converged" if the carbon price is not already very low, + !! "Very low" is for now <1 USD/t CO2 in 2100, tbd + else + if ((abs(p80_regionalBudget_absDev_iter(iteration,regi)) gt abs(cm_budgetCO2_absDevTol)) + AND (pm_taxCO2eq("2100",regi) gt (1 * sm_DptCO2_2_TDpGtC)), + s80_bool = 0; + p80_messageShow("regiBudget") = YES; + ); + ); + ); +$endIf.carbonpriceRegi + *** additional criterion: if damage internalization is on, is damage iteration converged? p80_sccConvergenceMaxDeviation_iter(iteration) = pm_sccConvergenceMaxDeviation; @@ -480,12 +530,20 @@ $ifthen.carbonprice %carbonprice% == "functionalForm" display sm_peakbudget_diff; ); $endIf.carbonprice +$ifthen.carbonpriceRegi %carbonprice% == "functionalFormRegi" + if(sameas(convMessage80, "regiBudget"), + display "#### 7.) A regional budget target has not been reached yet."; + display "#### Convergence determined by pm_regionalBudget_absDevTol."; + display "#### Also check pm_taxCO2eq_iter (regional CO2 tax paths tracked over iterations [T$/GtC])"; + display p80_regionalBudget_absDev_iter, pm_factorRescale_taxCO2Regi_Funneled2; + ); +$endIf.carbonpriceRegi if(sameas(convMessage80, "IterationNumber"), display "#### 0.) REMIND did not run sufficient iterations (currently set at 18, to allow for at least 4 iterations with EDGE-T)"; ); $ifthen.emiMkt not "%cm_emiMktTarget%" == "off" if(sameas(convMessage80, "regiTarget"), - display "#### 7) A regional climate target has not been reached yet."; + display "#### 7.) A regional climate target has not been reached yet."; display "#### Check out the pm_emiMktTarget_dev parameter of 47_regipol module."; display "#### For budget targets, the parameter gives the percentage deviation of current emissions in relation to the target value."; display "#### For yearly targets, the parameter gives the current emissions minus the target value in relative terms to the 2005 emissions."; @@ -495,6 +553,13 @@ $ifthen.emiMkt not "%cm_emiMktTarget%" == "off" display pm_taxemiMkt_iteration; ); $endif.emiMkt +$ifthen.NDC "%carbonprice%" == "NDC" + if(sameas(convMessage80, "NDC"), + display "#### 8) Some regional NDC target has not been reached within the tolerance of cm_NDC_target_DevTol"; + display "#### Check pm_NDCEmiTargetDeviation, which is the relative deviation of emissions from the target"; + display pm_NDCEmiTargetDeviation; + ); +$endif.NDC $ifthen.cm_implicitQttyTarget not "%cm_implicitQttyTarget%" == "off" if(sameas(convMessage80, "implicitEnergyTarget"), display "#### 10) A quantity target has not been reached yet."; @@ -662,34 +727,39 @@ $endIf.cm_implicitPePriceTarget ***if all conditions are met, stop optimization. if(s80_bool eq 1, + if((sm_magpieIter < sm_magpieIterEnd) AND (cm_MAgPIE_Nash eq 1), + display "######################################################################################################"; + display "Nash converged but MAgPIE hasn't run often enough yet. Continuing Nash."; + display "######################################################################################################"; + else ***in automatic mode, set iteration_max such that no next iteration takes place - if(cm_nash_autoconverge ne 0, + if(cm_nash_autoconverge ne 0, cm_iteration_max = iteration.val - 1; - ); - OPTION decimals = 3; - s80_numberIterations = cm_iteration_max + 1; - display "######################################################################################################"; - display "Run converged!!"; - display "#### Nash Solution Report"; - display "#### Convergence threshold reached within ",s80_numberIterations, "iterations."; - display "############"; - display "Model solution parameters of last iteration"; - display p80_repy; - display "#### Residual market surpluses in 2100 are:"; - display p80_surplusMax2100; - display "#### This meets the prescribed tolerance requirements of: "; - display p80_surplusMaxTolerance; - display "#### Info: These residual market surplusses in monetary are :"; - display p80_defic_trade; - display "#### Info: And the sum of those (equivalent to Negishi's defic_sum):"; - display p80_defic_sum; - display "#### This value in percent of the NPV of consumption is: "; - display p80_defic_sum_rel; - display "############"; - display "######################################################################################################"; - OPTION decimals = 3; - s80_converged = 1; !! set machine-readable status parameter - + ); + OPTION decimals = 3; + s80_numberIterations = cm_iteration_max + 1; + display "######################################################################################################"; + display "Run converged!!"; + display "#### Nash Solution Report"; + display "#### Convergence threshold reached within ",s80_numberIterations, "iterations."; + display "############"; + display "Model solution parameters of last iteration"; + display p80_repy; + display "#### Residual market surpluses in 2100 are:"; + display p80_surplusMax2100; + display "#### This meets the prescribed tolerance requirements of: "; + display p80_surplusMaxTolerance; + display "#### Info: These residual market surplusses in monetary are :"; + display p80_defic_trade; + display "#### Info: And the sum of those (equivalent to Negishi's defic_sum):"; + display p80_defic_sum; + display "#### This value in percent of the NPV of consumption is: "; + display p80_defic_sum_rel; + display "############"; + display "######################################################################################################"; + OPTION decimals = 3; + s80_converged = 1; !! set machine-readable status parameter + ); ); *** check if any region has failed to solve consecutively for diff --git a/modules/80_optimization/nash/preloop.gms b/modules/80_optimization/nash/preloop.gms index 9cf0c48be1..6600873cd9 100644 --- a/modules/80_optimization/nash/preloop.gms +++ b/modules/80_optimization/nash/preloop.gms @@ -61,11 +61,11 @@ loop(regi, if(p80_Mport0("2005",regi,tradePe) eq NA, p80_Mport0("2005",regi,tradePe) = 0); );); -*AJS* starting policy runs from permit prices that are all zero doesnot work. start from 30$ price path instead +*AJS* starting policy runs from permit prices that are all zero doesnot work. start from 49$ price path instead if((cm_emiscen ne 1) and (cm_emiscen ne 9) and (smax(t,pm_pvp(t,"perm"))) eq 0, loop(ttot$(ttot.val ge 2005), -***this is a 30$/tCo2eq in 2020 trajectory: - pm_pvp(ttot,"perm") = 0.11*1.05**(ttot.val-2020) * pm_pvp(ttot,"good"); +***this is a 49$/tCo2eq in 2020 trajectory ([T$/GtC]. To get $/tCO2, multiply with 272: 0.18 T$/GtC = 48.96 $/tCO2): + pm_pvp(ttot,"perm") = 0.18*1.05**(ttot.val-2020) * pm_pvp(ttot,"good"); ); pm_pvp("2005","perm")=0; ); diff --git a/modules/80_optimization/nash/sets.gms b/modules/80_optimization/nash/sets.gms index 9fdaaf9e15..b02eaec300 100644 --- a/modules/80_optimization/nash/sets.gms +++ b/modules/80_optimization/nash/sets.gms @@ -26,7 +26,7 @@ solvestat, modelstat, resusd, objval convMessage80 "contains all convergence criteria" / -infes,surplus,nonopt,taxconv,anticip,globalbudget,peakbudgyr,peakbudget,regiTarget,implicitEnergyTarget,cm_implicitPriceTarget,cm_implicitPePriceTarget,damage,DevPriceAnticip, IterationNumber +infes,surplus,nonopt,taxconv,anticip,globalbudget,peakbudgyr,peakbudget,regiBudget,regiTarget,NDC,implicitEnergyTarget,cm_implicitPriceTarget,cm_implicitPePriceTarget,damage,DevPriceAnticip, IterationNumber / activeConvMessage80(convMessage80) "all active convergence criterias" / / diff --git a/modules/80_optimization/negishi/not_used.txt b/modules/80_optimization/negishi/not_used.txt index 3e2a255d84..8f8297d13e 100644 --- a/modules/80_optimization/negishi/not_used.txt +++ b/modules/80_optimization/negishi/not_used.txt @@ -74,3 +74,12 @@ sm_peakbudget_diff_tolerance,input,not needed cm_iterative_target_adj,input,not needed sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +cm_NDC_target_DevTol,input,added by codeCheck +pm_NDCEmiTargetDeviation,input,not used +sm_DptCO2_2_TDpGtC,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol,input,added by codeCheck +sm_magpieIter,switch,not needed +sm_magpieIterEnd,switch,not needed +cm_MAgPIE_Nash,switch,not needed diff --git a/modules/80_optimization/testOneRegi/not_used.txt b/modules/80_optimization/testOneRegi/not_used.txt index 7dbe76ea04..e1b0052091 100644 --- a/modules/80_optimization/testOneRegi/not_used.txt +++ b/modules/80_optimization/testOneRegi/not_used.txt @@ -69,3 +69,12 @@ sm_peakbudget_diff_tolerance,input,not needed cm_iterative_target_adj,input,not needed sm_peakBudgYr_check,input,not needed sm_peakbudget_diff,input,not needed +cm_NDC_target_DevTol,input,added by codeCheck +pm_NDCEmiTargetDeviation,input,not used +sm_DptCO2_2_TDpGtC,input,added by codeCheck +pm_factorRescale_taxCO2Regi_Funneled2,input,added by codeCheck +pm_budgetDeviation,input,added by codeCheck +pm_regionalBudget_absDevTol, input,added by codeCheck +sm_magpieIter,switch,not needed +sm_magpieIterEnd,switch,not needed +cm_MAgPIE_Nash,switch,not needed diff --git a/modules/81_codePerformance/module.gms b/modules/81_codePerformance/module.gms index c91c11f377..2dec17ab0f 100644 --- a/modules/81_codePerformance/module.gms +++ b/modules/81_codePerformance/module.gms @@ -8,7 +8,7 @@ *' @title Codeperformance *' -*' @description The realization codeperformance can be used to test the performance of the model. test code performance: noumerous (30) succesive runs +*' @description The realization codeperformance can be used to test the performance of the model. test code performance: numerous (30) successive runs *' performed in a triangle, tax0, tax30, tax150, all growing exponentially. *' *' @authors Anastasis Giannousakis, Robert Pietzcker diff --git a/output.R b/output.R index a085f822e7..76f79706e5 100755 --- a/output.R +++ b/output.R @@ -44,23 +44,22 @@ helpText <- " #' (compareScenarios, xlsx_IIASA) #' #' --output= output=compareScenarios2 directly selects the specific -#' script +#' script (without .R extension) #' -#' --outputdir= Can be used to specify the output directories to be -#' used directly, bypassing run selection, as a -#' comma-separated list +#' --outputdir= Directly specify the output directories, bypassing run +#' selection, as a comma-separated list #' (e.g. outputdir=./output/SSP2-Base-rem-1,./output/NDC-rem-1) #' #' --remind_dir= path to remind or output directories where runs can be #' found. Defaults to ./output but can also be used to -#' specify multiple folders, comma-separated, such as +#' specify multiple folders, comma-separated, such as #' remind_dir=.,../otherremind #' #' --renv= load the renv located at , incompatible with #' --update #' #' --slurmConfig= use slurmConfig=priority, short or standby to specify -#' slurm selection. You may also pass complicated +#' slurm selection. You may also pass multiple SLURM #' arguments such as slurmConfig='--qos=priority --mem=8000' " @@ -239,10 +238,12 @@ if (comp %in% c("comparison", "export")) { warning("Script ", name, " was stopped by an error and not executed properly!") } } + } else { + message("\nCould not find ", name) } } } else { # comp = single - # define slurm class or direct execution + # define slurm class or direct execution outputInteractive <- c("plotIterations", "integratedDamageCosts") if (! exists("source_include")) { if (any(output %in% outputInteractive)) { diff --git a/renv/activate.R b/renv/activate.R index 2753ae544b..1631cccdcd 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,7 +2,8 @@ local({ # the requested version of renv - version <- "1.1.5" + version <- "1.1.7" + attr(version, "md5") <- NULL attr(version, "sha") <- NULL # the project directory @@ -168,6 +169,16 @@ local({ if (quiet) return(invisible()) + # also check for config environment variables that should suppress messages + # https://github.com/rstudio/renv/issues/2214 + enabled <- Sys.getenv("RENV_CONFIG_STARTUP_QUIET", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("true", "1")) + return(invisible()) + + enabled <- Sys.getenv("RENV_CONFIG_SYNCHRONIZED_CHECK", unset = NA) + if (!is.na(enabled) && tolower(enabled) %in% c("false", "0")) + return(invisible()) + msg <- sprintf(fmt, ...) cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") @@ -215,6 +226,16 @@ local({ section <- header(sprintf("Bootstrapping renv %s", friendly)) catf(section) + # try to install renv from cache + md5 <- attr(version, "md5", exact = TRUE) + if (length(md5)) { + pkgpath <- renv_bootstrap_find(version) + if (length(pkgpath) && file.exists(pkgpath)) { + file.copy(pkgpath, library, recursive = TRUE) + return(invisible()) + } + } + # attempt to download renv catf("- Downloading renv ... ", appendLF = FALSE) withCallingHandlers( @@ -240,7 +261,6 @@ local({ # add empty line to break up bootstrapping from normal output catf("") - return(invisible()) } @@ -257,12 +277,20 @@ local({ repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) if (!is.na(repos)) { - # check for RSPM; if set, use a fallback repository for renv - rspm <- Sys.getenv("RSPM", unset = NA) - if (identical(rspm, repos)) - repos <- c(RSPM = rspm, CRAN = cran) + # split on ';' if present + parts <- strsplit(repos, ";", fixed = TRUE)[[1L]] - return(repos) + # split into named repositories if present + idx <- regexpr("=", parts, fixed = TRUE) + keys <- substring(parts, 1L, idx - 1L) + vals <- substring(parts, idx + 1L) + names(vals) <- keys + + # if we have a single unnamed repository, call it CRAN + if (length(vals) == 1L && identical(keys, "")) + names(vals) <- "CRAN" + + return(vals) } @@ -511,6 +539,51 @@ local({ } + renv_bootstrap_find <- function(version) { + + path <- renv_bootstrap_find_cache(version) + if (length(path) && file.exists(path)) { + catf("- Using renv %s from global package cache", version) + return(path) + } + + } + + renv_bootstrap_find_cache <- function(version) { + + md5 <- attr(version, "md5", exact = TRUE) + if (is.null(md5)) + return() + + # infer path to renv cache + cache <- Sys.getenv("RENV_PATHS_CACHE", unset = "") + if (!nzchar(cache)) { + root <- Sys.getenv("RENV_PATHS_ROOT", unset = NA) + if (!is.na(root)) + cache <- file.path(root, "cache") + } + + if (!nzchar(cache)) { + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) { + root <- tools$R_user_dir("renv", "cache") + cache <- file.path(root, "cache") + } + } + + # start completing path to cache + file.path( + cache, + renv_bootstrap_cache_version(), + renv_bootstrap_platform_prefix(), + "renv", + version, + md5, + "renv" + ) + + } + renv_bootstrap_download_tarball <- function(version) { # if the user has provided the path to a tarball via @@ -979,7 +1052,7 @@ local({ renv_bootstrap_validate_version_release <- function(version, description) { expected <- description[["Version"]] - is.character(expected) && identical(expected, version) + is.character(expected) && identical(c(expected), c(version)) } renv_bootstrap_hash_text <- function(text) { @@ -1181,6 +1254,18 @@ local({ } + renv_bootstrap_cache_version <- function() { + # NOTE: users should normally not override the cache version; + # this is provided just to make testing easier + Sys.getenv("RENV_CACHE_VERSION", unset = "v5") + } + + renv_bootstrap_cache_version_previous <- function() { + version <- renv_bootstrap_cache_version() + number <- as.integer(substring(version, 2L)) + paste("v", number - 1L, sep = "") + } + renv_json_read <- function(file = NULL, text = NULL) { jlerr <- NULL diff --git a/renv/archive/3.6.0_renv.lock b/renv/archive/3.6.0_renv.lock new file mode 100644 index 0000000000..66e59f7562 --- /dev/null +++ b/renv/archive/3.6.0_renv.lock @@ -0,0 +1,10135 @@ +{ + "R": { + "Version": "4.3.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cran.rstudio.com" + }, + { + "Name": "pik", + "URL": "https://rse.pik-potsdam.de/r/packages" + } + ] + }, + "Packages": { + "DBI": { + "Package": "DBI", + "Version": "1.2.3", + "Source": "Repository", + "Title": "R Database Interface", + "Date": "2024-06-02", + "Authors@R": "c( person(\"R Special Interest Group on Databases (R-SIG-DB)\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\") )", + "Description": "A database interface definition for communication between R and relational database management systems. All classes in this package are virtual and need to be extended by the various R/DBMS implementations.", + "License": "LGPL (>= 2.1)", + "URL": "https://dbi.r-dbi.org, https://github.com/r-dbi/DBI", + "BugReports": "https://github.com/r-dbi/DBI/issues", + "Depends": [ + "methods", + "R (>= 3.0.0)" + ], + "Suggests": [ + "arrow", + "blob", + "covr", + "DBItest", + "dbplyr", + "downlit", + "dplyr", + "glue", + "hms", + "knitr", + "magrittr", + "nanoarrow (>= 0.3.0.1)", + "RMariaDB", + "rmarkdown", + "rprojroot", + "RSQLite (>= 1.1-2)", + "testthat (>= 3.0.0)", + "vctrs", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/check": "r-dbi/DBItest", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Config/Needs/website": "r-dbi/DBItest, r-dbi/dbitemplate, adbi, AzureKusto, bigrquery, DatabaseConnector, dittodb, duckdb, implyr, lazysf, odbc, pool, RAthena, IMSMWU/RClickhouse, RH2, RJDBC, RMariaDB, RMySQL, RPostgres, RPostgreSQL, RPresto, RSQLite, sergeant, sparklyr, withr", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "R Special Interest Group on Databases (R-SIG-DB) [aut], Hadley Wickham [aut], Kirill Müller [aut, cre] (), R Consortium [fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "DT": { + "Package": "DT", + "Version": "0.34.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Wrapper of the JavaScript Library 'DataTables'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Xianying\", \"Tan\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Maximilian\", \"Girlich\", role = \"ctb\"), person(\"Greg\", \"Freedman Ellis\", role = \"ctb\"), person(\"Johannes\", \"Rauh\", role = \"ctb\"), person(\"SpryMedia Limited\", role = c(\"ctb\", \"cph\"), comment = \"DataTables in htmlwidgets/lib\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js in htmlwidgets/lib\"), person(\"Leon\", \"Gersen\", role = c(\"ctb\", \"cph\"), comment = \"noUiSlider in htmlwidgets/lib\"), person(\"Bartek\", \"Szopka\", role = c(\"ctb\", \"cph\"), comment = \"jquery.highlight.js in htmlwidgets/lib\"), person(\"Alex\", \"Pickering\", role = \"ctb\"), person(\"William\", \"Holmes\", role = \"ctb\"), person(\"Mikko\", \"Marttila\", role = \"ctb\"), person(\"Andres\", \"Quintero\", role = \"ctb\"), person(\"Stéphane\", \"Laurent\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Data objects in R can be rendered as HTML tables using the JavaScript library 'DataTables' (typically via R Markdown or Shiny). The 'DataTables' library has been included in this R package. The package name 'DT' is an abbreviation of 'DataTables'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/DT", + "BugReports": "https://github.com/rstudio/DT/issues", + "Imports": [ + "crosstalk", + "htmltools (>= 0.3.6)", + "htmlwidgets (>= 1.3)", + "jquerylib", + "jsonlite (>= 0.9.16)", + "magrittr", + "promises" + ], + "Suggests": [ + "bslib", + "future", + "httpuv", + "knitr (>= 1.8)", + "rmarkdown", + "shiny (>= 1.6)", + "testit", + "tibble" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut], Joe Cheng [aut], Xianying Tan [aut], Garrick Aden-Buie [aut, cre] (ORCID: ), JJ Allaire [ctb], Maximilian Girlich [ctb], Greg Freedman Ellis [ctb], Johannes Rauh [ctb], SpryMedia Limited [ctb, cph] (DataTables in htmlwidgets/lib), Brian Reavis [ctb, cph] (selectize.js in htmlwidgets/lib), Leon Gersen [ctb, cph] (noUiSlider in htmlwidgets/lib), Bartek Szopka [ctb, cph] (jquery.highlight.js in htmlwidgets/lib), Alex Pickering [ctb], William Holmes [ctb], Mikko Marttila [ctb], Andres Quintero [ctb], Stéphane Laurent [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Garrick Aden-Buie ", + "Repository": "CRAN" + }, + "Formula": { + "Package": "Formula", + "Version": "1.2-5", + "Source": "Repository", + "Date": "2023-02-23", + "Title": "Extended Model Formulas", + "Description": "Infrastructure for extended formulas with multiple parts on the right-hand side and/or multiple responses on the left-hand side (see ).", + "Authors@R": "c(person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")), person(given = \"Yves\", family = \"Croissant\", role = \"aut\", email = \"Yves.Croissant@univ-reunion.fr\"))", + "Depends": [ + "R (>= 2.0.0)", + "stats" + ], + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "no", + "Author": "Achim Zeileis [aut, cre] (), Yves Croissant [aut]", + "Maintainer": "Achim Zeileis ", + "Repository": "CRAN" + }, + "GDPuc": { + "Package": "GDPuc", + "Version": "1.6.1", + "Source": "Repository", + "Title": "Easily Convert GDP Data", + "Date": "2025-12-10", + "Authors@R": "person(\"Johannes\", \"Koch\", , \"jokoch@pik-potsdam.de\", role = c(\"aut\", \"cre\"))", + "Description": "Convert GDP time series data from one unit to another. All common GDP units are included, i.e. current and constant local currency units, US$ via market exchange rates and international dollars via purchasing power parities.", + "License": "GPL (>= 3)", + "URL": "https://github.com/pik-piam/GDPuc, https://pik-piam.github.io/GDPuc/", + "BugReports": "https://github.com/pik-piam/GDPuc/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "cli (>= 2.4.0)", + "crayon", + "dplyr", + "glue", + "magrittr", + "rlang (>= 1.0.0)", + "tibble", + "tidyr", + "tidyselect", + "withr" + ], + "Suggests": [ + "countrycode", + "covr", + "knitr", + "magclass", + "madrat (>= 3.6.4)", + "purrr", + "rmarkdown", + "stringr", + "testthat (>= 3.0.0)", + "usethis", + "WDI", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "git@github.com:pik-piam/GDPuc", + "RemoteRef": "HEAD", + "RemoteSha": "88f94763e185cd777b5b523163d3f32f0ddc2a30", + "NeedsCompilation": "no", + "Author": "Johannes Koch [aut, cre]", + "Maintainer": "Johannes Koch " + }, + "Hmisc": { + "Package": "Hmisc", + "Version": "5.2-4", + "Source": "Repository", + "Date": "2025-10-02", + "Title": "Harrell Miscellaneous", + "Authors@R": "c(person(given = \"Frank E\", family = \"Harrell Jr\", role = c(\"aut\", \"cre\"), email = \"fh@fharrell.com\", comment = c(ORCID = \"0000-0002-8271-5493\")), person(given = \"Cole\", family = \"Beck\", role = c(\"ctb\"), email = \"cole.beck@vumc.org\" ), person(given = \"Charles\", family = \"Dupont\", role = \"ctb\") )", + "Depends": [ + "R (>= 4.2.0)" + ], + "Imports": [ + "methods", + "ggplot2", + "cluster", + "rpart", + "nnet", + "foreign", + "gtable", + "grid", + "gridExtra", + "data.table", + "htmlTable (>= 1.11.0)", + "viridisLite", + "htmltools", + "base64enc", + "colorspace", + "rmarkdown", + "knitr", + "Formula" + ], + "Suggests": [ + "survival", + "qreport", + "acepack", + "chron", + "rms", + "mice", + "rstudioapi", + "tables", + "plotly (>= 4.5.6)", + "rlang", + "VGAM", + "leaps", + "pcaPP", + "digest", + "parallel", + "polspline", + "abind", + "kableExtra", + "rio", + "lattice", + "latticeExtra", + "gt", + "sparkline", + "jsonlite", + "htmlwidgets", + "qs", + "getPass", + "keyring", + "safer", + "htm2txt", + "boot" + ], + "Description": "Contains many functions useful for data analysis, high-level graphics, utility operations, functions for computing sample size and power, simulation, importing and annotating datasets, imputing missing values, advanced table making, variable clustering, character string manipulation, conversion of R objects to LaTeX and html code, recoding variables, caching, simplified parallel computing, encrypting and decrypting data using a safe workflow, general moving window statistical estimation, and assistance in interpreting principal component analysis.", + "License": "GPL (>= 2)", + "LazyLoad": "Yes", + "URL": "https://hbiostat.org/R/Hmisc/", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Frank E Harrell Jr [aut, cre] (ORCID: ), Cole Beck [ctb], Charles Dupont [ctb]", + "Maintainer": "Frank E Harrell Jr ", + "Repository": "CRAN" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-22", + "Source": "Repository", + "Priority": "recommended", + "Date": "2023-07-10", + "Title": "Functions for Kernel Smoothing Supporting Wand & Jones (1995)", + "Authors@R": "c(person(\"Matt\", \"Wand\", role = \"aut\", email = \"Matt.Wand@uts.edu.au\"), person(\"Cleve\", \"Moler\", role = \"ctb\", comment = \"LINPACK routines in src/d*\"), person(\"Brian\", \"Ripley\", role = c(\"trl\", \"cre\", \"ctb\"), email = \"ripley@stats.ox.ac.uk\", comment = \"R port and updates\"))", + "Note": "Maintainers are not available to give advice on using a package they did not author.", + "Depends": [ + "R (>= 2.5.0)", + "stats" + ], + "Suggests": [ + "MASS", + "carData" + ], + "Description": "Functions for kernel smoothing (and density estimation) corresponding to the book: Wand, M.P. and Jones, M.C. (1995) \"Kernel Smoothing\".", + "License": "Unlimited", + "ByteCompile": "yes", + "NeedsCompilation": "yes", + "Author": "Matt Wand [aut], Cleve Moler [ctb] (LINPACK routines in src/d*), Brian Ripley [trl, cre, ctb] (R port and updates)", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "Lmoments": { + "Package": "Lmoments", + "Version": "1.3-2", + "Source": "Repository", + "Date": "2025-09-17", + "Title": "L-Moments and Quantile Mixtures", + "Authors@R": "c(person(\"Juha\", \"Karvanen\", email = \"juha.karvanen@iki.fi\", role = c(\"cre\", \"aut\")), person(\"Santeri\", \"Karppinen\", email = \"santeri.j.karppinen@jyu.fi\", role = \"aut\"))", + "Maintainer": "Juha Karvanen ", + "Description": "Contains functions to estimate L-moments and trimmed L-moments from the data. Also contains functions to estimate the parameters of the normal polynomial quantile mixture and the Cauchy polynomial quantile mixture from L-moments and trimmed L-moments.", + "Imports": [ + "stats", + "Rcpp" + ], + "LinkingTo": [ + "Rcpp", + "RcppArmadillo" + ], + "License": "GPL-2", + "URL": "https://users.jyu.fi/~jutakarv/", + "NeedsCompilation": "yes", + "Author": "Juha Karvanen [cre, aut], Santeri Karppinen [aut]", + "Repository": "CRAN" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-60", + "Source": "Repository", + "Priority": "recommended", + "Date": "2023-05-02", + "Revision": "$Rev: 3621 $", + "Depends": [ + "R (>= 4.0)", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "lattice", + "nlme", + "nnet", + "survival" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"ripley@stats.ox.ac.uk\"), person(\"Bill\", \"Venables\", role = \"ctb\"), person(c(\"Douglas\", \"M.\"), \"Bates\", role = \"ctb\"), person(\"Kurt\", \"Hornik\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"Albrecht\", \"Gebhardt\", role = \"trl\", comment = \"partial port ca 1998\"), person(\"David\", \"Firth\", role = \"ctb\"))", + "Description": "Functions and datasets to support Venables and Ripley, \"Modern Applied Statistics with S\" (4th edition, 2002).", + "Title": "Support Functions and Datasets for Venables and Ripley's MASS", + "LazyData": "yes", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "Contact": "", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], Bill Venables [ctb], Douglas M. Bates [ctb], Kurt Hornik [trl] (partial port ca 1998), Albrecht Gebhardt [trl] (partial port ca 1998), David Firth [ctb]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.6-5", + "Source": "Repository", + "VersionNote": "do also bump src/version.h, inst/include/Matrix/version.h", + "Date": "2024-01-06", + "Priority": "recommended", + "Title": "Sparse and Dense Matrix Classes and Methods", + "Description": "A rich hierarchy of sparse and dense matrix classes, including general, symmetric, triangular, and diagonal matrices with numeric, logical, or pattern entries. Efficient methods for operating on such matrices, often wrapping the 'BLAS', 'LAPACK', and 'SuiteSparse' libraries.", + "License": "GPL (>= 2) | file LICENCE", + "URL": "https://Matrix.R-forge.R-project.org", + "BugReports": "https://R-forge.R-project.org/tracker/?atid=294&group_id=61", + "Contact": "Matrix-authors@R-project.org", + "Authors@R": "c(person(\"Douglas\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Martin\", \"Maechler\", role = c(\"aut\", \"cre\"), email = \"mmaechler+Matrix@gmail.com\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Mikael\", \"Jagan\", role = \"aut\", comment = c(ORCID = \"0000-0002-3542-2938\")), person(\"Timothy A.\", \"Davis\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7614-6899\", \"SuiteSparse libraries, notably CHOLMOD and AMD\", \"collaborators listed in dir(pattern=\\\"^[A-Z]+[.]txt$\\\", full.names=TRUE, system.file(\\\"doc\\\", \\\"SuiteSparse\\\", package=\\\"Matrix\\\"))\")), person(\"Jens\", \"Oehlschlägel\", role = \"ctb\", comment = \"initial nearPD()\"), person(\"Jason\", \"Riedy\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4345-4200\", \"GNU Octave's condest() and onenormest()\", \"Copyright: Regents of the University of California\")), person(\"R Core Team\", role = \"ctb\", comment = \"base R's matrix implementation\"))", + "Depends": [ + "R (>= 3.5.0)", + "methods" + ], + "Imports": [ + "grDevices", + "graphics", + "grid", + "lattice", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "datasets", + "sfsmisc", + "tools" + ], + "Enhances": [ + "SparseM", + "graph" + ], + "LazyData": "no", + "LazyDataNote": "not possible, since we use data/*.R and our S4 classes", + "BuildResaveData": "no", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Douglas Bates [aut] (), Martin Maechler [aut, cre] (), Mikael Jagan [aut] (), Timothy A. Davis [ctb] (, SuiteSparse libraries, notably CHOLMOD and AMD, collaborators listed in dir(pattern=\"^[A-Z]+[.]txt$\", full.names=TRUE, system.file(\"doc\", \"SuiteSparse\", package=\"Matrix\"))), Jens Oehlschlägel [ctb] (initial nearPD()), Jason Riedy [ctb] (, GNU Octave's condest() and onenormest(), Copyright: Regents of the University of California), R Core Team [ctb] (base R's matrix implementation)", + "Maintainer": "Martin Maechler ", + "Repository": "CRAN" + }, + "R.methodsS3": { + "Package": "R.methodsS3", + "Version": "1.8.2", + "Source": "Repository", + "Depends": [ + "R (>= 2.13.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "codetools" + ], + "Title": "S3 Methods Simplified", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Methods that simplify the setup of S3 generic functions and S3 methods. Major effort has been made in making definition of methods as simple as possible with a minimum of maintenance for package developers. For example, generic functions are created automatically, if missing, and naming conflict are automatically solved, if possible. The method setMethodS3() is a good start for those who in the future may want to migrate to S4. This is a cross-platform package implemented in pure R that generates standard S3 methods.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://github.com/HenrikBengtsson/R.methodsS3", + "BugReports": "https://github.com/HenrikBengtsson/R.methodsS3/issues", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "R.oo": { + "Package": "R.oo", + "Version": "1.27.1", + "Source": "Repository", + "Depends": [ + "R (>= 2.13.0)", + "R.methodsS3 (>= 1.8.2)" + ], + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tools" + ], + "Title": "R Object-Oriented Programming with or without References", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Methods and classes for object-oriented programming in R with or without references. Large effort has been made on making definition of methods as simple as possible with a minimum of maintenance for package developers. The package has been developed since 2001 and is now considered very stable. This is a cross-platform package implemented in pure R that defines standard S3 classes without any tricks.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://henrikbengtsson.github.io/R.oo/, https://github.com/HenrikBengtsson/R.oo", + "BugReports": "https://github.com/HenrikBengtsson/R.oo/issues", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "R.utils": { + "Package": "R.utils", + "Version": "2.13.0", + "Source": "Repository", + "Depends": [ + "R (>= 2.14.0)", + "R.oo" + ], + "Imports": [ + "methods", + "utils", + "tools", + "R.methodsS3" + ], + "Suggests": [ + "datasets", + "digest (>= 0.6.10)" + ], + "Title": "Various Programming Utilities", + "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", + "Author": "Henrik Bengtsson [aut, cre, cph]", + "Maintainer": "Henrik Bengtsson ", + "Description": "Utility functions useful when programming and developing R packages.", + "License": "LGPL (>= 2.1)", + "LazyLoad": "TRUE", + "URL": "https://henrikbengtsson.github.io/R.utils/, https://github.com/HenrikBengtsson/R.utils", + "BugReports": "https://github.com/HenrikBengtsson/R.utils/issues", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "R6": { + "Package": "R6", + "Version": "2.6.1", + "Source": "Repository", + "Title": "Encapsulated Classes with Reference Semantics", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Creates classes with reference semantics, similar to R's built-in reference classes. Compared to reference classes, R6 classes are simpler and lighter-weight, and they are not built on S4 classes so they do not require the methods package. These classes allow public and private members, and they support inheritance, even when the classes are defined in different packages.", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6", + "BugReports": "https://github.com/r-lib/R6/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Suggests": [ + "lobstr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate, ggplot2, microbenchmark, scales", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-3", + "Source": "Repository", + "Date": "2022-04-03", + "Title": "ColorBrewer Palettes", + "Authors@R": "c(person(given = \"Erich\", family = \"Neuwirth\", role = c(\"aut\", \"cre\"), email = \"erich.neuwirth@univie.ac.at\"))", + "Author": "Erich Neuwirth [aut, cre]", + "Maintainer": "Erich Neuwirth ", + "Depends": [ + "R (>= 2.0.0)" + ], + "Description": "Provides color schemes for maps (and other graphics) designed by Cynthia Brewer as described at http://colorbrewer2.org.", + "License": "Apache License 2.0", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Seamless R and C++ Integration", + "Date": "2025-07-01", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"JJ\", \"Allaire\", role = \"aut\", comment = c(ORCID = \"0000-0003-0174-9868\")), person(\"Kevin\", \"Ushey\", role = \"aut\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Qiang\", \"Kou\", role = \"aut\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Nathan\", \"Russell\", role = \"aut\"), person(\"Iñaki\", \"Ucar\", role = \"aut\", comment = c(ORCID = \"0000-0001-6403-5550\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"John\", \"Chambers\", role = \"aut\"))", + "Description": "The 'Rcpp' package provides R functions as well as C++ classes which offer a seamless integration of R and C++. Many R data types and objects can be mapped back and forth to C++ equivalents which facilitates both writing of new code as well as easier integration of third-party libraries. Documentation about 'Rcpp' is provided by several vignettes included in this package, via the 'Rcpp Gallery' site at , the paper by Eddelbuettel and Francois (2011, ), the book by Eddelbuettel (2013, ) and the paper by Eddelbuettel and Balamuta (2018, ); see 'citation(\"Rcpp\")' for details.", + "Imports": [ + "methods", + "utils" + ], + "Suggests": [ + "tinytest", + "inline", + "rbenchmark", + "pkgKitten (>= 0.1.2)" + ], + "URL": "https://www.rcpp.org, https://dirk.eddelbuettel.com/code/rcpp.html, https://github.com/RcppCore/Rcpp", + "License": "GPL (>= 2)", + "BugReports": "https://github.com/RcppCore/Rcpp/issues", + "MailingList": "rcpp-devel@lists.r-forge.r-project.org", + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), JJ Allaire [aut] (ORCID: ), Kevin Ushey [aut] (ORCID: ), Qiang Kou [aut] (ORCID: ), Nathan Russell [aut], Iñaki Ucar [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), John Chambers [aut]", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppArmadillo": { + "Package": "RcppArmadillo", + "Version": "15.0.2-2", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Integration for the 'Armadillo' Templated Linear Algebra Library", + "Date": "2025-09-18", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Romain\", \"Francois\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Doug\", \"Bates\", role = \"aut\", comment = c(ORCID = \"0000-0001-8316-9503\")), person(\"Binxiang\", \"Ni\", role = \"aut\"), person(\"Conrad\", \"Sanderson\", role = \"aut\", comment = c(ORCID = \"0000-0002-0049-4501\")))", + "Description": "'Armadillo' is a templated C++ linear algebra library aiming towards a good balance between speed and ease of use. It provides high-level syntax and functionality deliberately similar to Matlab. It is useful for algorithm development directly in C++, or quick conversion of research code into production environments. It provides efficient classes for vectors, matrices and cubes where dense and sparse matrices are supported. Integer, floating point and complex numbers are supported. A sophisticated expression evaluator (based on template meta-programming) automatically combines several operations to increase speed and efficiency. Dynamic evaluation automatically chooses optimal code paths based on detected matrix structures. Matrix decompositions are provided through integration with LAPACK, or one of its high performance drop-in replacements (such as 'MKL' or 'OpenBLAS'). It can automatically use 'OpenMP' multi-threading (parallelisation) to speed up computationally expensive operations. . The 'RcppArmadillo' package includes the header files from the 'Armadillo' library; users do not need to install 'Armadillo' itself in order to use 'RcppArmadillo'. Starting from release 15.0.0, the minimum compilation standard is C++14 so 'Armadillo' version 14.6.3 is included as a fallback when an R package forces the C++11 standard. Package authors should set a '#define' to select the 'current' version, or select the 'legacy' version (also chosen as default) if they must. See 'GitHub issue #475' for details. . Since release 7.800.0, 'Armadillo' is licensed under Apache License 2; previous releases were under licensed as MPL 2.0 from version 3.800.0 onwards and LGPL-3 prior to that; 'RcppArmadillo' (the 'Rcpp' bindings/bridge to Armadillo) is licensed under the GNU GPL version 2 or later, as is the rest of 'Rcpp'.", + "License": "GPL (>= 2)", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "Rcpp (>= 1.0.12)", + "stats", + "utils", + "methods" + ], + "Suggests": [ + "tinytest", + "Matrix (>= 1.3.0)", + "pkgKitten", + "reticulate", + "slam" + ], + "URL": "https://github.com/RcppCore/RcppArmadillo, https://dirk.eddelbuettel.com/code/rcpp.armadillo.html", + "BugReports": "https://github.com/RcppCore/RcppArmadillo/issues", + "RoxygenNote": "6.0.1", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Romain Francois [aut] (ORCID: ), Doug Bates [aut] (ORCID: ), Binxiang Ni [aut], Conrad Sanderson [aut] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "RcppProgress": { + "Package": "RcppProgress", + "Version": "0.4.2", + "Source": "Repository", + "Maintainer": "Karl Forner ", + "License": "GPL (>= 3)", + "Title": "An Interruptible Progress Bar with OpenMP Support for C++ in R Packages", + "Type": "Package", + "LazyLoad": "yes", + "Author": "Karl Forner ", + "Description": "Allows to display a progress bar in the R console for long running computations taking place in c++ code, and support for interrupting those computations even in multithreaded code, typically using OpenMP.", + "URL": "https://github.com/kforner/rcpp_progress", + "BugReports": "https://github.com/kforner/rcpp_progress/issues", + "Date": "2020-02-06", + "Suggests": [ + "RcppArmadillo", + "devtools", + "roxygen2", + "testthat" + ], + "RoxygenNote": "6.1.1", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "RcppTOML": { + "Package": "RcppTOML", + "Version": "0.2.3", + "Source": "Repository", + "Type": "Package", + "Title": "'Rcpp' Bindings to Parser for \"Tom's Obvious Markup Language\"", + "Date": "2025-03-08", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Mark\", \"Gillard\", role = \"aut\", comment = \"Author of 'toml++' header library\"))", + "Description": "The configuration format defined by 'TOML' (which expands to \"Tom's Obvious Markup Language\") specifies an excellent format (described at ) suitable for both human editing as well as the common uses of a machine-readable format. This package uses 'Rcpp' to connect to the 'toml++' parser written by Mark Gillard to R.", + "SystemRequirements": "A C++17 compiler", + "BugReports": "https://github.com/eddelbuettel/rcpptoml/issues", + "URL": "http://dirk.eddelbuettel.com/code/rcpp.toml.html", + "Imports": [ + "Rcpp (>= 1.0.8)" + ], + "Depends": [ + "R (>= 3.3.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "tinytest" + ], + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (), Mark Gillard [aut] (Author of 'toml++' header library)", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "S7": { + "Package": "S7", + "Version": "0.2.0", + "Source": "Repository", + "Title": "An Object Oriented System Meant to Become a Successor to S3 and S4", + "Authors@R": "c( person(\"Object-Oriented Programming Working Group\", role = \"cph\"), person(\"Davis\", \"Vaughan\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Tomasz\", \"Kalinowski\", role = \"aut\"), person(\"Will\", \"Landau\", role = \"aut\"), person(\"Michael\", \"Lawrence\", role = \"aut\"), person(\"Martin\", \"Maechler\", role = \"aut\", comment = c(ORCID = \"0000-0002-8685-9910\")), person(\"Luke\", \"Tierney\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")) )", + "Description": "A new object oriented programming system designed to be a successor to S3 and S4. It includes formal class, generic, and method specification, and a limited form of multiple dispatch. It has been designed and implemented collaboratively by the R Consortium Object-Oriented Programming Working Group, which includes representatives from R-Core, 'Bioconductor', 'Posit'/'tidyverse', and the wider R community.", + "License": "MIT + file LICENSE", + "URL": "https://rconsortium.github.io/S7/, https://github.com/RConsortium/S7", + "BugReports": "https://github.com/RConsortium/S7/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "bench", + "callr", + "covr", + "knitr", + "methods", + "rmarkdown", + "testthat (>= 3.2.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "sloop", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "external-generic", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Object-Oriented Programming Working Group [cph], Davis Vaughan [aut], Jim Hester [aut] (), Tomasz Kalinowski [aut], Will Landau [aut], Michael Lawrence [aut], Martin Maechler [aut] (), Luke Tierney [aut], Hadley Wickham [aut, cre] ()", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "SPEI": { + "Package": "SPEI", + "Version": "1.8.1", + "Source": "Repository", + "Type": "Package", + "Title": "Calculation of the Standardized Precipitation-Evapotranspiration Index", + "Authors@R": "c( person('Santiago', 'Beguería', role=c('aut','cre'), email='santiago.begueria@csic.es'), person(c('Sergio','M.'), 'Vicente-Serrano', role='aut', email='svicen@ipe.csic.es'))", + "Description": "A set of functions for computing potential evapotranspiration and several widely used drought indices including the Standardized Precipitation-Evapotranspiration Index (SPEI).", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "lmomco", + "lmom", + "TLMoments", + "reshape", + "ggplot2", + "checkmate", + "zoo", + "lubridate" + ], + "License": "GPL-2", + "URL": "https://spei.csic.es, https://github.com/sbegueria/SPEI", + "Language": "en-US", + "BugReports": "https://github.com/sbegueria/SPEI/issues", + "LazyLoad": "true", + "Encoding": "UTF-8", + "Suggests": [ + "covr", + "testthat" + ], + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Santiago Beguería [aut, cre], Sergio M. Vicente-Serrano [aut]", + "Maintainer": "Santiago Beguería ", + "Repository": "CRAN" + }, + "TLMoments": { + "Package": "TLMoments", + "Version": "0.7.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "Calculate TL-Moments and Convert Them to Distribution Parameters", + "Date": "2022-03-27", + "Author": "Jona Lilienthal", + "Maintainer": "Jona Lilienthal ", + "Description": "Calculates empirical TL-moments (trimmed L-moments) of arbitrary order and trimming, and converts them to distribution parameters.", + "License": "GPL (>= 2)", + "Depends": [ + "R (>= 2.10)", + "Rcpp (>= 0.12.12)" + ], + "Imports": [ + "hypergeo", + "ggplot2", + "stats", + "lmomco" + ], + "Suggests": [ + "evd", + "knitr", + "magrittr", + "lmom", + "Lmoments", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "abind": { + "Package": "abind", + "Version": "1.4-8", + "Source": "Repository", + "Date": "2024-09-08", + "Title": "Combine Multidimensional Arrays", + "Authors@R": "c(person(\"Tony\", \"Plate\", email = \"tplate@acm.org\", role = c(\"aut\", \"cre\")), person(\"Richard\", \"Heiberger\", role = c(\"aut\")))", + "Maintainer": "Tony Plate ", + "Description": "Combine multidimensional arrays into a single array. This is a generalization of 'cbind' and 'rbind'. Works with vectors, matrices, and higher-dimensional arrays (aka tensors). Also provides functions 'adrop', 'asub', and 'afill' for manipulating, extracting and replacing data in arrays.", + "Depends": [ + "R (>= 1.5.0)" + ], + "Imports": [ + "methods", + "utils" + ], + "License": "MIT + file LICENSE", + "NeedsCompilation": "no", + "Author": "Tony Plate [aut, cre], Richard Heiberger [aut]", + "Repository": "CRAN" + }, + "askpass": { + "Package": "askpass", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Password Entry Utilities for R, Git, and SSH", + "Authors@R": "person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\"))", + "Description": "Cross-platform utilities for prompting the user for credentials or a passphrase, for example to authenticate with a server or read a protected key. Includes native programs for MacOS and Windows, hence no 'tcltk' is required. Password entry can be invoked in two different ways: directly from R via the askpass() function, or indirectly as password-entry back-end for 'ssh-agent' or 'git-credential' via the SSH_ASKPASS and GIT_ASKPASS environment variables. Thereby the user can be prompted for credentials or a passphrase if needed when R calls out to git or ssh.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.r-universe.dev/askpass", + "BugReports": "https://github.com/r-lib/askpass/issues", + "Encoding": "UTF-8", + "Imports": [ + "sys (>= 2.1)" + ], + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] ()", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "assertr": { + "Package": "assertr", + "Version": "3.0.1", + "Source": "Repository", + "Type": "Package", + "Title": "Assertive Programming for R Analysis Pipelines", + "Authors@R": "person(\"Tony\", \"Fischetti\", email=\"tony.fischetti@gmail.com\", role = c(\"aut\", \"cre\"))", + "Description": "Provides functionality to assert conditions that have to be met so that errors in data used in analysis pipelines can fail quickly. Similar to 'stopifnot()' but more powerful, friendly, and easier for use in pipelines.", + "URL": "https://docs.ropensci.org/assertr/ (website) https://github.com/ropensci/assertr", + "BugReports": "https://github.com/ropensci/assertr/issues", + "License": "MIT + file LICENSE", + "ByteCompile": "TRUE", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "dplyr (>= 0.7.0)", + "MASS", + "methods", + "stats", + "utils", + "rlang (>= 0.3.0)" + ], + "Suggests": [ + "knitr", + "testthat (>= 3.0.0)", + "magrittr", + "rmarkdown", + "tibble", + "covr" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Tony Fischetti [aut, cre]", + "Maintainer": "Tony Fischetti ", + "Repository": "CRAN" + }, + "backports": { + "Package": "backports", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Reimplementations of Functions Introduced Since R-3.0.0", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Duncan\", \"Murdoch\", NULL, \"murdoch.duncan@gmail.com\", role = c(\"aut\")), person(\"R Core Team\", role = \"aut\"))", + "Maintainer": "Michel Lang ", + "Description": "Functions introduced or changed since R v3.0.0 are re-implemented in this package. The backports are conditionally exported in order to let R resolve the function name to either the implemented backport, or the respective base version, if available. Package developers can make use of new functions or arguments by selectively importing specific backports to support older installations.", + "URL": "https://github.com/r-lib/backports", + "BugReports": "https://github.com/r-lib/backports/issues", + "License": "GPL-2 | GPL-3", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Depends": [ + "R (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Author": "Michel Lang [cre, aut] (), Duncan Murdoch [aut], R Core Team [aut]", + "Repository": "CRAN" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-6", + "Source": "Repository", + "Title": "Tools for 'base64' Encoding", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.nz, ORCID: )", + "Authors@R": "person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.nz\", ORCID=\"0000-0003-2297-1732\"))", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Enhances": [ + "png" + ], + "Description": "Tools for handling 'base64' encoding. It is more flexible than the orphaned 'base64' package.", + "License": "GPL-2 | GPL-3", + "URL": "https://www.rforge.net/base64enc", + "BugReports": "https://github.com/s-u/base64enc/issues", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "bit": { + "Package": "bit", + "Version": "4.6.0", + "Source": "Repository", + "Title": "Classes and Methods for Fast Memory-Efficient Boolean Selections", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"MichaelChirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Brian\", \"Ripley\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "roxygen2", + "knitr", + "markdown", + "rmarkdown", + "microbenchmark", + "bit64 (>= 4.0.0)", + "ff (>= 4.0.0)" + ], + "Description": "Provided are classes for boolean and skewed boolean vectors, fast boolean methods, fast unique and non-unique integer sorting, fast set operations on sorted and unsorted sets of integers, and foundations for ff (range index, compression, chunked processing).", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "URL": "https://github.com/r-lib/bit", + "VignetteBuilder": "knitr, rmarkdown", + "RoxygenNote": "7.3.2", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Brian Ripley [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "CRAN" + }, + "bit64": { + "Package": "bit64", + "Version": "4.6.0-1", + "Source": "Repository", + "Title": "A S3 Class for Vectors of 64bit Integers", + "Authors@R": "c( person(\"Michael\", \"Chirico\", email = \"michaelchirico4@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jens\", \"Oehlschlägel\", role = \"aut\"), person(\"Leonardo\", \"Silvestri\", role = \"ctb\"), person(\"Ofek\", \"Shilon\", role = \"ctb\") )", + "Depends": [ + "R (>= 3.4.0)", + "bit (>= 4.0.0)" + ], + "Description": "Package 'bit64' provides serializable S3 atomic 64bit (signed) integers. These are useful for handling database keys and exact counting in +-2^63. WARNING: do not use them as replacement for 32bit integers, integer64 are not supported for subscripting by R-core and they have different semantics when combined with double, e.g. integer64 + double => integer64. Class integer64 can be used in vectors, matrices, arrays and data.frames. Methods are available for coercion from and to logicals, integers, doubles, characters and factors as well as many elementwise and summary functions. Many fast algorithmic operations such as 'match' and 'order' support inter- active data exploration and manipulation and optionally leverage caching.", + "License": "GPL-2 | GPL-3", + "LazyLoad": "yes", + "ByteCompile": "yes", + "URL": "https://github.com/r-lib/bit64", + "Encoding": "UTF-8", + "Imports": [ + "graphics", + "methods", + "stats", + "utils" + ], + "Suggests": [ + "testthat (>= 3.0.3)", + "withr" + ], + "Config/testthat/edition": "3", + "Config/needs/development": "testthat", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Michael Chirico [aut, cre], Jens Oehlschlägel [aut], Leonardo Silvestri [ctb], Ofek Shilon [ctb]", + "Maintainer": "Michael Chirico ", + "Repository": "CRAN" + }, + "blob": { + "Package": "blob", + "Version": "1.2.4", + "Source": "Repository", + "Title": "A Simple S3 Class for Representing Vectors of Binary Data ('BLOBS')", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = \"cre\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's raw vector is useful for storing a single binary object. What if you want to put a vector of them in a data frame? The 'blob' package provides the blob object, a list of raw vectors, suitable for use as a column in data frame.", + "License": "MIT + file LICENSE", + "URL": "https://blob.tidyverse.org, https://github.com/tidyverse/blob", + "BugReports": "https://github.com/tidyverse/blob/issues", + "Imports": [ + "methods", + "rlang", + "vctrs (>= 0.2.1)" + ], + "Suggests": [ + "covr", + "crayon", + "pillar (>= 1.2.1)", + "testthat" + ], + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "false", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Kirill Müller [cre], RStudio [cph, fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "brew": { + "Package": "brew", + "Version": "1.0-10", + "Source": "Repository", + "Type": "Package", + "Title": "Templating Framework for Report Generation", + "Authors@R": "c( person(\"Jeffrey\", \"Horner\", role = c(\"aut\", \"cph\")), person(\"Greg\", \"Hunt\", , \"greg@firmansyah.com\", role = c(\"aut\", \"cre\", \"cph\")) )", + "Description": "Implements a templating framework for mixing text and R code for report generation. brew template syntax is similar to PHP, Ruby's erb module, Java Server Pages, and Python's psp module.", + "License": "GPL (>= 2)", + "URL": "https://github.com/gregfrog/brew", + "BugReports": "https://github.com/gregfrog/brew/issues", + "Suggests": [ + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Repository": "CRAN", + "NeedsCompilation": "no", + "Author": "Jeffrey Horner [aut, cph], Greg Hunt [aut, cre, cph]", + "Maintainer": "Greg Hunt " + }, + "brio": { + "Package": "brio", + "Version": "1.1.5", + "Source": "Repository", + "Title": "Basic R Input Output", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Functions to handle basic input output, these functions always read and write UTF-8 (8-bit Unicode Transformation Format) files and provide more explicit control over line endings.", + "License": "MIT + file LICENSE", + "URL": "https://brio.r-lib.org, https://github.com/r-lib/brio", + "BugReports": "https://github.com/r-lib/brio/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (), Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "broom": { + "Package": "broom", + "Version": "1.0.10", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Statistical Objects into Tidy Tibbles", + "Authors@R": "c( person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Alex\", \"Hayes\", , \"alexpghayes@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(\"Simon\", \"Couch\", , \"simon.couch@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-5676-5107\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Indrajeet\", \"Patil\", , \"patilindrajeet.science@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(\"Derek\", \"Chiu\", , \"dchiu@bccrc.ca\", role = \"ctb\"), person(\"Matthieu\", \"Gomez\", , \"mattg@princeton.edu\", role = \"ctb\"), person(\"Boris\", \"Demeshev\", , \"boris.demeshev@gmail.com\", role = \"ctb\"), person(\"Dieter\", \"Menne\", , \"dieter.menne@menne-biomed.de\", role = \"ctb\"), person(\"Benjamin\", \"Nutter\", , \"nutter@battelle.org\", role = \"ctb\"), person(\"Luke\", \"Johnston\", , \"luke.johnston@mail.utoronto.ca\", role = \"ctb\"), person(\"Ben\", \"Bolker\", , \"bolker@mcmaster.ca\", role = \"ctb\"), person(\"Francois\", \"Briatte\", , \"f.briatte@gmail.com\", role = \"ctb\"), person(\"Jeffrey\", \"Arnold\", , \"jeffrey.arnold@gmail.com\", role = \"ctb\"), person(\"Jonah\", \"Gabry\", , \"jsg2201@columbia.edu\", role = \"ctb\"), person(\"Luciano\", \"Selzer\", , \"luciano.selzer@gmail.com\", role = \"ctb\"), person(\"Gavin\", \"Simpson\", , \"ucfagls@gmail.com\", role = \"ctb\"), person(\"Jens\", \"Preussner\", , \"jens.preussner@mpi-bn.mpg.de\", role = \"ctb\"), person(\"Jay\", \"Hesselberth\", , \"jay.hesselberth@gmail.com\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"ctb\"), person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = \"ctb\"), person(\"Alessandro\", \"Gasparini\", , \"ag475@leicester.ac.uk\", role = \"ctb\"), person(\"Lukasz\", \"Komsta\", , \"lukasz.komsta@umlub.pl\", role = \"ctb\"), person(\"Frederick\", \"Novometsky\", role = \"ctb\"), person(\"Wilson\", \"Freitas\", role = \"ctb\"), person(\"Michelle\", \"Evans\", role = \"ctb\"), person(\"Jason Cory\", \"Brunson\", , \"cornelioid@gmail.com\", role = \"ctb\"), person(\"Simon\", \"Jackson\", , \"drsimonjackson@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Whalley\", , \"ben.whalley@plymouth.ac.uk\", role = \"ctb\"), person(\"Karissa\", \"Whiting\", , \"karissa.whiting@gmail.com\", role = \"ctb\"), person(\"Yves\", \"Rosseel\", , \"yrosseel@gmail.com\", role = \"ctb\"), person(\"Michael\", \"Kuehn\", , \"mkuehn10@gmail.com\", role = \"ctb\"), person(\"Jorge\", \"Cimentada\", , \"cimentadaj@gmail.com\", role = \"ctb\"), person(\"Erle\", \"Holgersen\", , \"erle.holgersen@gmail.com\", role = \"ctb\"), person(\"Karl\", \"Dunkle Werner\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0523-7309\")), person(\"Ethan\", \"Christensen\", , \"christensen.ej@gmail.com\", role = \"ctb\"), person(\"Steven\", \"Pav\", , \"shabbychef@gmail.com\", role = \"ctb\"), person(\"Paul\", \"PJ\", , \"pjpaul.stephens@gmail.com\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Patrick\", \"Kennedy\", , \"pkqstr@protonmail.com\", role = \"ctb\"), person(\"Lily\", \"Medina\", , \"lilymiru@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Fannin\", , \"captain@pirategrunt.com\", role = \"ctb\"), person(\"Jason\", \"Muhlenkamp\", , \"jason.muhlenkamp@gmail.com\", role = \"ctb\"), person(\"Matt\", \"Lehman\", role = \"ctb\"), person(\"Bill\", \"Denney\", , \"wdenney@humanpredictions.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Nic\", \"Crane\", role = \"ctb\"), person(\"Andrew\", \"Bates\", role = \"ctb\"), person(\"Vincent\", \"Arel-Bundock\", , \"vincent.arel-bundock@umontreal.ca\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(\"Hideaki\", \"Hayashi\", role = \"ctb\"), person(\"Luis\", \"Tobalina\", role = \"ctb\"), person(\"Annie\", \"Wang\", , \"anniewang.uc@gmail.com\", role = \"ctb\"), person(\"Wei Yang\", \"Tham\", , \"weiyang.tham@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", , \"clara.wang.94@gmail.com\", role = \"ctb\"), person(\"Abby\", \"Smith\", , \"als1@u.northwestern.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3207-0375\")), person(\"Jasper\", \"Cooper\", , \"jaspercooper@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8639-3188\")), person(\"E Auden\", \"Krauska\", , \"krauskae@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1466-5850\")), person(\"Alex\", \"Wang\", , \"x249wang@uwaterloo.ca\", role = \"ctb\"), person(\"Malcolm\", \"Barrett\", , \"malcolmbarrett@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Charles\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9978-011X\")), person(\"Jared\", \"Wilber\", role = \"ctb\"), person(\"Vilmantas\", \"Gegzna\", , \"GegznaV@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9500-5167\")), person(\"Eduard\", \"Szoecs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Angus\", \"Moore\", , \"angusmoore9@gmail.com\", role = \"ctb\"), person(\"Nick\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Marius\", \"Barth\", , \"marius.barth.uni.koeln@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3421-6665\")), person(\"Bruna\", \"Wundervald\", , \"brunadaviesw@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8163-220X\")), person(\"Joyce\", \"Cahoon\", , \"joyceyu48@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7217-4702\")), person(\"Grant\", \"McDermott\", , \"grantmcd@uoregon.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(\"Kevin\", \"Zarca\", , \"kevin.zarca@gmail.com\", role = \"ctb\"), person(\"Shiro\", \"Kuriwaki\", , \"shirokuriwaki@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5687-2647\")), person(\"Lukas\", \"Wallrich\", , \"lukas.wallrich@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2121-5177\")), person(\"James\", \"Martherus\", , \"james@martherus.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8285-3300\")), person(\"Chuliang\", \"Xiao\", , \"cxiao@umich.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8466-9398\")), person(\"Joseph\", \"Larmarange\", , \"joseph@larmarange.net\", role = \"ctb\"), person(\"Max\", \"Kuhn\", , \"max@posit.co\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", , \"michal2992@gmail.com\", role = \"ctb\"), person(\"Hakon\", \"Malmedal\", , \"hmalmedal@gmail.com\", role = \"ctb\"), person(\"Clara\", \"Wang\", role = \"ctb\"), person(\"Sergio\", \"Oller\", , \"sergioller@gmail.com\", role = \"ctb\"), person(\"Luke\", \"Sonnet\", , \"luke.sonnet@gmail.com\", role = \"ctb\"), person(\"Jim\", \"Hester\", , \"jim.hester@posit.co\", role = \"ctb\"), person(\"Ben\", \"Schneider\", , \"benjamin.julius.schneider@gmail.com\", role = \"ctb\"), person(\"Bernie\", \"Gray\", , \"bfgray3@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9190-6032\")), person(\"Mara\", \"Averick\", , \"mara@posit.co\", role = \"ctb\"), person(\"Aaron\", \"Jacobs\", , \"atheriel@gmail.com\", role = \"ctb\"), person(\"Andreas\", \"Bender\", , \"bender.at.R@gmail.com\", role = \"ctb\"), person(\"Sven\", \"Templer\", , \"sven.templer@gmail.com\", role = \"ctb\"), person(\"Paul-Christian\", \"Buerkner\", , \"paul.buerkner@gmail.com\", role = \"ctb\"), person(\"Matthew\", \"Kay\", , \"mjskay@umich.edu\", role = \"ctb\"), person(\"Erwan\", \"Le Pennec\", , \"lepennec@gmail.com\", role = \"ctb\"), person(\"Johan\", \"Junkka\", , \"johan.junkka@umu.se\", role = \"ctb\"), person(\"Hao\", \"Zhu\", , \"haozhu233@gmail.com\", role = \"ctb\"), person(\"Benjamin\", \"Soltoff\", , \"soltoffbc@uchicago.edu\", role = \"ctb\"), person(\"Zoe\", \"Wilkinson Saldana\", , \"zoewsaldana@gmail.com\", role = \"ctb\"), person(\"Tyler\", \"Littlefield\", , \"tylurp1@gmail.com\", role = \"ctb\"), person(\"Charles T.\", \"Gray\", , \"charlestigray@gmail.com\", role = \"ctb\"), person(\"Shabbh E.\", \"Banks\", role = \"ctb\"), person(\"Serina\", \"Robinson\", , \"robi0916@umn.edu\", role = \"ctb\"), person(\"Roger\", \"Bivand\", , \"Roger.Bivand@nhh.no\", role = \"ctb\"), person(\"Riinu\", \"Ots\", , \"riinuots@gmail.com\", role = \"ctb\"), person(\"Nicholas\", \"Williams\", , \"ntwilliams.personal@gmail.com\", role = \"ctb\"), person(\"Nina\", \"Jakobsen\", role = \"ctb\"), person(\"Michael\", \"Weylandt\", , \"michael.weylandt@gmail.com\", role = \"ctb\"), person(\"Lisa\", \"Lendway\", , \"llendway@macalester.edu\", role = \"ctb\"), person(\"Karl\", \"Hailperin\", , \"khailper@gmail.com\", role = \"ctb\"), person(\"Josue\", \"Rodriguez\", , \"jerrodriguez@ucdavis.edu\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", , \"jenny@posit.co\", role = \"ctb\"), person(\"Chris\", \"Jarvis\", , \"Christopher1.jarvis@gmail.com\", role = \"ctb\"), person(\"Greg\", \"Macfarlane\", , \"gregmacfarlane@gmail.com\", role = \"ctb\"), person(\"Brian\", \"Mannakee\", , \"bmannakee@gmail.com\", role = \"ctb\"), person(\"Drew\", \"Tyre\", , \"atyre2@unl.edu\", role = \"ctb\"), person(\"Shreyas\", \"Singh\", , \"shreyas.singh.298@gmail.com\", role = \"ctb\"), person(\"Laurens\", \"Geffert\", , \"laurensgeffert@gmail.com\", role = \"ctb\"), person(\"Hong\", \"Ooi\", , \"hongooi@microsoft.com\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", , \"henrikb@braju.com\", role = \"ctb\"), person(\"Eduard\", \"Szocs\", , \"eduardszoecs@gmail.com\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", , \"davidhughjones@gmail.com\", role = \"ctb\"), person(\"Matthieu\", \"Stigler\", , \"Matthieu.Stigler@gmail.com\", role = \"ctb\"), person(\"Hugo\", \"Tavares\", , \"hm533@cam.ac.uk\", role = \"ctb\", comment = c(ORCID = \"0000-0001-9373-2726\")), person(\"R. Willem\", \"Vervoort\", , \"Willemvervoort@gmail.com\", role = \"ctb\"), person(\"Brenton M.\", \"Wiernik\", , \"brenton@wiernik.org\", role = \"ctb\"), person(\"Josh\", \"Yamamoto\", , \"joshuayamamoto5@gmail.com\", role = \"ctb\"), person(\"Jasme\", \"Lee\", role = \"ctb\"), person(\"Taren\", \"Sanders\", , \"taren.sanders@acu.edu.au\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4504-6008\")), person(\"Ilaria\", \"Prosdocimi\", , \"prosdocimi.ilaria@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8565-094X\")), person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Alex\", \"Reinhart\", , \"areinhar@stat.cmu.edu\", role = \"ctb\", comment = c(ORCID = \"0000-0002-6658-514X\")) )", + "Description": "Summarizes key information about statistical objects in tidy tibbles. This makes it easy to report results, create plots and consistently work with large numbers of models at once. Broom provides three verbs that each provide different types of information about a model. tidy() summarizes information about model components such as coefficients of a regression. glance() reports information about an entire model, such as goodness of fit measures like AIC and BIC. augment() adds information about individual observations to a dataset, such as fitted values or influence measures.", + "License": "MIT + file LICENSE", + "URL": "https://broom.tidymodels.org/, https://github.com/tidymodels/broom", + "BugReports": "https://github.com/tidymodels/broom/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "backports", + "cli", + "dplyr (>= 1.0.0)", + "generics (>= 0.0.2)", + "glue", + "lifecycle", + "purrr", + "rlang (>= 1.1.0)", + "stringr", + "tibble (>= 3.0.0)", + "tidyr (>= 1.0.0)" + ], + "Suggests": [ + "AER", + "AUC", + "bbmle", + "betareg (>= 3.2-1)", + "biglm", + "binGroup", + "boot", + "btergm (>= 1.10.6)", + "car (>= 3.1-2)", + "carData", + "caret", + "cluster", + "cmprsk", + "coda", + "covr", + "drc", + "e1071", + "emmeans", + "epiR (>= 2.0.85)", + "ergm (>= 3.10.4)", + "fixest (>= 0.9.0)", + "gam (>= 1.15)", + "gee", + "geepack", + "ggplot2", + "glmnet", + "glmnetUtils", + "gmm", + "Hmisc", + "interp", + "irlba", + "joineRML", + "Kendall", + "knitr", + "ks", + "Lahman", + "lavaan (>= 0.6.18)", + "leaps", + "lfe", + "lm.beta", + "lme4", + "lmodel2", + "lmtest (>= 0.9.38)", + "lsmeans", + "maps", + "margins", + "MASS", + "mclust", + "mediation", + "metafor", + "mfx", + "mgcv", + "mlogit", + "modeldata", + "modeltests (>= 0.1.6)", + "muhaz", + "multcomp", + "network", + "nnet", + "ordinal", + "plm", + "poLCA", + "psych", + "quantreg", + "rmarkdown", + "robust", + "robustbase", + "rsample", + "sandwich", + "spatialreg", + "spdep (>= 1.1)", + "speedglm", + "spelling", + "stats4", + "survey", + "survival (>= 3.6-4)", + "systemfit", + "testthat (>= 3.0.0)", + "tseries", + "vars", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "Collate": "'aaa-documentation-helper.R' 'null-and-default.R' 'aer.R' 'auc.R' 'base.R' 'bbmle.R' 'betareg.R' 'biglm.R' 'bingroup.R' 'boot.R' 'broom-package.R' 'broom.R' 'btergm.R' 'car.R' 'caret.R' 'cluster.R' 'cmprsk.R' 'data-frame.R' 'deprecated-0-7-0.R' 'drc.R' 'emmeans.R' 'epiR.R' 'ergm.R' 'fixest.R' 'gam.R' 'geepack.R' 'glmnet-cv-glmnet.R' 'glmnet-glmnet.R' 'gmm.R' 'hmisc.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'joinerml.R' 'kendall.R' 'ks.R' 'lavaan.R' 'leaps.R' 'lfe.R' 'list-irlba.R' 'list-optim.R' 'list-svd.R' 'list-xyz.R' 'list.R' 'lm-beta.R' 'lmodel2.R' 'lmtest.R' 'maps.R' 'margins.R' 'mass-fitdistr.R' 'mass-negbin.R' 'mass-polr.R' 'mass-ridgelm.R' 'stats-lm.R' 'mass-rlm.R' 'mclust.R' 'mediation.R' 'metafor.R' 'mfx.R' 'mgcv.R' 'mlogit.R' 'muhaz.R' 'multcomp.R' 'nnet.R' 'nobs.R' 'ordinal-clm.R' 'ordinal-clmm.R' 'plm.R' 'polca.R' 'psych.R' 'stats-nls.R' 'quantreg-nlrq.R' 'quantreg-rq.R' 'quantreg-rqs.R' 'robust-glmrob.R' 'robust-lmrob.R' 'robustbase-glmrob.R' 'robustbase-lmrob.R' 'sp.R' 'spdep.R' 'speedglm-speedglm.R' 'speedglm-speedlm.R' 'stats-anova.R' 'stats-arima.R' 'stats-decompose.R' 'stats-factanal.R' 'stats-glm.R' 'stats-htest.R' 'stats-kmeans.R' 'stats-loess.R' 'stats-mlm.R' 'stats-prcomp.R' 'stats-smooth.spline.R' 'stats-summary-lm.R' 'stats-time-series.R' 'survey.R' 'survival-aareg.R' 'survival-cch.R' 'survival-coxph.R' 'survival-pyears.R' 'survival-survdiff.R' 'survival-survexp.R' 'survival-survfit.R' 'survival-survreg.R' 'systemfit.R' 'tseries.R' 'utilities.R' 'vars.R' 'zoo.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "David Robinson [aut], Alex Hayes [aut] (ORCID: ), Simon Couch [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Indrajeet Patil [ctb] (ORCID: ), Derek Chiu [ctb], Matthieu Gomez [ctb], Boris Demeshev [ctb], Dieter Menne [ctb], Benjamin Nutter [ctb], Luke Johnston [ctb], Ben Bolker [ctb], Francois Briatte [ctb], Jeffrey Arnold [ctb], Jonah Gabry [ctb], Luciano Selzer [ctb], Gavin Simpson [ctb], Jens Preussner [ctb], Jay Hesselberth [ctb], Hadley Wickham [ctb], Matthew Lincoln [ctb], Alessandro Gasparini [ctb], Lukasz Komsta [ctb], Frederick Novometsky [ctb], Wilson Freitas [ctb], Michelle Evans [ctb], Jason Cory Brunson [ctb], Simon Jackson [ctb], Ben Whalley [ctb], Karissa Whiting [ctb], Yves Rosseel [ctb], Michael Kuehn [ctb], Jorge Cimentada [ctb], Erle Holgersen [ctb], Karl Dunkle Werner [ctb] (ORCID: ), Ethan Christensen [ctb], Steven Pav [ctb], Paul PJ [ctb], Ben Schneider [ctb], Patrick Kennedy [ctb], Lily Medina [ctb], Brian Fannin [ctb], Jason Muhlenkamp [ctb], Matt Lehman [ctb], Bill Denney [ctb] (ORCID: ), Nic Crane [ctb], Andrew Bates [ctb], Vincent Arel-Bundock [ctb] (ORCID: ), Hideaki Hayashi [ctb], Luis Tobalina [ctb], Annie Wang [ctb], Wei Yang Tham [ctb], Clara Wang [ctb], Abby Smith [ctb] (ORCID: ), Jasper Cooper [ctb] (ORCID: ), E Auden Krauska [ctb] (ORCID: ), Alex Wang [ctb], Malcolm Barrett [ctb] (ORCID: ), Charles Gray [ctb] (ORCID: ), Jared Wilber [ctb], Vilmantas Gegzna [ctb] (ORCID: ), Eduard Szoecs [ctb], Frederik Aust [ctb] (ORCID: ), Angus Moore [ctb], Nick Williams [ctb], Marius Barth [ctb] (ORCID: ), Bruna Wundervald [ctb] (ORCID: ), Joyce Cahoon [ctb] (ORCID: ), Grant McDermott [ctb] (ORCID: ), Kevin Zarca [ctb], Shiro Kuriwaki [ctb] (ORCID: ), Lukas Wallrich [ctb] (ORCID: ), James Martherus [ctb] (ORCID: ), Chuliang Xiao [ctb] (ORCID: ), Joseph Larmarange [ctb], Max Kuhn [ctb], Michal Bojanowski [ctb], Hakon Malmedal [ctb], Clara Wang [ctb], Sergio Oller [ctb], Luke Sonnet [ctb], Jim Hester [ctb], Ben Schneider [ctb], Bernie Gray [ctb] (ORCID: ), Mara Averick [ctb], Aaron Jacobs [ctb], Andreas Bender [ctb], Sven Templer [ctb], Paul-Christian Buerkner [ctb], Matthew Kay [ctb], Erwan Le Pennec [ctb], Johan Junkka [ctb], Hao Zhu [ctb], Benjamin Soltoff [ctb], Zoe Wilkinson Saldana [ctb], Tyler Littlefield [ctb], Charles T. Gray [ctb], Shabbh E. Banks [ctb], Serina Robinson [ctb], Roger Bivand [ctb], Riinu Ots [ctb], Nicholas Williams [ctb], Nina Jakobsen [ctb], Michael Weylandt [ctb], Lisa Lendway [ctb], Karl Hailperin [ctb], Josue Rodriguez [ctb], Jenny Bryan [ctb], Chris Jarvis [ctb], Greg Macfarlane [ctb], Brian Mannakee [ctb], Drew Tyre [ctb], Shreyas Singh [ctb], Laurens Geffert [ctb], Hong Ooi [ctb], Henrik Bengtsson [ctb], Eduard Szocs [ctb], David Hugh-Jones [ctb], Matthieu Stigler [ctb], Hugo Tavares [ctb] (ORCID: ), R. Willem Vervoort [ctb], Brenton M. Wiernik [ctb], Josh Yamamoto [ctb], Jasme Lee [ctb], Taren Sanders [ctb] (ORCID: ), Ilaria Prosdocimi [ctb] (ORCID: ), Daniel D. Sjoberg [ctb] (ORCID: ), Alex Reinhart [ctb] (ORCID: )", + "Maintainer": "Simon Couch ", + "Repository": "CRAN" + }, + "bslib": { + "Package": "bslib", + "Version": "0.10.0", + "Source": "Repository", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Authors@R": "c( person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap colorpicker library\"), person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"), comment = \"Bootswatch library\"), person(, \"PayPal\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap accessibility plugin\") )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Imports": [ + "base64enc", + "cachem", + "fastmap (>= 1.1.1)", + "grDevices", + "htmltools (>= 0.5.8)", + "jquerylib (>= 0.1.3)", + "jsonlite", + "lifecycle", + "memoise (>= 2.0.1)", + "mime", + "rlang", + "sass (>= 0.4.9)" + ], + "Suggests": [ + "brand.yml", + "bsicons", + "curl", + "fontawesome", + "future", + "ggplot2", + "knitr", + "lattice", + "magrittr", + "rappdirs", + "rmarkdown (>= 2.7)", + "shiny (>= 1.11.1)", + "testthat", + "thematic", + "tools", + "utils", + "withr", + "yaml" + ], + "Config/Needs/deploy": "BH, chiflights22, colourpicker, commonmark, cpp11, cpsievert/chiflights22, cpsievert/histoslider, dplyr, DT, ggplot2, ggridges, gt, hexbin, histoslider, htmlwidgets, lattice, leaflet, lubridate, markdown, modelr, plotly, reactable, reshape2, rprojroot, rsconnect, rstudio/shiny, scales, styler, tibble", + "Config/Needs/routine": "chromote, desc, renv", + "Config/Needs/website": "brio, crosstalk, dplyr, DT, ggplot2, glue, htmlwidgets, leaflet, lorem, palmerpenguins, plotly, purrr, rprojroot, rstudio/htmltools, scales, stringr, tidyr, webshot2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "zzzz-bs-sass, fonts, zzz-precompile, theme-*, rmd-*", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'accordion.R' 'breakpoints.R' 'bs-current-theme.R' 'bs-dependencies.R' 'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'bs-theme-preset-bootswatch.R' 'bs-theme-preset-brand.R' 'bs-theme-preset-builtin.R' 'bs-theme-preset.R' 'utils.R' 'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'bslib-package.R' 'buttons.R' 'card.R' 'deprecated.R' 'files.R' 'fill.R' 'imports.R' 'input-code-editor.R' 'input-dark-mode.R' 'input-submit.R' 'input-switch.R' 'layout.R' 'nav-items.R' 'nav-update.R' 'navbar_options.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R' 'popover.R' 'precompiled.R' 'print.R' 'shiny-devmode.R' 'sidebar.R' 'staticimports.R' 'toast.R' 'tooltip.R' 'utils-deps.R' 'utils-shiny.R' 'utils-tags.R' 'value-box.R' 'version-default.R' 'versions.R'", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (ORCID: ), Joe Cheng [aut], Garrick Aden-Buie [aut] (ORCID: ), Posit Software, PBC [cph, fnd], Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Javi Aguilar [ctb, cph] (Bootstrap colorpicker library), Thomas Park [ctb, cph] (Bootswatch library), PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "cachem": { + "Package": "cachem", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit either their total size or the age of the oldest object (or both), automatically pruning objects to maintain the constraints.", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", c(\"aut\", \"cre\")), person(family = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": [ + "rlang", + "fastmap (>= 1.2.0)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "callr": { + "Package": "callr", + "Version": "3.7.6", + "Source": "Repository", + "Title": "Call R from R", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "It is sometimes useful to perform a computation in a separate R process, without affecting the current R process at all. This packages does exactly that.", + "License": "MIT + file LICENSE", + "URL": "https://callr.r-lib.org, https://github.com/r-lib/callr", + "BugReports": "https://github.com/r-lib/callr/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "processx (>= 3.6.1)", + "R6", + "utils" + ], + "Suggests": [ + "asciicast (>= 2.3.1)", + "cli (>= 1.1.0)", + "mockery", + "ps", + "rprojroot", + "spelling", + "testthat (>= 3.2.0)", + "withr (>= 2.3.0)" + ], + "Config/Needs/website": "r-lib/asciicast, glue, htmlwidgets, igraph, tibble, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Translate Spreadsheet Cell Ranges to Rows and Columns", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@stat.ubc.ca\", c(\"cre\", \"aut\")), person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", \"ctb\") )", + "Description": "Helper functions to work with spreadsheets and the \"A1:D10\" style of cell range specification.", + "Depends": [ + "R (>= 3.0.0)" + ], + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/rsheets/cellranger", + "BugReports": "https://github.com/rsheets/cellranger/issues", + "Suggests": [ + "covr", + "testthat (>= 1.0.0)", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "5.0.1.9000", + "VignetteBuilder": "knitr", + "Imports": [ + "rematch", + "tibble" + ], + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut], Hadley Wickham [ctb]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "checkmate": { + "Package": "checkmate", + "Version": "2.3.3", + "Source": "Repository", + "Type": "Package", + "Title": "Fast and Versatile Argument Checks", + "Description": "Tests and assertions to perform frequent argument checks. A substantial part of the package was written in C to minimize any worries about execution time overhead.", + "Authors@R": "c( person(\"Michel\", \"Lang\", NULL, \"michellang@gmail.com\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Bernd\", \"Bischl\", NULL, \"bernd_bischl@gmx.net\", role = \"ctb\"), person(\"Dénes\", \"Tóth\", NULL, \"toth.denes@kogentum.hu\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4262-3217\")) )", + "URL": "https://mllg.github.io/checkmate/, https://github.com/mllg/checkmate", + "URLNote": "https://github.com/mllg/checkmate", + "BugReports": "https://github.com/mllg/checkmate/issues", + "NeedsCompilation": "yes", + "ByteCompile": "yes", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "backports (>= 1.1.0)", + "utils" + ], + "Suggests": [ + "R6", + "fastmatch", + "data.table (>= 1.9.8)", + "devtools", + "ggplot2", + "knitr", + "magrittr", + "microbenchmark", + "rmarkdown", + "testthat (>= 3.0.4)", + "tinytest (>= 1.1.0)", + "tibble" + ], + "License": "BSD_3_clause + file LICENSE", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "Collate": "'AssertCollection.R' 'allMissing.R' 'anyInfinite.R' 'anyMissing.R' 'anyNaN.R' 'asInteger.R' 'assert.R' 'helper.R' 'makeExpectation.R' 'makeTest.R' 'makeAssertion.R' 'checkAccess.R' 'checkArray.R' 'checkAtomic.R' 'checkAtomicVector.R' 'checkCharacter.R' 'checkChoice.R' 'checkClass.R' 'checkComplex.R' 'checkCount.R' 'checkDataFrame.R' 'checkDataTable.R' 'checkDate.R' 'checkDirectoryExists.R' 'checkDisjunct.R' 'checkDouble.R' 'checkEnvironment.R' 'checkFALSE.R' 'checkFactor.R' 'checkFileExists.R' 'checkFlag.R' 'checkFormula.R' 'checkFunction.R' 'checkInt.R' 'checkInteger.R' 'checkIntegerish.R' 'checkList.R' 'checkLogical.R' 'checkMatrix.R' 'checkMultiClass.R' 'checkNamed.R' 'checkNames.R' 'checkNull.R' 'checkNumber.R' 'checkNumeric.R' 'checkOS.R' 'checkPOSIXct.R' 'checkPathForOutput.R' 'checkPermutation.R' 'checkR6.R' 'checkRaw.R' 'checkScalar.R' 'checkScalarNA.R' 'checkSetEqual.R' 'checkString.R' 'checkSubset.R' 'checkTRUE.R' 'checkTibble.R' 'checkVector.R' 'coalesce.R' 'isIntegerish.R' 'matchArg.R' 'qassert.R' 'qassertr.R' 'vname.R' 'wfwl.R' 'zzz.R'", + "Author": "Michel Lang [cre, aut] (ORCID: ), Bernd Bischl [ctb], Dénes Tóth [ctb] (ORCID: )", + "Maintainer": "Michel Lang ", + "Repository": "CRAN" + }, + "citation": { + "Package": "citation", + "Version": "0.12.2", + "Source": "Repository", + "Type": "Package", + "Title": "Software Citation Tools", + "Date": "2025-12-04", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\"), role = c(\"aut\",\"cre\")), person(\"Waldir\", \"Leoncio\", email = \"w.l.netto@medisin.uio.no\", comment = c(affiliation = \"University of Oslo\"), role = c(\"aut\")))", + "Description": "A collection of functions to extract citation information from 'R' packages and to deal with files in 'citation file format' (), extending the functionality already provided by the citation() function in the 'utils' package.", + "Imports": [ + "desc", + "jsonlite", + "utils", + "withr", + "yaml" + ], + "Suggests": [ + "covr", + "testthat" + ], + "URL": "https://github.com/pik-piam/citation, https://doi.org/10.5281/zenodo.3813429", + "BugReports": "https://github.com/pik-piam/citation/issues", + "License": "BSD_2_clause + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/Keywords": "tool", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/citation", + "RemoteRef": "HEAD", + "RemoteSha": "84c35824cc4774df64951d525696981300e89e33", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), Waldir Leoncio [aut] (University of Oslo)", + "Maintainer": "Jan Philipp Dietrich " + }, + "cli": { + "Package": "cli", + "Version": "3.6.5", + "Source": "Repository", + "Title": "Helpers for Developing Command Line Interfaces", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"gabor@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Kirill\", \"Müller\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", , \"salim-b@pm.me\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A suite of tools to build attractive command line interfaces ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs, etc. Supports custom themes via a 'CSS'-like language. It also contains a number of lower level 'CLI' elements: rules, boxes, trees, and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "crayon", + "digest", + "glue (>= 1.6.0)", + "grDevices", + "htmltools", + "htmlwidgets", + "knitr", + "methods", + "processx", + "ps (>= 1.3.4.9000)", + "rlang (>= 1.0.2.9003)", + "rmarkdown", + "rprojroot", + "rstudioapi", + "testthat (>= 3.2.0)", + "tibble", + "whoami", + "withr" + ], + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc, fansi, prettyunits, sessioninfo, tidyverse/tidytemplate, usethis, vctrs", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Hadley Wickham [ctb], Kirill Müller [ctb], Salim Brüggemann [ctb] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "clipr": { + "Package": "clipr", + "Version": "0.8.0", + "Source": "Repository", + "Type": "Package", + "Title": "Read and Write from the System Clipboard", + "Authors@R": "c( person(\"Matthew\", \"Lincoln\", , \"matthew.d.lincoln@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4387-3384\")), person(\"Louis\", \"Maddox\", role = \"ctb\"), person(\"Steve\", \"Simpson\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\") )", + "Description": "Simple utility functions to read from and write to the Windows, OS X, and X11 clipboards.", + "License": "GPL-3", + "URL": "https://github.com/mdlincoln/clipr, http://matthewlincoln.net/clipr/", + "BugReports": "https://github.com/mdlincoln/clipr/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "rstudioapi (>= 0.5)", + "testthat (>= 2.0.0)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.2", + "SystemRequirements": "xclip (https://github.com/astrand/xclip) or xsel (http://www.vergenet.net/~conrad/software/xsel/) for accessing the X11 clipboard, or wl-clipboard (https://github.com/bugaevc/wl-clipboard) for systems using Wayland.", + "NeedsCompilation": "no", + "Author": "Matthew Lincoln [aut, cre] (), Louis Maddox [ctb], Steve Simpson [ctb], Jennifer Bryan [ctb]", + "Maintainer": "Matthew Lincoln ", + "Repository": "CRAN" + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.4", + "Source": "Repository", + "Date": "2022-08-19", + "Priority": "recommended", + "Title": "\"Finding Groups in Data\": Cluster Analysis Extended Rousseeuw et al.", + "Description": "Methods for Cluster analysis. Much extended the original from Peter Rousseeuw, Anja Struyf and Mia Hubert, based on Kaufman and Rousseeuw (1990) \"Finding Groups in Data\".", + "Maintainer": "Martin Maechler ", + "Authors@R": "c(person(\"Martin\",\"Maechler\", role = c(\"aut\",\"cre\"), email=\"maechler@stat.math.ethz.ch\", comment = c(ORCID = \"0000-0002-8685-9910\")) ,person(\"Peter\", \"Rousseeuw\", role=\"aut\", email=\"peter.rousseeuw@kuleuven.be\", comment = c(\"Fortran original\", ORCID = \"0000-0002-3807-5353\")) ,person(\"Anja\", \"Struyf\", role=\"aut\", comment= \"S original\") ,person(\"Mia\", \"Hubert\", role=\"aut\", email= \"Mia.Hubert@uia.ua.ac.be\", comment = c(\"S original\", ORCID = \"0000-0001-6398-4850\")) ,person(\"Kurt\", \"Hornik\", role=c(\"trl\", \"ctb\"), email=\"Kurt.Hornik@R-project.org\", comment=c(\"port to R; maintenance(1999-2000)\", ORCID=\"0000-0003-4198-9911\")) ,person(\"Matthias\", \"Studer\", role=\"ctb\") ,person(\"Pierre\", \"Roudier\", role=\"ctb\") ,person(\"Juan\", \"Gonzalez\", role=\"ctb\") ,person(\"Kamil\", \"Kozlowski\", role=\"ctb\") ,person(\"Erich\", \"Schubert\", role=\"ctb\", comment = c(\"fastpam options for pam()\", ORCID = \"0000-0001-9143-4880\")) ,person(\"Keefe\", \"Murphy\", role=\"ctb\", comment = \"volume.ellipsoid({d >= 3})\") )", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "grDevices", + "stats", + "utils" + ], + "Suggests": [ + "MASS", + "Matrix" + ], + "SuggestsNote": "MASS: two examples using cov.rob() and mvrnorm(); Matrix tools for testing", + "LazyLoad": "yes", + "LazyData": "yes", + "ByteCompile": "yes", + "BuildResaveData": "no", + "License": "GPL (>= 2)", + "URL": "https://svn.r-project.org/R-packages/trunk/cluster/", + "NeedsCompilation": "yes", + "Author": "Martin Maechler [aut, cre] (), Peter Rousseeuw [aut] (Fortran original, ), Anja Struyf [aut] (S original), Mia Hubert [aut] (S original, ), Kurt Hornik [trl, ctb] (port to R; maintenance(1999-2000), ), Matthias Studer [ctb], Pierre Roudier [ctb], Juan Gonzalez [ctb], Kamil Kozlowski [ctb], Erich Schubert [ctb] (fastpam options for pam(), ), Keefe Murphy [ctb] (volume.ellipsoid({d >= 3}))", + "Repository": "CRAN" + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-19", + "Source": "Repository", + "Priority": "recommended", + "Author": "Luke Tierney ", + "Description": "Code analysis tools for R.", + "Title": "Code Analysis Tools for R", + "Depends": [ + "R (>= 2.1)" + ], + "Maintainer": "Luke Tierney ", + "URL": "https://gitlab.com/luke-tierney/codetools", + "License": "GPL", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "collections": { + "Package": "collections", + "Version": "0.3.9", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance Container Data Types", + "Date": "2025-08-16", + "Authors@R": "c(person(given = \"Randy\", family = \"Lai\", role = c(\"aut\", \"cre\"), email = \"randy.cs.lai@gmail.com\"), person(given = \"Andrea\", family = \"Mazzoleni\", role = \"cph\", comment = \"tommy hash table library\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"xxhash algorithm\"))", + "Description": "Provides high performance container data types such as queues, stacks, deques, dicts and ordered dicts. Benchmarks have shown that these containers are asymptotically more efficient than those offered by other packages.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/randy3k/collections/", + "Suggests": [ + "testthat (>= 2.3.1)" + ], + "ByteCompile": "yes", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "RoxygenNote": "7.1.0", + "Author": "Randy Lai [aut, cre], Andrea Mazzoleni [cph] (tommy hash table library), Yann Collet [cph] (xxhash algorithm)", + "Maintainer": "Randy Lai ", + "Repository": "CRAN" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.1-2", + "Source": "Repository", + "Date": "2025-09-22", + "Title": "A Toolbox for Manipulating and Assessing Colors and Palettes", + "Authors@R": "c(person(given = \"Ross\", family = \"Ihaka\", role = \"aut\", email = \"ihaka@stat.auckland.ac.nz\"), person(given = \"Paul\", family = \"Murrell\", role = \"aut\", email = \"paul@stat.auckland.ac.nz\", comment = c(ORCID = \"0000-0002-3224-8858\")), person(given = \"Kurt\", family = \"Hornik\", role = \"aut\", email = \"Kurt.Hornik@R-project.org\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(given = c(\"Jason\", \"C.\"), family = \"Fisher\", role = \"aut\", email = \"jfisher@usgs.gov\", comment = c(ORCID = \"0000-0001-9032-8912\")), person(given = \"Reto\", family = \"Stauffer\", role = \"aut\", email = \"Reto.Stauffer@uibk.ac.at\", comment = c(ORCID = \"0000-0002-3798-5507\")), person(given = c(\"Claus\", \"O.\"), family = \"Wilke\", role = \"aut\", email = \"wilke@austin.utexas.edu\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(given = c(\"Claire\", \"D.\"), family = \"McWhite\", role = \"aut\", email = \"claire.mcwhite@utmail.utexas.edu\", comment = c(ORCID = \"0000-0001-7346-3047\")), person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")))", + "Description": "Carries out mapping between assorted color spaces including RGB, HSV, HLS, CIEXYZ, CIELUV, HCL (polar CIELUV), CIELAB, and polar CIELAB. Qualitative, sequential, and diverging color palettes based on HCL colors are provided along with corresponding ggplot2 color scales. Color palette choice is aided by an interactive app (with either a Tcl/Tk or a shiny graphical user interface) and shiny apps with an HCL color picker and a color vision deficiency emulator. Plotting functions for displaying and assessing palettes include color swatches, visualizations of the HCL space, and trajectories in HCL and/or RGB spectrum. Color manipulation functions include: desaturation, lightening/darkening, mixing, and simulation of color vision deficiencies (deutanomaly, protanomaly, tritanomaly). Details can be found on the project web page at and in the accompanying scientific paper: Zeileis et al. (2020, Journal of Statistical Software, ).", + "Depends": [ + "R (>= 3.0.0)", + "methods" + ], + "Imports": [ + "graphics", + "grDevices", + "stats" + ], + "Suggests": [ + "datasets", + "utils", + "KernSmooth", + "MASS", + "kernlab", + "mvtnorm", + "vcd", + "tcltk", + "shiny", + "shinyjs", + "ggplot2", + "dplyr", + "scales", + "grid", + "png", + "jpeg", + "knitr", + "rmarkdown", + "RColorBrewer", + "rcartocolor", + "scico", + "viridis", + "wesanderson" + ], + "VignetteBuilder": "knitr", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://colorspace.R-Forge.R-project.org/, https://hclwizard.org/", + "BugReports": "https://colorspace.R-Forge.R-project.org/contact.html", + "LazyData": "yes", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Ross Ihaka [aut], Paul Murrell [aut] (ORCID: ), Kurt Hornik [aut] (ORCID: ), Jason C. Fisher [aut] (ORCID: ), Reto Stauffer [aut] (ORCID: ), Claus O. Wilke [aut] (ORCID: ), Claire D. McWhite [aut] (ORCID: ), Achim Zeileis [aut, cre] (ORCID: )", + "Maintainer": "Achim Zeileis ", + "Repository": "CRAN" + }, + "commonmark": { + "Package": "commonmark", + "Version": "2.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance CommonMark and Github Markdown Rendering in R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"John MacFarlane\", role = \"cph\", comment = \"Author of cmark\"))", + "Description": "The CommonMark specification defines a rationalized version of markdown syntax. This package uses the 'cmark' reference implementation for converting markdown text into various formats including html, latex and groff man. In addition it exposes the markdown parse tree in xml format. Also includes opt-in support for GFM extensions including tables, autolinks, and strikethrough text.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://docs.ropensci.org/commonmark/ https://ropensci.r-universe.dev/commonmark", + "BugReports": "https://github.com/r-lib/commonmark/issues", + "Suggests": [ + "curl", + "testthat", + "xml2" + ], + "RoxygenNote": "7.3.2", + "Language": "en-US", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), John MacFarlane [cph] (Author of cmark)", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "conflicted": { + "Package": "conflicted", + "Version": "1.2.0", + "Source": "Repository", + "Title": "An Alternative Conflict Resolution Strategy", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "R's default conflict management system gives the most recently loaded package precedence. This can make it hard to detect conflicts, particularly when they arise because a package update creates ambiguity that did not previously exist. 'conflicted' takes a different approach, making every conflict an error and forcing you to choose which function to use.", + "License": "MIT + file LICENSE", + "URL": "https://conflicted.r-lib.org/, https://github.com/r-lib/conflicted", + "BugReports": "https://github.com/r-lib/conflicted/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "memoise", + "rlang (>= 1.0.0)" + ], + "Suggests": [ + "callr", + "covr", + "dplyr", + "Matrix", + "methods", + "pkgload", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "contfrac": { + "Package": "contfrac", + "Version": "1.1-12", + "Source": "Repository", + "Title": "Continued Fractions", + "Author": "Robin K. S. Hankin", + "Description": "Various utilities for evaluating continued fractions.", + "Maintainer": "Robin K. S. Hankin ", + "License": "GPL-2", + "URL": "https://github.com/RobinHankin/contfrac.git", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "countrycode": { + "Package": "countrycode", + "Version": "1.6.1", + "Source": "Repository", + "Type": "Package", + "Title": "Convert Country Names and Country Codes", + "Authors@R": "c(person(given = \"Vincent\", family = \"Arel-Bundock\", role = c(\"aut\", \"cre\"), email = \"vincent.arel-bundock@umontreal.ca\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(given = \"CJ\", family = \"Yetman\", role = \"ctb\", email = \"cj@cjyetman.com\", comment = c(ORCID = \"0000-0001-5099-9500\")), person(given = \"Nils\", family = \"Enevoldsen\", role = \"ctb\", email = \"nils@wlonk.com\", comment = c(ORCID = \"0000-0001-7195-4117\")), person(\"Etienne\", \"Bacher\", email = \"etienne.bacher@protonmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9271-5075\")), person(given = \"Samuel\", family = \"Meichtry\", role = \"ctb\", email = \"samuel.meichtry@bj.admin.ch\", comment = c(ORCID = \"0000-0003-2165-791X\")))", + "Description": "Standardize country names, convert them into one of 40 different coding schemes, convert between coding schemes, and assign region descriptors.", + "License": "GPL-3", + "URL": "https://vincentarelbundock.github.io/countrycode/", + "BugReports": "https://github.com/vincentarelbundock/countrycode/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "altdoc", + "eurostat", + "testthat", + "tibble", + "ISOcodes", + "utf8" + ], + "Encoding": "UTF-8", + "LazyData": "yes", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Vincent Arel-Bundock [aut, cre] (), CJ Yetman [ctb] (), Nils Enevoldsen [ctb] (), Etienne Bacher [ctb] (), Samuel Meichtry [ctb] ()", + "Maintainer": "Vincent Arel-Bundock ", + "Repository": "CRAN" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.5.2", + "Source": "Repository", + "Title": "A C++11 Interface for R's C Interface", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", email = \"davis@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Jim\",\"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Benjamin\", \"Kietzman\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a header only, C++11 interface to R's C interface. Compared to other approaches 'cpp11' strives to be safe against long jumps from the C API as well as C++ exceptions, conform to normal R function semantics and supports interaction with 'ALTREP' vectors.", + "License": "MIT + file LICENSE", + "URL": "https://cpp11.r-lib.org, https://github.com/r-lib/cpp11", + "BugReports": "https://github.com/r-lib/cpp11/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "bench", + "brio", + "callr", + "cli", + "covr", + "decor", + "desc", + "ggplot2", + "glue", + "knitr", + "lobstr", + "mockery", + "progress", + "rmarkdown", + "scales", + "Rcpp", + "testthat (>= 3.2.0)", + "tibble", + "utils", + "vctrs", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/Needs/cpp11/cpp_register": "brio, cli, decor, desc, glue, tibble, vctrs", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Davis Vaughan [aut, cre] (), Jim Hester [aut] (), Romain François [aut] (), Benjamin Kietzman [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "crayon": { + "Package": "crayon", + "Version": "1.5.3", + "Source": "Repository", + "Title": "Colored Terminal Output", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Brodie\", \"Gaslam\", , \"brodie.gaslam@yahoo.com\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The crayon package is now superseded. Please use the 'cli' package for new projects. Colored terminal output on terminals that support 'ANSI' color and highlight codes. It also works in 'Emacs' 'ESS'. 'ANSI' color support is automatically detected. Colors and highlighting can be combined and nested. New styles can also be created easily. This package was inspired by the 'chalk' 'JavaScript' project.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/crayon/, https://github.com/r-lib/crayon", + "BugReports": "https://github.com/r-lib/crayon/issues", + "Imports": [ + "grDevices", + "methods", + "utils" + ], + "Suggests": [ + "mockery", + "rstudioapi", + "testthat", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Collate": "'aaa-rstudio-detect.R' 'aaaa-rematch2.R' 'aab-num-ansi-colors.R' 'aac-num-ansi-colors.R' 'ansi-256.R' 'ansi-palette.R' 'combine.R' 'string.R' 'utils.R' 'crayon-package.R' 'disposable.R' 'enc-utils.R' 'has_ansi.R' 'has_color.R' 'link.R' 'styles.R' 'machinery.R' 'parts.R' 'print.R' 'style-var.R' 'show.R' 'string_operations.R'", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Brodie Gaslam [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "credentials": { + "Package": "credentials", + "Version": "2.0.3", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for Managing SSH and Git Credentials", + "Authors@R": "person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\"))", + "Description": "Setup and retrieve HTTPS and SSH credentials for use with 'git' and other services. For HTTPS remotes the package interfaces the 'git-credential' utility which 'git' uses to store HTTP usernames and passwords. For SSH remotes we provide convenient functions to find or generate appropriate SSH keys. The package both helps the user to setup a local git installation, and also provides a back-end for git/ssh client libraries to authenticate with existing user credentials.", + "License": "MIT + file LICENSE", + "SystemRequirements": "git (optional)", + "Encoding": "UTF-8", + "Imports": [ + "openssl (>= 1.3)", + "sys (>= 2.1)", + "curl", + "jsonlite", + "askpass" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown" + ], + "RoxygenNote": "7.2.1", + "VignetteBuilder": "knitr", + "Language": "en-US", + "URL": "https://docs.ropensci.org/credentials/ https://r-lib.r-universe.dev/credentials", + "BugReports": "https://github.com/r-lib/credentials/issues", + "NeedsCompilation": "no", + "Author": "Jeroen Ooms [aut, cre] (ORCID: )", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.2.2", + "Source": "Repository", + "Type": "Package", + "Title": "Inter-Widget Interactivity for HTML Widgets", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(, \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Kristopher Michael\", \"Kowal\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(, \"es5-shim contributors\", role = c(\"ctb\", \"cph\"), comment = \"es5-shim library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\") )", + "Description": "Provides building blocks for allowing HTML widgets to communicate with each other, with Shiny or without (i.e. static .html files). Currently supports linked brushing and filtering.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/crosstalk/, https://github.com/rstudio/crosstalk", + "BugReports": "https://github.com/rstudio/crosstalk/issues", + "Imports": [ + "htmltools (>= 0.3.6)", + "jsonlite", + "lazyeval", + "R6" + ], + "Suggests": [ + "bslib", + "ggplot2", + "sass", + "shiny", + "testthat (>= 2.1.0)" + ], + "Config/Needs/website": "jcheng5/d3scatter, DT, leaflet, rmarkdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Brian Reavis [ctb, cph] (selectize.js library), Kristopher Michael Kowal [ctb, cph] (es5-shim library), es5-shim contributors [ctb, cph] (es5-shim library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "curl": { + "Package": "curl", + "Version": "7.0.0", + "Source": "Repository", + "Type": "Package", + "Title": "A Modern and Flexible Web Client for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Posit Software, PBC\", role = \"cph\"))", + "Description": "Bindings to 'libcurl' for performing fully configurable HTTP/FTP requests where responses can be processed in memory, on disk, or streaming via the callback or connection interfaces. Some knowledge of 'libcurl' is recommended; for a more-user-friendly web client see the 'httr2' package which builds on this package with http specific tools and logic.", + "License": "MIT + file LICENSE", + "SystemRequirements": "libcurl (>= 7.73): libcurl-devel (rpm) or libcurl4-openssl-dev (deb)", + "URL": "https://jeroen.r-universe.dev/curl", + "BugReports": "https://github.com/jeroen/curl/issues", + "Suggests": [ + "spelling", + "testthat (>= 1.0.0)", + "knitr", + "jsonlite", + "later", + "rmarkdown", + "httpuv (>= 1.4.4)", + "webutils" + ], + "VignetteBuilder": "knitr", + "Depends": [ + "R (>= 3.0.0)" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Hadley Wickham [ctb], Posit Software, PBC [cph]", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "data.table": { + "Package": "data.table", + "Version": "1.17.8", + "Source": "Repository", + "Title": "Extension of `data.frame`", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "bit64 (>= 4.0.0)", + "bit (>= 4.0.4)", + "R.utils", + "xts", + "zoo (>= 1.8-1)", + "yaml", + "knitr", + "markdown" + ], + "Description": "Fast aggregation of large data (e.g. 100GB in RAM), fast ordered joins, fast add/modify/delete of columns by group using no copies at all, list columns, friendly and fast character-separated-value read/write. Offers a natural and flexible syntax, for faster development.", + "License": "MPL-2.0 | file LICENSE", + "URL": "https://r-datatable.com, https://Rdatatable.gitlab.io/data.table, https://github.com/Rdatatable/data.table", + "BugReports": "https://github.com/Rdatatable/data.table/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "ByteCompile": "TRUE", + "Authors@R": "c( person(\"Tyson\",\"Barrett\", role=c(\"aut\",\"cre\"), email=\"t.barrett88@gmail.com\", comment = c(ORCID=\"0000-0002-2137-1391\")), person(\"Matt\",\"Dowle\", role=\"aut\", email=\"mattjdowle@gmail.com\"), person(\"Arun\",\"Srinivasan\", role=\"aut\", email=\"asrini@pm.me\"), person(\"Jan\",\"Gorecki\", role=\"aut\"), person(\"Michael\",\"Chirico\", role=\"aut\", comment = c(ORCID=\"0000-0003-0787-087X\")), person(\"Toby\",\"Hocking\", role=\"aut\", comment = c(ORCID=\"0000-0002-3146-0865\")), person(\"Benjamin\",\"Schwendinger\",role=\"aut\", comment = c(ORCID=\"0000-0003-3315-8114\")), person(\"Ivan\", \"Krylov\", role=\"aut\", email=\"ikrylov@disroot.org\", comment = c(ORCID=\"0000-0002-0172-3812\")), person(\"Pasha\",\"Stetsenko\", role=\"ctb\"), person(\"Tom\",\"Short\", role=\"ctb\"), person(\"Steve\",\"Lianoglou\", role=\"ctb\"), person(\"Eduard\",\"Antonyan\", role=\"ctb\"), person(\"Markus\",\"Bonsch\", role=\"ctb\"), person(\"Hugh\",\"Parsonage\", role=\"ctb\"), person(\"Scott\",\"Ritchie\", role=\"ctb\"), person(\"Kun\",\"Ren\", role=\"ctb\"), person(\"Xianying\",\"Tan\", role=\"ctb\"), person(\"Rick\",\"Saporta\", role=\"ctb\"), person(\"Otto\",\"Seiskari\", role=\"ctb\"), person(\"Xianghui\",\"Dong\", role=\"ctb\"), person(\"Michel\",\"Lang\", role=\"ctb\"), person(\"Watal\",\"Iwasaki\", role=\"ctb\"), person(\"Seth\",\"Wenchel\", role=\"ctb\"), person(\"Karl\",\"Broman\", role=\"ctb\"), person(\"Tobias\",\"Schmidt\", role=\"ctb\"), person(\"David\",\"Arenburg\", role=\"ctb\"), person(\"Ethan\",\"Smith\", role=\"ctb\"), person(\"Francois\",\"Cocquemas\", role=\"ctb\"), person(\"Matthieu\",\"Gomez\", role=\"ctb\"), person(\"Philippe\",\"Chataignon\", role=\"ctb\"), person(\"Nello\",\"Blaser\", role=\"ctb\"), person(\"Dmitry\",\"Selivanov\", role=\"ctb\"), person(\"Andrey\",\"Riabushenko\", role=\"ctb\"), person(\"Cheng\",\"Lee\", role=\"ctb\"), person(\"Declan\",\"Groves\", role=\"ctb\"), person(\"Daniel\",\"Possenriede\", role=\"ctb\"), person(\"Felipe\",\"Parages\", role=\"ctb\"), person(\"Denes\",\"Toth\", role=\"ctb\"), person(\"Mus\",\"Yaramaz-David\", role=\"ctb\"), person(\"Ayappan\",\"Perumal\", role=\"ctb\"), person(\"James\",\"Sams\", role=\"ctb\"), person(\"Martin\",\"Morgan\", role=\"ctb\"), person(\"Michael\",\"Quinn\", role=\"ctb\"), person(\"@javrucebo\",\"\", role=\"ctb\"), person(\"@marc-outins\",\"\", role=\"ctb\"), person(\"Roy\",\"Storey\", role=\"ctb\"), person(\"Manish\",\"Saraswat\", role=\"ctb\"), person(\"Morgan\",\"Jacob\", role=\"ctb\"), person(\"Michael\",\"Schubmehl\", role=\"ctb\"), person(\"Davis\",\"Vaughan\", role=\"ctb\"), person(\"Leonardo\",\"Silvestri\", role=\"ctb\"), person(\"Jim\",\"Hester\", role=\"ctb\"), person(\"Anthony\",\"Damico\", role=\"ctb\"), person(\"Sebastian\",\"Freundt\", role=\"ctb\"), person(\"David\",\"Simons\", role=\"ctb\"), person(\"Elliott\",\"Sales de Andrade\", role=\"ctb\"), person(\"Cole\",\"Miller\", role=\"ctb\"), person(\"Jens Peder\",\"Meldgaard\", role=\"ctb\"), person(\"Vaclav\",\"Tlapak\", role=\"ctb\"), person(\"Kevin\",\"Ushey\", role=\"ctb\"), person(\"Dirk\",\"Eddelbuettel\", role=\"ctb\"), person(\"Tony\",\"Fischetti\", role=\"ctb\"), person(\"Ofek\",\"Shilon\", role=\"ctb\"), person(\"Vadim\",\"Khotilovich\", role=\"ctb\"), person(\"Hadley\",\"Wickham\", role=\"ctb\"), person(\"Bennet\",\"Becker\", role=\"ctb\"), person(\"Kyle\",\"Haynes\", role=\"ctb\"), person(\"Boniface Christian\",\"Kamgang\", role=\"ctb\"), person(\"Olivier\",\"Delmarcell\", role=\"ctb\"), person(\"Josh\",\"O'Brien\", role=\"ctb\"), person(\"Dereck\",\"de Mezquita\", role=\"ctb\"), person(\"Michael\",\"Czekanski\", role=\"ctb\"), person(\"Dmitry\", \"Shemetov\", role=\"ctb\"), person(\"Nitish\", \"Jha\", role=\"ctb\"), person(\"Joshua\", \"Wu\", role=\"ctb\"), person(\"Iago\", \"Giné-Vázquez\", role=\"ctb\"), person(\"Anirban\", \"Chetia\", role=\"ctb\"), person(\"Doris\", \"Amoakohene\", role=\"ctb\"), person(\"Angel\", \"Feliz\", role=\"ctb\"), person(\"Michael\",\"Young\", role=\"ctb\"), person(\"Mark\", \"Seeto\", role=\"ctb\"), person(\"Philippe\", \"Grosjean\", role=\"ctb\"), person(\"Vincent\", \"Runge\", role=\"ctb\"), person(\"Christian\", \"Wia\", role=\"ctb\"), person(\"Elise\", \"Maigné\", role=\"ctb\"), person(\"Vincent\", \"Rocher\", role=\"ctb\"), person(\"Vijay\", \"Lulla\", role=\"ctb\"), person(\"Aljaž\", \"Sluga\", role=\"ctb\"), person(\"Bill\", \"Evans\", role=\"ctb\") )", + "NeedsCompilation": "yes", + "Author": "Tyson Barrett [aut, cre] (ORCID: ), Matt Dowle [aut], Arun Srinivasan [aut], Jan Gorecki [aut], Michael Chirico [aut] (ORCID: ), Toby Hocking [aut] (ORCID: ), Benjamin Schwendinger [aut] (ORCID: ), Ivan Krylov [aut] (ORCID: ), Pasha Stetsenko [ctb], Tom Short [ctb], Steve Lianoglou [ctb], Eduard Antonyan [ctb], Markus Bonsch [ctb], Hugh Parsonage [ctb], Scott Ritchie [ctb], Kun Ren [ctb], Xianying Tan [ctb], Rick Saporta [ctb], Otto Seiskari [ctb], Xianghui Dong [ctb], Michel Lang [ctb], Watal Iwasaki [ctb], Seth Wenchel [ctb], Karl Broman [ctb], Tobias Schmidt [ctb], David Arenburg [ctb], Ethan Smith [ctb], Francois Cocquemas [ctb], Matthieu Gomez [ctb], Philippe Chataignon [ctb], Nello Blaser [ctb], Dmitry Selivanov [ctb], Andrey Riabushenko [ctb], Cheng Lee [ctb], Declan Groves [ctb], Daniel Possenriede [ctb], Felipe Parages [ctb], Denes Toth [ctb], Mus Yaramaz-David [ctb], Ayappan Perumal [ctb], James Sams [ctb], Martin Morgan [ctb], Michael Quinn [ctb], @javrucebo [ctb], @marc-outins [ctb], Roy Storey [ctb], Manish Saraswat [ctb], Morgan Jacob [ctb], Michael Schubmehl [ctb], Davis Vaughan [ctb], Leonardo Silvestri [ctb], Jim Hester [ctb], Anthony Damico [ctb], Sebastian Freundt [ctb], David Simons [ctb], Elliott Sales de Andrade [ctb], Cole Miller [ctb], Jens Peder Meldgaard [ctb], Vaclav Tlapak [ctb], Kevin Ushey [ctb], Dirk Eddelbuettel [ctb], Tony Fischetti [ctb], Ofek Shilon [ctb], Vadim Khotilovich [ctb], Hadley Wickham [ctb], Bennet Becker [ctb], Kyle Haynes [ctb], Boniface Christian Kamgang [ctb], Olivier Delmarcell [ctb], Josh O'Brien [ctb], Dereck de Mezquita [ctb], Michael Czekanski [ctb], Dmitry Shemetov [ctb], Nitish Jha [ctb], Joshua Wu [ctb], Iago Giné-Vázquez [ctb], Anirban Chetia [ctb], Doris Amoakohene [ctb], Angel Feliz [ctb], Michael Young [ctb], Mark Seeto [ctb], Philippe Grosjean [ctb], Vincent Runge [ctb], Christian Wia [ctb], Elise Maigné [ctb], Vincent Rocher [ctb], Vijay Lulla [ctb], Aljaž Sluga [ctb], Bill Evans [ctb]", + "Maintainer": "Tyson Barrett ", + "Repository": "CRAN" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.5.1", + "Source": "Repository", + "Type": "Package", + "Title": "A 'dplyr' Back End for Databases", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Edgar\", \"Ruiz\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A 'dplyr' back end for databases that allows you to work with remote database tables as if they are in-memory data frames. Basic features works with any database that has a 'DBI' back end; more advanced features require 'SQL' translation to be provided by the package author.", + "License": "MIT + file LICENSE", + "URL": "https://dbplyr.tidyverse.org/, https://github.com/tidyverse/dbplyr", + "BugReports": "https://github.com/tidyverse/dbplyr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "blob (>= 1.2.0)", + "cli (>= 3.6.1)", + "DBI (>= 1.1.3)", + "dplyr (>= 1.1.2)", + "glue (>= 1.6.2)", + "lifecycle (>= 1.0.3)", + "magrittr", + "methods", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "R6 (>= 2.2.2)", + "rlang (>= 1.1.1)", + "tibble (>= 3.2.1)", + "tidyr (>= 1.3.0)", + "tidyselect (>= 1.2.1)", + "utils", + "vctrs (>= 0.6.3)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "bit64", + "covr", + "knitr", + "Lahman", + "nycflights13", + "odbc (>= 1.4.2)", + "RMariaDB (>= 1.2.2)", + "rmarkdown", + "RPostgres (>= 1.4.5)", + "RPostgreSQL", + "RSQLite (>= 2.3.8)", + "testthat (>= 3.1.10)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "Language": "en-gb", + "RoxygenNote": "7.3.3", + "Collate": "'db-sql.R' 'utils-check.R' 'import-standalone-types-check.R' 'import-standalone-obj-type.R' 'utils.R' 'sql.R' 'escape.R' 'translate-sql-cut.R' 'translate-sql-quantile.R' 'translate-sql-string.R' 'translate-sql-paste.R' 'translate-sql-helpers.R' 'translate-sql-window.R' 'translate-sql-conditional.R' 'backend-.R' 'backend-access.R' 'backend-hana.R' 'backend-hive.R' 'backend-impala.R' 'verb-copy-to.R' 'backend-mssql.R' 'backend-mysql.R' 'backend-odbc.R' 'backend-oracle.R' 'backend-postgres.R' 'backend-postgres-old.R' 'backend-redshift.R' 'backend-snowflake.R' 'backend-spark-sql.R' 'backend-sqlite.R' 'backend-teradata.R' 'build-sql.R' 'data-cache.R' 'data-lahman.R' 'data-nycflights13.R' 'db-escape.R' 'db-io.R' 'db.R' 'dbplyr.R' 'explain.R' 'ident.R' 'import-standalone-s3-register.R' 'join-by-compat.R' 'join-cols-compat.R' 'lazy-join-query.R' 'lazy-ops.R' 'lazy-query.R' 'lazy-select-query.R' 'lazy-set-op-query.R' 'memdb.R' 'optimise-utils.R' 'pillar.R' 'progress.R' 'sql-build.R' 'query-join.R' 'query-select.R' 'query-semi-join.R' 'query-set-op.R' 'query.R' 'reexport.R' 'remote.R' 'rows.R' 'schema.R' 'simulate.R' 'sql-clause.R' 'sql-expr.R' 'src-sql.R' 'src_dbi.R' 'table-name.R' 'tbl-lazy.R' 'tbl-sql.R' 'test-frame.R' 'testthat.R' 'tidyeval-across.R' 'tidyeval.R' 'translate-sql.R' 'utils-format.R' 'verb-arrange.R' 'verb-compute.R' 'verb-count.R' 'verb-distinct.R' 'verb-do-query.R' 'verb-do.R' 'verb-expand.R' 'verb-fill.R' 'verb-filter.R' 'verb-group_by.R' 'verb-head.R' 'verb-joins.R' 'verb-mutate.R' 'verb-pivot-longer.R' 'verb-pivot-wider.R' 'verb-pull.R' 'verb-select.R' 'verb-set-ops.R' 'verb-slice.R' 'verb-summarise.R' 'verb-uncount.R' 'verb-window.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Maximilian Girlich [aut], Edgar Ruiz [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "deSolve": { + "Package": "deSolve", + "Version": "1.40", + "Source": "Repository", + "Title": "Solvers for Initial Value Problems of Differential Equations ('ODE', 'DAE', 'DDE')", + "Authors@R": "c(person(\"Karline\",\"Soetaert\", role = c(\"aut\"), email = \"karline.soetaert@nioz.nl\", comment = c(ORCID = \"0000-0003-4603-7100\")), person(\"Thomas\",\"Petzoldt\", role = c(\"aut\", \"cre\"), email = \"thomas.petzoldt@tu-dresden.de\", comment = c(ORCID = \"0000-0002-4951-6468\")), person(\"R. Woodrow\",\"Setzer\", role = c(\"aut\"), email = \"setzer.woodrow@epa.gov\", comment = c(ORCID = \"0000-0002-6709-9186\")), person(\"Peter N.\",\"Brown\", role = \"ctb\", comment = \"files ddaspk.f, dvode.f, zvode.f\"), person(\"George D.\",\"Byrne\", role = \"ctb\", comment = \"files dvode.f, zvode.f\"), person(\"Ernst\",\"Hairer\", role = \"ctb\", comment = \"files radau5.f, radau5a\"), person(\"Alan C.\",\"Hindmarsh\", role = \"ctb\", comment = \"files ddaspk.f, dlsode.f, dvode.f, zvode.f, opdkmain.f, opdka1.f\"), person(\"Cleve\",\"Moler\", role = \"ctb\", comment = \"file dlinpck.f\"), person(\"Linda R.\",\"Petzold\", role = \"ctb\", comment = \"files ddaspk.f, dlsoda.f\"), person(\"Youcef\", \"Saad\", role = \"ctb\", comment = \"file dsparsk.f\"), person(\"Clement W.\",\"Ulrich\", role = \"ctb\", comment = \"file ddaspk.f\") )", + "Author": "Karline Soetaert [aut] (), Thomas Petzoldt [aut, cre] (), R. Woodrow Setzer [aut] (), Peter N. Brown [ctb] (files ddaspk.f, dvode.f, zvode.f), George D. Byrne [ctb] (files dvode.f, zvode.f), Ernst Hairer [ctb] (files radau5.f, radau5a), Alan C. Hindmarsh [ctb] (files ddaspk.f, dlsode.f, dvode.f, zvode.f, opdkmain.f, opdka1.f), Cleve Moler [ctb] (file dlinpck.f), Linda R. Petzold [ctb] (files ddaspk.f, dlsoda.f), Youcef Saad [ctb] (file dsparsk.f), Clement W. Ulrich [ctb] (file ddaspk.f)", + "Maintainer": "Thomas Petzoldt ", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "methods", + "graphics", + "grDevices", + "stats" + ], + "Suggests": [ + "scatterplot3d", + "FME" + ], + "Description": "Functions that solve initial value problems of a system of first-order ordinary differential equations ('ODE'), of partial differential equations ('PDE'), of differential algebraic equations ('DAE'), and of delay differential equations. The functions provide an interface to the FORTRAN functions 'lsoda', 'lsodar', 'lsode', 'lsodes' of the 'ODEPACK' collection, to the FORTRAN functions 'dvode', 'zvode' and 'daspk' and a C-implementation of solvers of the 'Runge-Kutta' family with fixed or variable time steps. The package contains routines designed for solving 'ODEs' resulting from 1-D, 2-D and 3-D partial differential equations ('PDE') that have been converted to 'ODEs' by numerical differencing.", + "License": "GPL (>= 2)", + "URL": "http://desolve.r-forge.r-project.org/", + "LazyData": "yes", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "desc": { + "Package": "desc", + "Version": "1.4.3", + "Source": "Repository", + "Title": "Manipulate DESCRIPTION Files", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Kirill\", \"Müller\", role = \"aut\"), person(\"Jim\", \"Hester\", , \"james.f.hester@gmail.com\", role = \"aut\"), person(\"Maëlle\", \"Salmon\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2815-0399\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Maintainer": "Gábor Csárdi ", + "Description": "Tools to read, write, create, and manipulate DESCRIPTION files. It is intended for packages that create or manipulate other packages.", + "License": "MIT + file LICENSE", + "URL": "https://desc.r-lib.org/, https://github.com/r-lib/desc", + "BugReports": "https://github.com/r-lib/desc/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "cli", + "R6", + "utils" + ], + "Suggests": [ + "callr", + "covr", + "gh", + "spelling", + "testthat", + "whoami", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.3", + "Collate": "'assertions.R' 'authors-at-r.R' 'built.R' 'classes.R' 'collate.R' 'constants.R' 'deps.R' 'desc-package.R' 'description.R' 'encoding.R' 'find-package-root.R' 'latex.R' 'non-oo-api.R' 'package-archives.R' 'read.R' 'remotes.R' 'str.R' 'syntax_checks.R' 'urls.R' 'utils.R' 'validate.R' 'version.R'", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Kirill Müller [aut], Jim Hester [aut], Maëlle Salmon [ctb] (), Posit Software, PBC [cph, fnd]", + "Repository": "CRAN" + }, + "devtools": { + "Package": "devtools", + "Version": "2.4.5", + "Source": "Repository", + "Title": "Tools to Make Developing R Packages Easier", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jennifer\", \"Bryan\", , \"jenny@rstudio.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "Collection of package development tools.", + "License": "MIT + file LICENSE", + "URL": "https://devtools.r-lib.org/, https://github.com/r-lib/devtools", + "BugReports": "https://github.com/r-lib/devtools/issues", + "Depends": [ + "R (>= 3.0.2)", + "usethis (>= 2.1.6)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "desc (>= 1.4.1)", + "ellipsis (>= 0.3.2)", + "fs (>= 1.5.2)", + "lifecycle (>= 1.0.1)", + "memoise (>= 2.0.1)", + "miniUI (>= 0.1.1.1)", + "pkgbuild (>= 1.3.1)", + "pkgdown (>= 2.0.6)", + "pkgload (>= 1.3.0)", + "profvis (>= 0.3.7)", + "rcmdcheck (>= 1.4.0)", + "remotes (>= 2.4.2)", + "rlang (>= 1.0.4)", + "roxygen2 (>= 7.2.1)", + "rversions (>= 2.1.1)", + "sessioninfo (>= 1.2.2)", + "stats", + "testthat (>= 3.1.5)", + "tools", + "urlchecker (>= 1.0.1)", + "utils", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "BiocManager (>= 1.30.18)", + "callr (>= 3.7.1)", + "covr (>= 3.5.1)", + "curl (>= 4.3.2)", + "digest (>= 0.6.29)", + "DT (>= 0.23)", + "foghorn (>= 1.4.2)", + "gh (>= 1.3.0)", + "gmailr (>= 1.0.1)", + "httr (>= 1.4.3)", + "knitr (>= 1.39)", + "lintr (>= 3.0.0)", + "MASS", + "mockery (>= 0.4.3)", + "pingr (>= 2.0.1)", + "rhub (>= 1.1.1)", + "rmarkdown (>= 2.14)", + "rstudioapi (>= 0.13)", + "spelling (>= 2.2)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.1", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut], Jennifer Bryan [aut, cre] (), RStudio [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.6", + "Source": "Repository", + "Type": "Package", + "Title": "Diffs for R Objects", + "Description": "Generate a colorized diff of two R objects for an intuitive visualization of their differences.", + "Authors@R": "c( person( \"Brodie\", \"Gaslam\", email=\"brodie.gaslam@yahoo.com\", role=c(\"aut\", \"cre\")), person( \"Michael B.\", \"Allen\", email=\"ioplex@gmail.com\", role=c(\"ctb\", \"cph\"), comment=\"Original C implementation of Myers Diff Algorithm\"))", + "Depends": [ + "R (>= 3.1.0)" + ], + "License": "GPL-2 | GPL-3", + "URL": "https://github.com/brodieG/diffobj", + "BugReports": "https://github.com/brodieG/diffobj/issues", + "RoxygenNote": "7.2.3", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Suggests": [ + "knitr", + "rmarkdown" + ], + "Collate": "'capt.R' 'options.R' 'pager.R' 'check.R' 'finalizer.R' 'misc.R' 'html.R' 'styles.R' 's4.R' 'core.R' 'diff.R' 'get.R' 'guides.R' 'hunks.R' 'layout.R' 'myerssimple.R' 'rdiff.R' 'rds.R' 'set.R' 'subset.R' 'summmary.R' 'system.R' 'text.R' 'tochar.R' 'trim.R' 'word.R'", + "Imports": [ + "crayon (>= 1.3.2)", + "tools", + "methods", + "utils", + "stats" + ], + "NeedsCompilation": "yes", + "Author": "Brodie Gaslam [aut, cre], Michael B. Allen [ctb, cph] (Original C implementation of Myers Diff Algorithm)", + "Maintainer": "Brodie Gaslam ", + "Repository": "CRAN" + }, + "digest": { + "Package": "digest", + "Version": "0.6.39", + "Source": "Repository", + "Authors@R": "c(person(\"Dirk\", \"Eddelbuettel\", role = c(\"aut\", \"cre\"), email = \"edd@debian.org\", comment = c(ORCID = \"0000-0001-6419-907X\")), person(\"Antoine\", \"Lucas\", role=\"ctb\", comment = c(ORCID = \"0000-0002-8059-9767\")), person(\"Jarek\", \"Tuszynski\", role=\"ctb\"), person(\"Henrik\", \"Bengtsson\", role=\"ctb\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Simon\", \"Urbanek\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2297-1732\")), person(\"Mario\", \"Frasca\", role=\"ctb\"), person(\"Bryan\", \"Lewis\", role=\"ctb\"), person(\"Murray\", \"Stokely\", role=\"ctb\"), person(\"Hannes\", \"Muehleisen\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8552-0029\")), person(\"Duncan\", \"Murdoch\", role=\"ctb\"), person(\"Jim\", \"Hester\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Wush\", \"Wu\", role=\"ctb\", comment = c(ORCID = \"0000-0001-5180-0567\")), person(\"Qiang\", \"Kou\", role=\"ctb\", comment = c(ORCID = \"0000-0001-6786-5453\")), person(\"Thierry\", \"Onkelinx\", role=\"ctb\", comment = c(ORCID = \"0000-0001-8804-4216\")), person(\"Michel\", \"Lang\", role=\"ctb\", comment = c(ORCID = \"0000-0001-9754-0393\")), person(\"Viliam\", \"Simko\", role=\"ctb\"), person(\"Kurt\", \"Hornik\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4198-9911\")), person(\"Radford\", \"Neal\", role=\"ctb\", comment = c(ORCID = \"0000-0002-2473-3407\")), person(\"Kendon\", \"Bell\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9093-8312\")), person(\"Matthew\", \"de Queljoe\", role=\"ctb\"), person(\"Dmitry\", \"Selivanov\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0492-6647\")), person(\"Ion\", \"Suruceanu\", role=\"ctb\", comment = c(ORCID = \"0009-0005-6446-4909\")), person(\"Bill\", \"Denney\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5759-428X\")), person(\"Dirk\", \"Schumacher\", role=\"ctb\"), person(\"András\", \"Svraka\", role=\"ctb\", comment = c(ORCID = \"0009-0008-8480-1329\")), person(\"Sergey\", \"Fedorov\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5970-7233\")), person(\"Will\", \"Landau\", role=\"ctb\", comment = c(ORCID = \"0000-0003-1878-3253\")), person(\"Floris\", \"Vanderhaeghe\", role=\"ctb\", comment = c(ORCID = \"0000-0002-6378-6229\")), person(\"Kevin\", \"Tappe\", role=\"ctb\"), person(\"Harris\", \"McGehee\", role=\"ctb\"), person(\"Tim\", \"Mastny\", role=\"ctb\"), person(\"Aaron\", \"Peikert\", role=\"ctb\", comment = c(ORCID = \"0000-0001-7813-818X\")), person(\"Mark\", \"van der Loo\", role=\"ctb\", comment = c(ORCID = \"0000-0002-9807-4686\")), person(\"Chris\", \"Muir\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2555-3878\")), person(\"Moritz\", \"Beller\", role=\"ctb\", comment = c(ORCID = \"0000-0003-4852-0526\")), person(\"Sebastian\", \"Campbell\", role=\"ctb\", comment = c(ORCID = \"0009-0000-5948-4503\")), person(\"Winston\", \"Chang\", role=\"ctb\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Dean\", \"Attali\", role=\"ctb\", comment = c(ORCID = \"0000-0002-5645-3493\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Kevin\", \"Ushey\", role=\"ctb\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Carl\", \"Pearson\", role=\"ctb\", comment = c(ORCID = \"0000-0003-0701-7860\")))", + "Date": "2025-11-19", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32', 'xxhash', 'murmurhash', 'spookyhash', 'blake3', 'crc32c', 'xxh3_64', and 'xxh3_128' algorithms) permitting easy comparison of R language objects, as well as functions such as 'hmac()' to create hash-based message authentication code. Please note that this package is not meant to be deployed for cryptographic purposes for which more comprehensive (and widely tested) libraries such as 'OpenSSL' should be used.", + "URL": "https://github.com/eddelbuettel/digest, https://eddelbuettel.github.io/digest/, https://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "utils" + ], + "License": "GPL (>= 2)", + "Suggests": [ + "tinytest", + "simplermarkdown", + "rbenchmark" + ], + "VignetteBuilder": "simplermarkdown", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Dirk Eddelbuettel [aut, cre] (ORCID: ), Antoine Lucas [ctb] (ORCID: ), Jarek Tuszynski [ctb], Henrik Bengtsson [ctb] (ORCID: ), Simon Urbanek [ctb] (ORCID: ), Mario Frasca [ctb], Bryan Lewis [ctb], Murray Stokely [ctb], Hannes Muehleisen [ctb] (ORCID: ), Duncan Murdoch [ctb], Jim Hester [ctb] (ORCID: ), Wush Wu [ctb] (ORCID: ), Qiang Kou [ctb] (ORCID: ), Thierry Onkelinx [ctb] (ORCID: ), Michel Lang [ctb] (ORCID: ), Viliam Simko [ctb], Kurt Hornik [ctb] (ORCID: ), Radford Neal [ctb] (ORCID: ), Kendon Bell [ctb] (ORCID: ), Matthew de Queljoe [ctb], Dmitry Selivanov [ctb] (ORCID: ), Ion Suruceanu [ctb] (ORCID: ), Bill Denney [ctb] (ORCID: ), Dirk Schumacher [ctb], András Svraka [ctb] (ORCID: ), Sergey Fedorov [ctb] (ORCID: ), Will Landau [ctb] (ORCID: ), Floris Vanderhaeghe [ctb] (ORCID: ), Kevin Tappe [ctb], Harris McGehee [ctb], Tim Mastny [ctb], Aaron Peikert [ctb] (ORCID: ), Mark van der Loo [ctb] (ORCID: ), Chris Muir [ctb] (ORCID: ), Moritz Beller [ctb] (ORCID: ), Sebastian Campbell [ctb] (ORCID: ), Winston Chang [ctb] (ORCID: ), Dean Attali [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Kevin Ushey [ctb] (ORCID: ), Carl Pearson [ctb] (ORCID: )", + "Maintainer": "Dirk Eddelbuettel ", + "Repository": "CRAN" + }, + "doParallel": { + "Package": "doParallel", + "Version": "1.0.17", + "Source": "Repository", + "Type": "Package", + "Title": "Foreach Parallel Adaptor for the 'parallel' Package", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Microsoft\", \"Corporation\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"), person(\"Dan\", \"Tenenbaum\", role=\"ctb\"))", + "Description": "Provides a parallel backend for the %dopar% function using the parallel package.", + "Depends": [ + "R (>= 2.14.0)", + "foreach (>= 1.2.0)", + "iterators (>= 1.0.0)", + "parallel", + "utils" + ], + "Suggests": [ + "caret", + "mlbench", + "rpart", + "RUnit" + ], + "Enhances": [ + "compiler" + ], + "License": "GPL-2", + "URL": "https://github.com/RevolutionAnalytics/doparallel", + "BugReports": "https://github.com/RevolutionAnalytics/doparallel/issues", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Microsoft Corporation [aut, cph], Steve Weston [aut], Dan Tenenbaum [ctb]", + "Maintainer": "Folashade Daniel ", + "Repository": "CRAN" + }, + "dotCall64": { + "Package": "dotCall64", + "Version": "1.2", + "Source": "Repository", + "Type": "Package", + "Title": "Enhanced Foreign Function Interface Supporting Long Vectors", + "Date": "2024-10-03", + "Authors@R": "c(person(\"Kaspar\", \"Moesinger\", role = c(\"aut\"), email = \"kaspar.moesinger@gmail.com\"), person(\"Florian\", \"Gerber\", role = c(\"aut\"), email = \"flora.fauna.gerber@gmail.com\", comment = c(ORCID = \"0000-0001-8545-5263\")), person(\"Reinhard\", \"Furrer\", role = c(\"cre\", \"ctb\"), email = \"reinhard.furrer@uzh.ch\", comment = c(ORCID = \"0000-0002-6319-2332\")))", + "Description": "Provides .C64(), which is an enhanced version of .C() and .Fortran() from the foreign function interface. .C64() supports long vectors, arguments of type 64-bit integer, and provides a mechanism to avoid unnecessary copies of read-only and write-only arguments. This makes it a convenient and fast interface to C/C++ and Fortran code.", + "License": "GPL (>= 2)", + "URL": "https://git.math.uzh.ch/reinhard.furrer/dotCall64", + "BugReports": "https://git.math.uzh.ch/reinhard.furrer/dotCall64/-/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Suggests": [ + "microbenchmark", + "RhpcBLASctl", + "RColorBrewer", + "roxygen2", + "spam", + "testthat" + ], + "Collate": "'vector_dc.R' 'dotCall64.R' 'zzz.R'", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Kaspar Moesinger [aut], Florian Gerber [aut] (), Reinhard Furrer [cre, ctb] ()", + "Maintainer": "Reinhard Furrer ", + "Repository": "CRAN" + }, + "downlit": { + "Package": "downlit", + "Version": "0.4.4", + "Source": "Repository", + "Title": "Syntax Highlighting and Automatic Linking", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Syntax highlighting of R code, specifically designed for the needs of 'RMarkdown' packages like 'pkgdown', 'hugodown', and 'bookdown'. It includes linking of function calls to their documentation on the web, and automatic translation of ANSI escapes in output to the equivalent HTML.", + "License": "MIT + file LICENSE", + "URL": "https://downlit.r-lib.org/, https://github.com/r-lib/downlit", + "BugReports": "https://github.com/r-lib/downlit/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "brio", + "desc", + "digest", + "evaluate", + "fansi", + "memoise", + "rlang", + "vctrs", + "withr", + "yaml" + ], + "Suggests": [ + "covr", + "htmltools", + "jsonlite", + "MASS", + "MassSpecWavelet", + "pkgload", + "rmarkdown", + "testthat (>= 3.0.0)", + "xml2" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.1.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Grammar of Data Manipulation", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Romain\", \"François\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Kirill\", \"Müller\", role = \"aut\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4777-038X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A fast, consistent tool for working with data frame like objects, both in memory and out of memory.", + "License": "MIT + file LICENSE", + "URL": "https://dplyr.tidyverse.org, https://github.com/tidyverse/dplyr", + "BugReports": "https://github.com/tidyverse/dplyr/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "generics", + "glue (>= 1.3.2)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5)", + "methods", + "pillar (>= 1.9.0)", + "R6", + "rlang (>= 1.1.0)", + "tibble (>= 3.2.0)", + "tidyselect (>= 1.2.0)", + "utils", + "vctrs (>= 0.6.4)" + ], + "Suggests": [ + "bench", + "broom", + "callr", + "covr", + "DBI", + "dbplyr (>= 2.2.1)", + "ggplot2", + "knitr", + "Lahman", + "lobstr", + "microbenchmark", + "nycflights13", + "purrr", + "rmarkdown", + "RMySQL", + "RPostgreSQL", + "RSQLite", + "stringi (>= 1.7.6)", + "testthat (>= 3.1.5)", + "tidyr (>= 1.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, shiny, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (), Romain François [aut] (), Lionel Henry [aut], Kirill Müller [aut] (), Davis Vaughan [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "dtplyr": { + "Package": "dtplyr", + "Version": "1.3.2", + "Source": "Repository", + "Title": "Data Table Back-End for 'dplyr'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"cre\", \"aut\")), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Mark\", \"Fairbanks\", role = \"aut\"), person(\"Ryan\", \"Dickerson\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a data.table backend for 'dplyr'. The goal of 'dtplyr' is to allow you to write 'dplyr' code that is automatically translated to the equivalent, but usually much faster, data.table code.", + "License": "MIT + file LICENSE", + "URL": "https://dtplyr.tidyverse.org, https://github.com/tidyverse/dtplyr", + "BugReports": "https://github.com/tidyverse/dtplyr/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "data.table (>= 1.13.0)", + "dplyr (>= 1.1.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.4)", + "tibble", + "tidyselect (>= 1.2.0)", + "vctrs (>= 0.4.1)" + ], + "Suggests": [ + "bench", + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.2)", + "tidyr (>= 1.1.0)", + "waldo (>= 0.3.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [cre, aut], Maximilian Girlich [aut], Mark Fairbanks [aut], Ryan Dickerson [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "edgeTransport": { + "Package": "edgeTransport", + "Version": "3.13.4", + "Source": "Repository", + "Title": "Prepare EDGE Transport Data for the REMIND model", + "Authors@R": "c( person(\"Johanna\", \"Hoppe\", email = \"johanna.hoppe@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0009-0004-6753-5090\")), person(\"Alois\", \"Dirnaichner\", email = \"dirnaichner@pik-potsdam.de\", role = \"aut\"), person(\"Marianna\", \"Rottoli\", email = \"rottoli@pik-potsdam.de\", role = \"aut\"), person(\"Jarusch\", \"Muessel\", email = \"jarusch.muessel@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-1857-7866\")), person(\"Alex K.\", \"Hagen\",email = \"alex.hagen@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0003-4793-8664\")), person(\"Robert P.\", \"Pietzcker\",email = \"pietzcker@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-9403-6711\")))", + "Description": "EDGE-T is a fork of the GCAM transport module https://jgcri.github.io/gcam-doc/energy.html#transportation with a high level of detail in its representation of technological and modal options. It is a partial equilibrium model with a nested multinomial logit structure and relies on the modified logit formulation. Most of the sources are not publicly available. PIK-internal users can find the sources in the distributed file system in the folder `/p/projects/rd3mod/inputdata/sources/EDGE-Transport-Standalone`.", + "Depends": [ + "R (>= 3.5.0)", + "data.table (>= 1.11.0)", + "mrtransport (>= 0.12.0)" + ], + "License": "GPL-3", + "URL": "https://github.com/pik-piam/edgeTransport", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Date": "2026-03-24", + "Config/testthat/edition": "3", + "Imports": [ + "rmndt", + "magclass", + "rootSolve", + "madrat", + "magrittr", + "gdx", + "gdxrrw", + "zoo", + "gdxdt", + "mrdrivers", + "reporttransport (>= 1.1.0)" + ], + "Suggests": [ + "testthat (>= 3.0.0)", + "knitr", + "rmarkdown", + "covr", + "piamPlotComparison", + "renv" + ], + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/edgeTransport", + "RemoteRef": "HEAD", + "RemoteSha": "e220eaa15e5a6337dcdaa2d38b65cbda13f8da43", + "NeedsCompilation": "no", + "Author": "Johanna Hoppe [aut, cre] (), Alois Dirnaichner [aut], Marianna Rottoli [aut], Jarusch Muessel [aut] (), Alex K. Hagen [aut] (), Robert P. Pietzcker [aut] ()", + "Maintainer": "Johanna Hoppe " + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Title": "Tools for Working with ...", + "Description": "The ellipsis is a powerful tool for extending functions. Unfortunately this power comes at a cost: misspelled arguments will be silently ignored. The ellipsis package provides a collection of functions to catch problems and alert the user.", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = \"cph\") )", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "URL": "https://ellipsis.r-lib.org, https://github.com/r-lib/ellipsis", + "BugReports": "https://github.com/r-lib/ellipsis/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "rlang (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "testthat" + ], + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "elliptic": { + "Package": "elliptic", + "Version": "1.5-0", + "Source": "Repository", + "Title": "Weierstrass and Jacobi Elliptic Functions", + "Authors@R": "person(given=c(\"Robin\", \"K. S.\"), family=\"Hankin\", role = c(\"aut\",\"cre\"), email=\"hankin.robin@gmail.com\", comment = c(ORCID = \"0000-0001-5982-0415\"))", + "Depends": [ + "R (>= 2.5.0)" + ], + "Imports": [ + "MASS" + ], + "Suggests": [ + "emulator", + "calibrator (>= 1.2-8)", + "testthat", + "hypergeo" + ], + "SystemRequirements": "pari/gp", + "Description": "A suite of elliptic and related functions including Weierstrass and Jacobi forms. Also includes various tools for manipulating and visualizing complex functions.", + "Maintainer": "Robin K. S. Hankin ", + "License": "GPL-2", + "URL": "https://github.com/RobinHankin/elliptic, https://robinhankin.github.io/elliptic/", + "BugReports": "https://github.com/RobinHankin/elliptic/issues", + "NeedsCompilation": "no", + "Author": "Robin K. S. Hankin [aut, cre] (ORCID: )", + "Repository": "CRAN" + }, + "evaluate": { + "Package": "evaluate", + "Version": "1.0.5", + "Source": "Repository", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the Default", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Yihui\", \"Xie\", role = \"aut\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Michael\", \"Lawrence\", role = \"ctb\"), person(\"Thomas\", \"Kluyver\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Adam\", \"Ryczkowski\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Michel\", \"Lang\", role = \"ctb\"), person(\"Karolis\", \"Koncevičius\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Parsing and evaluation tools that make it easy to recreate the command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://evaluate.r-lib.org/, https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "covr", + "ggplot2 (>= 3.3.6)", + "lattice", + "methods", + "pkgload", + "ragg (>= 1.4.0)", + "rlang (>= 1.1.5)", + "knitr", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Yihui Xie [aut] (ORCID: ), Michael Lawrence [ctb], Thomas Kluyver [ctb], Jeroen Ooms [ctb], Barret Schloerke [ctb], Adam Ryczkowski [ctb], Hiroaki Yutani [ctb], Michel Lang [ctb], Karolis Koncevičius [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "fansi": { + "Package": "fansi", + "Version": "1.0.6", + "Source": "Repository", + "Title": "ANSI Control Sequence Aware String Functions", + "Description": "Counterparts to R string manipulation functions that account for the effects of ANSI text formatting control sequences.", + "Authors@R": "c( person(\"Brodie\", \"Gaslam\", email=\"brodie.gaslam@yahoo.com\", role=c(\"aut\", \"cre\")), person(\"Elliott\", \"Sales De Andrade\", role=\"ctb\"), person(family=\"R Core Team\", email=\"R-core@r-project.org\", role=\"cph\", comment=\"UTF8 byte length calcs from src/util.c\" ))", + "Depends": [ + "R (>= 3.1.0)" + ], + "License": "GPL-2 | GPL-3", + "URL": "https://github.com/brodieG/fansi", + "BugReports": "https://github.com/brodieG/fansi/issues", + "VignetteBuilder": "knitr", + "Suggests": [ + "unitizer", + "knitr", + "rmarkdown" + ], + "Imports": [ + "grDevices", + "utils" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Collate": "'constants.R' 'fansi-package.R' 'internal.R' 'load.R' 'misc.R' 'nchar.R' 'strwrap.R' 'strtrim.R' 'strsplit.R' 'substr2.R' 'trimws.R' 'tohtml.R' 'unhandled.R' 'normalize.R' 'sgr.R'", + "NeedsCompilation": "yes", + "Author": "Brodie Gaslam [aut, cre], Elliott Sales De Andrade [ctb], R Core Team [cph] (UTF8 byte length calcs from src/util.c)", + "Maintainer": "Brodie Gaslam ", + "Repository": "CRAN" + }, + "farver": { + "Package": "farver", + "Version": "2.1.2", + "Source": "Repository", + "Type": "Package", + "Title": "High Performance Colour Space Manipulation", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Berendea\", \"Nicolae\", role = \"aut\", comment = \"Author of the ColorSpace C++ library\"), person(\"Romain\", \"François\", , \"romain@purrple.cat\", role = \"aut\", comment = c(ORCID = \"0000-0002-2444-4226\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The encoding of colour can be handled in many different ways, using different colour spaces. As different colour spaces have different uses, efficient conversion between these representations are important. The 'farver' package provides a set of functions that gives access to very fast colour space conversion and comparisons implemented in C++, and offers speed improvements over the 'convertColor' function in the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://farver.data-imaginist.com, https://github.com/thomasp85/farver", + "BugReports": "https://github.com/thomasp85/farver/issues", + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (), Berendea Nicolae [aut] (Author of the ColorSpace C++ library), Romain François [aut] (), Posit, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Fast Data Structures", + "Authors@R": "c( person(\"Winston\", \"Chang\", email = \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\") )", + "Description": "Fast implementation of data structures, including a key-value store, stack, and queue. Environments are commonly used as key-value stores in R, but every time a new key is used, it is added to R's global symbol table, causing a small amount of memory leakage. This can be problematic in cases where many different keys are used. Fastmap avoids this memory leak issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": [ + "testthat (>= 2.1.1)" + ], + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut, cre], Posit Software, PBC [cph, fnd], Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "fields": { + "Package": "fields", + "Version": "17.1", + "Source": "Repository", + "Date": "2025-09-03", + "Title": "Tools for Spatial Data", + "Authors@R": "c( person(\"Douglas\", \"Nychka\", role = c(\"aut\", \"cre\"), email = \"douglasnychka@gmail.com\"), person(\"Reinhard\", \"Furrer\", role = c(\"aut\"), email = \"reinhard.furrer@math.uzh.ch\"), person(\"John\", \"Paige\", role = c(\"aut\"), email = \"paigejo@uw.edu\"), person(\"Stephan\", \"Sain\", role = \"aut\", email = \"sainsr2@gmail.com\"), person(\"Florian\", \"Gerber\", role = \"aut\", email = \"flora.fauna.gerber@gmail.com\"), person(\"Matthew\", \"Iverson\", role = \"aut\", email = \"miverson@mines.edu\"), person(\"Rider\", \"Johnson\", role = \"aut\", email = \"riderjohnson@mines.edu\") )", + "Maintainer": "Douglas Nychka ", + "Description": "For curve, surface and function fitting with an emphasis on splines, spatial data, geostatistics, and spatial statistics. The major methods include Gaussian spatial process prediction (known as Kriging), cubic and thin plate splines, and compactly supported covariance functions for large data sets. The spline and spatial process methods are supported by functions that can determine the smoothing parameter (nugget and sill variance) and other covariance function parameters by cross validation and also by maximum likelihood. For spatial process prediction there is an easy to use function that also estimates the correlation scale (range parameter). A major feature is that any covariance function implemented in R and following a simple format can be used for spatial prediction. As included are fast approximations for prediction and conditional simulation for larger data sets. There are also many useful functions for plotting and working with spatial data as images. This package also contains an implementation of sparse matrix methods for large spatial data sets based the R sparse matrix package spam. Use help(fields) to get started and for an overview. All package graphics functions focus on extending base R graphics and are easy to interpret and modify. The fields source code is deliberately commented and provides useful explanations of numerical details as a companion to the manual pages. The commented source code can be viewed by expanding the source code version of this package and looking in the R subdirectory. The reference for fields can be generated by the citation function in R and has DOI . Development of this package was supported in part by the National Science Foundation Grant 1417857, the National Center for Atmospheric Research, and Colorado School of Mines. See the Fields URL for a vignette on using this package and some background on spatial statistics.", + "License": "GPL (>= 2)", + "URL": "https://github.com/dnychka/fieldsRPackage", + "Depends": [ + "R (>= 4.0.0)", + "methods", + "spam", + "viridisLite", + "RColorBrewer" + ], + "Imports": [ + "maps" + ], + "Suggests": [ + "mapproj" + ], + "NeedsCompilation": "yes", + "Repository": "CRAN", + "Author": "Douglas Nychka [aut, cre], Reinhard Furrer [aut], John Paige [aut], Stephan Sain [aut], Florian Gerber [aut], Matthew Iverson [aut], Rider Johnson [aut]" + }, + "filelock": { + "Package": "filelock", + "Version": "1.0.3", + "Source": "Repository", + "Title": "Portable File Locking", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Place an exclusive or shared lock on a file. It uses 'LockFile' on Windows and 'fcntl' locks on Unix-like systems.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/filelock/, https://github.com/r-lib/filelock", + "BugReports": "https://github.com/r-lib/filelock/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Suggests": [ + "callr (>= 2.0.0)", + "covr", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "flexdashboard": { + "Package": "flexdashboard", + "Version": "0.6.2", + "Source": "Repository", + "Type": "Package", + "Title": "R Markdown Format for Flexible Dashboards", + "Authors@R": "c( person(\"Garrick\", \"Aden-Buie\", , \"garrick@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-7111-0077\")), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Barbara\", \"Borges\", , \"barb.b.ribeiro@gmail.com\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"Keen IO\", role = c(\"ctb\", \"cph\"), comment = \"Dashboard CSS\"), person(\"Abdullah\", \"Almsaeed\", role = c(\"ctb\", \"cph\"), comment = \"Dashboard CSS\"), person(\"Jonas\", \"Mosbech\", role = c(\"ctb\", \"cph\"), comment = \"StickyTableHeaders\"), person(\"Noel\", \"Bossart\", role = c(\"ctb\", \"cph\"), comment = \"Featherlight\"), person(\"Lea\", \"Verou\", role = c(\"ctb\", \"cph\"), comment = \"Prism\"), person(\"Dmitry\", \"Baranovskiy\", role = c(\"ctb\", \"cph\"), comment = \"Raphael.js\"), person(, \"Sencha Labs\", role = c(\"ctb\", \"cph\"), comment = \"Raphael.js\"), person(\"Bojan\", \"Djuricic\", role = c(\"ctb\", \"cph\"), comment = \"JustGage\"), person(\"Tomas\", \"Sardyha\", role = c(\"ctb\", \"cph\"), comment = \"Sly\"), person(\"Bryan\", \"Lewis\", role = c(\"ctb\", \"cph\"), comment = \"Examples\"), person(\"Joshua\", \"Kunst\", role = c(\"ctb\", \"cph\"), comment = \"Examples\"), person(\"Ryan\", \"Hafen\", role = c(\"ctb\", \"cph\"), comment = \"Examples\"), person(\"Bob\", \"Rudis\", role = c(\"ctb\", \"cph\"), comment = \"Examples\"), person(\"Joe\", \"Cheng\", role = \"ctb\", comment = \"Examples\") )", + "Description": "Format for converting an R Markdown document to a grid oriented dashboard. The dashboard flexibly adapts the size of it's components to the containing web page.", + "License": "MIT + file LICENSE", + "URL": "https://pkgs.rstudio.com/flexdashboard/, https://github.com/rstudio/flexdashboard/", + "BugReports": "https://github.com/rstudio/flexdashboard/issues", + "Depends": [ + "R (>= 3.0.2)" + ], + "Imports": [ + "bslib (>= 0.2.5)", + "grDevices", + "htmltools (>= 0.5.1)", + "htmlwidgets (>= 0.6)", + "jsonlite", + "knitr (>= 1.30)", + "rmarkdown (>= 2.8)", + "sass", + "scales", + "shiny (>= 0.13)", + "tools", + "utils" + ], + "Suggests": [ + "testthat" + ], + "Config/Needs/deploy": "dplyr, ggplot2, DT, talgalili/d3heatmap, plotly, plyr, biclust, webshot, bit, jcheng5/bubbles, digest, hadley/shinySignals, dygraphs, quantmod, forecast, highcharter, arules, treemap, viridisLite, leaflet, metricsgraphics, rbokeh, readr, tidyr, jsonlite, maptools, purrr, maps, hexbin", + "Config/Needs/website": "rstudio/quillt", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Garrick Aden-Buie [aut, cre] (), Carson Sievert [aut] (), Richard Iannone [aut] (), JJ Allaire [aut], Barbara Borges [aut], Posit Software, PBC [cph, fnd], Keen IO [ctb, cph] (Dashboard CSS), Abdullah Almsaeed [ctb, cph] (Dashboard CSS), Jonas Mosbech [ctb, cph] (StickyTableHeaders), Noel Bossart [ctb, cph] (Featherlight), Lea Verou [ctb, cph] (Prism), Dmitry Baranovskiy [ctb, cph] (Raphael.js), Sencha Labs [ctb, cph] (Raphael.js), Bojan Djuricic [ctb, cph] (JustGage), Tomas Sardyha [ctb, cph] (Sly), Bryan Lewis [ctb, cph] (Examples), Joshua Kunst [ctb, cph] (Examples), Ryan Hafen [ctb, cph] (Examples), Bob Rudis [ctb, cph] (Examples), Joe Cheng [ctb] (Examples)", + "Maintainer": "Garrick Aden-Buie ", + "Repository": "CRAN" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown' documents and 'Shiny' apps. These icons can be inserted into HTML content through inline 'SVG' tags or 'i' tags. There is also a utility function for exporting 'Font Awesome' icons as 'PNG' images for those situations where raster graphics are needed.", + "Authors@R": "c( person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome font\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome, https://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.3.2", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "rlang (>= 1.0.6)", + "htmltools (>= 0.5.1.1)" + ], + "Suggests": [ + "covr", + "dplyr (>= 1.0.8)", + "gt (>= 0.9.0)", + "knitr (>= 1.31)", + "testthat (>= 3.0.0)", + "rsvg" + ], + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Richard Iannone [aut, cre] (), Christophe Dervieux [ctb] (), Winston Chang [ctb], Dave Gandy [ctb, cph] (Font-Awesome font), Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "CRAN" + }, + "forcats": { + "Package": "forcats", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Tools for Working with Categorical Variables (Factors)", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Helpers for reordering factor levels (including moving specified levels to front, ordering by first appearance, reversing, and randomly shuffling), and tools for modifying factor levels (including collapsing rare levels into other, 'anonymising', and manually 'recoding').", + "License": "MIT + file LICENSE", + "URL": "https://forcats.tidyverse.org/, https://github.com/tidyverse/forcats", + "BugReports": "https://github.com/tidyverse/forcats/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle", + "magrittr", + "rlang (>= 1.0.0)", + "tibble" + ], + "Suggests": [ + "covr", + "dplyr", + "ggplot2", + "knitr", + "readr", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.2", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Foreach Looping Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Hong\", \"Ooi\", role=\"ctb\"), person(\"Rich\", \"Calaway\", role=\"ctb\"), person(\"Microsoft\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for the foreach looping construct. Foreach is an idiom that allows for iterating over elements in a collection, without the use of an explicit loop counter. This package in particular is intended to be used for its return value, rather than for its side effects. In that sense, it is similar to the standard lapply function, but doesn't require the evaluation of a function. Using foreach without side effects also facilitates executing the loop in parallel.", + "License": "Apache License (== 2.0)", + "URL": "https://github.com/RevolutionAnalytics/foreach", + "BugReports": "https://github.com/RevolutionAnalytics/foreach/issues", + "Depends": [ + "R (>= 2.5.0)" + ], + "Imports": [ + "codetools", + "utils", + "iterators" + ], + "Suggests": [ + "randomForest", + "doMC", + "doParallel", + "testthat", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.1.1", + "Collate": "'callCombine.R' 'foreach.R' 'do.R' 'foreach-ext.R' 'foreach-pkg.R' 'getDoPar.R' 'getDoSeq.R' 'getsyms.R' 'iter.R' 'nextElem.R' 'onLoad.R' 'setDoPar.R' 'setDoSeq.R' 'times.R' 'utils.R'", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Hong Ooi [ctb], Rich Calaway [ctb], Microsoft [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "CRAN" + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-85", + "Source": "Repository", + "Priority": "recommended", + "Date": "2023-09-09", + "Title": "Read Data Stored by 'Minitab', 'S', 'SAS', 'SPSS', 'Stata', 'Systat', 'Weka', 'dBase', ...", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "methods", + "utils", + "stats" + ], + "Authors@R": "c( person(\"R Core Team\", email = \"R-core@R-project.org\", role = c(\"aut\", \"cph\", \"cre\")), person(\"Roger\", \"Bivand\", role = c(\"ctb\", \"cph\")), person(c(\"Vincent\", \"J.\"), \"Carey\", role = c(\"ctb\", \"cph\")), person(\"Saikat\", \"DebRoy\", role = c(\"ctb\", \"cph\")), person(\"Stephen\", \"Eglen\", role = c(\"ctb\", \"cph\")), person(\"Rajarshi\", \"Guha\", role = c(\"ctb\", \"cph\")), person(\"Swetlana\", \"Herbrandt\", role = \"ctb\"), person(\"Nicholas\", \"Lewin-Koh\", role = c(\"ctb\", \"cph\")), person(\"Mark\", \"Myatt\", role = c(\"ctb\", \"cph\")), person(\"Michael\", \"Nelson\", role = \"ctb\"), person(\"Ben\", \"Pfaff\", role = \"ctb\"), person(\"Brian\", \"Quistorff\", role = \"ctb\"), person(\"Frank\", \"Warmerdam\", role = c(\"ctb\", \"cph\")), person(\"Stephen\", \"Weigand\", role = c(\"ctb\", \"cph\")), person(\"Free Software Foundation, Inc.\", role = \"cph\"))", + "Contact": "see 'MailingList'", + "Copyright": "see file COPYRIGHTS", + "Description": "Reading and writing data stored by some versions of 'Epi Info', 'Minitab', 'S', 'SAS', 'SPSS', 'Stata', 'Systat', 'Weka', and for reading and writing some 'dBase' files.", + "ByteCompile": "yes", + "Biarch": "yes", + "License": "GPL (>= 2)", + "BugReports": "https://bugs.r-project.org", + "MailingList": "R-help@r-project.org", + "URL": "https://svn.r-project.org/R-packages/trunk/foreign/", + "NeedsCompilation": "yes", + "Author": "R Core Team [aut, cph, cre], Roger Bivand [ctb, cph], Vincent J. Carey [ctb, cph], Saikat DebRoy [ctb, cph], Stephen Eglen [ctb, cph], Rajarshi Guha [ctb, cph], Swetlana Herbrandt [ctb], Nicholas Lewin-Koh [ctb, cph], Mark Myatt [ctb, cph], Michael Nelson [ctb], Ben Pfaff [ctb], Brian Quistorff [ctb], Frank Warmerdam [ctb, cph], Stephen Weigand [ctb, cph], Free Software Foundation, Inc. [cph]", + "Maintainer": "R Core Team ", + "Repository": "CRAN" + }, + "fs": { + "Package": "fs", + "Version": "2.0.1", + "Source": "Repository", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", , \"jeroenooms@gmail.com\", role = \"cre\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A cross-platform interface to file system operations, built on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "crayon", + "knitr", + "pillar (>= 1.0.0)", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "tibble (>= 1.1.0)", + "vctrs (>= 0.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "SystemRequirements": "libuv: libuv-devel (rpm) or libuv1-dev (deb). Alternatively to build the vendored libuv 'cmake' is required. GNU make.", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut], Hadley Wickham [aut], Gábor Csárdi [aut], Jeroen Ooms [cre], libuv project contributors [cph] (libuv library), Joyent, Inc. and other Node contributors [cph] (libuv library), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "gamstransfer": { + "Package": "gamstransfer", + "Version": "3.0.7", + "Source": "Repository", + "Type": "Package", + "Title": "A Data Interface Between 'GAMS' and R", + "Date": "2025-09-02", + "Authors@R": "c( person(\"Atharv\", \"Bhosekar\", email = \"abhosekar@gams.com\", role = c(\"aut\", \"cre\")), person(\"GAMS Development Corp.\", email = \"support@gams.com\", role=c(\"cph\", \"fnd\")), person(\"GAMS Software GmbH\", email = \"support@gams.com\", role=c(\"cph\", \"fnd\")) )", + "Maintainer": "Atharv Bhosekar ", + "Description": "Read, analyze, modify, and write 'GAMS' (General Algebraic Modeling System) data. The main focus of 'gamstransfer' is the highly efficient transfer of data with 'GAMS' , while keeping these operations as simple as possible for the user. The transfer of data usually takes place via an intermediate GDX (GAMS Data Exchange) file. Additionally, 'gamstransfer' provides utility functions to get an overview of 'GAMS' data and to check its validity.", + "License": "MIT + file LICENSE", + "Imports": [ + "Rcpp (>= 1.0.6)", + "R6 (>= 2.5.1)", + "R.utils (>= 2.11.0)", + "collections(>= 0.3.6)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "testthat (>= 3.0.0)" + ], + "URL": "https://github.com/GAMS-dev/transfer-r/tree/main/gamstransfer", + "BugReports": "https://github.com/GAMS-dev/transfer-r/issues", + "Config/testthat/edition": "3", + "RoxygenNote": "7.3.1", + "SystemRequirements": "C++17", + "Encoding": "UTF-8", + "Collate": "'Alias.R' 'BaseAlias.R' 'Container.R' 'DomainViolation.R' 'SpecialValues.R' 'Equation.R' 'Parameter.R' 'RcppExports.R' 'Set.R' 'Super.R' 'Symbol.R' 'UniverseAlias.R' 'Variable.R' 'gamstransfer-package.R' 'symbolTypes.R' 'utility.R'", + "NeedsCompilation": "yes", + "Author": "Atharv Bhosekar [aut, cre], GAMS Development Corp. [cph, fnd], GAMS Software GmbH [cph, fnd]", + "Repository": "CRAN" + }, + "gargle": { + "Package": "gargle", + "Version": "1.6.0", + "Source": "Repository", + "Title": "Utilities for Working with Google APIs", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Craig\", \"Citro\", , \"craigcitro@google.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Google Inc\", role = \"cph\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides utilities for working with Google APIs . This includes functions and classes for handling common credential types and for preparing, executing, and processing HTTP requests.", + "License": "MIT + file LICENSE", + "URL": "https://gargle.r-lib.org, https://github.com/r-lib/gargle", + "BugReports": "https://github.com/r-lib/gargle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.1)", + "fs (>= 1.3.1)", + "glue (>= 1.3.0)", + "httr (>= 1.4.5)", + "jsonlite", + "lifecycle (>= 0.2.0)", + "openssl", + "rappdirs", + "rlang (>= 1.1.0)", + "stats", + "utils", + "withr" + ], + "Suggests": [ + "aws.ec2metadata", + "aws.signature", + "covr", + "httpuv", + "knitr", + "rmarkdown", + "sodium", + "spelling", + "testthat (>= 3.1.7)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (ORCID: ), Craig Citro [aut], Hadley Wickham [aut] (ORCID: ), Google Inc [cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "gdx": { + "Package": "gdx", + "Version": "1.53.1", + "Source": "Repository", + "Type": "Package", + "Title": "Interface package for GDX files in R", + "Date": "2024-05-17", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\"), role = c(\"aut\",\"cre\")), person(\"Anastasis\", \"Giannousakis\", , \"giannou@pik-potsdam.de\", role = \"aut\"), person(\"Markus Bonsch\", \"Bonsch\", role = \"aut\"), person(\"Lavinia Baumstark\", \"Baumstark\", , \"baumstark@pik-potsdam.de\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"ctb\") )", + "Description": "A wrapper package for the gdxrrw extending its functionality and allowing to read and write GDX files directly in R.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/gdx, https://doi.org/10.5281/zenodo.1158598", + "BugReports": "https://github.com/pik-piam/gdx/issues", + "Depends": [ + "gdxrrw (>= 1.0.2)", + "magclass (>= 2.43)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "covr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1", + "Config/Keywords": "tool", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/gdx", + "RemoteRef": "HEAD", + "RemoteSha": "3a901f395740f5aa97f41f38acff12fb3ca8eca5", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), Anastasis Giannousakis [aut], Markus Bonsch Bonsch [aut], Lavinia Baumstark Baumstark [ctb] (Potsdam Institute for Climate Impact Research)", + "Maintainer": "Jan Philipp Dietrich " + }, + "gdx2": { + "Package": "gdx2", + "Version": "0.4.0", + "Source": "Repository", + "Type": "Package", + "Title": "Interface package for GDX files in R", + "Date": "2026-03-12", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\"), role = c(\"aut\",\"cre\")))", + "Description": "A wrapper package for the gamstransfer package extending its functionality and allowing to read GDX files directly in R. It is emulating the basic features of the readGDX function in the gdx package but now based on gamstransfer instead of gdxrrw which served as a basis for gdx.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/gdx2", + "BugReports": "https://github.com/pik-piam/gdx2/issues", + "Imports": [ + "gamstransfer", + "magclass (>= 6.0)" + ], + "Suggests": [ + "covr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/Keywords": "tool", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "git@github.com:pik-piam/gdx2", + "RemoteRef": "HEAD", + "RemoteSha": "6aeabb333bbda8f9140761e190128825e9824e4b", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Jan Philipp Dietrich " + }, + "gdxdt": { + "Package": "gdxdt", + "Version": "0.1.0", + "Source": "Repository", + "Title": "IO for GAMS GDX Files using 'data.table'", + "Authors@R": "person(\"Alois\", \"Dirnaichner\", email = \"alodi@directbox.com\", role = c(\"aut\", \"cre\"))", + "Author": "Alois Dirnaichner [aut, cre]", + "Maintainer": "Alois Dirnaichner ", + "Description": "Interfaces GAMS data (*.gdx) files with 'data.table's using the GAMS R package 'gdxrrw'. The 'gdxrrw' package is available on the GAMS wiki: .", + "Depends": [ + "R (>= 3.1)", + "data.table (>= 1.11.0)" + ], + "License": "MIT + file LICENCE", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "6.1.1", + "Suggests": [ + "gdxrrw", + "testthat" + ], + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "gdxrrw": { + "Package": "gdxrrw", + "Version": "1.0.10", + "Source": "Repository", + "Title": "An Interface Between 'GAMS' and R", + "Depends": [ + "R (>= 3.0)" + ], + "Date": "2021-04-02", + "SystemRequirements": "GAMS (>= 33.0.0)", + "Authors@R": "c(person(\"Steve\",\"Dirkse\", role=c(\"aut\",\"cre\"), email=\"R@gams.com\"), person(\"Michael\",\"Ferris\", role=c(\"aut\")), person(\"Rishabh\",\"Jain\", role=c(\"aut\")) )", + "Description": "A data interface between 'GAMS' and R. The 'GAMS' (General Algebraic Modeling System) software includes a data specification called 'GDX' that is the preferred way to store and exchange 'GAMS' data. This package includes several functions to transfer data between 'GDX' and R, and some related utility functions.", + "URL": "http://www.gams.com", + "License": "EPL2 with Secondary License GPL-2.0 or greater", + "Imports": [ + "reshape2" + ], + "LazyData": "no", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/GAMS-dev/gdxrrw", + "RemoteRef": "HEAD", + "RemoteSha": "64310f04e68f05d6bba2bd0159c81499a48898bc", + "NeedsCompilation": "yes", + "Author": "Steve Dirkse [aut, cre], Michael Ferris [aut], Rishabh Jain [aut]", + "Maintainer": "Steve Dirkse " + }, + "generics": { + "Package": "generics", + "Version": "0.1.3", + "Source": "Repository", + "Title": "Common S3 Generics not Provided by Base R Methods Related to Model Fitting", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"Max\", \"Kuhn\", , \"max@rstudio.com\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@rstudio.com\", role = \"aut\"), person(\"RStudio\", role = \"cph\") )", + "Description": "In order to reduce potential package dependencies and conflicts, generics provides a number of commonly used S3 generics.", + "License": "MIT + file LICENSE", + "URL": "https://generics.r-lib.org, https://github.com/r-lib/generics", + "BugReports": "https://github.com/r-lib/generics/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "covr", + "pkgload", + "testthat (>= 3.0.0)", + "tibble", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.0", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Max Kuhn [aut], Davis Vaughan [aut], RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "geometry": { + "Package": "geometry", + "Version": "0.5.2", + "Source": "Repository", + "License": "GPL (>= 3)", + "Title": "Mesh Generation and Surface Tessellation", + "Authors@R": "c( person(\"Jean-Romain\", \"Roussel\" , role=c(\"cph\", \"ctb\"), comment = \"wrote tsearch function with QuadTrees\"), person(\"C. B.\", \"Barber\" , role=\"cph\"), person(\"Kai\", \"Habel\", role=c(\"cph\",\"aut\")), person(\"Raoul\", \"Grasman\", role=c(\"cph\",\"aut\")), person(\"Robert B.\", \"Gramacy\", role=c(\"cph\",\"aut\")), person(\"Pavlo\", \"Mozharovskyi\", role=c(\"cph\",\"aut\")), person(\"David C.\", \"Sterratt\", role=c(\"cph\",\"aut\",\"cre\"), email=\"david.c.sterratt@ed.ac.uk\", comment=c(ORCID=\"0000-0001-9092-9099\")))", + "Description": "Makes the 'Qhull' library available in R, in a similar manner as in Octave and MATLAB. Qhull computes convex hulls, Delaunay triangulations, halfspace intersections about a point, Voronoi diagrams, furthest-site Delaunay triangulations, and furthest-site Voronoi diagrams. It runs in 2D, 3D, 4D, and higher dimensions. It implements the Quickhull algorithm for computing the convex hull. Qhull does not support constrained Delaunay triangulations, or mesh generation of non-convex objects, but the package does include some R functions that allow for this.", + "URL": "https://davidcsterratt.github.io/geometry/", + "Date": "2025-02-08", + "BugReports": "https://github.com/davidcsterratt/geometry/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "magic", + "Rcpp", + "lpSolve", + "linprog" + ], + "Suggests": [ + "spelling", + "testthat", + "rgl", + "R.matlab", + "interp" + ], + "LinkingTo": [ + "Rcpp", + "RcppProgress" + ], + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jean-Romain Roussel [cph, ctb] (wrote tsearch function with QuadTrees), C. B. Barber [cph], Kai Habel [cph, aut], Raoul Grasman [cph, aut], Robert B. Gramacy [cph, aut], Pavlo Mozharovskyi [cph, aut], David C. Sterratt [cph, aut, cre] ()", + "Maintainer": "David C. Sterratt ", + "Repository": "CRAN" + }, + "gert": { + "Package": "gert", + "Version": "2.1.5", + "Source": "Repository", + "Type": "Package", + "Title": "Simple Git Client for R", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Jennifer\", \"Bryan\", role = \"ctb\", email = \"jenny@posit.co\", comment = c(ORCID = \"0000-0002-6983-2759\")))", + "Description": "Simple git client for R based on 'libgit2' with support for SSH and HTTPS remotes. All functions in 'gert' use basic R data types (such as vectors and data-frames) for their arguments and return values. User credentials are shared with command line 'git' through the git-credential store and ssh keys stored on disk or ssh-agent.", + "License": "MIT + file LICENSE", + "URL": "https://docs.ropensci.org/gert/, https://ropensci.r-universe.dev/gert", + "BugReports": "https://github.com/r-lib/gert/issues", + "Imports": [ + "askpass", + "credentials (>= 1.2.1)", + "openssl (>= 2.0.3)", + "rstudioapi (>= 0.11)", + "sys", + "zip (>= 2.1.0)" + ], + "Suggests": [ + "spelling", + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "SystemRequirements": "libgit2 (>= 1.0): libgit2-devel (rpm) or libgit2-dev (deb)", + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Jennifer Bryan [ctb] ()", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "getopt": { + "Package": "getopt", + "Version": "1.20.4", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Title": "C-Like 'getopt' Behavior", + "Authors@R": "c(person(\"Trevor L\", \"Davis\", role=c(\"aut\", \"cre\"), email=\"trevor.l.davis@gmail.com\", comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Allen\", \"Day\", role=\"aut\", comment=\"Original package author\"), person(\"Roman\", \"Zenka\", role=\"ctb\"))", + "URL": "https://github.com/trevorld/r-getopt", + "Imports": [ + "stats" + ], + "BugReports": "https://github.com/trevorld/r-getopt/issues", + "Description": "Package designed to be used with Rscript to write '#!' shebang scripts that accept short and long flags/options. Many users will prefer using instead the packages optparse or argparse which add extra features like automatically generated help option and usage, support for default values, positional argument support, etc.", + "License": "GPL (>= 2)", + "Suggests": [ + "testthat" + ], + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Trevor L Davis [aut, cre] (), Allen Day [aut] (Original package author), Roman Zenka [ctb]", + "Maintainer": "Trevor L Davis ", + "Repository": "CRAN" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "4.0.0", + "Source": "Repository", + "Title": "Create Elegant Data Visualisations Using the Grammar of Graphics", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Winston\", \"Chang\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Kohske\", \"Takahashi\", role = \"aut\"), person(\"Claus\", \"Wilke\", role = \"aut\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(\"Kara\", \"Woo\", role = \"aut\", comment = c(ORCID = \"0000-0002-5125-4188\")), person(\"Hiroaki\", \"Yutani\", role = \"aut\", comment = c(ORCID = \"0000-0002-3385-7233\")), person(\"Dewey\", \"Dunnington\", role = \"aut\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Teun\", \"van den Brand\", role = \"aut\", comment = c(ORCID = \"0000-0002-9335-7468\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A system for 'declaratively' creating graphics, based on \"The Grammar of Graphics\". You provide the data, tell 'ggplot2' how to map variables to aesthetics, what graphical primitives to use, and it takes care of the details.", + "License": "MIT + file LICENSE", + "URL": "https://ggplot2.tidyverse.org, https://github.com/tidyverse/ggplot2", + "BugReports": "https://github.com/tidyverse/ggplot2/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "grDevices", + "grid", + "gtable (>= 0.3.6)", + "isoband", + "lifecycle (> 1.0.1)", + "rlang (>= 1.1.0)", + "S7", + "scales (>= 1.4.0)", + "stats", + "vctrs (>= 0.6.0)", + "withr (>= 2.5.0)" + ], + "Suggests": [ + "broom", + "covr", + "dplyr", + "ggplot2movies", + "hexbin", + "Hmisc", + "knitr", + "mapproj", + "maps", + "MASS", + "mgcv", + "multcomp", + "munsell", + "nlme", + "profvis", + "quantreg", + "ragg (>= 1.2.6)", + "RColorBrewer", + "rmarkdown", + "roxygen2", + "rpart", + "sf (>= 0.7-3)", + "svglite (>= 2.1.2)", + "testthat (>= 3.1.5)", + "tibble", + "vdiffr (>= 1.0.6)", + "xml2" + ], + "Enhances": [ + "sp" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "ggtext, tidyr, forcats, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "Collate": "'ggproto.R' 'ggplot-global.R' 'aaa-.R' 'aes-colour-fill-alpha.R' 'aes-evaluation.R' 'aes-group-order.R' 'aes-linetype-size-shape.R' 'aes-position.R' 'all-classes.R' 'compat-plyr.R' 'utilities.R' 'aes.R' 'annotation-borders.R' 'utilities-checks.R' 'legend-draw.R' 'geom-.R' 'annotation-custom.R' 'annotation-logticks.R' 'scale-type.R' 'layer.R' 'make-constructor.R' 'geom-polygon.R' 'geom-map.R' 'annotation-map.R' 'geom-raster.R' 'annotation-raster.R' 'annotation.R' 'autolayer.R' 'autoplot.R' 'axis-secondary.R' 'backports.R' 'bench.R' 'bin.R' 'coord-.R' 'coord-cartesian-.R' 'coord-fixed.R' 'coord-flip.R' 'coord-map.R' 'coord-munch.R' 'coord-polar.R' 'coord-quickmap.R' 'coord-radial.R' 'coord-sf.R' 'coord-transform.R' 'data.R' 'docs_layer.R' 'facet-.R' 'facet-grid-.R' 'facet-null.R' 'facet-wrap.R' 'fortify-map.R' 'fortify-models.R' 'fortify-spatial.R' 'fortify.R' 'stat-.R' 'geom-abline.R' 'geom-rect.R' 'geom-bar.R' 'geom-tile.R' 'geom-bin2d.R' 'geom-blank.R' 'geom-boxplot.R' 'geom-col.R' 'geom-path.R' 'geom-contour.R' 'geom-point.R' 'geom-count.R' 'geom-crossbar.R' 'geom-segment.R' 'geom-curve.R' 'geom-defaults.R' 'geom-ribbon.R' 'geom-density.R' 'geom-density2d.R' 'geom-dotplot.R' 'geom-errorbar.R' 'geom-freqpoly.R' 'geom-function.R' 'geom-hex.R' 'geom-histogram.R' 'geom-hline.R' 'geom-jitter.R' 'geom-label.R' 'geom-linerange.R' 'geom-pointrange.R' 'geom-quantile.R' 'geom-rug.R' 'geom-sf.R' 'geom-smooth.R' 'geom-spoke.R' 'geom-text.R' 'geom-violin.R' 'geom-vline.R' 'ggplot2-package.R' 'grob-absolute.R' 'grob-dotstack.R' 'grob-null.R' 'grouping.R' 'properties.R' 'margins.R' 'theme-elements.R' 'guide-.R' 'guide-axis.R' 'guide-axis-logticks.R' 'guide-axis-stack.R' 'guide-axis-theta.R' 'guide-legend.R' 'guide-bins.R' 'guide-colorbar.R' 'guide-colorsteps.R' 'guide-custom.R' 'guide-none.R' 'guide-old.R' 'guides-.R' 'guides-grid.R' 'hexbin.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'labeller.R' 'labels.R' 'layer-sf.R' 'layout.R' 'limits.R' 'performance.R' 'plot-build.R' 'plot-construction.R' 'plot-last.R' 'plot.R' 'position-.R' 'position-collide.R' 'position-dodge.R' 'position-dodge2.R' 'position-identity.R' 'position-jitter.R' 'position-jitterdodge.R' 'position-nudge.R' 'position-stack.R' 'quick-plot.R' 'reshape-add-margins.R' 'save.R' 'scale-.R' 'scale-alpha.R' 'scale-binned.R' 'scale-brewer.R' 'scale-colour.R' 'scale-continuous.R' 'scale-date.R' 'scale-discrete-.R' 'scale-expansion.R' 'scale-gradient.R' 'scale-grey.R' 'scale-hue.R' 'scale-identity.R' 'scale-linetype.R' 'scale-linewidth.R' 'scale-manual.R' 'scale-shape.R' 'scale-size.R' 'scale-steps.R' 'scale-view.R' 'scale-viridis.R' 'scales-.R' 'stat-align.R' 'stat-bin.R' 'stat-summary-2d.R' 'stat-bin2d.R' 'stat-bindot.R' 'stat-binhex.R' 'stat-boxplot.R' 'stat-connect.R' 'stat-contour.R' 'stat-count.R' 'stat-density-2d.R' 'stat-density.R' 'stat-ecdf.R' 'stat-ellipse.R' 'stat-function.R' 'stat-identity.R' 'stat-manual.R' 'stat-qq-line.R' 'stat-qq.R' 'stat-quantilemethods.R' 'stat-sf-coordinates.R' 'stat-sf.R' 'stat-smooth-methods.R' 'stat-smooth.R' 'stat-sum.R' 'stat-summary-bin.R' 'stat-summary-hex.R' 'stat-summary.R' 'stat-unique.R' 'stat-ydensity.R' 'summarise-plot.R' 'summary.R' 'theme.R' 'theme-defaults.R' 'theme-current.R' 'theme-sub.R' 'utilities-break.R' 'utilities-grid.R' 'utilities-help.R' 'utilities-patterns.R' 'utilities-resolution.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (ORCID: ), Kohske Takahashi [aut], Claus Wilke [aut] (ORCID: ), Kara Woo [aut] (ORCID: ), Hiroaki Yutani [aut] (ORCID: ), Dewey Dunnington [aut] (ORCID: ), Teun van den Brand [aut] (ORCID: ), Posit, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "ggthemes": { + "Package": "ggthemes", + "Version": "5.1.0", + "Source": "Repository", + "Title": "Extra Themes, Scales and Geoms for 'ggplot2'", + "Authors@R": "c(person(\"Jeffrey B.\", \"Arnold\", role = c(\"aut\", \"cre\"), email = \"jeffrey.arnold@gmail.com\", comment = \"\"), person(\"Gergely\", \"Daroczi\", role = \"ctb\"), person(\"Bo\", \"Werth\", role = \"ctb\"), person(\"Brian\", \"Weitzner\", role = \"ctb\"), person(\"Joshua\", \"Kunst\", role = \"ctb\"), person(\"Baptise\", \"Auguie\", role = \"ctb\"), person(\"Bob\", \"Rudis\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = c(\"ctb\"), comment = \"Code from the ggplot2 package.\"), person(\"Justin\", \"Talbot\", role = \"ctb\", comment = \"Code from the labeling package\"), person(\"Joshua\", \"London\", role = \"ctb\"))", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "ggplot2 (>= 3.0.0)", + "graphics", + "grid", + "lifecycle", + "methods", + "purrr", + "scales", + "stringr", + "tibble" + ], + "Suggests": [ + "dplyr", + "covr", + "extrafont", + "glue", + "knitr", + "lattice", + "lintr", + "maps", + "mapproj", + "pander", + "quantreg", + "rlang", + "rmarkdown", + "spelling", + "testthat (>= 3.2.0)", + "tidyr", + "vdiffr", + "withr" + ], + "Description": "Some extra themes, geoms, and scales for 'ggplot2'. Provides 'ggplot2' themes and scales that replicate the look of plots by Edward Tufte, Stephen Few, 'Fivethirtyeight', 'The Economist', 'Stata', 'Excel', and 'The Wall Street Journal', among others. Provides 'geoms' for Tufte's box plot and range frame.", + "License": "GPL-2", + "URL": "https://jrnold.github.io/ggthemes/, https://github.com/jrnold/ggthemes", + "BugReports": "https://github.com/jrnold/ggthemes/issues", + "RoxygenNote": "7.3.1", + "LazyData": "true", + "Language": "en-US", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Jeffrey B. Arnold [aut, cre] (), Gergely Daroczi [ctb], Bo Werth [ctb], Brian Weitzner [ctb], Joshua Kunst [ctb], Baptise Auguie [ctb], Bob Rudis [ctb], Hadley Wickham [ctb] (Code from the ggplot2 package.), Justin Talbot [ctb] (Code from the labeling package), Joshua London [ctb]", + "Maintainer": "Jeffrey B. Arnold ", + "Repository": "CRAN" + }, + "gh": { + "Package": "gh", + "Version": "1.5.0", + "Source": "Repository", + "Title": "'GitHub' 'API'", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"cre\", \"ctb\")), person(\"Jennifer\", \"Bryan\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Minimal client to access the 'GitHub' 'API'.", + "License": "MIT + file LICENSE", + "URL": "https://gh.r-lib.org/, https://github.com/r-lib/gh#readme", + "BugReports": "https://github.com/r-lib/gh/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.1)", + "gitcreds", + "glue", + "httr2 (>= 1.0.6)", + "ini", + "jsonlite", + "lifecycle", + "rlang (>= 1.0.0)" + ], + "Suggests": [ + "connectcreds", + "covr", + "knitr", + "rmarkdown", + "rprojroot", + "spelling", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-29", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [cre, ctb], Jennifer Bryan [aut], Hadley Wickham [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "gitcreds": { + "Package": "gitcreds", + "Version": "0.1.2", + "Source": "Repository", + "Title": "Query 'git' Credentials from 'R'", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "Query, set, delete credentials from the 'git' credential store. Manage 'GitHub' tokens and other 'git' credentials. This package is to be used by other packages that need to authenticate to 'GitHub' and/or other 'git' repositories.", + "License": "MIT + file LICENSE", + "URL": "https://gitcreds.r-lib.org/, https://github.com/r-lib/gitcreds", + "BugReports": "https://github.com/r-lib/gitcreds/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Suggests": [ + "codetools", + "covr", + "knitr", + "mockery", + "oskeyring", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1.9000", + "SystemRequirements": "git", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "glue": { + "Package": "glue", + "Version": "1.7.0", + "Source": "Repository", + "Title": "Interpreted String Literals", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "An implementation of interpreted string literals, inspired by Python's Literal String Interpolation and Docstrings and Julia's Triple-Quoted String Literals .", + "License": "MIT + file LICENSE", + "URL": "https://glue.tidyverse.org/, https://github.com/tidyverse/glue", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "methods" + ], + "Suggests": [ + "crayon", + "DBI (>= 1.2.0)", + "dplyr", + "knitr", + "magrittr", + "rlang", + "rmarkdown", + "RSQLite", + "testthat (>= 3.2.0)", + "vctrs (>= 0.3.0)", + "waldo (>= 0.3.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "bench, forcats, ggbeeswarm, ggplot2, R.utils, rprintf, tidyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3.9000", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (), Jennifer Bryan [aut, cre] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "gms": { + "Package": "gms", + "Version": "0.33.7", + "Source": "Repository", + "Type": "Package", + "Title": "'GAMS' Modularization Support Package", + "Date": "2026-03-10", + "Authors@R": "c(person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\"), role = c(\"aut\",\"cre\")), person(\"David\", \"Klein\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"aut\"), person(\"Anastasis\", \"Giannousakis\", role = \"aut\"), person(\"Felicitas\", \"Beier\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"aut\"), person(\"Johannes\", \"Koch\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"aut\"), person(\"Lavinia\", \"Baumstark\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"aut\"), person(\"Mika\", \"Pflüger\", role = \"aut\"), person(\"Oliver\", \"Richters\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\"), role = \"aut\"))", + "Description": "A collection of tools to create, use and maintain modularized model code written in the modeling language 'GAMS' (). Out-of-the-box 'GAMS' does not come with support for modularized model code. This package provides the tools necessary to convert a standard 'GAMS' model to a modularized one by introducing a modularized code structure together with a naming convention which emulates local environments. In addition, this package provides tools to monitor the compliance of the model code with modular coding guidelines.", + "Imports": [ + "dplyr", + "rlang", + "stringr", + "withr", + "yaml", + "filelock", + "stats" + ], + "Suggests": [ + "covr", + "curl", + "magclass", + "qgraph", + "testthat", + "callr" + ], + "URL": "https://github.com/pik-piam/gms, https://doi.org/10.5281/zenodo.4390032", + "BugReports": "https://github.com/pik-piam/gms/issues", + "License": "BSD_2_clause + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/Keywords": "tool", + "Config/Needs/website": "tidyverse/tidytemplate", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/gms", + "RemoteRef": "HEAD", + "RemoteSha": "68ecbd0d35c624d4d580f66db34e0795817854cd", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), David Klein [aut] (Potsdam Institute for Climate Impact Research), Anastasis Giannousakis [aut], Felicitas Beier [aut] (Potsdam Institute for Climate Impact Research), Johannes Koch [aut] (Potsdam Institute for Climate Impact Research), Lavinia Baumstark [aut] (Potsdam Institute for Climate Impact Research), Mika Pflüger [aut], Oliver Richters [aut] (Potsdam Institute for Climate Impact Research)", + "Maintainer": "Jan Philipp Dietrich " + }, + "goftest": { + "Package": "goftest", + "Version": "1.2-3", + "Source": "Repository", + "Type": "Package", + "Title": "Classical Goodness-of-Fit Tests for Univariate Distributions", + "Date": "2021-10-07", + "Authors@R": "c(person(\"Julian\", \"Faraway\", role = \"aut\"), person(\"George\", \"Marsaglia\", role = \"aut\"), person(\"John\", \"Marsaglia\", role = \"aut\"), person(\"Adrian\", \"Baddeley\", role = c(\"aut\", \"cre\"), email = \"Adrian.Baddeley@curtin.edu.au\"))", + "Depends": [ + "R (>= 3.3)" + ], + "Imports": [ + "stats" + ], + "Description": "Cramer-Von Mises and Anderson-Darling tests of goodness-of-fit for continuous univariate distributions, using efficient algorithms.", + "URL": "https://github.com/baddstats/goftest", + "BugReports": "https://github.com/baddstats/goftest/issues", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Author": "Julian Faraway [aut], George Marsaglia [aut], John Marsaglia [aut], Adrian Baddeley [aut, cre]", + "Maintainer": "Adrian Baddeley ", + "Repository": "CRAN" + }, + "googledrive": { + "Package": "googledrive", + "Version": "2.1.2", + "Source": "Repository", + "Title": "An Interface to Google Drive", + "Authors@R": "c( person(\"Lucy\", \"D'Agostino McGowan\", , role = \"aut\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage Google Drive files from R.", + "License": "MIT + file LICENSE", + "URL": "https://googledrive.tidyverse.org, https://github.com/tidyverse/googledrive", + "BugReports": "https://github.com/tidyverse/googledrive/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "gargle (>= 1.6.0)", + "glue (>= 1.4.2)", + "httr", + "jsonlite", + "lifecycle", + "magrittr", + "pillar (>= 1.9.0)", + "purrr (>= 1.0.1)", + "rlang (>= 1.0.2)", + "tibble (>= 2.0.0)", + "utils", + "uuid", + "vctrs (>= 0.3.0)", + "withr" + ], + "Suggests": [ + "curl", + "dplyr (>= 1.0.0)", + "knitr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.5)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lucy D'Agostino McGowan [aut], Jennifer Bryan [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "googlesheets4": { + "Package": "googlesheets4", + "Version": "1.1.2", + "Source": "Repository", + "Title": "Access Google Sheets using the Sheets API V4", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Interact with Google Sheets through the Sheets API v4 . \"API\" is an acronym for \"application programming interface\"; the Sheets API allows users to interact with Google Sheets programmatically, instead of via a web browser. The \"v4\" refers to the fact that the Sheets API is currently at version 4. This package can read and write both the metadata and the cell data in a Sheet.", + "License": "MIT + file LICENSE", + "URL": "https://googlesheets4.tidyverse.org, https://github.com/tidyverse/googlesheets4", + "BugReports": "https://github.com/tidyverse/googlesheets4/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "cli (>= 3.0.0)", + "curl", + "gargle (>= 1.6.0)", + "glue (>= 1.3.0)", + "googledrive (>= 2.1.0)", + "httr", + "ids", + "lifecycle", + "magrittr", + "methods", + "purrr", + "rematch2", + "rlang (>= 1.0.2)", + "tibble (>= 2.1.1)", + "utils", + "vctrs (>= 0.2.3)", + "withr" + ], + "Suggests": [ + "readr", + "rmarkdown", + "spelling", + "testthat (>= 3.1.7)" + ], + "ByteCompile": "true", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "goxygen": { + "Package": "goxygen", + "Version": "1.4.6", + "Source": "Repository", + "Type": "Package", + "Title": "In-Code Documentation for 'GAMS'", + "Date": "2025-04-10", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Kristine\", \"Karstens\", , \"karstens@pik-potsdam.de\", role = \"aut\"), person(\"David\", \"Klein\", , \"dklein@pik-potsdam.de\", role = \"aut\"), person(\"Lavinia\", \"Baumstark\", , \"lavinia@pik-potsdam.de\", role = \"aut\"), person(\"Falk\", \"Benke\", , \"benke@pik-potsdam.de\", role = \"aut\") )", + "Description": "A collection of tools which extract a model documentation from GAMS code and comments. In order to use the package you need to install pandoc first (see pandoc.org).", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/goxygen, https://doi.org/10.5281/zenodo.1411404", + "BugReports": "https://github.com/pik-piam/goxygen/issues", + "Imports": [ + "citation", + "gms (>= 0.26.3)", + "pander", + "stringi", + "withr", + "yaml" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/goxygen", + "RemoteRef": "HEAD", + "RemoteSha": "00c0b83aaa33f21ec6882314d7a3751bede3d10b", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre], Kristine Karstens [aut], David Klein [aut], Lavinia Baumstark [aut], Falk Benke [aut]", + "Maintainer": "Jan Philipp Dietrich " + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Authors@R": "c(person(\"Baptiste\", \"Auguie\", email = \"baptiste.auguie@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Anton\", \"Antonov\", email = \"tonytonov@gmail.com\", role = c(\"ctb\")))", + "License": "GPL (>= 2)", + "Title": "Miscellaneous Functions for \"Grid\" Graphics", + "Type": "Package", + "Description": "Provides a number of user-level functions to work with \"grid\" graphics, notably to arrange multiple grid-based plots on a page, and draw tables.", + "VignetteBuilder": "knitr", + "Imports": [ + "gtable", + "grid", + "grDevices", + "graphics", + "utils" + ], + "Suggests": [ + "ggplot2", + "egg", + "lattice", + "knitr", + "testthat" + ], + "RoxygenNote": "6.0.1", + "NeedsCompilation": "no", + "Author": "Baptiste Auguie [aut, cre], Anton Antonov [ctb]", + "Maintainer": "Baptiste Auguie ", + "Repository": "CRAN" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.6", + "Source": "Repository", + "Title": "Arrange 'Grobs' in Tables", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to make it easier to work with \"tables\" of 'grobs'. The 'gtable' package defines a 'gtable' grob class that specifies a grid along with a list of grobs and their placement in the grid. Further the package makes it easy to manipulate and combine 'gtable' objects so that complex compositions can be built up sequentially.", + "License": "MIT + file LICENSE", + "URL": "https://gtable.r-lib.org, https://github.com/r-lib/gtable", + "BugReports": "https://github.com/r-lib/gtable/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli", + "glue", + "grid", + "lifecycle", + "rlang (>= 1.1.0)", + "stats" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "profvis", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2024-10-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "gtools": { + "Package": "gtools", + "Version": "3.9.5", + "Source": "Repository", + "Title": "Various R Programming Tools", + "Description": "Functions to assist in R programming, including: - assist in developing, updating, and maintaining R and R packages ('ask', 'checkRVersion', 'getDependencies', 'keywords', 'scat'), - calculate the logit and inverse logit transformations ('logit', 'inv.logit'), - test if a value is missing, empty or contains only NA and NULL values ('invalid'), - manipulate R's .Last function ('addLast'), - define macros ('defmacro'), - detect odd and even integers ('odd', 'even'), - convert strings containing non-ASCII characters (like single quotes) to plain ASCII ('ASCIIfy'), - perform a binary search ('binsearch'), - sort strings containing both numeric and character components ('mixedsort'), - create a factor variable from the quantiles of a continuous variable ('quantcut'), - enumerate permutations and combinations ('combinations', 'permutation'), - calculate and convert between fold-change and log-ratio ('foldchange', 'logratio2foldchange', 'foldchange2logratio'), - calculate probabilities and generate random numbers from Dirichlet distributions ('rdirichlet', 'ddirichlet'), - apply a function over adjacent subsets of a vector ('running'), - modify the TCP_NODELAY ('de-Nagle') flag for socket objects, - efficient 'rbind' of data frames, even if the column names don't match ('smartbind'), - generate significance stars from p-values ('stars.pval'), - convert characters to/from ASCII codes ('asc', 'chr'), - convert character vector to ASCII representation ('ASCIIfy'), - apply title capitalization rules to a character vector ('capwords').", + "Authors@R": "c(person(\"Gregory R.\", \"Warnes\", role = \"aut\"), person(\"Ben\", \"Bolker\", role = c(\"aut\", \"cre\"), email = \"bolker@mcmaster.ca\", comment=c(ORCID=\"0000-0002-2127-0443\")), person(\"Thomas\", \"Lumley\", role = \"aut\"), person(\"Arni\", \"Magnusson\", role = \"aut\"), person(\"Bill\", \"Venables\", role = \"aut\"), person(\"Genei\", \"Ryodan\", role = \"aut\"), person(\"Steffen\", \"Moeller\", role = \"aut\"), person(\"Ian\", \"Wilson\", role = \"ctb\"), person(\"Mark\", \"Davis\", role = \"ctb\"), person(\"Nitin\", \"Jain\", role=\"ctb\"), person(\"Scott\", \"Chamberlain\", role = \"ctb\"))", + "License": "GPL-2", + "Depends": [ + "methods", + "stats", + "utils" + ], + "URL": "https://github.com/r-gregmisc/gtools", + "BugReports": "https://github.com/r-gregmisc/gtools/issues", + "Language": "en-US", + "Suggests": [ + "car", + "gplots", + "knitr", + "rstudioapi", + "SGP", + "taxize" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Gregory R. Warnes [aut], Ben Bolker [aut, cre] (), Thomas Lumley [aut], Arni Magnusson [aut], Bill Venables [aut], Genei Ryodan [aut], Steffen Moeller [aut], Ian Wilson [ctb], Mark Davis [ctb], Nitin Jain [ctb], Scott Chamberlain [ctb]", + "Maintainer": "Ben Bolker ", + "Repository": "CRAN" + }, + "haven": { + "Package": "haven", + "Version": "2.5.4", + "Source": "Repository", + "Title": "Import and Export 'SPSS', 'Stata' and 'SAS' Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Evan\", \"Miller\", role = c(\"aut\", \"cph\"), comment = \"Author of included ReadStat code\"), person(\"Danny\", \"Smith\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Import foreign statistical formats into R via the embedded 'ReadStat' C library, .", + "License": "MIT + file LICENSE", + "URL": "https://haven.tidyverse.org, https://github.com/tidyverse/haven, https://github.com/WizardMac/ReadStat", + "BugReports": "https://github.com/tidyverse/haven/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "forcats (>= 0.2.0)", + "hms", + "lifecycle", + "methods", + "readr (>= 0.1.0)", + "rlang (>= 0.4.0)", + "tibble", + "tidyselect", + "vctrs (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "crayon", + "fs", + "knitr", + "pillar (>= 1.4.0)", + "rmarkdown", + "testthat (>= 3.0.0)", + "utf8" + ], + "LinkingTo": [ + "cpp11" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "GNU make, zlib: zlib1g-dev (deb), zlib-devel (rpm)", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Evan Miller [aut, cph] (Author of included ReadStat code), Danny Smith [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "hdf5r": { + "Package": "hdf5r", + "Version": "1.3.11", + "Source": "Repository", + "Type": "Package", + "Title": "Interface to the 'HDF5' Binary Data Format", + "Authors@R": "c( person(\"Holger\", \"Hoefling\", email = \"hhoeflin@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Mario\", \"Annau\", email = \"mario.annau@gmail.com\", role = \"aut\"), person(\"Novartis Institute for BioMedical Research (NIBR)\", role = \"cph\") )", + "Description": "'HDF5' is a data model, library and file format for storing and managing large amounts of data. This package provides a nearly feature complete, object oriented wrapper for the 'HDF5' API using R6 classes. Additionally, functionality is added so that 'HDF5' objects behave very similar to their corresponding R counterparts.", + "URL": "https://hhoeflin.github.io/hdf5r/, https://github.com/hhoeflin/hdf5r/", + "BugReports": "https://github.com/hhoeflin/hdf5r/issues", + "License": "Apache License 2.0 | file LICENSE", + "Copyright": "For the hdf5r package: Novartis Institute for BioMedical Research Inc. For HDF5: see the HDF5_COPYRIGHTS file.", + "LazyLoad": "true", + "Depends": [ + "R (>= 3.2.2)", + "methods" + ], + "Imports": [ + "R6", + "bit64", + "utils" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "nycflights13", + "reshape2", + "formatR" + ], + "SystemRequirements": "HDF5 (>= 1.8.13)", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "RoxygenNote": "6.1.1.9000", + "Collate": "'Common_functions.R' 'Compound.R' 'H5constants.R' 'Helper_functions.R' 'Misc.R' 'R6Classes.R' 'R6Classes_H5A.R' 'R6Classes_H5D.R' 'R6Classes_H5File.R' 'R6Classes_H5Group.R' 'R6Classes_H5P.R' 'R6Classes_H5R.R' 'R6Classes_H5S.R' 'R6Classes_H5T.R' 'adapt_during_onLoad.R' 'convert.R' 'factor_ext.R' 'globalVariables.R' 'h5errorHandling.R' 'h5wrapper.R' 'hdf5r.R' 'high_level_UI.R' 'open_objs.R' 'zzz.R'", + "Author": "Holger Hoefling [aut, cre], Mario Annau [aut], Novartis Institute for BioMedical Research (NIBR) [cph]", + "Maintainer": "Holger Hoefling ", + "Repository": "CRAN" + }, + "here": { + "Package": "here", + "Version": "1.0.2", + "Source": "Repository", + "Title": "A Simpler Way to Find Your Files", + "Date": "2025-09-06", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Jennifer\", family = \"Bryan\", role = \"ctb\", email = \"jenny@rstudio.com\", comment = c(ORCID = \"0000-0002-6983-2759\")))", + "Description": "Constructs paths to your project's files. Declare the relative path of a file within your project with 'i_am()'. Use the 'here()' function as a drop-in replacement for 'file.path()', it will always locate the files relative to your project root.", + "License": "MIT + file LICENSE", + "URL": "https://here.r-lib.org/, https://github.com/r-lib/here", + "BugReports": "https://github.com/r-lib/here/issues", + "Imports": [ + "rprojroot (>= 2.1.0)" + ], + "Suggests": [ + "conflicted", + "covr", + "fs", + "knitr", + "palmerpenguins", + "plyr", + "readr", + "rlang", + "rmarkdown", + "testthat", + "uuid", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Jennifer Bryan [ctb] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "highr": { + "Package": "highr", + "Version": "0.12", + "Source": "Repository", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Yixuan\", \"Qiu\", role = \"aut\"), person(\"Christopher\", \"Gandrud\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\") )", + "Description": "Provides syntax highlighting for R source code. Currently it supports LaTeX and HTML output. Source code of other languages is supported via Andre Simon's highlight package ().", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "xfun (>= 0.18)" + ], + "Suggests": [ + "knitr", + "markdown", + "testit" + ], + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: ), Yixuan Qiu [aut], Christopher Gandrud [ctb], Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "hms": { + "Package": "hms", + "Version": "1.1.4", + "Source": "Repository", + "Title": "Pretty Time of Day", + "Date": "2025-10-11", + "Authors@R": "c( person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"R Consortium\", role = \"fnd\"), person(\"Posit Software, PBC\", role = \"fnd\", comment = c(ROR = \"03wc8by49\")) )", + "Description": "Implements an S3 class for storing and formatting time-of-day values, based on the 'difftime' class.", + "License": "MIT + file LICENSE", + "URL": "https://hms.tidyverse.org/, https://github.com/tidyverse/hms", + "BugReports": "https://github.com/tidyverse/hms/issues", + "Imports": [ + "cli", + "lifecycle", + "methods", + "pkgconfig", + "rlang (>= 1.0.2)", + "vctrs (>= 0.3.8)" + ], + "Suggests": [ + "crayon", + "lubridate", + "pillar (>= 1.1.0)", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), R Consortium [fnd], Posit Software, PBC [fnd] (ROR: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "htmlTable": { + "Package": "htmlTable", + "Version": "2.4.3", + "Source": "Repository", + "Title": "Advanced Tables for Markdown/HTML", + "Authors@R": "c( person(\"Max\", \"Gordon\", email = \"max@gforge.se\", role = c(\"aut\", \"cre\")), person(\"Stephen\", \"Gragg\", role=c(\"aut\")), person(\"Peter\", \"Konings\", role=c(\"aut\")))", + "Maintainer": "Max Gordon ", + "Description": "Tables with state-of-the-art layout elements such as row spanners, column spanners, table spanners, zebra striping, and more. While allowing advanced layout, the underlying css-structure is simple in order to maximize compatibility with common word processors. The package also contains a few text formatting functions that help outputting text compatible with HTML/LaTeX.", + "License": "GPL (>= 3)", + "URL": "https://gforge.se/packages/", + "BugReports": "https://github.com/gforge/htmlTable/issues", + "Biarch": "yes", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "stringr", + "knitr (>= 1.6)", + "magrittr (>= 1.5)", + "methods", + "checkmate", + "htmlwidgets", + "htmltools", + "rstudioapi (>= 0.6)" + ], + "Suggests": [ + "testthat", + "XML", + "xml2", + "Hmisc", + "rmarkdown", + "chron", + "lubridate", + "tibble", + "purrr", + "tidyselect", + "glue", + "rlang", + "tidyr (>= 0.7.2)", + "dplyr (>= 0.7.4)" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "VignetteBuilder": "knitr", + "RoxygenNote": "7.2.2", + "Author": "Max Gordon [aut, cre], Stephen Gragg [aut], Peter Konings [aut]", + "Repository": "CRAN" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.9", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for HTML", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Yihui\", \"Xie\", , \"yihui@posit.co\", role = \"aut\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools for HTML generation and output.", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools, https://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "Depends": [ + "R (>= 2.14.1)" + ], + "Imports": [ + "base64enc", + "digest", + "fastmap (>= 1.1.0)", + "grDevices", + "rlang (>= 1.0.0)", + "utils" + ], + "Suggests": [ + "Cairo", + "markdown", + "ragg", + "shiny", + "testthat", + "withr" + ], + "Enhances": [ + "knitr" + ], + "Config/Needs/check": "knitr", + "Config/Needs/website": "rstudio/quillt, bench", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R' 'html_print.R' 'htmltools-package.R' 'images.R' 'known_tags.R' 'selector.R' 'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Carson Sievert [aut, cre] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Winston Chang [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.6.4", + "Source": "Repository", + "Type": "Package", + "Title": "HTML Widgets for R", + "Authors@R": "c( person(\"Ramnath\", \"Vaidyanathan\", role = c(\"aut\", \"cph\")), person(\"Yihui\", \"Xie\", role = \"aut\"), person(\"JJ\", \"Allaire\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Carson\", \"Sievert\", , \"carson@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Kenton\", \"Russell\", role = c(\"aut\", \"cph\")), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A framework for creating HTML widgets that render in various contexts including the R console, 'R Markdown' documents, and 'Shiny' web applications.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/ramnathv/htmlwidgets", + "BugReports": "https://github.com/ramnathv/htmlwidgets/issues", + "Imports": [ + "grDevices", + "htmltools (>= 0.5.7)", + "jsonlite (>= 0.9.16)", + "knitr (>= 1.8)", + "rmarkdown", + "yaml" + ], + "Suggests": [ + "testthat" + ], + "Enhances": [ + "shiny (>= 1.1)" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Ramnath Vaidyanathan [aut, cph], Yihui Xie [aut], JJ Allaire [aut], Joe Cheng [aut], Carson Sievert [aut, cre] (), Kenton Russell [aut, cph], Ellis Hughes [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.6.16", + "Source": "Repository", + "Type": "Package", + "Title": "HTTP and WebSocket Server Library", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", \"fnd\", role = \"cph\"), person(\"Hector\", \"Corrada Bravo\", role = \"ctb\"), person(\"Jeroen\", \"Ooms\", role = \"ctb\"), person(\"Andrzej\", \"Krzemienski\", role = \"cph\", comment = \"optional.hpp\"), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file\"), person(\"Niels\", \"Provos\", role = \"cph\", comment = \"libuv subcomponent: tree.h\"), person(\"Internet Systems Consortium, Inc.\", role = \"cph\", comment = \"libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c\"), person(\"Alexander\", \"Chemeris\", role = \"cph\", comment = \"libuv subcomponent: stdint-msvc2008.h (from msinttypes)\"), person(\"Google, Inc.\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Sony Mobile Communcations AB\", role = \"cph\", comment = \"libuv subcomponent: pthread-fixes.c\"), person(\"Berkeley Software Design Inc.\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Kenneth\", \"MacKay\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016)\", role = \"cph\", comment = \"libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c\"), person(\"Steve\", \"Reid\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"James\", \"Brown\", role = \"aut\", comment = \"SHA-1 implementation\"), person(\"Bob\", \"Trower\", role = \"aut\", comment = \"base64 implementation\"), person(\"Alexander\", \"Peslyak\", role = \"aut\", comment = \"MD5 implementation\"), person(\"Trantor Standard Systems\", role = \"cph\", comment = \"base64 implementation\"), person(\"Igor\", \"Sysoev\", role = \"cph\", comment = \"http-parser\") )", + "Description": "Provides low-level socket and protocol support for handling HTTP and WebSocket requests directly from within R. It is primarily intended as a building block for other packages, rather than making it particularly easy to create complete web applications using httpuv alone. httpuv is built on top of the libuv and http-parser C libraries, both of which were developed by Joyent, Inc. (See LICENSE file for libuv and http-parser license information.)", + "License": "GPL (>= 2) | file LICENSE", + "URL": "https://github.com/rstudio/httpuv", + "BugReports": "https://github.com/rstudio/httpuv/issues", + "Depends": [ + "R (>= 2.15.1)" + ], + "Imports": [ + "later (>= 0.8.0)", + "promises", + "R6", + "Rcpp (>= 1.0.7)", + "utils" + ], + "Suggests": [ + "callr", + "curl", + "jsonlite", + "testthat", + "websocket" + ], + "LinkingTo": [ + "later", + "Rcpp" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make, zlib", + "Collate": "'RcppExports.R' 'httpuv.R' 'random_port.R' 'server.R' 'staticServer.R' 'static_paths.R' 'utils.R'", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Winston Chang [aut, cre], Posit, PBC fnd [cph], Hector Corrada Bravo [ctb], Jeroen Ooms [ctb], Andrzej Krzemienski [cph] (optional.hpp), libuv project contributors [cph] (libuv library, see src/libuv/AUTHORS file), Joyent, Inc. and other Node contributors [cph] (libuv library, see src/libuv/AUTHORS file; and http-parser library, see src/http-parser/AUTHORS file), Niels Provos [cph] (libuv subcomponent: tree.h), Internet Systems Consortium, Inc. [cph] (libuv subcomponent: inet_pton and inet_ntop, contained in src/libuv/src/inet.c), Alexander Chemeris [cph] (libuv subcomponent: stdint-msvc2008.h (from msinttypes)), Google, Inc. [cph] (libuv subcomponent: pthread-fixes.c), Sony Mobile Communcations AB [cph] (libuv subcomponent: pthread-fixes.c), Berkeley Software Design Inc. [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Kenneth MacKay [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Emergya (Cloud4all, FP7/2007-2013, grant agreement no 289016) [cph] (libuv subcomponent: android-ifaddrs.h, android-ifaddrs.c), Steve Reid [aut] (SHA-1 implementation), James Brown [aut] (SHA-1 implementation), Bob Trower [aut] (base64 implementation), Alexander Peslyak [aut] (MD5 implementation), Trantor Standard Systems [cph] (base64 implementation), Igor Sysoev [cph] (http-parser)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "httr": { + "Package": "httr", + "Version": "1.4.7", + "Source": "Repository", + "Title": "Tools for Working with URLs and HTTP", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Useful tools for working with HTTP organised by HTTP verbs (GET(), POST(), etc). Configuration functions make it easy to control additional request components (authenticate(), add_headers() and so on).", + "License": "MIT + file LICENSE", + "URL": "https://httr.r-lib.org/, https://github.com/r-lib/httr", + "BugReports": "https://github.com/r-lib/httr/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "curl (>= 5.0.2)", + "jsonlite", + "mime", + "openssl (>= 0.8)", + "R6" + ], + "Suggests": [ + "covr", + "httpuv", + "jpeg", + "knitr", + "png", + "readr", + "rmarkdown", + "testthat (>= 0.8.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "httr2": { + "Package": "httr2", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Perform HTTP Requests and Process the Responses", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Maximilian\", \"Girlich\", role = \"ctb\") )", + "Description": "Tools for creating and modifying HTTP requests, then performing them and processing the results. 'httr2' is a modern re-imagining of 'httr' that uses a pipe-based interface and solves more of the problems that API wrapping packages face.", + "License": "MIT + file LICENSE", + "URL": "https://httr2.r-lib.org, https://github.com/r-lib/httr2", + "BugReports": "https://github.com/r-lib/httr2/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.0)", + "curl (>= 6.4.0)", + "glue", + "lifecycle", + "magrittr", + "openssl", + "R6", + "rappdirs", + "rlang (>= 1.1.0)", + "vctrs (>= 0.6.3)", + "withr" + ], + "Suggests": [ + "askpass", + "bench", + "clipr", + "covr", + "docopt", + "httpuv", + "jose", + "jsonlite", + "knitr", + "later (>= 1.4.0)", + "nanonext", + "paws.common", + "promises", + "rmarkdown", + "testthat (>= 3.1.8)", + "tibble", + "webfakes (>= 1.4.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "resp-stream, req-perform", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd], Maximilian Girlich [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "hypergeo": { + "Package": "hypergeo", + "Version": "1.2-14", + "Source": "Repository", + "Title": "The Gauss Hypergeometric Function", + "Authors@R": "person(given=c(\"Robin\", \"K.\", \"S.\"), family=\"Hankin\", role = c(\"aut\",\"cre\"), email=\"hankin.robin@gmail.com\", comment = c(ORCID = \"0000-0001-5982-0415\"))", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "elliptic (>= 1.3-5)", + "contfrac (>= 1.1-9)", + "deSolve" + ], + "Description": "The Gaussian hypergeometric function for complex numbers.", + "Maintainer": "Robin K. S. Hankin ", + "License": "GPL-2", + "NeedsCompilation": "no", + "Repository": "CRAN", + "Author": "Robin K. S. Hankin [aut, cre] ()" + }, + "ids": { + "Package": "ids", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Generate Random Identifiers", + "Authors@R": "person(\"Rich\", \"FitzJohn\", role = c(\"aut\", \"cre\"), email = \"rich.fitzjohn@gmail.com\")", + "Description": "Generate random or human readable and pronounceable identifiers.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/richfitz/ids", + "BugReports": "https://github.com/richfitz/ids/issues", + "Imports": [ + "openssl", + "uuid" + ], + "Suggests": [ + "knitr", + "rcorpora", + "rmarkdown", + "testthat" + ], + "RoxygenNote": "6.0.1", + "VignetteBuilder": "knitr", + "NeedsCompilation": "no", + "Author": "Rich FitzJohn [aut, cre]", + "Maintainer": "Rich FitzJohn ", + "Repository": "CRAN" + }, + "igraph": { + "Package": "igraph", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Network Analysis and Visualization", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Tamás\", \"Nepusz\", , \"ntamas@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-1451-338X\")), person(\"Vincent\", \"Traag\", role = \"aut\", comment = c(ORCID = \"0000-0003-3170-3879\")), person(\"Szabolcs\", \"Horvát\", , \"szhorvat@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-3100-523X\")), person(\"Fabio\", \"Zanini\", , \"fabio.zanini@unsw.edu.au\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-8539\")), person(\"Daniel\", \"Noom\", role = \"aut\"), person(\"Kirill\", \"Müller\", , \"kirill@cynkra.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1416-3412\")), person(\"Maëlle\", \"Salmon\", role = \"ctb\"), person(\"Michael\", \"Antonov\", role = \"ctb\"), person(\"Chan Zuckerberg Initiative\", role = \"fnd\") )", + "Description": "Routines for simple graphs and network analysis. It can handle large graphs very well and provides functions for generating random and regular graphs, graph visualization, centrality methods and much more.", + "License": "GPL (>= 2)", + "URL": "https://r.igraph.org/, https://igraph.org/, https://igraph.discourse.group/", + "BugReports": "https://github.com/igraph/rigraph/issues", + "Depends": [ + "methods", + "R (>= 3.5.0)" + ], + "Imports": [ + "cli", + "graphics", + "grDevices", + "lifecycle", + "magrittr", + "Matrix", + "pkgconfig (>= 2.0.0)", + "rlang", + "stats", + "utils", + "vctrs" + ], + "Suggests": [ + "ape (>= 5.7-0.1)", + "callr", + "decor", + "digest", + "igraphdata", + "knitr", + "rgl", + "rmarkdown", + "scales", + "stats4", + "tcltk", + "testthat", + "vdiffr", + "withr" + ], + "Enhances": [ + "graph" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/build": "roxygen2, devtools, irlba, pkgconfig, igraph/igraph.r2cdocs, moodymudskipper/devtag", + "Config/Needs/coverage": "covr", + "Config/Needs/website": "readr", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "vs-es, scan, vs-operators, weakref, watts.strogatz.game", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "libxml2 (optional), glpk (>= 4.57, optional)", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut] (), Tamás Nepusz [aut] (), Vincent Traag [aut] (), Szabolcs Horvát [aut] (), Fabio Zanini [aut] (), Daniel Noom [aut], Kirill Müller [aut, cre] (), Maëlle Salmon [ctb], Michael Antonov [ctb], Chan Zuckerberg Initiative [fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "ini": { + "Package": "ini", + "Version": "0.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "Read and Write '.ini' Files", + "Date": "2018-05-19", + "Author": "David Valentim Dias", + "Maintainer": "David Valentim Dias ", + "Description": "Parse simple '.ini' configuration files to an structured list. Users can manipulate this resulting list with lapply() functions. This same structured list can be used to write back to file after modifications.", + "License": "GPL-3", + "URL": "https://github.com/dvdscripter/ini", + "BugReports": "https://github.com/dvdscripter/ini/issues", + "LazyData": "FALSE", + "RoxygenNote": "6.0.1", + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "isoband": { + "Package": "isoband", + "Version": "0.2.7", + "Source": "Repository", + "Title": "Generate Isolines and Isobands from Regularly Spaced Elevation Grids", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Claus O.\", \"Wilke\", , \"wilke@austin.utexas.edu\", role = \"aut\", comment = c(\"Original author\", ORCID = \"0000-0002-7470-9261\")), person(\"Thomas Lin\", \"Pedersen\", , \"thomasp85@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-5147-4711\")) )", + "Description": "A fast C++ implementation to generate contour lines (isolines) and contour polygons (isobands) from regularly spaced grids containing elevation data.", + "License": "MIT + file LICENSE", + "URL": "https://isoband.r-lib.org", + "BugReports": "https://github.com/r-lib/isoband/issues", + "Imports": [ + "grid", + "utils" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "magick", + "microbenchmark", + "rmarkdown", + "sf", + "testthat", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "C++11", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (), Claus O. Wilke [aut] (Original author, ), Thomas Lin Pedersen [aut] ()", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.14", + "Source": "Repository", + "Type": "Package", + "Title": "Provides Iterator Construct", + "Authors@R": "c(person(\"Folashade\", \"Daniel\", role=\"cre\", email=\"fdaniel@microsoft.com\"), person(\"Revolution\", \"Analytics\", role=c(\"aut\", \"cph\")), person(\"Steve\", \"Weston\", role=\"aut\"))", + "Description": "Support for iterators, which allow a programmer to traverse through all the elements of a vector, list, or other collection of data.", + "URL": "https://github.com/RevolutionAnalytics/iterators", + "Depends": [ + "R (>= 2.5.0)", + "utils" + ], + "Suggests": [ + "RUnit", + "foreach" + ], + "License": "Apache License (== 2.0)", + "NeedsCompilation": "no", + "Author": "Folashade Daniel [cre], Revolution Analytics [aut, cph], Steve Weston [aut]", + "Maintainer": "Folashade Daniel ", + "Repository": "CRAN" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Authors@R": "c( person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"), person(family = \"RStudio\", role = \"cph\"), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\") )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown'). Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": [ + "htmltools" + ], + "Suggests": [ + "testthat" + ], + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (), Joe Cheng [aut], RStudio [cph], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "2.0.0", + "Source": "Repository", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": [ + "methods" + ], + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Duncan\", \"Temple Lang\", role = \"ctb\"), person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://jeroen.r-universe.dev/jsonlite https://arxiv.org/abs/1403.2805", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical data and the web. Offers simple, flexible tools for working with JSON in R, and is particularly powerful for building pipelines and interacting with a web API. The implementation is based on the mapping described in the vignette (Ooms, 2014). In addition to converting JSON data from/to R objects, 'jsonlite' contains functions to stream, validate, and prettify JSON data. The unit tests included with the package verify that all edge cases are encoded and decoded consistently for use with dynamic data in systems and applications.", + "Suggests": [ + "httr", + "vctrs", + "testthat", + "knitr", + "rmarkdown", + "R.rsp", + "sf" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "CRAN" + }, + "kableExtra": { + "Package": "kableExtra", + "Version": "1.4.0", + "Source": "Repository", + "Type": "Package", + "Title": "Construct Complex Table with 'kable' and Pipe Syntax", + "Authors@R": "c( person('Hao', 'Zhu', email = 'haozhu233@gmail.com', role = c('aut', 'cre'), comment = c(ORCID = '0000-0002-3386-6076')), person('Thomas', 'Travison', role = 'ctb'), person('Timothy', 'Tsai', role = 'ctb'), person('Will', 'Beasley', email = 'wibeasley@hotmail.com', role = 'ctb'), person('Yihui', 'Xie', email = 'xie@yihui.name', role = 'ctb'), person('GuangChuang', 'Yu', email = 'guangchuangyu@gmail.com', role = 'ctb'), person('Stéphane', 'Laurent', role = 'ctb'), person('Rob', 'Shepherd', role = 'ctb'), person('Yoni', 'Sidi', role = 'ctb'), person('Brian', 'Salzer', role = 'ctb'), person('George', 'Gui', role = 'ctb'), person('Yeliang', 'Fan', role = 'ctb'), person('Duncan', 'Murdoch', role = 'ctb'), person('Vincent', 'Arel-Bundock', role = 'ctb'), person('Bill', 'Evans', role = 'ctb') )", + "Description": "Build complex HTML or 'LaTeX' tables using 'kable()' from 'knitr' and the piping syntax from 'magrittr'. Function 'kable()' is a light weight table generator coming from 'knitr'. This package simplifies the way to manipulate the HTML or 'LaTeX' codes generated by 'kable()' and allows users to construct complex tables and customize styles using a readable syntax.", + "License": "MIT + file LICENSE", + "URL": "http://haozhu233.github.io/kableExtra/, https://github.com/haozhu233/kableExtra", + "BugReports": "https://github.com/haozhu233/kableExtra/issues", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "knitr (>= 1.33)", + "magrittr", + "stringr (>= 1.0)", + "xml2 (>= 1.1.1)", + "rmarkdown (>= 1.6.0)", + "scales", + "viridisLite", + "stats", + "grDevices", + "htmltools", + "rstudioapi", + "tools", + "digest", + "graphics", + "svglite" + ], + "Suggests": [ + "testthat", + "magick", + "tinytex", + "formattable", + "sparkline", + "webshot2" + ], + "Config/testthat/edition": "3", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Language": "en-US", + "NeedsCompilation": "no", + "Author": "Hao Zhu [aut, cre] (), Thomas Travison [ctb], Timothy Tsai [ctb], Will Beasley [ctb], Yihui Xie [ctb], GuangChuang Yu [ctb], Stéphane Laurent [ctb], Rob Shepherd [ctb], Yoni Sidi [ctb], Brian Salzer [ctb], George Gui [ctb], Yeliang Fan [ctb], Duncan Murdoch [ctb], Vincent Arel-Bundock [ctb], Bill Evans [ctb]", + "Maintainer": "Hao Zhu ", + "Repository": "CRAN" + }, + "knitr": { + "Package": "knitr", + "Version": "1.51", + "Source": "Repository", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Abhraneel\", \"Sarma\", role = \"ctb\"), person(\"Adam\", \"Vogt\", role = \"ctb\"), person(\"Alastair\", \"Andrew\", role = \"ctb\"), person(\"Alex\", \"Zvoleff\", role = \"ctb\"), person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"), person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"), person(\"Aron\", \"Atkins\", role = \"ctb\"), person(\"Aaron\", \"Wolen\", role = \"ctb\"), person(\"Ashley\", \"Manton\", role = \"ctb\"), person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")), person(\"Ben\", \"Baumer\", role = \"ctb\"), person(\"Brian\", \"Diggs\", role = \"ctb\"), person(\"Brian\", \"Zhang\", role = \"ctb\"), person(\"Bulat\", \"Yapparov\", role = \"ctb\"), person(\"Cassio\", \"Pereira\", role = \"ctb\"), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person(\"David\", \"Hall\", role = \"ctb\"), person(\"David\", \"Hugh-Jones\", role = \"ctb\"), person(\"David\", \"Robinson\", role = \"ctb\"), person(\"Doug\", \"Hemken\", role = \"ctb\"), person(\"Duncan\", \"Murdoch\", role = \"ctb\"), person(\"Elio\", \"Campitelli\", role = \"ctb\"), person(\"Ellis\", \"Hughes\", role = \"ctb\"), person(\"Emily\", \"Riederer\", role = \"ctb\"), person(\"Fabian\", \"Hirschmann\", role = \"ctb\"), person(\"Fitch\", \"Simeon\", role = \"ctb\"), person(\"Forest\", \"Fang\", role = \"ctb\"), person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"), person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"), person(\"Gregoire\", \"Detrez\", role = \"ctb\"), person(\"Hadley\", \"Wickham\", role = \"ctb\"), person(\"Hao\", \"Zhu\", role = \"ctb\"), person(\"Heewon\", \"Jeon\", role = \"ctb\"), person(\"Henrik\", \"Bengtsson\", role = \"ctb\"), person(\"Hiroaki\", \"Yutani\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Hodges\", \"Daniel\", role = \"ctb\"), person(\"Jacob\", \"Bien\", role = \"ctb\"), person(\"Jake\", \"Burkhead\", role = \"ctb\"), person(\"James\", \"Manton\", role = \"ctb\"), person(\"Jared\", \"Lander\", role = \"ctb\"), person(\"Jason\", \"Punyon\", role = \"ctb\"), person(\"Javier\", \"Luraschi\", role = \"ctb\"), person(\"Jeff\", \"Arnold\", role = \"ctb\"), person(\"Jenny\", \"Bryan\", role = \"ctb\"), person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"), person(\"Jeremy\", \"Stephens\", role = \"ctb\"), person(\"Jim\", \"Hester\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Johannes\", \"Ranke\", role = \"ctb\"), person(\"John\", \"Honaker\", role = \"ctb\"), person(\"John\", \"Muschelli\", role = \"ctb\"), person(\"Jonathan\", \"Keane\", role = \"ctb\"), person(\"JJ\", \"Allaire\", role = \"ctb\"), person(\"Johan\", \"Toloe\", role = \"ctb\"), person(\"Jonathan\", \"Sidi\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Julien\", \"Barnier\", role = \"ctb\"), person(\"Kaiyin\", \"Zhong\", role = \"ctb\"), person(\"Kamil\", \"Slowikowski\", role = \"ctb\"), person(\"Karl\", \"Forner\", role = \"ctb\"), person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"), person(\"Kirill\", \"Mueller\", role = \"ctb\"), person(\"Kohske\", \"Takahashi\", role = \"ctb\"), person(\"Lorenz\", \"Walthert\", role = \"ctb\"), person(\"Lucas\", \"Gallindo\", role = \"ctb\"), person(\"Marius\", \"Hofert\", role = \"ctb\"), person(\"Martin\", \"Modrák\", role = \"ctb\"), person(\"Michael\", \"Chirico\", role = \"ctb\"), person(\"Michael\", \"Friendly\", role = \"ctb\"), person(\"Michal\", \"Bojanowski\", role = \"ctb\"), person(\"Michel\", \"Kuhlmann\", role = \"ctb\"), person(\"Miller\", \"Patrick\", role = \"ctb\"), person(\"Nacho\", \"Caballero\", role = \"ctb\"), person(\"Nick\", \"Salkowski\", role = \"ctb\"), person(\"Niels Richard\", \"Hansen\", role = \"ctb\"), person(\"Noam\", \"Ross\", role = \"ctb\"), person(\"Obada\", \"Mahdi\", role = \"ctb\"), person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")), person(\"Pedro\", \"Faria\", role = \"ctb\"), person(\"Qiang\", \"Li\", role = \"ctb\"), person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"), person(\"Rodrigo\", \"Copetti\", role = \"ctb\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Ruaridh\", \"Williamson\", role = \"ctb\"), person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")), person(\"Scott\", \"Kostyshak\", role = \"ctb\"), person(\"Sebastian\", \"Meyer\", role = \"ctb\"), person(\"Sietse\", \"Brouwer\", role = \"ctb\"), person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"), person(\"Sylvain\", \"Rousseau\", role = \"ctb\"), person(\"Taiyun\", \"Wei\", role = \"ctb\"), person(\"Thibaut\", \"Assus\", role = \"ctb\"), person(\"Thibaut\", \"Lamadon\", role = \"ctb\"), person(\"Thomas\", \"Leeper\", role = \"ctb\"), person(\"Tim\", \"Mastny\", role = \"ctb\"), person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = \"ctb\"), person(\"Viktoras\", \"Veitas\", role = \"ctb\"), person(\"Weicheng\", \"Zhu\", role = \"ctb\"), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Zachary\", \"Foster\", role = \"ctb\"), person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides a general-purpose tool for dynamic report generation in R using Literate Programming techniques.", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "evaluate (>= 0.15)", + "highr (>= 0.11)", + "methods", + "tools", + "xfun (>= 0.52)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "bslib", + "DBI (>= 0.4-1)", + "digest", + "formatR", + "gifski", + "gridSVG", + "htmlwidgets (>= 0.7)", + "jpeg", + "JuliaCall (>= 0.11.1)", + "magick", + "litedown", + "markdown (>= 1.3)", + "otel", + "otelsdk", + "png", + "ragg", + "reticulate (>= 1.4)", + "rgl (>= 0.95.1201)", + "rlang", + "rmarkdown", + "sass", + "showtext", + "styler (>= 1.2.0)", + "targets (>= 0.6.0)", + "testit", + "tibble", + "tikzDevice (>= 0.10)", + "tinytex (>= 0.56)", + "webshot", + "rstudioapi", + "svglite" + ], + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "litedown, knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or reStructuredText require Pandoc (http://pandoc.org). The function rst2pdf() requires rst2pdf (https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'citation.R' 'hooks-html.R' 'plot.R' 'utils.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R' 'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R' 'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R' 'hooks-textile.R' 'hooks.R' 'otel.R' 'output.R' 'package.R' 'pandoc.R' 'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R' 'template.R' 'utils-conversion.R' 'utils-rd2html.R' 'utils-string.R' 'utils-sweave.R' 'utils-upload.R' 'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre] (ORCID: , URL: https://yihui.org), Abhraneel Sarma [ctb], Adam Vogt [ctb], Alastair Andrew [ctb], Alex Zvoleff [ctb], Amar Al-Zubaidi [ctb], Andre Simon [ctb] (the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de), Aron Atkins [ctb], Aaron Wolen [ctb], Ashley Manton [ctb], Atsushi Yasumoto [ctb] (ORCID: ), Ben Baumer [ctb], Brian Diggs [ctb], Brian Zhang [ctb], Bulat Yapparov [ctb], Cassio Pereira [ctb], Christophe Dervieux [ctb], David Hall [ctb], David Hugh-Jones [ctb], David Robinson [ctb], Doug Hemken [ctb], Duncan Murdoch [ctb], Elio Campitelli [ctb], Ellis Hughes [ctb], Emily Riederer [ctb], Fabian Hirschmann [ctb], Fitch Simeon [ctb], Forest Fang [ctb], Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty), Garrick Aden-Buie [ctb], Gregoire Detrez [ctb], Hadley Wickham [ctb], Hao Zhu [ctb], Heewon Jeon [ctb], Henrik Bengtsson [ctb], Hiroaki Yutani [ctb], Ian Lyttle [ctb], Hodges Daniel [ctb], Jacob Bien [ctb], Jake Burkhead [ctb], James Manton [ctb], Jared Lander [ctb], Jason Punyon [ctb], Javier Luraschi [ctb], Jeff Arnold [ctb], Jenny Bryan [ctb], Jeremy Ashkenas [ctb, cph] (the CSS file at inst/misc/docco-classic.css), Jeremy Stephens [ctb], Jim Hester [ctb], Joe Cheng [ctb], Johannes Ranke [ctb], John Honaker [ctb], John Muschelli [ctb], Jonathan Keane [ctb], JJ Allaire [ctb], Johan Toloe [ctb], Jonathan Sidi [ctb], Joseph Larmarange [ctb], Julien Barnier [ctb], Kaiyin Zhong [ctb], Kamil Slowikowski [ctb], Karl Forner [ctb], Kevin K. Smith [ctb], Kirill Mueller [ctb], Kohske Takahashi [ctb], Lorenz Walthert [ctb], Lucas Gallindo [ctb], Marius Hofert [ctb], Martin Modrák [ctb], Michael Chirico [ctb], Michael Friendly [ctb], Michal Bojanowski [ctb], Michel Kuhlmann [ctb], Miller Patrick [ctb], Nacho Caballero [ctb], Nick Salkowski [ctb], Niels Richard Hansen [ctb], Noam Ross [ctb], Obada Mahdi [ctb], Pavel N. Krivitsky [ctb] (ORCID: ), Pedro Faria [ctb], Qiang Li [ctb], Ramnath Vaidyanathan [ctb], Richard Cotton [ctb], Robert Krzyzanowski [ctb], Rodrigo Copetti [ctb], Romain Francois [ctb], Ruaridh Williamson [ctb], Sagiru Mati [ctb] (ORCID: ), Scott Kostyshak [ctb], Sebastian Meyer [ctb], Sietse Brouwer [ctb], Simon de Bernard [ctb], Sylvain Rousseau [ctb], Taiyun Wei [ctb], Thibaut Assus [ctb], Thibaut Lamadon [ctb], Thomas Leeper [ctb], Tim Mastny [ctb], Tom Torsney-Weir [ctb], Trevor Davis [ctb], Viktoras Veitas [ctb], Weicheng Zhu [ctb], Wush Wu [ctb], Zachary Foster [ctb], Zhian N. Kamvar [ctb] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Axis Labeling", + "Date": "2023-08-29", + "Author": "Justin Talbot,", + "Maintainer": "Nuno Sempere ", + "Description": "Functions which provide a range of axis labeling algorithms.", + "License": "MIT + file LICENSE | Unlimited", + "Collate": "'labeling.R'", + "NeedsCompilation": "no", + "Imports": [ + "stats", + "graphics" + ], + "Repository": "CRAN" + }, + "later": { + "Package": "later", + "Version": "1.4.4", + "Source": "Repository", + "Type": "Package", + "Title": "Utilities for Scheduling Functions to Execute Later with Event Loops", + "Authors@R": "c( person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\"), person(\"Evan\", \"Nemerson\", role = c(\"ctb\", \"cph\"), comment = \"TinyCThread library, https://tinycthread.github.io/\") )", + "Description": "Executes arbitrary R or C functions some time after the current time, after the R execution stack has emptied. The functions are scheduled in an event loop.", + "License": "MIT + file LICENSE", + "URL": "https://later.r-lib.org, https://github.com/r-lib/later", + "BugReports": "https://github.com/r-lib/later/issues", + "Imports": [ + "Rcpp (>= 0.12.9)", + "rlang" + ], + "Suggests": [ + "knitr", + "nanonext", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-07-18", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Winston Chang [aut], Joe Cheng [aut], Charlie Gao [aut, cre] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: ), Marcus Geelnard [ctb, cph] (TinyCThread library, https://tinycthread.github.io/), Evan Nemerson [ctb, cph] (TinyCThread library, https://tinycthread.github.io/)", + "Maintainer": "Charlie Gao ", + "Repository": "CRAN" + }, + "lattice": { + "Package": "lattice", + "Version": "0.21-9", + "Source": "Repository", + "Date": "2023-09-30", + "Priority": "recommended", + "Title": "Trellis Graphics for R", + "Authors@R": "c(person(\"Deepayan\", \"Sarkar\", role = c(\"aut\", \"cre\"), email = \"deepayan.sarkar@r-project.org\", comment = c(ORCID = \"0000-0003-4107-1553\")), person(\"Felix\", \"Andrews\", role = \"ctb\"), person(\"Kevin\", \"Wright\", role = \"ctb\", comment = \"documentation\"), person(\"Neil\", \"Klepeis\", role = \"ctb\"), person(\"Johan\", \"Larsson\", role = \"ctb\", comment = \"miscellaneous improvements\"), person(\"Zhijian (Jason)\", \"Wen\", role = \"cph\", comment = \"filled contour code\"), person(\"Paul\", \"Murrell\", role = \"ctb\", email = \"paul@stat.auckland.ac.nz\"), person(\"Stefan\", \"Eng\", role = \"ctb\", comment = \"violin plot improvements\"), person(\"Achim\", \"Zeileis\", role = \"ctb\", comment = \"modern colors\") )", + "Description": "A powerful and elegant high-level data visualization system inspired by Trellis graphics, with an emphasis on multivariate data. Lattice is sufficient for typical graphics needs, and is also flexible enough to handle most nonstandard requirements. See ?Lattice for an introduction.", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "KernSmooth", + "MASS", + "latticeExtra", + "colorspace" + ], + "Imports": [ + "grid", + "grDevices", + "graphics", + "stats", + "utils" + ], + "Enhances": [ + "chron" + ], + "LazyLoad": "yes", + "LazyData": "yes", + "License": "GPL (>= 2)", + "URL": "https://lattice.r-forge.r-project.org/", + "BugReports": "https://github.com/deepayan/lattice/issues", + "NeedsCompilation": "yes", + "Author": "Deepayan Sarkar [aut, cre] (), Felix Andrews [ctb], Kevin Wright [ctb] (documentation), Neil Klepeis [ctb], Johan Larsson [ctb] (miscellaneous improvements), Zhijian (Jason) Wen [cph] (filled contour code), Paul Murrell [ctb], Stefan Eng [ctb] (violin plot improvements), Achim Zeileis [ctb] (modern colors)", + "Maintainer": "Deepayan Sarkar ", + "Repository": "CRAN" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Title": "Lazy (Non-Standard) Evaluation", + "Description": "An alternative approach to non-standard evaluation using formulas. Provides a full implementation of LISP style 'quasiquotation', making it easier to generate code with other code.", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", ,\"hadley@rstudio.com\", c(\"aut\", \"cre\")), person(\"RStudio\", role = \"cph\") )", + "License": "GPL-3", + "LazyData": "true", + "Depends": [ + "R (>= 3.1.0)" + ], + "Suggests": [ + "knitr", + "rmarkdown (>= 0.2.65)", + "testthat", + "covr" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "6.1.1", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Manage the Life Cycle of your Package Functions", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Manage the life cycle of your exported functions with shared conventions, documentation badges, and user-friendly deprecation warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lintr (>= 3.1.0)", + "rmarkdown", + "testthat (>= 3.0.1)", + "tibble", + "tidyverse", + "tools", + "vctrs", + "withr", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, usethis", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "linprog": { + "Package": "linprog", + "Version": "0.9-4", + "Source": "Repository", + "Date": "2022-03-09", + "Title": "Linear Programming / Optimization", + "Author": "Arne Henningsen", + "Maintainer": "Arne Henningsen ", + "Depends": [ + "R (>= 2.4.0)", + "lpSolve" + ], + "Description": "Can be used to solve Linear Programming / Linear Optimization problems by using the simplex algorithm.", + "License": "GPL (>= 2)", + "URL": "http://linprog.r-forge.r-project.org/", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "lintr": { + "Package": "lintr", + "Version": "3.3.0-1", + "Source": "Repository", + "Title": "A 'Linter' for R Code", + "Authors@R": "c( person(\"Jim\", \"Hester\", , role = \"aut\"), person(\"Florent\", \"Angly\", role = \"aut\", comment = c(GitHub = \"fangly\")), person(\"Russ\", \"Hyde\", role = \"aut\"), person(\"Michael\", \"Chirico\", email = \"michaelchirico4@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0787-087X\")), person(\"Kun\", \"Ren\", role = \"aut\"), person(\"Alexander\", \"Rosenstock\", role = \"aut\", comment = c(GitHub = \"AshesITR\")), person(\"Indrajeet\", \"Patil\", email = \"patilindrajeet.science@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(\"Hugo\", \"Gruson\", role = \"aut\", comment = c(ORCID = \"0000-0002-4094-1476\")) )", + "Description": "Checks adherence to a given style, syntax errors and possible semantic issues. Supports on the fly checking of R code edited with 'RStudio IDE', 'Emacs', 'Vim', 'Sublime Text', 'Atom' and 'Visual Studio Code'.", + "License": "MIT + file LICENSE", + "URL": "https://lintr.r-lib.org, https://github.com/r-lib/lintr", + "BugReports": "https://github.com/r-lib/lintr/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "backports (>= 1.5.0)", + "cli (>= 3.4.0)", + "codetools", + "digest", + "glue", + "knitr", + "rex", + "stats", + "utils", + "xfun", + "xml2 (>= 1.0.0)", + "xmlparsedata (>= 1.0.5)" + ], + "Suggests": [ + "bookdown", + "cyclocomp", + "jsonlite", + "patrick (>= 0.2.0)", + "rlang", + "rmarkdown", + "rstudioapi (>= 0.2)", + "testthat (>= 3.2.1)", + "tibble", + "tufte", + "withr (>= 2.5.0)" + ], + "Enhances": [ + "data.table" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/Needs/development": "pkgload, testthat, patrick", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Collate": "'make_linter_from_xpath.R' 'xp_utils.R' 'utils.R' 'AAA.R' 'T_and_F_symbol_linter.R' 'absolute_path_linter.R' 'actions.R' 'addins.R' 'all_equal_linter.R' 'any_duplicated_linter.R' 'any_is_na_linter.R' 'assignment_linter.R' 'backport_linter.R' 'boolean_arithmetic_linter.R' 'brace_linter.R' 'cache.R' 'class_equals_linter.R' 'coalesce_linter.R' 'commas_linter.R' 'commented_code_linter.R' 'comparison_negation_linter.R' 'condition_call_linter.R' 'condition_message_linter.R' 'conjunct_test_linter.R' 'consecutive_assertion_linter.R' 'consecutive_mutate_linter.R' 'cyclocomp_linter.R' 'declared_functions.R' 'deprecated.R' 'download_file_linter.R' 'duplicate_argument_linter.R' 'empty_assignment_linter.R' 'equals_na_linter.R' 'exclude.R' 'expect_comparison_linter.R' 'expect_identical_linter.R' 'expect_length_linter.R' 'expect_lint.R' 'expect_named_linter.R' 'expect_not_linter.R' 'expect_null_linter.R' 'expect_s3_class_linter.R' 'expect_s4_class_linter.R' 'expect_true_false_linter.R' 'expect_type_linter.R' 'extract.R' 'fixed_regex_linter.R' 'for_loop_index_linter.R' 'function_argument_linter.R' 'function_left_parentheses_linter.R' 'function_return_linter.R' 'get_source_expressions.R' 'ids_with_token.R' 'if_not_else_linter.R' 'if_switch_linter.R' 'ifelse_censor_linter.R' 'implicit_assignment_linter.R' 'implicit_integer_linter.R' 'indentation_linter.R' 'infix_spaces_linter.R' 'inner_combine_linter.R' 'is_lint_level.R' 'is_numeric_linter.R' 'keyword_quote_linter.R' 'length_levels_linter.R' 'length_test_linter.R' 'lengths_linter.R' 'library_call_linter.R' 'line_length_linter.R' 'lint.R' 'linter_tag_docs.R' 'linter_tags.R' 'lintr-deprecated.R' 'lintr-package.R' 'list2df_linter.R' 'list_comparison_linter.R' 'literal_coercion_linter.R' 'make_linter_from_regex.R' 'matrix_apply_linter.R' 'methods.R' 'missing_argument_linter.R' 'missing_package_linter.R' 'namespace.R' 'namespace_linter.R' 'nested_ifelse_linter.R' 'nested_pipe_linter.R' 'nonportable_path_linter.R' 'shared_constants.R' 'nrow_subset_linter.R' 'numeric_leading_zero_linter.R' 'nzchar_linter.R' 'object_length_linter.R' 'object_name_linter.R' 'object_overwrite_linter.R' 'object_usage_linter.R' 'one_call_pipe_linter.R' 'outer_negation_linter.R' 'package_hooks_linter.R' 'paren_body_linter.R' 'paste_linter.R' 'path_utils.R' 'pipe_call_linter.R' 'pipe_consistency_linter.R' 'pipe_continuation_linter.R' 'pipe_return_linter.R' 'print_linter.R' 'quotes_linter.R' 'redundant_equals_linter.R' 'redundant_ifelse_linter.R' 'regex_subset_linter.R' 'rep_len_linter.R' 'repeat_linter.R' 'return_linter.R' 'routine_registration_linter.R' 'sample_int_linter.R' 'scalar_in_linter.R' 'semicolon_linter.R' 'seq_linter.R' 'settings.R' 'settings_utils.R' 'sort_linter.R' 'source_utils.R' 'spaces_inside_linter.R' 'spaces_left_parentheses_linter.R' 'sprintf_linter.R' 'stopifnot_all_linter.R' 'string_boundary_linter.R' 'strings_as_factors_linter.R' 'system_file_linter.R' 'terminal_close_linter.R' 'todo_comment_linter.R' 'trailing_blank_lines_linter.R' 'trailing_whitespace_linter.R' 'tree_utils.R' 'undesirable_function_linter.R' 'undesirable_operator_linter.R' 'unnecessary_concatenation_linter.R' 'unnecessary_lambda_linter.R' 'unnecessary_nesting_linter.R' 'unnecessary_placeholder_linter.R' 'unreachable_code_linter.R' 'unused_import_linter.R' 'use_lintr.R' 'vector_logic_linter.R' 'which_grepl_linter.R' 'whitespace_linter.R' 'with.R' 'with_id.R' 'xml_nodes_to_lints.R' 'xml_utils.R' 'yoda_test_linter.R' 'zzz.R'", + "Language": "en-US", + "NeedsCompilation": "no", + "Author": "Jim Hester [aut], Florent Angly [aut] (GitHub: fangly), Russ Hyde [aut], Michael Chirico [aut, cre] (ORCID: ), Kun Ren [aut], Alexander Rosenstock [aut] (GitHub: AshesITR), Indrajeet Patil [aut] (ORCID: ), Hugo Gruson [aut] (ORCID: )", + "Maintainer": "Michael Chirico ", + "Repository": "CRAN" + }, + "lmom": { + "Package": "lmom", + "Version": "3.2", + "Source": "Repository", + "Date": "2024-09-29", + "Title": "L-Moments", + "Author": "J. R. M. Hosking [aut, cre]", + "Maintainer": "J. R. M. Hosking ", + "Authors@R": "person(given = c(\"J.\", \"R.\", \"M.\"), family = \"Hosking\", role = c(\"aut\", \"cre\"), email = \"jrmhosking@gmail.com\")", + "Description": "Functions related to L-moments: computation of L-moments and trimmed L-moments of distributions and data samples; parameter estimation; L-moment ratio diagram; plot vs. quantiles of an extreme-value distribution.", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "stats", + "graphics" + ], + "License": "Common Public License Version 1.0", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "lmomco": { + "Package": "lmomco", + "Version": "2.5.3", + "Source": "Repository", + "Type": "Package", + "Title": "L-Moments, Censored L-Moments, Trimmed L-Moments, L-Comoments, and Many Distributions", + "Depends": [ + "R (>= 3.5.0)", + "utils" + ], + "Imports": [ + "goftest", + "Lmoments", + "MASS" + ], + "Suggests": [ + "copBasic" + ], + "Date": "2025-09-21", + "Authors@R": "person(given = \"William\", family = \"Asquith\", role = c(\"aut\", \"cre\"), email = \"william.asquith@ttu.edu\", comment = c(ORCID = \"0000-0002-7400-1861\"))", + "Description": "Extensive functions for Lmoments (LMs) and probability-weighted moments (PWMs), distribution parameter estimation, LMs for distributions, LM ratio diagrams, multivariate Lcomoments, and asymmetric (asy) trimmed LMs (TLMs). Maximum likelihood and maximum product spacings estimation are available. Right-tail and left-tail LM censoring by threshold or indicator variable are available. LMs of residual (resid) and reversed (rev) residual life are implemented along with 13 quantile operators for reliability analyses. Exact analytical bootstrap estimates of order statistics, LMs, and LM var-covars are available. Harri-Coble Tau34-squared Normality Test is available. Distributions with L, TL, and added (+) support for right-tail censoring (RC) encompass: Asy Exponential (Exp) Power [L], Asy Triangular [L], Cauchy [TL], Eta-Mu [L], Exp. [L], Gamma [L], Generalized (Gen) Exp Poisson [L], Gen Extreme Value [L], Gen Lambda [L, TL], Gen Logistic [L], Gen Normal [L], Gen Pareto [L+RC, TL], Govindarajulu [L], Gumbel [L], Kappa [L], Kappa-Mu [L], Kumaraswamy [L], Laplace [L], Linear Mean Residual Quantile Function [L], Normal [L], 3p log-Normal [L], Pearson Type III [L], Polynomial Density-Quantile 3 and 4 [L], Rayleigh [L], Rev-Gumbel [L+RC], Rice [L], Singh Maddala [L], Slash [TL], 3p Student t [L], Truncated Exponential [L], Wakeby [L], and Weibull [L].", + "Maintainer": "William Asquith ", + "Repository": "CRAN", + "License": "GPL", + "URL": "https://www.amazon.com/dp/1463508417/", + "NeedsCompilation": "no", + "LazyData": "true", + "Author": "William Asquith [aut, cre] (ORCID: )" + }, + "lpSolve": { + "Package": "lpSolve", + "Version": "5.6.23", + "Source": "Repository", + "Title": "Interface to 'Lp_solve' v. 5.5 to Solve Linear/Integer Programs", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"cre\"), person(\"Michel\", \"Berkelaar\", role = \"aut\") )", + "Description": "Lp_solve is freely available (under LGPL 2) software for solving linear, integer and mixed integer programs. In this implementation we supply a \"wrapper\" function in C and some R functions that solve general linear/integer problems, assignment problems, and transportation problems. This version calls lp_solve version 5.5.", + "License": "LGPL-2", + "URL": "https://github.com/gaborcsardi/lpSolve", + "BugReports": "https://github.com/gaborcsardi/lpSolve/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [cre], Michel Berkelaar [aut]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "lpjclass": { + "Package": "lpjclass", + "Version": "1.19.7", + "Source": "Repository", + "Type": "Package", + "Title": "LPJ Class Functions", + "Date": "2023-06-27", + "Authors@R": "c(person(\"Katharina\", \"Waha\", role = \"aut\"), person(\"Benjamin\", \"Bodirsky\", role = \"aut\"), person(\"Susanne\", \"Roliniski\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", role = c(\"aut\",\"cre\")), person(\"Marcos\", \"P. P. Alves\", role = \"aut\"))", + "Description": "Package containing the LPJ-Object-Class together with relevant functions and methods.", + "Depends": [ + "R (>= 2.10)", + "methods" + ], + "Imports": [ + "magclass", + "utils" + ], + "Suggests": [ + "covr" + ], + "License": "LGPL-3 | file LICENSE", + "LazyData": "no", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Repository": "https://pik-piam.r-universe.dev", + "RemoteUrl": "https://github.com/pik-piam/lpjclass", + "RemoteRef": "HEAD", + "RemoteSha": "f94f0a3504c3b09c6dff49a64547aaed023edbe2", + "NeedsCompilation": "no", + "Author": "Katharina Waha [aut], Benjamin Bodirsky [aut], Susanne Roliniski [aut], Jan Philipp Dietrich [aut, cre], Marcos P. P. Alves [aut]", + "Maintainer": "Jan Philipp Dietrich " + }, + "lpjmlkit": { + "Package": "lpjmlkit", + "Version": "1.8.0", + "Source": "Repository", + "Type": "Package", + "Title": "Toolkit for Basic LPJmL Handling", + "Authors@R": "c( person(\"Jannes\", \"Breier\", , \"jannesbr@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-9055-6904\")), person(\"Sebastian\",\"Ostberg\", , \"ostberg@pik-potsdam.de\", role = \"aut\", comment = c(ORCID = \"0000-0002-2368-7015\")), person(\"Stephen Björn\", \"Wirth\", , \"wirth@pik-potsdam.de\", role = \"aut\", comment = c(ORCID = \"0000-0003-3090-3318\")), person(\"Sara\",\"Minoli\", , \"minoli@pik-potsdam.de\", role = \"aut\", comment = c(ORCID = \"0000-0001-7920-3107\")), person(\"Fabian\", \"Stenzel\", , \"stenzel@pik-potsdam.de\", role = \"aut\", comment = c(ORCID = \"0000-0002-5109-0048\")), person(\"David\",\"Hötten\", , \"davidho@pik-potsdam.de\", role = c(\"aut\")), person(\"Christoph\", \"Müller\", , \"cmueller@pik-potsdam.de\", role = \"aut\", comment = c(ORCID = \"0000-0002-9491-3550\")) )", + "Description": "A collection of basic functions to facilitate the work with the Dynamic Global Vegetation Model (DGVM) Lund-Potsdam-Jena managed Land (LPJmL) hosted at the Potsdam Institute for Climate Impact Research (PIK). It provides functions for performing LPJmL simulations, as well as reading, processing and writing model-related data such as inputs and outputs or configuration files.", + "License": "AGPL-3", + "RoxygenNote": "7.3.3", + "Roxygen": "list(markdown = TRUE, r6 = TRUE)", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.5.0)" + ], + "URL": "https://github.com/PIK-LPJmL/lpjmlkit, https://doi.org/10.5281/zenodo.7773134", + "BugReports": "https://github.com/PIK-LPJmL/lpjmlkit/issues", + "Imports": [ + "magrittr", + "dplyr", + "processx", + "tibble", + "jsonlite", + "doParallel", + "foreach", + "utils", + "methods", + "abind", + "rlang", + "withr", + "grDevices", + "cli", + "stringi" + ], + "Suggests": [ + "rmarkdown", + "knitr", + "testthat (>= 3.0.0)", + "terra", + "raster", + "reshape2", + "maps", + "sf", + "ncdf4", + "CFtime", + "R6" + ], + "Config/testthat/edition": "3", + "VignetteBuilder": "knitr", + "Date": "2026-02-24", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/PIK-LPJmL/lpjmlkit", + "RemoteRef": "HEAD", + "RemoteSha": "c2ca8e1206b58586068d869972cfe0a1336ceb86", + "NeedsCompilation": "no", + "Author": "Jannes Breier [aut, cre] (), Sebastian Ostberg [aut] (), Stephen Björn Wirth [aut] (), Sara Minoli [aut] (), Fabian Stenzel [aut] (), David Hötten [aut], Christoph Müller [aut] ()", + "Maintainer": "Jannes Breier " + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.9.4", + "Source": "Repository", + "Type": "Package", + "Title": "Make Dealing with Dates a Little Easier", + "Authors@R": "c( person(\"Vitalie\", \"Spinu\", , \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Garrett\", \"Grolemund\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Davis\", \"Vaughan\", role = \"ctb\"), person(\"Ian\", \"Lyttle\", role = \"ctb\"), person(\"Imanuel\", \"Costigan\", role = \"ctb\"), person(\"Jason\", \"Law\", role = \"ctb\"), person(\"Doug\", \"Mitarotonda\", role = \"ctb\"), person(\"Joseph\", \"Larmarange\", role = \"ctb\"), person(\"Jonathan\", \"Boiser\", role = \"ctb\"), person(\"Chel Hee\", \"Lee\", role = \"ctb\") )", + "Maintainer": "Vitalie Spinu ", + "Description": "Functions to work with date-times and time-spans: fast and user friendly parsing of date-time data, extraction and updating of components of a date-time (years, months, days, hours, minutes, and seconds), algebraic manipulation on date-time and time-span objects. The 'lubridate' package has a consistent and memorable syntax that makes working with dates easy and fun.", + "License": "GPL (>= 2)", + "URL": "https://lubridate.tidyverse.org, https://github.com/tidyverse/lubridate", + "BugReports": "https://github.com/tidyverse/lubridate/issues", + "Depends": [ + "methods", + "R (>= 3.2)" + ], + "Imports": [ + "generics", + "timechange (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 2.1.0)", + "vctrs (>= 0.6.5)" + ], + "Enhances": [ + "chron", + "data.table", + "timeDate", + "tis", + "zoo" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "SystemRequirements": "C++11, A system with zoneinfo data (e.g. /usr/share/zoneinfo). On Windows the zoneinfo included with R is used.", + "Collate": "'Dates.r' 'POSIXt.r' 'util.r' 'parse.r' 'timespans.r' 'intervals.r' 'difftimes.r' 'durations.r' 'periods.r' 'accessors-date.R' 'accessors-day.r' 'accessors-dst.r' 'accessors-hour.r' 'accessors-minute.r' 'accessors-month.r' 'accessors-quarter.r' 'accessors-second.r' 'accessors-tz.r' 'accessors-week.r' 'accessors-year.r' 'am-pm.r' 'time-zones.r' 'numeric.r' 'coercion.r' 'constants.r' 'cyclic_encoding.r' 'data.r' 'decimal-dates.r' 'deprecated.r' 'format_ISO8601.r' 'guess.r' 'hidden.r' 'instants.r' 'leap-years.r' 'ops-addition.r' 'ops-compare.r' 'ops-division.r' 'ops-integer-division.r' 'ops-m+.r' 'ops-modulo.r' 'ops-multiplication.r' 'ops-subtraction.r' 'package.r' 'pretty.r' 'round.r' 'stamp.r' 'tzdir.R' 'update.r' 'vctrs.R' 'zzz.R'", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Garrett Grolemund [aut], Hadley Wickham [aut], Davis Vaughan [ctb], Ian Lyttle [ctb], Imanuel Costigan [ctb], Jason Law [ctb], Doug Mitarotonda [ctb], Joseph Larmarange [ctb], Jonathan Boiser [ctb], Chel Hee Lee [ctb]", + "Repository": "CRAN" + }, + "lucode2": { + "Package": "lucode2", + "Version": "0.53.2", + "Source": "Repository", + "Type": "Package", + "Title": "Code Manipulation and Analysis Tools", + "Date": "2026-03-11", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\")), person(\"Pascal\", \"Sauer\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"David\", \"Klein\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Anastasis\", \"Giannousakis\", role = \"aut\"), person(\"Markus\", \"Bonsch\", role = \"aut\"), person(\"Benjamin Leon\", \"Bodirsky\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Lavinia\", \"Baumstark\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Oliver\", \"Richters\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Mika\", \"Pflüger\", role = \"aut\"), person(\"Patrick\", \"Rein\", , \"patrick.rein@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0001-9454-8381\")) )", + "Description": "A collection of tools which allow to manipulate and analyze code.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/lucode2, https://doi.org/10.5281/zenodo.4389418", + "BugReports": "https://github.com/pik-piam/lucode2/issues", + "Imports": [ + "callr", + "citation (>= 0.11.3)", + "data.table", + "desc", + "devtools", + "dplyr", + "lintr (>= 3.1.0)", + "rlang", + "tools", + "usethis (>= 2.1.0)", + "withr", + "yaml" + ], + "Suggests": [ + "covr", + "gdx", + "gdxrrw", + "gert", + "ggplot2", + "knitr", + "lusweave", + "magclass", + "poorman", + "renv", + "rmarkdown", + "styler", + "testthat" + ], + "Config/Keywords": "tool", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "checkRequiredPackages, updateRepo", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/lucode2", + "RemoteRef": "HEAD", + "RemoteSha": "31ade813c5a3e9e8974fd6c6595214333469d574", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), Pascal Sauer [aut] (Potsdam Institute for Climate Impact Research), David Klein [aut] (Potsdam Institute for Climate Impact Research), Anastasis Giannousakis [aut], Markus Bonsch [aut], Benjamin Leon Bodirsky [aut] (Potsdam Institute for Climate Impact Research), Lavinia Baumstark [aut] (Potsdam Institute for Climate Impact Research), Oliver Richters [aut] (Potsdam Institute for Climate Impact Research), Mika Pflüger [aut], Patrick Rein [aut] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Jan Philipp Dietrich " + }, + "luplot": { + "Package": "luplot", + "Version": "4.1.4", + "Source": "Repository", + "Type": "Package", + "Title": "Landuse Plot Library", + "Date": "2026-01-14", + "Authors@R": "c( person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\"), person(\"Michael\", \"Krause\", , \"krause@pik-potsdam.de\", role = \"aut\"), person(\"Miodrag\", \"Stevanovic\", , \"miodrag@pik-potsdam.de\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\"), person(\"Isabelle\", \"Weindl\", , \"weindl@pik-potsdam.de\", role = \"aut\"), person(\"Lavinia\", \"Baumstark\", , \"baumstark@pik-potsdam.de\", role = \"aut\"), person(\"David\", \"Klein\", , \"klein@pik-potsdam.de\", role = \"aut\"), person(\"Susanne\", \"Rolinski\", , \"rolinski@pik-potsdam.de\", role = \"aut\"), person(\"Xiaoxi\", \"Wang\", , \"wang@pik-potsdam.de\", role = \"aut\"), person(\"David\", \"Chen\", , \"davidch@pik-potsdam.de\", role = \"aut\"), person(\"Pascal\", \"Sauer\", , \"pascal.sauer@pik-potsdam.de\", role = \"aut\") )", + "Maintainer": "Benjamin Bodirsky ", + "Description": "Some useful functions to plot data such as a map plot function for MAgPIE objects.", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/luplot", + "Depends": [ + "magclass", + "R (>= 2.15.1)" + ], + "Imports": [ + "data.table", + "ggplot2", + "graphics", + "grDevices", + "gridExtra", + "lusweave", + "mip", + "mstools (>= 0.6.0)", + "quitte", + "RColorBrewer", + "reshape2", + "rlang", + "utils" + ], + "Suggests": [ + "covr", + "rworldmap (>= 1.3.8)", + "lemon" + ], + "Encoding": "UTF-8", + "LazyData": "no", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/luplot.git", + "RemoteRef": "HEAD", + "RemoteSha": "c5fe40c38d42f26c794475a8ed9d268d02a04288", + "NeedsCompilation": "no", + "Author": "Benjamin Leon Bodirsky [aut, cre], Jan Philipp Dietrich [aut], Michael Krause [aut], Miodrag Stevanovic [aut], Florian Humpenoeder [aut], Isabelle Weindl [aut], Lavinia Baumstark [aut], David Klein [aut], Susanne Rolinski [aut], Xiaoxi Wang [aut], David Chen [aut], Pascal Sauer [aut]" + }, + "luscale": { + "Package": "luscale", + "Version": "3.1.5", + "Source": "Repository", + "Type": "Package", + "Date": "2026-02-12", + "Title": "PIK Landuse Group Data Scaling Tools", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = \"aut\"), person(\"Markus\", \"Bonsch\", role = \"aut\"), person(\"Patrick, von Jeetze\", role = \"aut\"), person(\"Ulrich\", \"Kreidenweiss\", role = \"aut\"), person(\"Roman Julius\", \"Hennig\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\") )", + "Description": "A collection of tools which allow to aggregate and disaggregate data in various ways.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/luscale, https://doi.org/10.5281/zenodo.1158584", + "BugReports": "https://github.com/pik-piam/luscale/issues", + "Depends": [ + "magclass", + "methods", + "R (>= 2.10.0)" + ], + "Imports": [ + "madrat", + "spam", + "utils" + ], + "Suggests": [ + "covr" + ], + "Encoding": "UTF-8", + "LazyData": "no", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/luscale", + "RemoteRef": "HEAD", + "RemoteSha": "a608f7d425b797f0b61f08ee2933b81a1813c9d2", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre], Benjamin Leon Bodirsky [aut], Markus Bonsch [aut], Patrick, von Jeetze [aut], Ulrich Kreidenweiss [aut], Roman Julius Hennig [aut], Florian Humpenoeder [aut]", + "Maintainer": "Jan Philipp Dietrich " + }, + "lusweave": { + "Package": "lusweave", + "Version": "1.46.5", + "Source": "Repository", + "Type": "Package", + "Title": "Sweave/Knitr Utilities", + "Date": "2025-07-16", + "Authors@R": "c( person(\"Markus\", \"Bonsch\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"David\", \"Klein\", , \"dklein@pik-potsdam.de\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\") )", + "Description": "Set of tools which simplify the usage of SWeave/Knitr in R and allow to easily create PDF files from within R.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/lusweave, https://doi.org/10.5281/zenodo.1158594", + "BugReports": "https://github.com/pik-piam/lusweave/issues", + "Depends": [ + "methods", + "R (>= 2.10.0)" + ], + "Imports": [ + "knitr (>= 1.38)", + "withr", + "xtable" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "LazyData": "no", + "RoxygenNote": "7.3.2", + "Config/testthat/edition": "3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/lusweave", + "RemoteRef": "HEAD", + "RemoteSha": "271ad4eda26c50e13b85e1bdd27a981327a73a1a", + "NeedsCompilation": "no", + "Author": "Markus Bonsch [aut], Jan Philipp Dietrich [aut, cre], David Klein [aut], Florian Humpenoeder [aut]", + "Maintainer": "Jan Philipp Dietrich " + }, + "madrat": { + "Package": "madrat", + "Version": "3.36.1", + "Source": "Repository", + "Type": "Package", + "Title": "May All Data be Reproducible and Transparent (MADRaT) *", + "Date": "2026-03-19", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\")), person(\"Pascal\", \"Sauer\", , \"pascal.sauer@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-6856-8239\")), person(\"Lavinia\", \"Baumstark\", , \"lavinia@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Stephen\", \"Wirth\", , \"wirth@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Anastasis\", \"Giannousakis\", , \"giannou@pik-potsdam.de\", role = \"aut\"), person(\"Renato\", \"Rodrigues\", , \"Renato.Rodrigues@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Debbora\", \"Leip\", , \"leip@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Michael\", \"Crawford\", , \"crawford@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Ulrich\", \"Kreidenweis\", , \"kreidenweis@pik-potsdam.de\", role = \"aut\"), person(\"David\", \"Klein\", , \"dklein@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Patrick\", \"Rein\", , \"patrick.rein@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0001-9454-8381\")) )", + "Description": "Provides a framework which should improve reproducibility and transparency in data processing. It provides functionality such as automatic meta data creation and management, rudimentary quality management, data caching, work-flow management and data aggregation. * The title is a wish not a promise. By no means we expect this package to deliver everything what is needed to achieve full reproducibility and transparency, but we believe that it supports efforts in this direction.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/madrat, https://doi.org/10.5281/zenodo.1115490", + "BugReports": "https://github.com/pik-piam/madrat/issues", + "Depends": [ + "magclass (>= 7.2.0)", + "R (>= 2.10.0)" + ], + "Imports": [ + "callr", + "digest", + "filelock (>= 1.0.3)", + "igraph (>= 2.1.1)", + "Matrix", + "methods", + "pkgload", + "renv", + "stringi", + "tools", + "utils", + "withr", + "yaml" + ], + "Suggests": [ + "covr", + "ggplot2", + "graphics", + "grDevices", + "knitr", + "rmarkdown", + "terra", + "testthat", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/Keywords": "tool", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/madrat", + "RemoteRef": "HEAD", + "RemoteSha": "508ed326aa8e11b42e3ad9cd514b381815b94939", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), Pascal Sauer [aut] (Potsdam Institute for Climate Impact Research, ), Lavinia Baumstark [aut] (Potsdam Institute for Climate Impact Research), Stephen Wirth [aut] (Potsdam Institute for Climate Impact Research), Anastasis Giannousakis [aut], Renato Rodrigues [aut] (Potsdam Institute for Climate Impact Research), Benjamin Leon Bodirsky [aut] (Potsdam Institute for Climate Impact Research), Debbora Leip [aut] (Potsdam Institute for Climate Impact Research), Michael Crawford [aut] (Potsdam Institute for Climate Impact Research), Ulrich Kreidenweis [aut], David Klein [aut] (Potsdam Institute for Climate Impact Research), Patrick Rein [aut] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Jan Philipp Dietrich " + }, + "magclass": { + "Package": "magclass", + "Version": "7.4.2", + "Source": "Repository", + "Type": "Package", + "Title": "Data Class and Tools for Handling Spatial-Temporal Data", + "Date": "2026-03-12", + "Authors@R": "c( person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\")), person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Markus\", \"Bonsch\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Stephen\", \"Bi\", role = \"aut\"), person(\"Kristine\", \"Karstens\", , \"karstens@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Debbora\", \"Leip\", , \"leip@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Pascal\", \"Sauer\", , \"pascal.sauer@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-6856-8239\")), person(\"Lavinia\", \"Baumstark\", , \"lavinia@pik-potsdam.de\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Christoph\", \"Bertram\", , \"bertram@pik-potsdam.de\", role = \"ctb\"), person(\"Anastasis\", \"Giannousakis\", , \"giannou@pik-potsdam.de\", role = \"ctb\"), person(\"David\", \"Klein\", , \"dklein@pik-potsdam.de\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Ina\", \"Neher\", role = \"ctb\"), person(\"Michaja\", \"Pehl\", , \"pehl@pik-potsdam.de\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Anselm\", \"Schultes\", role = \"ctb\"), person(\"Miodrag\", \"Stevanovic\", , \"miodrag@pik-potsdam.de\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Xiaoxi\", \"Wang\", , \"wang@pik-potsdam.de\", role = \"ctb\"), person(\"Felicitas\", \"Beier\", , \"beier@pik-potsdam.de\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Mika\", \"Pflüger\", role = \"ctb\"), person(\"Oliver\", \"Richters\", role = \"ctb\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\")), person(\"Patrick\", \"Rein\", , \"patrick.rein@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0001-9454-8381\")) )", + "Description": "Data class for increased interoperability working with spatial-temporal data together with corresponding functions and methods (conversions, basic calculations and basic data manipulation). The class distinguishes between spatial, temporal and other dimensions to facilitate the development and interoperability of tools build for it. Additional features are name-based addressing of data and internal consistency checks (e.g. checking for the right data order in calculations).", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/magclass, https://doi.org/10.5281/zenodo.1158580", + "BugReports": "https://github.com/pik-piam/magclass/issues", + "Depends": [ + "methods", + "R (>= 2.10.0)" + ], + "Imports": [ + "abind", + "data.table", + "rlang", + "stats" + ], + "Suggests": [ + "covr", + "ggplot2", + "knitr", + "lpjmlkit", + "ncdf4", + "pkgconfig", + "quitte", + "raster", + "rmarkdown", + "terra", + "testthat (>= 3.1.5)", + "tibble", + "withr" + ], + "VignetteBuilder": "knitr", + "Additional_repositories": "https://pik-piam.r-universe.dev", + "Config/Keywords": "tool", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/magclass", + "RemoteRef": "HEAD", + "RemoteSha": "ec800f96393490f13b3af96be067fd517696e4d1", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre] (Potsdam Institute for Climate Impact Research, ), Benjamin Leon Bodirsky [aut] (Potsdam Institute for Climate Impact Research), Markus Bonsch [aut], Florian Humpenoeder [aut] (Potsdam Institute for Climate Impact Research), Stephen Bi [aut], Kristine Karstens [aut] (Potsdam Institute for Climate Impact Research), Debbora Leip [aut] (Potsdam Institute for Climate Impact Research), Pascal Sauer [aut] (Potsdam Institute for Climate Impact Research, ), Lavinia Baumstark [ctb] (Potsdam Institute for Climate Impact Research), Christoph Bertram [ctb], Anastasis Giannousakis [ctb], David Klein [ctb] (Potsdam Institute for Climate Impact Research), Ina Neher [ctb], Michaja Pehl [ctb] (Potsdam Institute for Climate Impact Research), Anselm Schultes [ctb], Miodrag Stevanovic [ctb] (Potsdam Institute for Climate Impact Research), Xiaoxi Wang [ctb], Felicitas Beier [ctb] (Potsdam Institute for Climate Impact Research), Mika Pflüger [ctb], Oliver Richters [ctb] (Potsdam Institute for Climate Impact Research), Patrick Rein [aut] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Jan Philipp Dietrich " + }, + "magic": { + "Package": "magic", + "Version": "1.6-1", + "Source": "Repository", + "Title": "Create and Investigate Magic Squares", + "Authors@R": "person(given=c(\"Robin\", \"K. S.\"), family=\"Hankin\", role = c(\"aut\",\"cre\"), email=\"hankin.robin@gmail.com\", comment = c(ORCID = \"0000-0001-5982-0415\"))", + "Depends": [ + "R (>= 2.10)", + "abind" + ], + "Description": "A collection of functions for the manipulation and analysis of arbitrarily dimensioned arrays. The original motivation for the package was the development of efficient, vectorized algorithms for the creation and investigation of magic squares and high-dimensional magic hypercubes.", + "Maintainer": "Robin K. S. Hankin ", + "License": "GPL-2", + "URL": "https://github.com/RobinHankin/magic", + "BugReports": "https://github.com/RobinHankin/magic/issues", + "NeedsCompilation": "no", + "Author": "Robin K. S. Hankin [aut, cre] ()", + "Repository": "CRAN" + }, + "magpie4": { + "Package": "magpie4", + "Version": "2.72.2", + "Source": "Repository", + "Type": "Package", + "Title": "MAgPIE outputs R package for MAgPIE version 4.x", + "Date": "2026-03-25", + "Authors@R": "c( person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\"), person(\"Miodrag\", \"Stevanovic\", , \"miodrag@pik-potsdam.de\", role = \"aut\"), person(\"Isabelle\", \"Weindl\", , \"weindl@pik-potsdam.de\", role = \"aut\"), person(\"Kristine\", \"Karstens\", , \"karstens@pik-potsdam.de\", role = \"aut\"), person(\"Xiaoxi\", \"Wang\", , \"wang@pik-potsdam.de\", role = \"aut\"), person(\"Abhijeet\", \"Mishra\", , \"mishra@pik-potsdam.de\", role = \"aut\"), person(\"Felicitas\", \"Beier\", , \"beier@pik-potsdam.de\", role = \"aut\"), person(\"Jannes\", \"Breier\", , \"breier@pik-potsdam.de\", role = \"aut\"), person(\"Amsalu Woldie\", \"Yalew\", , \"yalew@pik-potsdam.de\", role = \"aut\"), person(\"David\", \"Chen\", , \"David.Chen@pik-potsdam.de\", role = \"aut\"), person(\"Anne\", \"Biewald\", role = \"aut\"), person(\"Stephen\", \"Wirth\", , \"wirth@pik-potsdam.de\", role = \"aut\"), person(\"Patrick\", \"von Jeetze\", , \"vjeetze@pik-potsdam.de\", role = \"aut\"), person(\"Debbora\", \"Leip\", , \"leip@pik-potsdam.de\", role = \"aut\"), person(\"Michael\", \"Crawford\", , \"crawford@pik-potsdam.de\", role = \"aut\"), person(\"Marcos\", \"Alves\", , \"pedrosa@pik-potsdam.de\", role = \"aut\"), person(\"Pascal\", \"Sauer\", role = \"aut\"), person(\"Markus\", \"Bonsch\", role = \"ctb\"), person(\"Singh\", \"Vartika\", role = \"ctb\"), person(\"Patrick\", \"Rein\", , \"patrick.rein@pik-potsdam.de\", role = \"aut\") )", + "Description": "Common output routines for extracting results from the MAgPIE framework (versions 4.x).", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/magpie4, https://doi.org/10.5281/zenodo.1158582", + "BugReports": "https://github.com/pik-piam/magpie4/issues", + "Depends": [ + "magclass (>= 2.40)", + "R (>= 3.5.0)" + ], + "Imports": [ + "dplyr", + "gdx2 (>= 0.1.6)", + "gms", + "luplot", + "luscale", + "lusweave", + "madrat (>= 3.10.0)", + "magpiesets", + "methods", + "memoise", + "mip", + "mstools (>= 0.12.1)", + "nonparaeff", + "piamutils", + "reshape2", + "rlang", + "R.utils", + "rworldmap (>= 1.3.8)", + "stats", + "stringr", + "utils", + "tidyr", + "GDPuc" + ], + "Suggests": [ + "covr", + "filelock", + "FRACTION", + "ncdf4", + "terra", + "testthat (>= 3.3.2)", + "withr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "fullReport", + "Config/Needs/website": "tidyverse/tidytemplate", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/magpie4", + "RemoteRef": "HEAD", + "RemoteSha": "9847d8762cd1b9d5101c43a1ebdd6a0514f5259d", + "NeedsCompilation": "no", + "Author": "Benjamin Leon Bodirsky [aut, cre], Florian Humpenoeder [aut], Jan Philipp Dietrich [aut], Miodrag Stevanovic [aut], Isabelle Weindl [aut], Kristine Karstens [aut], Xiaoxi Wang [aut], Abhijeet Mishra [aut], Felicitas Beier [aut], Jannes Breier [aut], Amsalu Woldie Yalew [aut], David Chen [aut], Anne Biewald [aut], Stephen Wirth [aut], Patrick von Jeetze [aut], Debbora Leip [aut], Michael Crawford [aut], Marcos Alves [aut], Pascal Sauer [aut], Markus Bonsch [ctb], Singh Vartika [ctb], Patrick Rein [aut]", + "Maintainer": "Benjamin Leon Bodirsky " + }, + "magpiesets": { + "Package": "magpiesets", + "Version": "0.47.3", + "Source": "Repository", + "Type": "Package", + "Title": "MAgPIE sets for R", + "Date": "2026-03-14", + "Authors@R": "c( person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\"), person(\"Abhijeet\", \"Mishra\", , \"mishra@pik-potsdam.de\", role = \"aut\"), person(\"Kristine\", \"Karstens\", , \"karstens@pik-potsdam.de\", role = \"aut\"), person(\"Isabelle\", \"Weindl\", , \"weindl@pik-potsdam.de\", role = \"aut\"), person(\"Edna\", \"Molina Bacca\", , \"mbacca@pik-potsdam.de\", role = \"aut\"), person(\"Patrick\", \"von Jeetze\", , \"vjeetze@pik-potsdam.de\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\") )", + "Description": "A library containing MAgPIE sets and other support functions.", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/magpiesets, https://doi.org/10.5281/zenodo.1158588", + "BugReports": "https://github.com/pik-piam/magpiesets/issues", + "Depends": [ + "magclass (>= 6.0.3)" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/magpiesets", + "RemoteRef": "HEAD", + "RemoteSha": "0a8b77cfdd63a1d7e9e6dc8810d08d3b27272653", + "NeedsCompilation": "no", + "Author": "Benjamin Leon Bodirsky [aut, cre], Florian Humpenoeder [aut], Abhijeet Mishra [aut], Kristine Karstens [aut], Isabelle Weindl [aut], Edna Molina Bacca [aut], Patrick von Jeetze [aut], Jan Philipp Dietrich [aut]", + "Maintainer": "Benjamin Leon Bodirsky " + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.4", + "Source": "Repository", + "Type": "Package", + "Title": "A Forward-Pipe Operator for R", + "Authors@R": "c( person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"), comment = \"Original author and creator of magrittr\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"cre\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides a mechanism for chaining commands with a new forward-pipe operator, %>%. This operator will forward a value, or the result of an expression, into the next function call/expression. There is flexible support for the type of right-hand side expressions. For more information, see package vignette. To quote Rene Magritte, \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org, https://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Suggests": [ + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of magrittr), Hadley Wickham [aut], Lionel Henry [cre], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "maps": { + "Package": "maps", + "Version": "3.4.3", + "Source": "Repository", + "Title": "Draw Geographical Maps", + "Date": "2025-05-15", + "Description": "Display of maps. Projection code and larger maps are in separate packages ('mapproj' and 'mapdata').", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "graphics", + "utils" + ], + "LazyData": "yes", + "Suggests": [ + "mapproj (>= 1.2-0)", + "mapdata (>= 2.3.0)", + "sf", + "rnaturalearth" + ], + "License": "GPL-2", + "URL": "https://github.com/adeckmyn/maps", + "BugReports": "https://github.com/adeckmyn/maps/issues", + "Authors@R": "c(person(given = c(\"Richard\", \"A.\"), family = \"Becker\", role = \"aut\", comment= \"Original S code\"), person(given = c(\"Allan\", \"R.\"), family = \"Wilks\", role = \"aut\", comment= \"Original S code\"), person(given = \"Ray\", family = \"Brownrigg\", role = c(\"trl\", \"aut\"), comment= \"R version\"), person(given = c(\"Thomas\", \"P.\"), family = \"Minka\", role = \"aut\", comment= \"Enhancements\"), person(given = \"Alex\", family = \"Deckmyn\", role = c(\"aut\", \"cre\"), comment= c(ORCID=\"0009-0002-2010-8310\"), email = \"alex.deckmyn@meteo.be\"))", + "NeedsCompilation": "yes", + "Repository": "CRAN", + "Author": "Richard A. Becker [aut] (Original S code), Allan R. Wilks [aut] (Original S code), Ray Brownrigg [trl, aut] (R version), Thomas P. Minka [aut] (Enhancements), Alex Deckmyn [aut, cre] (ORCID: )", + "Maintainer": "Alex Deckmyn " + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Title": "'Memoisation' of Functions", + "Authors@R": "c(person(given = \"Hadley\", family = \"Wickham\", role = \"aut\", email = \"hadley@rstudio.com\"), person(given = \"Jim\", family = \"Hester\", role = \"aut\"), person(given = \"Winston\", family = \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@rstudio.com\"), person(given = \"Kirill\", family = \"Müller\", role = \"aut\", email = \"krlmlr+r@mailbox.org\"), person(given = \"Daniel\", family = \"Cook\", role = \"aut\", email = \"danielecook@gmail.com\"), person(given = \"Mark\", family = \"Edmondson\", role = \"ctb\", email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you call it again with the same arguments it returns the previously computed value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": [ + "rlang (>= 0.4.10)", + "cachem" + ], + "Suggests": [ + "digest", + "aws.s3", + "covr", + "googleAuthR", + "googleCloudStorageR", + "httr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Winston Chang [aut, cre], Kirill Müller [aut], Daniel Cook [aut], Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "mime": { + "Package": "mime", + "Version": "0.13", + "Source": "Repository", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"Beilei\", \"Bian\", role = \"ctb\") )", + "Description": "Guesses the MIME type from a filename extension using the data derived from /etc/mime.types in UNIX-type systems.", + "Imports": [ + "tools" + ], + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre] (, https://yihui.org), Jeffrey Horner [ctb], Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.2", + "Source": "Repository", + "Type": "Package", + "Title": "Shiny UI Widgets for Small Screens", + "Authors@R": "c( person(\"Joe\", \"Cheng\", role = c(\"cre\", \"aut\"), email = \"joe@posit.co\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides UI widget and layout functions for writing Shiny apps that work well on small screens.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/miniUI", + "BugReports": "https://github.com/rstudio/miniUI/issues", + "Imports": [ + "shiny (>= 0.13)", + "htmltools (>= 0.3)", + "utils" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Joe Cheng [cre, aut], Posit Software, PBC [cph, fnd] (03wc8by49)", + "Maintainer": "Joe Cheng ", + "Repository": "CRAN" + }, + "mip": { + "Package": "mip", + "Version": "0.155.10", + "Source": "Repository", + "Type": "Package", + "Title": "Comparison of multi-model runs", + "Date": "2026-01-23", + "Authors@R": "c( person(\"David\", \"Klein\", , \"dklein@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\"), person(\"Lavinia\", \"Baumstark\", , \"baumstark@pik-potsdam.de\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", , \"humpenoeder@pik-potsdam.de\", role = \"aut\"), person(\"Miodrag\", \"Stevanovic\", , \"miodrag@pik-potsdam.de\", role = \"aut\"), person(\"Stephen\", \"Wirth\", , \"wirth@pik-potsdam.de\", role = \"aut\"), person(\"Pascal\", \"Führlich\", , \"pascal.fuehrlich@pik-potsdam.de\", role = \"aut\"), person(\"Oliver\", \"Richters\", role = \"aut\"), person(\"Tonn\", \"Rüter\", , \"tonn.rueter@pik-potsdam.de\", role = \"aut\"), person(\"Robert\", \"Salzwedel\", , \"robert.salzwedel@pik-potsdam.de\", role = \"aut\"), person(\"Fabrice\", \"Lécuyer\", , \"fabrice.lecuyer@pik-potsdam.de\", role = \"aut\") )", + "Description": "Package contains generic functions to produce comparison plots of multi-model runs.", + "License": "BSD_2_clause + file LICENSE", + "URL": "https://github.com/pik-piam/mip, https://doi.org/10.5281/zenodo.1158586", + "BugReports": "https://github.com/pik-piam/mip/issues", + "Depends": [ + "R (>= 2.10.0)", + "magclass", + "quitte (>= 0.3072)" + ], + "Imports": [ + "data.table", + "dplyr", + "ggplot2", + "gridExtra", + "htmltools", + "lusweave (>= 1.43.2)", + "piamutils", + "plotly", + "RColorBrewer", + "reshape2", + "rlang", + "shiny", + "stringr", + "tidyr", + "trafficlight", + "withr" + ], + "Suggests": [ + "gdxrrw", + "knitr", + "rmarkdown", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "LazyData": "yes", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mip", + "RemoteRef": "HEAD", + "RemoteSha": "5f7141b969410f69d08f7181046730d29a365ed3", + "NeedsCompilation": "no", + "Author": "David Klein [aut, cre], Jan Philipp Dietrich [aut], Lavinia Baumstark [aut], Florian Humpenoeder [aut], Miodrag Stevanovic [aut], Stephen Wirth [aut], Pascal Führlich [aut], Oliver Richters [aut], Tonn Rüter [aut], Robert Salzwedel [aut], Fabrice Lécuyer [aut]", + "Maintainer": "David Klein " + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.11", + "Source": "Repository", + "Title": "Modelling Functions that Work with the Pipe", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Functions for modelling that help you seamlessly integrate modelling into a pipeline of data manipulation and visualisation.", + "License": "GPL-3", + "URL": "https://modelr.tidyverse.org, https://github.com/tidyverse/modelr", + "BugReports": "https://github.com/tidyverse/modelr/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "broom", + "magrittr", + "purrr (>= 0.2.2)", + "rlang (>= 1.0.6)", + "tibble", + "tidyr (>= 0.8.0)", + "tidyselect", + "vctrs" + ], + "Suggests": [ + "compiler", + "covr", + "ggplot2", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "modelstats": { + "Package": "modelstats", + "Version": "0.29.2", + "Source": "Repository", + "Type": "Package", + "Title": "Run Analysis Tools", + "Date": "2025-12-08", + "Authors@R": "c( person(\"Anastasis\", \"Giannousakis\", email = \"giannou@pik-potsdam.de\", role = c(\"aut\",\"cre\")), person(\"Oliver\", \"Richters\", role = \"aut\") )", + "Description": "A collection of tools to analyze model runs.", + "Imports": [ + "dplyr", + "quitte", + "crayon", + "gdx", + "gtools", + "lubridate", + "lucode2", + "magpie4 (>= 2.33.4)", + "piamutils", + "utils", + "gms", + "withr", + "rlang", + "optparse", + "cli", + "stringi" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown" + ], + "URL": "https://github.com/pik-piam/modelstats", + "BugReports": "https://github.com/pik-piam/modelstats/issues", + "Encoding": "UTF-8", + "License": "LGPL-3", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/modelstats", + "RemoteRef": "HEAD", + "RemoteSha": "9758aeefcf00d9c4502c5c33140503b5633269ac", + "NeedsCompilation": "no", + "Author": "Anastasis Giannousakis [aut, cre], Oliver Richters [aut]", + "Maintainer": "Anastasis Giannousakis " + }, + "mrcommons": { + "Package": "mrcommons", + "Version": "1.66.6", + "Source": "Repository", + "Type": "Package", + "Title": "MadRat commons Input Data Library", + "Date": "2026-03-23", + "Authors@R": "c( person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = \"aut\"), person(\"Kristine\", \"Karstens\", role = \"aut\"), person(\"Lavinia\", \"Baumstark\", role = \"aut\"), person(\"Isabelle\", \"Weindl\", role = \"aut\"), person(\"Xiaoxi\", \"Wang\", role = \"aut\"), person(\"Abhijeet\", \"Mishra\", role = \"aut\"), person(\"Stephen\", \"Wirth\", role = \"aut\"), person(\"Mishko\", \"Stevanovic\", role = \"aut\"), person(\"Nele\", \"Steinmetz\", role = \"aut\"), person(\"Ulrich\", \"Kreidenweis\", role = \"aut\"), person(\"Renato\", \"Rodrigues\", role = \"aut\"), person(\"Roman\", \"Popov\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", role = \"aut\"), person(\"Anastasis\", \"Giannousakis\", role = \"aut\"), person(\"Antoine\", \"Levesque\", role = \"aut\"), person(\"David\", \"Klein\", role = \"aut\"), person(\"Ewerton\", \"Araujo\", role = \"aut\"), person(\"Eva\", \"Bleidorn\", role = \"aut\"), person(\"Felicitas\", \"Beier\", role = \"aut\"), person(\"Julian\", \"Oeser\", role = \"aut\"), person(\"Michaja\", \"Pehl\", role = \"aut\"), person(\"Debbora\", \"Leip\", role = \"aut\"), person(\"Michael\", \"Crawford\", role = \"aut\"), person(\"Edna\", \"Molina Bacca\", role = \"aut\"), person(\"Patrick\", \"von Jeetze\", role = \"aut\"), person(\"Eleonora\", \"Martinelli\", role = \"aut\"), person(\"Felix\", \"Schreyer\", role = \"aut\"), person(\"Bjoern\", \"Soergel\", role = \"aut\"), person(\"Pascal\", \"Sauer\", role = \"aut\"), person(\"David\", \"Hötten\", role = \"aut\"), person(\"Robin\", \"Hasse\", role = \"aut\"), person(\"Gabriel\", \"Abrahão\", role = \"aut\"), person(\"Pascal\", \"Weigmann\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = c(\"aut\", \"cre\")) )", + "Description": "Provides useful functions and a common structure to all the input data required to run models like MAgPIE and REMIND of model input data.", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/mrcommons, https://doi.org/10.5281/zenodo.3822009", + "BugReports": "https://github.com/pik-piam/mrcommons/issues", + "Depends": [ + "GDPuc (>= 1.3.0)", + "madrat (>= 3.10.0)", + "magclass (>= 3.17)", + "mrdrivers (>= 7.1.1)", + "mrfaocore (>= 1.0.0)", + "mrlandcore (>= 1.0.0)", + "mstools (>= 0.6.0)", + "R (>= 2.10.0)" + ], + "Imports": [ + "countrycode", + "data.table", + "dplyr", + "hdf5r", + "luscale", + "magpiesets (>= 0.44.2)", + "methods", + "ncdf4", + "openxlsx", + "purrr", + "quitte", + "raster", + "readxl", + "reshape2", + "rlang", + "stringr", + "terra", + "tibble", + "tidyr", + "withr", + "zoo" + ], + "Suggests": [ + "covr", + "HARr", + "rmarkdown", + "testthat", + "XML" + ], + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mrcommons", + "RemoteRef": "HEAD", + "RemoteSha": "be33cecff5e65678f471b9c3c629c7c86158e70b", + "NeedsCompilation": "no", + "Author": "Benjamin Leon Bodirsky [aut], Kristine Karstens [aut], Lavinia Baumstark [aut], Isabelle Weindl [aut], Xiaoxi Wang [aut], Abhijeet Mishra [aut], Stephen Wirth [aut], Mishko Stevanovic [aut], Nele Steinmetz [aut], Ulrich Kreidenweis [aut], Renato Rodrigues [aut], Roman Popov [aut], Florian Humpenoeder [aut], Anastasis Giannousakis [aut], Antoine Levesque [aut], David Klein [aut], Ewerton Araujo [aut], Eva Bleidorn [aut], Felicitas Beier [aut], Julian Oeser [aut], Michaja Pehl [aut], Debbora Leip [aut], Michael Crawford [aut], Edna Molina Bacca [aut], Patrick von Jeetze [aut], Eleonora Martinelli [aut], Felix Schreyer [aut], Bjoern Soergel [aut], Pascal Sauer [aut], David Hötten [aut], Robin Hasse [aut], Gabriel Abrahão [aut], Pascal Weigmann [aut], Jan Philipp Dietrich [aut, cre]", + "Maintainer": "Jan Philipp Dietrich " + }, + "mrdownscale": { + "Package": "mrdownscale", + "Version": "0.49.4", + "Source": "Repository", + "Type": "Package", + "Title": "Downscale and harmonize land use data", + "Date": "2026-03-16", + "Authors@R": "c( person(\"Pascal\", \"Sauer\", , \"pascal.sauer@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-6856-8239\")), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-4309-6431\")) )", + "Description": "Downscale and harmonize land use data (e.g. MAgPIE or WITCH) using high resolution reference data (e.g. LUH2v2h or LUH3).", + "License": "LGPL (>= 3)", + "URL": "https://github.com/pik-piam/mrdownscale, https://doi.org/10.5281/zenodo.11244475", + "BugReports": "https://github.com/pik-piam/mrdownscale/issues", + "Depends": [ + "madrat (>= 3.27.0)", + "magclass (>= 7.0.0)", + "mstools (>= 0.8.0)", + "R (>= 4.0.0)" + ], + "Imports": [ + "gdx2", + "luscale (>= 3.1.4)", + "magpie4 (>= 2.34.1)", + "mip", + "ncdf4", + "terra", + "utils", + "withr" + ], + "Suggests": [ + "covr", + "knitr", + "mrlandcore", + "rmarkdown", + "testthat", + "usethis" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "git@github.com:pik-piam/mrdownscale", + "RemoteRef": "HEAD", + "RemoteSha": "c47e26a4df2ba400c58806d97abba77280df35e9", + "NeedsCompilation": "no", + "Author": "Pascal Sauer [aut, cre] (Potsdam Institute for Climate Impact Research, ), Jan Philipp Dietrich [aut] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Pascal Sauer " + }, + "mrdrivers": { + "Package": "mrdrivers", + "Version": "7.2.0", + "Source": "Repository", + "Type": "Package", + "Title": "Create GDP and Population Scenarios", + "Authors@R": "c(person(given = \"Johannes\", family = \"Koch\", email = \"jokoch@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Bjoern\", \"Soergel\", role = \"aut\"), person(\"Deborra\", \"Leip\", role = \"aut\"), person(\"Falk\", \"Benke\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", role = \"aut\"))", + "Description": "Create GDP and population scenarios This package constructs the GDP and population scenarios used as drivers in both the REMIND and MAgPIE models.", + "License": "LGPL (>= 3)", + "URL": "https://pik-piam.github.io/mrdrivers, https://github.com/pik-piam/mrdrivers", + "BugReports": "https://github.com/pik-piam/mrdrivers/issues", + "Depends": [ + "madrat (>= 2.5.1)", + "magclass (>= 6.0.3)" + ], + "Imports": [ + "countrycode", + "dplyr", + "GDPuc (>= 1.3.0)", + "glue", + "magrittr", + "purrr", + "readr", + "readxl", + "rlang", + "tibble", + "tidyr", + "tidyselect" + ], + "Suggests": [ + "covr", + "crayon", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "WDI", + "withr (>= 2.4.2)", + "yaml", + "zoo" + ], + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.2", + "Date": "2025-06-06", + "Config/testthat/edition": "3", + "VignetteBuilder": "knitr", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mrdrivers", + "RemoteRef": "HEAD", + "RemoteSha": "d89cf5899b2bc16e9f7f827954af1e3292001f75", + "NeedsCompilation": "no", + "Author": "Johannes Koch [aut, cre], Bjoern Soergel [aut], Deborra Leip [aut], Falk Benke [aut], Jan Philipp Dietrich [aut]", + "Maintainer": "Johannes Koch " + }, + "mrfaocore": { + "Package": "mrfaocore", + "Version": "1.6.3", + "Source": "Repository", + "Type": "Package", + "Title": "madrat-based package providing core FAO-related preprocessing functions", + "Date": "2026-03-16", + "Authors@R": "c( person(\"David\", \"Chen\", , \"david.chen@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Ulrich\", \"Kreidenweis\", role = \"aut\"), person(\"Abhijeet\", \"Mishra\", role = \"aut\"), person(\"Kristine\", \"Karstens\", role = \"aut\"), person(\"Benjamin\", \"Leon Bodirsky\", role = \"aut\"), person(\"Debbora\", \"Leip\", role = \"aut\"), person(\"Mishko\", \"Stevanovic\", role = \"aut\"), person(\"Benjamin\", \"Leon Bodrisky\", role = \"aut\"), person(\"David\", \"Klein\", role = \"aut\"), person(\"Edna\", \"Molina Bacca\", role = \"aut\") )", + "Description": "This madrat-based package provides core FAO-related preprocessing functions.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/mrfaocore", + "Depends": [ + "madrat (>= 2.20.9)", + "magclass (>= 3.17)", + "mrdrivers (>= 1.0.0)", + "mstools (>= 0.6.0)", + "GDPuc (>= 1.3.0)", + "R (>= 4.1.0)" + ], + "Imports": [ + "data.table", + "dplyr", + "magpiesets (>= 0.44.2)", + "tidyr", + "withr" + ], + "Suggests": [ + "testthat", + "XML" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mrfaocore", + "RemoteRef": "HEAD", + "RemoteSha": "684442bbd4ac6a87e2693419bcb64532d29048cd", + "NeedsCompilation": "no", + "Author": "David Chen [aut, cre], Ulrich Kreidenweis [aut], Abhijeet Mishra [aut], Kristine Karstens [aut], Benjamin Leon Bodirsky [aut], Debbora Leip [aut], Mishko Stevanovic [aut], Benjamin Leon Bodrisky [aut], David Klein [aut], Edna Molina Bacca [aut]", + "Maintainer": "David Chen " + }, + "mrlandcore": { + "Package": "mrlandcore", + "Version": "1.6.5", + "Source": "Repository", + "Type": "Package", + "Title": "Fundamental MAgPIE preprocessing functions including calcLanduseInitialisation", + "Date": "2026-01-07", + "Authors@R": "c( person(\"Felicitas\", \"Beier\", , \"beier@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Kristine\", \"Karstens\", role = \"aut\"), person(\"Marcos\", \"Alves\", role = \"aut\"), person(\"Jan\", \"Philipp Dietrich\", role = \"aut\"), person(\"Benjamin\", \"Leon Bodirsky\", role = \"aut\"), person(\"David\", \"Hoetten\", role = \"aut\"), person(\"Florian\", \"Humpenoeder\", role = \"aut\"), person(\"Jens\", \"Heinke\", role = \"aut\"), person(\"Patrick\", \"v. Jeetze\", role = \"aut\"), person(\"Abhijeet\", \"Mishra\", role = \"aut\"), person(\"Felcitas\", \"Beier\", role = \"aut\"), person(\"Stephen\", \"Wirth\", role = \"aut\"), person(\"David\", \"Chen\", role = \"aut\"), person(\"Ulrich\", \"Kreidenweis\", role = \"aut\"), person(\"Pascal\", \"Sauer\", role = \"aut\") )", + "Description": "Fundamental MAgPIE preprocessing functions including calcLanduseInitialisation.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/mrlandcore", + "Depends": [ + "madrat (>= 2.20.9)", + "magclass (>= 3.17)", + "mrdownscale (>= 0.43.0)", + "mrdrivers (>= 1.0.0)", + "mrfaocore (>= 1.0.0)", + "mstools (>= 0.6.0)", + "R (>= 2.10.0)" + ], + "Imports": [ + "dplyr", + "lpjclass", + "lpjmlkit", + "luscale", + "magpiesets (>= 0.44.2)", + "ncdf4", + "nleqslv", + "raster", + "SPEI", + "stringr", + "terra", + "withr" + ], + "Suggests": [ + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mrlandcore", + "RemoteRef": "HEAD", + "RemoteSha": "35e6caa74d8719e4e0e5a37d64a1cb0ac99cb53f", + "NeedsCompilation": "no", + "Author": "Felicitas Beier [aut, cre], Kristine Karstens [aut], Marcos Alves [aut], Jan Philipp Dietrich [aut], Benjamin Leon Bodirsky [aut], David Hoetten [aut], Florian Humpenoeder [aut], Jens Heinke [aut], Patrick v. Jeetze [aut], Abhijeet Mishra [aut], Felcitas Beier [aut], Stephen Wirth [aut], David Chen [aut], Ulrich Kreidenweis [aut], Pascal Sauer [aut]", + "Maintainer": "Felicitas Beier " + }, + "mrtransport": { + "Package": "mrtransport", + "Version": "0.14.0", + "Source": "Repository", + "Title": "Input data generation for the EDGE-Transport model", + "Authors@R": "c( person(\"Johanna\", \"Hoppe\", , \"johanna.hoppe@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0009-0004-6753-5090\")), person(\"Jarusch\", \"Muessel\", , \"jarusch.muessel@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-1857-7866\")), person(\"Alex K.\", \"Hagen\", , \"alex.hagen@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0003-4793-8664\")), person(\"Alois\", \"Dirnaichner\", role = \"aut\"))", + "Description": "The mrtransport package contains data preprocessing for the EDGE-Transport model.", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/mrtransport", + "Encoding": "UTF-8", + "Roxygen": "list(markdown = TRUE)", + "RoxygenNote": "7.3.3", + "Depends": [ + "madrat (>= 3.7.1)", + "mrcommons", + "mrdrivers (>= 2.0.0)" + ], + "Imports": [ + "data.table", + "dplyr", + "GDPuc (>= 1.3.0)", + "gdx", + "magclass", + "magrittr", + "readxl", + "rlang", + "rmndt", + "stringr", + "tidyr", + "tidyselect", + "utils", + "zoo" + ], + "Date": "2026-03-18", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mrtransport", + "RemoteRef": "HEAD", + "RemoteSha": "a53d297b6e109791e65710b86379e78800220f16", + "NeedsCompilation": "no", + "Author": "Johanna Hoppe [aut, cre] (), Jarusch Muessel [aut] (), Alex K. Hagen [aut] (), Alois Dirnaichner [aut]", + "Maintainer": "Johanna Hoppe " + }, + "mstools": { + "Package": "mstools", + "Version": "0.14.1", + "Source": "Repository", + "Type": "Package", + "Title": "Tool functions that can be used by several madrat-dependent or magpie4 output functions", + "Date": "2025-12-29", + "Authors@R": "c( person(\"Benjamin Leon\", \"Bodirsky\", , \"bodirsky@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Kristine\", \"Karstens\", role = \"aut\"), person(\"Felicitas\", \"Beier\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\") )", + "Description": "Tool functions that can be used by several madrat-dependent or magpie4 output functions.", + "License": "LGPL-3 | file LICENSE", + "URL": "https://github.com/pik-piam/magpie4, https://doi.org/10.5281/zenodo.1158582", + "BugReports": "https://github.com/pik-piam/magpie4/issues", + "Depends": [ + "madrat", + "magclass (>= 2.40)" + ], + "Imports": [ + "magpiesets", + "stringr", + "yaml" + ], + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/mstools", + "RemoteRef": "HEAD", + "RemoteSha": "51ce6ea98b381f163070a9265950c2782fc95912", + "NeedsCompilation": "no", + "Author": "Benjamin Leon Bodirsky [aut, cre], Kristine Karstens [aut], Felicitas Beier [aut], Jan Philipp Dietrich [aut]", + "Maintainer": "Benjamin Leon Bodirsky " + }, + "ncdf4": { + "Package": "ncdf4", + "Version": "1.24", + "Source": "Repository", + "Date": "2025-03-25", + "Title": "Interface to Unidata netCDF (Version 4 or Earlier) Format Data Files", + "Authors@R": "person(given=\"David\", family=\"Pierce\", email=\"dpierce@ucsd.edu\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-2453-9030\"))", + "Description": "Provides a high-level R interface to data files written using Unidata's netCDF library (version 4 or earlier), which are binary data files that are portable across platforms and include metadata information in addition to the data sets. Using this package, netCDF files (either version 4 or \"classic\" version 3) can be opened and data sets read in easily. It is also easy to create new netCDF dimensions, variables, and files, in either version 3 or 4 format, and manipulate existing netCDF files. This package replaces the former ncdf package, which only worked with netcdf version 3 files. For various reasons the names of the functions have had to be changed from the names in the ncdf package. The old ncdf package is still available at the URL given below, if you need to have backward compatibility. It should be possible to have both the ncdf and ncdf4 packages installed simultaneously without a problem. However, the ncdf package does not provide an interface for netcdf version 4 files.", + "SystemRequirements": "netcdf library version 4.1 or later", + "License": "GPL (>= 3)", + "URL": "https://cirrus.ucsd.edu/~pierce/ncdf/", + "NeedsCompilation": "yes", + "Author": "David Pierce [aut, cre] ()", + "Maintainer": "David Pierce ", + "Repository": "CRAN" + }, + "nleqslv": { + "Package": "nleqslv", + "Version": "3.3.5", + "Source": "Repository", + "Title": "Solve Systems of Nonlinear Equations", + "Date": "2023-11-25", + "Author": "Berend Hasselman", + "Maintainer": "Berend Hasselman ", + "Description": "Solve a system of nonlinear equations using a Broyden or a Newton method with a choice of global strategies such as line search and trust region. There are options for using a numerical or user supplied Jacobian, for specifying a banded numerical Jacobian and for allowing a singular or ill-conditioned Jacobian.", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-19", + "Source": "Repository", + "Priority": "recommended", + "Date": "2023-05-02", + "Depends": [ + "R (>= 3.0.0)", + "stats", + "utils" + ], + "Suggests": [ + "MASS" + ], + "Authors@R": "c(person(\"Brian\", \"Ripley\", role = c(\"aut\", \"cre\", \"cph\"), email = \"ripley@stats.ox.ac.uk\"), person(\"William\", \"Venables\", role = \"cph\"))", + "Description": "Software for feed-forward neural networks with a single hidden layer, and for multinomial log-linear models.", + "Title": "Feed-Forward Neural Networks and Multinomial Log-Linear Models", + "ByteCompile": "yes", + "License": "GPL-2 | GPL-3", + "URL": "http://www.stats.ox.ac.uk/pub/MASS4/", + "NeedsCompilation": "yes", + "Author": "Brian Ripley [aut, cre, cph], William Venables [cph]", + "Maintainer": "Brian Ripley ", + "Repository": "CRAN" + }, + "nonparaeff": { + "Package": "nonparaeff", + "Version": "0.5-13", + "Source": "Repository", + "Date": "2022-06-21", + "Title": "Nonparametric Methods for Measuring Efficiency and Productivity", + "Author": "Dong-hyun Oh , Dukrok Suh ", + "Maintainer": "Dong-hyun Oh ", + "Description": "Efficiency and productivity indices are measured using this package. This package contains functions for measuring efficiency and productivity of decision making units (DMUs) under the framework of Data Envelopment Analysis (DEA) and its variations.", + "Imports": [ + "geometry", + "Hmisc", + "lpSolve" + ], + "Suggests": [ + "pwt", + "psych" + ], + "License": "GPL (>= 2)", + "URL": "https://www.r-project.org", + "Repository": "CRAN", + "NeedsCompilation": "no" + }, + "openssl": { + "Package": "openssl", + "Version": "2.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Toolkit for Encryption, Signatures and Certificates Based on OpenSSL", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Oliver\", \"Keyes\", role = \"ctb\"))", + "Description": "Bindings to OpenSSL libssl and libcrypto, plus custom SSH key parsers. Supports RSA, DSA and EC curves P-256, P-384, P-521, and curve25519. Cryptographic signatures can either be created and verified manually or via x509 certificates. AES can be used in cbc, ctr or gcm mode for symmetric encryption; RSA for asymmetric (public key) encryption or EC for Diffie Hellman. High-level envelope functions combine RSA and AES for encrypting arbitrary sized data. Other utilities include key generators, hash functions (md5, sha1, sha256, etc), base64 encoder, a secure random number generator, and 'bignum' math methods for manually performing crypto calculations on large multibyte integers.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/openssl", + "BugReports": "https://github.com/jeroen/openssl/issues", + "SystemRequirements": "OpenSSL >= 1.0.2", + "VignetteBuilder": "knitr", + "Imports": [ + "askpass" + ], + "Suggests": [ + "curl", + "testthat (>= 2.1.0)", + "digest", + "knitr", + "rmarkdown", + "jsonlite", + "jose", + "sodium" + ], + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (ORCID: ), Oliver Keyes [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "openxlsx": { + "Package": "openxlsx", + "Version": "4.2.8", + "Source": "Repository", + "Type": "Package", + "Title": "Read, Write and Edit xlsx Files", + "Date": "2025-01-25", + "Authors@R": "c(person(given = \"Philipp\", family = \"Schauberger\", role = \"aut\", email = \"philipp@schauberger.co.at\"), person(given = \"Alexander\", family = \"Walker\", role = \"aut\", email = \"Alexander.Walker1989@gmail.com\"), person(given = \"Luca\", family = \"Braglia\", role = \"ctb\"), person(given = \"Joshua\", family = \"Sturm\", role = \"ctb\"), person(given = \"Jan Marvin\", family = \"Garbuszus\", role = c(\"ctb\", \"cre\"), email = \"jan.garbuszus@ruhr-uni-bochum.de\"), person(given = \"Jordan Mark\", family = \"Barbone\", role = \"ctb\", email = \"jmbarbone@gmail.com\", comment = c(ORCID = \"0000-0001-9788-3628\")), person(given = \"David\", family = \"Zimmermann\", role = \"ctb\", email = \"david_j_zimmermann@hotmail.com\"), person(given = \"Reinhold\", family = \"Kainhofer\", role = \"ctb\", email = \"reinhold@kainhofer.com\"))", + "Description": "Simplifies the creation of Excel .xlsx files by providing a high level interface to writing, styling and editing worksheets. Through the use of 'Rcpp', read/write times are comparable to the 'xlsx' and 'XLConnect' packages with the added benefit of removing the dependency on Java.", + "License": "MIT + file LICENSE", + "URL": "https://ycphs.github.io/openxlsx/index.html, https://github.com/ycphs/openxlsx", + "BugReports": "https://github.com/ycphs/openxlsx/issues", + "Depends": [ + "R (>= 3.3.0)" + ], + "Imports": [ + "grDevices", + "methods", + "Rcpp", + "stats", + "stringi", + "utils", + "zip" + ], + "Suggests": [ + "curl", + "formula.tools", + "knitr", + "rmarkdown", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "Collate": "'CommentClass.R' 'HyperlinkClass.R' 'RcppExports.R' 'class_definitions.R' 'StyleClass.R' 'WorkbookClass.R' 'asserts.R' 'baseXML.R' 'borderFunctions.R' 'build_workbook.R' 'chartsheet_class.R' 'conditional_formatting.R' 'data-fontSizeLookupTables.R' 'helperFunctions.R' 'loadWorkbook.R' 'onUnload.R' 'openXL.R' 'openxlsx-package.R' 'openxlsx.R' 'openxlsxCoerce.R' 'readWorkbook.R' 'setWindowSize.R' 'sheet_data_class.R' 'utils.R' 'workbook_column_widths.R' 'workbook_read_workbook.R' 'workbook_write_data.R' 'worksheet_class.R' 'wrappers.R' 'writeData.R' 'writeDataTable.R' 'writexlsx.R' 'zzz.R'", + "LazyData": "true", + "NeedsCompilation": "yes", + "Author": "Philipp Schauberger [aut], Alexander Walker [aut], Luca Braglia [ctb], Joshua Sturm [ctb], Jan Marvin Garbuszus [ctb, cre], Jordan Mark Barbone [ctb] (), David Zimmermann [ctb], Reinhold Kainhofer [ctb]", + "Maintainer": "Jan Marvin Garbuszus ", + "Repository": "CRAN" + }, + "optparse": { + "Package": "optparse", + "Version": "1.7.5", + "Source": "Repository", + "Encoding": "UTF-8", + "Type": "Package", + "Title": "Command Line Option Parser", + "Authors@R": "c(person(\"Trevor L.\", \"Davis\", role=c(\"aut\", \"cre\"), email=\"trevor.l.davis@gmail.com\", comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Allen\", \"Day\", role=\"ctb\", comment=\"Some documentation and examples ported from the getopt package.\"), person(\"Python Software Foundation\", role=\"ctb\", comment=\"Some documentation from the optparse Python module.\"), person(\"Steve\", \"Lianoglou\", role=\"ctb\"), person(\"Jim\", \"Nikelski\", role=\"ctb\"), person(\"Kirill\", \"Müller\", role=\"ctb\"), person(\"Peter\", \"Humburg\", role=\"ctb\"), person(\"Rich\", \"FitzJohn\", role=\"ctb\"), person(\"Gyu Jin\", \"Choi\", role=\"ctb\"))", + "Description": "A command line parser inspired by Python's 'optparse' library to be used with Rscript to write \"#!\" shebang scripts that accept short and long flag/options.", + "License": "GPL (>= 2)", + "Copyright": "See file (inst/)COPYRIGHTS.", + "URL": "https://github.com/trevorld/r-optparse", + "BugReports": "https://github.com/trevorld/r-optparse/issues", + "LazyLoad": "yes", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "methods", + "getopt (>= 1.20.2)" + ], + "Suggests": [ + "knitr (>= 1.15.19)", + "stringr", + "testthat" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Trevor L. Davis [aut, cre] (), Allen Day [ctb] (Some documentation and examples ported from the getopt package.), Python Software Foundation [ctb] (Some documentation from the optparse Python module.), Steve Lianoglou [ctb], Jim Nikelski [ctb], Kirill Müller [ctb], Peter Humburg [ctb], Rich FitzJohn [ctb], Gyu Jin Choi [ctb]", + "Maintainer": "Trevor L. Davis ", + "Repository": "CRAN" + }, + "otel": { + "Package": "otel", + "Version": "0.2.0", + "Source": "Repository", + "Title": "OpenTelemetry R API", + "Authors@R": "person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\"))", + "Description": "High-quality, ubiquitous, and portable telemetry to enable effective observability. OpenTelemetry is a collection of tools, APIs, and SDKs used to instrument, generate, collect, and export telemetry data (metrics, logs, and traces) for analysis in order to understand your software's performance and behavior. This package implements the OpenTelemetry API: . Use this package as a dependency if you want to instrument your R package for OpenTelemetry.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Depends": [ + "R (>= 3.6.0)" + ], + "Suggests": [ + "callr", + "cli", + "glue", + "jsonlite", + "otelsdk", + "processx", + "shiny", + "spelling", + "testthat (>= 3.0.0)", + "utils", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "URL": "https://otel.r-lib.org, https://github.com/r-lib/otel", + "Additional_repositories": "https://github.com/r-lib/otelsdk/releases/download/devel", + "BugReports": "https://github.com/r-lib/otel/issues", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "pander": { + "Package": "pander", + "Version": "0.6.6", + "Source": "Repository", + "Authors@R": "c( person(\"Gergely\", \"Daróczi\", , \"daroczig@rapporter.net\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3149-8537\")), person(\"Roman\", \"Tsegelskyi\", , \"roman.tsegelskyi@gmail.com\", role = c(\"aut\")))", + "Title": "An R 'Pandoc' Writer", + "Type": "Package", + "Encoding": "UTF-8", + "Description": "Contains some functions catching all messages, 'stdout' and other useful information while evaluating R code and other helpers to return user specified text elements (like: header, paragraph, table, image, lists etc.) in 'pandoc' markdown or several type of R objects similarly automatically transformed to markdown format. Also capable of exporting/converting (the resulting) complex 'pandoc' documents to e.g. HTML, 'PDF', 'docx' or 'odt'. This latter reporting feature is supported in brew syntax or with a custom reference class with a smarty caching 'backend'.", + "Date": "2025-03-01", + "URL": "https://rapporter.github.io/pander/", + "BugReports": "https://github.com/rapporter/pander/issues", + "License": "AGPL-3 | file LICENSE", + "Depends": [ + "R (>= 2.15.0)" + ], + "Imports": [ + "grDevices", + "graphics", + "methods", + "utils", + "stats", + "digest", + "tools", + "Rcpp" + ], + "Suggests": [ + "grid", + "lattice", + "ggplot2 (>= 0.9.2)", + "sylly", + "sylly.en", + "logger", + "survival", + "microbenchmark", + "zoo", + "nlme", + "descr", + "MASS", + "knitr", + "rmarkdown", + "tables", + "reshape", + "memisc", + "Epi", + "randomForest", + "tseries", + "gtable", + "rms", + "forecast", + "data.table" + ], + "SystemRequirements": "pandoc (https://johnmacfarlane.net/pandoc) for exporting markdown files to other formats.", + "LinkingTo": [ + "Rcpp" + ], + "VignetteBuilder": "knitr", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Gergely Daróczi [aut, cre] (), Roman Tsegelskyi [aut]", + "Maintainer": "Gergely Daróczi ", + "Repository": "CRAN" + }, + "piamInterfaces": { + "Package": "piamInterfaces", + "Version": "0.58.2", + "Source": "Repository", + "Type": "Package", + "Title": "Project specific interfaces to REMIND / MAgPIE", + "Date": "2026-03-24", + "Authors@R": "c( person(\"Falk\", \"Benke\", , \"benke@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Oliver\", \"Richters\", role = \"aut\") )", + "Description": "Project specific interfaces to REMIND / MAgPIE.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/piamInterfaces", + "Imports": [ + "dplyr (>= 1.1.1)", + "GDPuc", + "gms", + "jsonlite", + "magclass (>= 6.17.2)", + "mip (>= 0.150.0)", + "readxl", + "quitte (>= 0.3137.1)", + "piamutils (>= 0.0.12)", + "rlang", + "stringr", + "tibble", + "tidyr", + "tidyselect", + "yaml" + ], + "Suggests": [ + "covr", + "testthat (>= 3.2.3)", + "withr", + "writexl" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/parallel": "true", + "Config/testthat/edition": "3", + "Config/testthat/start-first": "plotIntercomparison, generateIIASASubmission, checkSummations", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/piamInterfaces.git", + "RemoteRef": "HEAD", + "RemoteSha": "93506ba741e581fc723555109b6f544fddba6e82", + "NeedsCompilation": "no", + "Author": "Falk Benke [aut, cre], Oliver Richters [aut]", + "Maintainer": "Falk Benke " + }, + "piamPlotComparison": { + "Package": "piamPlotComparison", + "Version": "0.1.5", + "Source": "Repository", + "Type": "Package", + "Title": "Create comparison plots for your model results", + "Date": "2026-01-29", + "Authors@R": "c( person(\"Falk\", \"Benke\", , \"benke@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Christof\", \"Schoetz\", role = \"aut\") )", + "Description": "A frameworks to create comparison plots for your model results.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/piamPlotComparison", + "Imports": [ + "dplyr", + "jsonlite", + "kableExtra", + "knitr", + "magclass", + "mip (>= 0.148.11)", + "piamutils", + "quitte", + "rlang", + "rmarkdown", + "tidyr", + "yaml", + "ymlthis" + ], + "Suggests": [ + "gridExtra", + "testthat", + "tidyverse" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/piamPlotComparison", + "RemoteRef": "HEAD", + "RemoteSha": "7beeaf217549fb2c66ca691a242647bc92743187", + "NeedsCompilation": "no", + "Author": "Falk Benke [aut, cre], Christof Schoetz [aut]", + "Maintainer": "Falk Benke " + }, + "piamValidation": { + "Package": "piamValidation", + "Version": "0.15.4", + "Source": "Repository", + "Type": "Package", + "Title": "Validation Tools for PIK-PIAM", + "Date": "2025-11-20", + "Authors@R": "c(person(\"Pascal\", \"Weigmann\",, \"pascal.weigmann@pik-potsdam.de\", role = c(\"aut\", \"cre\"), comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0001-8801-173X\")), person(\"Oliver\", \"Richters\",, role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0001-8253-4716\")), person(\"Fabrice\", \"Lécuyer\",, role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0002-7364-999X\")), person(\"Johannes\", \"Koch\",, role = \"aut\", comment = c(affiliation = \"Potsdam Institute for Climate Impact Research\", ORCID = \"0000-0003-2920-8086\")) )", + "Description": "The piamValidation package provides validation tools for the Potsdam Integrated Assessment Modelling environment.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/piamValidation, https://pik-piam.github.io/piamValidation", + "Imports": [ + "devtools", + "dplyr (>= 1.1.1)", + "DT", + "ggplot2", + "ggthemes", + "htmltools", + "knitr", + "piamInterfaces", + "piamutils", + "plotly", + "quitte (>= 0.3123.0)", + "readr", + "readxl", + "tibble", + "tidyr" + ], + "Suggests": [ + "htmlwidgets", + "madrat", + "magclass", + "testthat (>= 3.0.0)", + "remind2", + "rmarkdown", + "rprojroot", + "scales" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Depends": [ + "R (>= 3.5.0)" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/piamValidation", + "RemoteRef": "HEAD", + "RemoteSha": "b55789652629fdc135d30d6278d88334bbf3a719", + "NeedsCompilation": "no", + "Author": "Pascal Weigmann [aut, cre] (Potsdam Institute for Climate Impact Research, ), Oliver Richters [aut] (Potsdam Institute for Climate Impact Research, ), Fabrice Lécuyer [aut] (Potsdam Institute for Climate Impact Research, ), Johannes Koch [aut] (Potsdam Institute for Climate Impact Research, )", + "Maintainer": "Pascal Weigmann " + }, + "piamenv": { + "Package": "piamenv", + "Version": "0.7.3", + "Source": "Repository", + "Type": "Package", + "Title": "Package environment support for PIAM", + "Date": "2026-01-05", + "Authors@R": "c( person(\"Pascal\", \"Sauer\", , \"pascal.sauer@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Tonn\", \"Rüter\", , \"tonn.rueter@pik-potsdam.de\", role = c(\"aut\")))", + "Description": "Enables easier management of package environments, based on renv and conda.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/piamenv", + "Imports": [ + "desc", + "methods", + "renv", + "withr" + ], + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/piamenv", + "RemoteRef": "HEAD", + "RemoteSha": "4b121f7c9b73fd847e740ff0bc6348d155b202c2", + "NeedsCompilation": "no", + "Author": "Pascal Sauer [aut, cre], Tonn Rüter [aut]", + "Maintainer": "Pascal Sauer " + }, + "piamutils": { + "Package": "piamutils", + "Version": "0.1.1", + "Source": "Repository", + "Type": "Package", + "Title": "Utilities for the piam-verse", + "Date": "2025-07-17", + "Authors@R": "c( person(\"Falk\", \"Benke\", , \"benke@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Christof\", \"Schötz\", role = \"aut\") )", + "Description": "This package contains utilities and helpers needed in various piam libraries.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/piamutils", + "Imports": [ + "dplyr", + "magclass", + "magrittr", + "pkgload", + "quitte", + "rlang" + ], + "Suggests": [ + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/piamutils", + "RemoteRef": "HEAD", + "RemoteSha": "67f835400f49a619816ad02c3c797db3c0e2257a", + "NeedsCompilation": "no", + "Author": "Falk Benke [aut, cre], Christof Schötz [aut]", + "Maintainer": "Falk Benke " + }, + "pillar": { + "Package": "pillar", + "Version": "1.11.1", + "Source": "Repository", + "Title": "Coloured Formatting for Columns", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Hadley\", family = \"Wickham\", role = \"aut\"), person(given = \"RStudio\", role = \"cph\"))", + "Description": "Provides 'pillar' and 'colonnade' generics designed for formatting columns of data using the full range of colours provided by modern terminals.", + "License": "MIT + file LICENSE", + "URL": "https://pillar.r-lib.org/, https://github.com/r-lib/pillar", + "BugReports": "https://github.com/r-lib/pillar/issues", + "Imports": [ + "cli (>= 2.3.0)", + "glue", + "lifecycle", + "rlang (>= 1.0.2)", + "utf8 (>= 1.1.0)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bit64", + "DBI", + "debugme", + "DiagrammeR", + "dplyr", + "formattable", + "ggplot2", + "knitr", + "lubridate", + "nanotime", + "nycflights13", + "palmerpenguins", + "rmarkdown", + "scales", + "stringi", + "survival", + "testthat (>= 3.1.1)", + "tibble", + "units (>= 0.7.2)", + "vdiffr", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3.9000", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "format_multi_fuzz, format_multi_fuzz_2, format_multi, ctl_colonnade, ctl_colonnade_1, ctl_colonnade_2", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/gha/extra-packages": "units=?ignore-before-r=4.3.0", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], RStudio [cph]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.4.4", + "Source": "Repository", + "Title": "Find Tools Needed to Build R Packages", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides functions used to build R packages. Locates compilers needed to build R packages on various platforms and ensures the PATH is configured appropriately so R can use them.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/pkgbuild, https://pkgbuild.r-lib.org", + "BugReports": "https://github.com/r-lib/pkgbuild/issues", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "callr (>= 3.2.0)", + "cli (>= 3.4.0)", + "desc", + "processx", + "R6" + ], + "Suggests": [ + "covr", + "cpp11", + "knitr", + "mockery", + "Rcpp", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr (>= 2.3.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Title": "Private Configuration for 'R' Packages", + "Author": "Gábor Csárdi", + "Maintainer": "Gábor Csárdi ", + "Description": "Set configuration options on a per-package basis. Options set by a given package only apply to that package, other packages are unaffected.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "Imports": [ + "utils" + ], + "Suggests": [ + "covr", + "testthat", + "disposables (>= 1.0.3)" + ], + "URL": "https://github.com/r-lib/pkgconfig#readme", + "BugReports": "https://github.com/r-lib/pkgconfig/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "pkgdown": { + "Package": "pkgdown", + "Version": "2.1.3", + "Source": "Repository", + "Title": "Make Static HTML Documentation for a Package", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jay\", \"Hesselberth\", role = \"aut\", comment = c(ORCID = \"0000-0002-6299-179X\")), person(\"Maëlle\", \"Salmon\", role = \"aut\", comment = c(ORCID = \"0000-0002-2815-0399\")), person(\"Olivier\", \"Roy\", role = \"aut\"), person(\"Salim\", \"Brüggemann\", role = \"aut\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Generate an attractive and useful website from a source package. 'pkgdown' converts your documentation, vignettes, 'README', and more to 'HTML' making it easy to share information about your package online.", + "License": "MIT + file LICENSE", + "URL": "https://pkgdown.r-lib.org/, https://github.com/r-lib/pkgdown", + "BugReports": "https://github.com/r-lib/pkgdown/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "bslib (>= 0.5.1)", + "callr (>= 3.7.3)", + "cli (>= 3.6.1)", + "desc (>= 1.4.0)", + "downlit (>= 0.4.4)", + "fontawesome", + "fs (>= 1.4.0)", + "httr2 (>= 1.0.2)", + "jsonlite", + "openssl", + "purrr (>= 1.0.0)", + "ragg (>= 1.4.0)", + "rlang (>= 1.1.4)", + "rmarkdown (>= 2.27)", + "tibble", + "whisker", + "withr (>= 2.4.3)", + "xml2 (>= 1.3.1)", + "yaml" + ], + "Suggests": [ + "covr", + "diffviewer", + "evaluate (>= 0.24.0)", + "gert", + "gt", + "htmltools", + "htmlwidgets", + "knitr (>= 1.50)", + "lifecycle", + "magick", + "methods", + "pkgload (>= 1.0.2)", + "quarto", + "rsconnect", + "rstudioapi", + "rticles", + "sass", + "testthat (>= 3.1.3)", + "tools" + ], + "VignetteBuilder": "knitr, quarto", + "Config/Needs/website": "usethis, servr", + "Config/potools/style": "explicit", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "build-article, build-quarto-article, build-reference", + "Encoding": "UTF-8", + "SystemRequirements": "pandoc", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Jay Hesselberth [aut] (ORCID: ), Maëlle Salmon [aut] (ORCID: ), Olivier Roy [aut], Salim Brüggemann [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.4.1", + "Source": "Repository", + "Title": "Simulate Package Installation and Attach", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"R Core team\", role = \"ctb\", comment = \"Some namespace and vignette code extracted from base R\") )", + "Description": "Simulates the process of installing a package and then attaching it. This is a key part of the 'devtools' package as it allows you to rapidly iterate while developing a package.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/pkgload, https://pkgload.r-lib.org", + "BugReports": "https://github.com/r-lib/pkgload/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "desc", + "fs", + "glue", + "lifecycle", + "methods", + "pkgbuild", + "processx", + "rlang (>= 1.1.1)", + "rprojroot", + "utils" + ], + "Suggests": [ + "bitops", + "jsonlite", + "mathjaxr", + "pak", + "Rcpp", + "remotes", + "rstudioapi", + "testthat (>= 3.2.1.1)", + "usethis", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate, ggplot2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "dll", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Winston Chang [aut], Jim Hester [aut], Lionel Henry [aut, cre], Posit Software, PBC [cph, fnd], R Core team [ctb] (Some namespace and vignette code extracted from base R)", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "plotly": { + "Package": "plotly", + "Version": "4.11.0", + "Source": "Repository", + "Title": "Create Interactive Web Graphics via 'plotly.js'", + "Authors@R": "c(person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"cpsievert1@gmail.com\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Chris\", \"Parmer\", role = \"aut\", email = \"chris@plot.ly\"), person(\"Toby\", \"Hocking\", role = \"aut\", email = \"tdhock5@gmail.com\"), person(\"Scott\", \"Chamberlain\", role = \"aut\", email = \"myrmecocystus@gmail.com\"), person(\"Karthik\", \"Ram\", role = \"aut\", email = \"karthik.ram@gmail.com\"), person(\"Marianne\", \"Corvellec\", role = \"aut\", email = \"marianne.corvellec@igdore.org\", comment = c(ORCID = \"0000-0002-1994-3581\")), person(\"Pedro\", \"Despouy\", role = \"aut\", email = \"pedro@plot.ly\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Plotly Technologies Inc.\", role = \"cph\"))", + "License": "MIT + file LICENSE", + "Description": "Create interactive web graphics from 'ggplot2' graphs and/or a custom interface to the (MIT-licensed) JavaScript library 'plotly.js' inspired by the grammar of graphics.", + "URL": "https://plotly-r.com, https://github.com/plotly/plotly.R, https://plotly.com/r/", + "BugReports": "https://github.com/plotly/plotly.R/issues", + "Depends": [ + "R (>= 3.2.0)", + "ggplot2 (>= 3.0.0)" + ], + "Imports": [ + "tools", + "scales", + "httr (>= 1.3.0)", + "jsonlite (>= 1.6)", + "magrittr", + "digest", + "viridisLite", + "base64enc", + "htmltools (>= 0.3.6)", + "htmlwidgets (>= 1.5.2.9001)", + "tidyr (>= 1.0.0)", + "RColorBrewer", + "dplyr", + "vctrs", + "tibble", + "lazyeval (>= 0.2.0)", + "rlang (>= 1.0.0)", + "crosstalk", + "purrr", + "data.table", + "promises" + ], + "Suggests": [ + "MASS", + "maps", + "hexbin", + "ggthemes", + "GGally", + "ggalluvial", + "testthat", + "knitr", + "shiny (>= 1.1.0)", + "shinytest2", + "curl", + "rmarkdown", + "Cairo", + "broom", + "webshot", + "listviewer", + "dendextend", + "sf", + "png", + "IRdisplay", + "processx", + "plotlyGeoAssets", + "forcats", + "withr", + "palmerpenguins", + "rversions", + "reticulate", + "rsvg", + "ggridges" + ], + "LazyData": "true", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Config/Needs/check": "tidyverse/ggplot2, ggobi/GGally, rcmdcheck, devtools, reshape2, s2", + "NeedsCompilation": "no", + "Author": "Carson Sievert [aut, cre] (ORCID: ), Chris Parmer [aut], Toby Hocking [aut], Scott Chamberlain [aut], Karthik Ram [aut], Marianne Corvellec [aut] (ORCID: ), Pedro Despouy [aut], Salim Brüggemann [ctb] (ORCID: ), Plotly Technologies Inc. [cph]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.9", + "Source": "Repository", + "Title": "Tools for Splitting, Applying and Combining Data", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\"))", + "Description": "A set of tools that solves a common set of problems: you need to break a big problem down into manageable pieces, operate on each piece and then put all the pieces back together. For example, you might want to fit a model to each spatial location or time point in your study, summarise data by panels or collapse high-dimensional arrays to simpler summary statistics. The development of 'plyr' has been generously supported by 'Becton Dickinson'.", + "License": "MIT + file LICENSE", + "URL": "http://had.co.nz/plyr, https://github.com/hadley/plyr", + "BugReports": "https://github.com/hadley/plyr/issues", + "Depends": [ + "R (>= 3.1.0)" + ], + "Imports": [ + "Rcpp (>= 0.11.0)" + ], + "Suggests": [ + "abind", + "covr", + "doParallel", + "foreach", + "iterators", + "itertools", + "tcltk", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "png": { + "Package": "png", + "Version": "0.1-8", + "Source": "Repository", + "Title": "Read and write PNG images", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "This package provides an easy and simple way to read, write and display bitmap images stored in the PNG format. It can read and write both files and in-memory raw vectors.", + "License": "GPL-2 | GPL-3", + "SystemRequirements": "libpng", + "URL": "http://www.rforge.net/png/", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Title": "Praise Users", + "Author": "Gabor Csardi, Sindre Sorhus", + "Maintainer": "Gabor Csardi ", + "Description": "Build friendly R packages that praise their users if they have done something good, or they just need it to feel better.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/gaborcsardi/praise", + "BugReports": "https://github.com/gaborcsardi/praise/issues", + "Suggests": [ + "testthat" + ], + "Collate": "'adjective.R' 'adverb.R' 'exclamation.R' 'verb.R' 'rpackage.R' 'package.R'", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.2.0", + "Source": "Repository", + "Title": "Pretty, Human Readable Formatting of Quantities", + "Authors@R": "c( person(\"Gabor\", \"Csardi\", email=\"csardi.gabor@gmail.com\", role=c(\"aut\", \"cre\")), person(\"Bill\", \"Denney\", email=\"wdenney@humanpredictions.com\", role=c(\"ctb\"), comment=c(ORCID=\"0000-0002-5759-428X\")), person(\"Christophe\", \"Regouby\", email=\"christophe.regouby@free.fr\", role=c(\"ctb\")) )", + "Description": "Pretty, human readable formatting of quantities. Time intervals: '1337000' -> '15d 11h 23m 20s'. Vague time intervals: '2674000' -> 'about a month ago'. Bytes: '1337' -> '1.34 kB'. Rounding: '99' with 3 significant digits -> '99.0' p-values: '0.00001' -> '<0.0001'. Colors: '#FF0000' -> 'red'. Quantities: '1239437' -> '1.24 M'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/prettyunits", + "BugReports": "https://github.com/r-lib/prettyunits/issues", + "Depends": [ + "R(>= 2.10)" + ], + "Suggests": [ + "codetools", + "covr", + "testthat" + ], + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gabor Csardi [aut, cre], Bill Denney [ctb] (), Christophe Regouby [ctb]", + "Maintainer": "Gabor Csardi ", + "Repository": "CRAN" + }, + "processx": { + "Package": "processx", + "Version": "3.8.6", + "Source": "Repository", + "Title": "Execute and Control System Processes", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to run system processes in the background. It can check if a background process is running; wait on a background process to finish; get the exit status of finished processes; kill background processes. It can read the standard output and error of the processes, using non-blocking connections. 'processx' can poll a process for standard output or error, with a timeout. It can also poll several processes at once.", + "License": "MIT + file LICENSE", + "URL": "https://processx.r-lib.org, https://github.com/r-lib/processx", + "BugReports": "https://github.com/r-lib/processx/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "ps (>= 1.2.0)", + "R6", + "utils" + ], + "Suggests": [ + "callr (>= 3.7.3)", + "cli (>= 3.3.0)", + "codetools", + "covr", + "curl", + "debugme", + "parallel", + "rlang (>= 1.0.2)", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.1.9000", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "profvis": { + "Package": "profvis", + "Version": "0.4.0", + "Source": "Repository", + "Title": "Interactive Visualizations for Profiling R Code", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Javier\", \"Luraschi\", role = \"aut\"), person(\"Timothy\", \"Mastny\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library\"), person(, \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/htmlwidgets/lib/jquery/AUTHORS.txt\"), person(\"Mike\", \"Bostock\", role = c(\"ctb\", \"cph\"), comment = \"D3 library\"), person(, \"D3 contributors\", role = \"ctb\", comment = \"D3 library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\") )", + "Description": "Interactive visualizations for profiling R code.", + "License": "MIT + file LICENSE", + "URL": "https://profvis.r-lib.org, https://github.com/r-lib/profvis", + "BugReports": "https://github.com/r-lib/profvis/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "htmlwidgets (>= 0.3.2)", + "rlang (>= 1.1.0)", + "vctrs" + ], + "Suggests": [ + "htmltools", + "knitr", + "rmarkdown", + "shiny", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, rmarkdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Winston Chang [aut], Javier Luraschi [aut], Timothy Mastny [aut], Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/htmlwidgets/lib/jquery/AUTHORS.txt), Mike Bostock [ctb, cph] (D3 library), D3 contributors [ctb] (D3 library), Ivan Sagalaev [ctb, cph] (highlight.js library)", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "progress": { + "Package": "progress", + "Version": "1.2.3", + "Source": "Repository", + "Title": "Terminal Progress Bars", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Rich\", \"FitzJohn\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Configurable Progress bars, they may include percentage, elapsed time, and/or the estimated completion time. They work in terminals, in 'Emacs' 'ESS', 'RStudio', 'Windows' 'Rgui' and the 'macOS' 'R.app'. The package also provides a 'C++' 'API', that works with or without 'Rcpp'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/progress#readme, http://r-lib.github.io/progress/", + "BugReports": "https://github.com/r-lib/progress/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "crayon", + "hms", + "prettyunits", + "R6" + ], + "Suggests": [ + "Rcpp", + "testthat (>= 3.0.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Rich FitzJohn [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "promises": { + "Package": "promises", + "Version": "1.4.0", + "Source": "Repository", + "Type": "Package", + "Title": "Abstractions for Promise-Based Asynchronous Programming", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Barret\", \"Schloerke\", , \"barret@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Charlie\", \"Gao\", , \"charlie.gao@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-0750-061X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides fundamental abstractions for doing asynchronous programming in R using promises. Asynchronous programming is useful for allowing a single R process to orchestrate multiple tasks in the background while also attending to something else. Semantics are similar to 'JavaScript' promises, but with a syntax that is idiomatic R.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/promises/, https://github.com/rstudio/promises", + "BugReports": "https://github.com/rstudio/promises/issues", + "Depends": [ + "R (>= 4.1.0)" + ], + "Imports": [ + "fastmap (>= 1.1.0)", + "later", + "lifecycle", + "magrittr (>= 1.5)", + "otel (>= 0.2.0)", + "R6", + "rlang" + ], + "Suggests": [ + "future (>= 1.21.0)", + "knitr", + "mirai", + "otelsdk (>= 0.2.0)", + "purrr", + "Rcpp", + "rmarkdown", + "spelling", + "testthat (>= 3.0.0)", + "vembedr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rsconnect, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-27", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Joe Cheng [aut], Barret Schloerke [aut, cre] (ORCID: ), Winston Chang [aut] (ORCID: ), Charlie Gao [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Barret Schloerke ", + "Repository": "CRAN" + }, + "ps": { + "Package": "ps", + "Version": "1.9.1", + "Source": "Repository", + "Title": "List, Query, Manipulate System Processes", + "Authors@R": "c( person(\"Jay\", \"Loden\", role = \"aut\"), person(\"Dave\", \"Daeschler\", role = \"aut\"), person(\"Giampaolo\", \"Rodola'\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "List, query and manipulate all system processes, on 'Windows', 'Linux' and 'macOS'.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/ps, https://ps.r-lib.org/", + "BugReports": "https://github.com/r-lib/ps/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "callr", + "covr", + "curl", + "pillar", + "pingr", + "processx (>= 3.1.0)", + "R6", + "rlang", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Biarch": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Jay Loden [aut], Dave Daeschler [aut], Giampaolo Rodola' [aut], Gábor Csárdi [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "purrr": { + "Package": "purrr", + "Version": "1.1.0", + "Source": "Repository", + "Title": "Functional Programming Tools", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"https://ror.org/03wc8by49\")) )", + "Description": "A complete and consistent functional programming toolkit for R.", + "License": "MIT + file LICENSE", + "URL": "https://purrr.tidyverse.org/, https://github.com/tidyverse/purrr", + "BugReports": "https://github.com/tidyverse/purrr/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 1.5.0)", + "rlang (>= 1.1.1)", + "vctrs (>= 0.6.3)" + ], + "Suggests": [ + "carrier (>= 0.2.0)", + "covr", + "dplyr (>= 0.7.8)", + "httr", + "knitr", + "lubridate", + "mirai (>= 2.4.0)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble", + "tidyselect" + ], + "LinkingTo": [ + "cli" + ], + "VignetteBuilder": "knitr", + "Biarch": "true", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate, tidyr", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre] (ORCID: ), Lionel Henry [aut], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "qualV": { + "Package": "qualV", + "Version": "0.3-5", + "Source": "Repository", + "Title": "Qualitative Validation Methods", + "Authors@R": "c(person(\"K. Gerald\", \"van den Boogaart\", role = c(\"aut\", \"ths\"), comment = c(ORCID = \"0000-0003-4646-943X\")), person(\"Stefanie\", \"Rost\", role = \"aut\"), person(\"Thomas\", \"Petzoldt\", role = c(\"aut\", \"ths\", \"cre\"), comment=c(ORCID = \"0000-0002-4951-6468\"), email = \"thomas.petzoldt@tu-dresden.de\"))", + "Author": "K. Gerald van den Boogaart [aut, ths] (), Stefanie Rost [aut], Thomas Petzoldt [aut, ths, cre] ()", + "Description": "Qualitative methods for the validation of dynamic models. It contains (i) an orthogonal set of deviance measures for absolute, relative and ordinal scale and (ii) approaches accounting for time shifts. The first approach transforms time to take time delays and speed differences into account. The second divides the time series into interval units according to their main features and finds the longest common subsequence (LCS) using a dynamic programming algorithm.", + "Maintainer": "Thomas Petzoldt ", + "Depends": [ + "R (>= 2.0.0)", + "KernSmooth" + ], + "Imports": [ + "graphics", + "grDevices", + "stats", + "utils" + ], + "License": "GPL (>= 2)", + "URL": "http://qualV.R-Forge.R-Project.org/", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "quitte": { + "Package": "quitte", + "Version": "0.3147.0", + "Source": "Repository", + "Type": "Package", + "Title": "Bits and pieces of code to use with quitte-style data frames", + "Date": "2026-03-10", + "Authors@R": "c( person(\"Michaja\", \"Pehl\", , \"pehl@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Nico\", \"Bauer\", , \"nicolasb@pik-potsdam.de\", role = \"aut\"), person(\"Jérôme\", \"Hilaire\", , \"jeromehilaire@pik-potsdam.de\", role = \"aut\"), person(\"Antoine\", \"Levesque\", , \"levesque@pik-potsdam.de\", role = \"aut\"), person(\"Gunnar\", \"Luderer\", , \"luderer@pik-potsdam.de\", role = \"aut\"), person(\"Anselm\", \"Schultes\", , \"schultes@pik-potsdam.de\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", , \"dietrich@pik-potsdam.de\", role = \"aut\"), person(\"Oliver\", \"Richters\", role = \"aut\"), person(\"Tonn\", \"Rüter\", , \"tonn.rueter@pik-potsdam.de\", role = \"aut\") )", + "Maintainer": "Falk Benke ", + "Description": "A collection of functions for easily dealing with quitte-style data frames, doing multi-model comparisons and plots.", + "License": "GPL-2", + "URL": "https://github.com/pik-piam/quitte", + "BugReports": "https://github.com/pik-piam/quitte/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli", + "countrycode", + "dplyr (>= 1.1.1)", + "forcats (>= 1.0.0)", + "ggplot2 (>= 4.0.0)", + "gms (>= 0.17.0)", + "glue", + "lazyeval", + "lifecycle", + "lubridate", + "magclass", + "magrittr", + "methods", + "plyr", + "purrr", + "readr", + "readxl", + "reshape2", + "rlang", + "stats", + "stringr", + "tibble", + "tidyr", + "tidyselect", + "writexl", + "zoo" + ], + "Suggests": [ + "covr", + "gamstransfer", + "gdxrrw", + "knitr", + "mip", + "rmarkdown", + "testthat (>= 3.2.0)", + "tidyverse", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "LazyData": "TRUE", + "RoxygenNote": "7.3.3", + "Roxygen": "list(markdown = TRUE)", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/quitte", + "RemoteRef": "HEAD", + "RemoteSha": "b7577acaeb8a79d14b1b6faa70a6032520035bcb", + "NeedsCompilation": "no", + "Author": "Michaja Pehl [aut, cre], Nico Bauer [aut], Jérôme Hilaire [aut], Antoine Levesque [aut], Gunnar Luderer [aut], Anselm Schultes [aut], Jan Philipp Dietrich [aut], Oliver Richters [aut], Tonn Rüter [aut]" + }, + "ragg": { + "Package": "ragg", + "Version": "1.5.0", + "Source": "Repository", + "Type": "Package", + "Title": "Graphic Devices Based on AGG", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Maxim\", \"Shemanarev\", role = c(\"aut\", \"cph\"), comment = \"Author of AGG\"), person(\"Tony\", \"Juricic\", , \"tonygeek@yahoo.com\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Milan\", \"Marusinec\", , \"milan@marusinec.sk\", role = c(\"ctb\", \"cph\"), comment = \"Contributor to AGG\"), person(\"Spencer\", \"Garrett\", role = \"ctb\", comment = \"Contributor to AGG\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Maintainer": "Thomas Lin Pedersen ", + "Description": "Anti-Grain Geometry (AGG) is a high-quality and high-performance 2D drawing library. The 'ragg' package provides a set of graphic devices based on AGG to use as alternative to the raster devices provided through the 'grDevices' package.", + "License": "MIT + file LICENSE", + "URL": "https://ragg.r-lib.org, https://github.com/r-lib/ragg", + "BugReports": "https://github.com/r-lib/ragg/issues", + "Imports": [ + "systemfonts (>= 1.0.3)", + "textshaping (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "graphics", + "grid", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "systemfonts", + "textshaping" + ], + "Config/build/compilation-database": "true", + "Config/Needs/website": "ggplot2, devoid, magick, bench, tidyr, ggridges, hexbin, sessioninfo, pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, libpng, libtiff, libjpeg, libwebp, libwebpmux", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Maxim Shemanarev [aut, cph] (Author of AGG), Tony Juricic [ctb, cph] (Contributor to AGG), Milan Marusinec [ctb, cph] (Contributor to AGG), Spencer Garrett [ctb] (Contributor to AGG), Posit Software, PBC [cph, fnd] (ROR: )", + "Repository": "CRAN" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.4", + "Source": "Repository", + "Type": "Package", + "Title": "Application Directories: Determine Where to Save Data, Caches, and Logs", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"trl\", \"cre\", \"cph\")), person(\"Sridhar\", \"Ratnakumar\", role = \"aut\"), person(\"Trent\", \"Mick\", role = \"aut\"), person(\"ActiveState\", role = \"cph\", comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"), person(\"Eddy\", \"Petrisor\", role = \"ctb\"), person(\"Trevor\", \"Davis\", role = c(\"trl\", \"aut\"), comment = c(ORCID = \"0000-0001-6341-4639\")), person(\"Gabor\", \"Csardi\", role = \"ctb\"), person(\"Gregory\", \"Jefferis\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "An easy way to determine which directories on the users computer you should use to save data, caches and logs. A port of Python's 'Appdirs' () to R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Suggests": [ + "covr", + "roxygen2", + "testthat (>= 3.2.0)", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-05", + "Copyright": "Original python appdirs module copyright (c) 2010 ActiveState Software Inc. R port copyright Hadley Wickham, Posit, PBC. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [trl, cre, cph], Sridhar Ratnakumar [aut], Trent Mick [aut], ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs), Eddy Petrisor [ctb], Trevor Davis [trl, aut] (ORCID: ), Gabor Csardi [ctb], Gregory Jefferis [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "raster": { + "Package": "raster", + "Version": "3.6-32", + "Source": "Repository", + "Type": "Package", + "Title": "Geographic Data Analysis and Modeling", + "Date": "2025-03-27", + "Imports": [ + "Rcpp", + "methods", + "terra (>= 1.8-5)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Depends": [ + "sp (>= 1.4-5)", + "R (>= 3.5.0)" + ], + "Suggests": [ + "ncdf4", + "igraph", + "tcltk", + "parallel", + "rasterVis", + "MASS", + "sf", + "tinytest", + "gstat", + "fields", + "exactextractr" + ], + "Description": "Reading, writing, manipulating, analyzing and modeling of spatial data. This package has been superseded by the \"terra\" package .", + "License": "GPL (>= 3)", + "URL": "https://rspatial.org/raster", + "BugReports": "https://github.com/rspatial/raster/issues/", + "Authors@R": "c( person(\"Robert J.\", \"Hijmans\", role = c(\"cre\", \"aut\"), email = \"r.hijmans@gmail.com\", comment = c(ORCID = \"0000-0001-5872-2872\")), person(\"Jacob\", \"van Etten\", role = \"ctb\"), person(\"Michael\", \"Sumner\", role = \"ctb\"), person(\"Joe\", \"Cheng\", role = \"ctb\"), person(\"Dan\", \"Baston\", role = \"ctb\"), person(\"Andrew\", \"Bevan\", role = \"ctb\"), person(\"Roger\", \"Bivand\", role = \"ctb\"), person(\"Lorenzo\", \"Busetto\", role = \"ctb\"), person(\"Mort\", \"Canty\", role = \"ctb\"), person(\"Ben\", \"Fasoli\", role = \"ctb\"), person(\"David\", \"Forrest\", role = \"ctb\"), person(\"Aniruddha\", \"Ghosh\", role = \"ctb\"), person(\"Duncan\", \"Golicher\", role = \"ctb\"), person(\"Josh\", \"Gray\", role = \"ctb\"), person(\"Jonathan A.\", \"Greenberg\", role = \"ctb\"), person(\"Paul\", \"Hiemstra\", role = \"ctb\"), person(\"Kassel\", \"Hingee\", role = \"ctb\"), person(\"Alex\", \"Ilich\", role = \"ctb\"), person(\"Institute for Mathematics Applied Geosciences\", role=\"cph\"), person(\"Charles\", \"Karney\", role = \"ctb\"), person(\"Matteo\", \"Mattiuzzi\", role = \"ctb\"), person(\"Steven\", \"Mosher\", role = \"ctb\"), person(\"Babak\", \"Naimi\", role = \"ctb\"),\t person(\"Jakub\", \"Nowosad\", role = \"ctb\"), person(\"Edzer\", \"Pebesma\", role = \"ctb\"), person(\"Oscar\", \"Perpinan Lamigueiro\", role = \"ctb\"), person(\"Etienne B.\", \"Racine\", role = \"ctb\"), person(\"Barry\", \"Rowlingson\", role = \"ctb\"), person(\"Ashton\", \"Shortridge\", role = \"ctb\"), person(\"Bill\", \"Venables\", role = \"ctb\"), person(\"Rafael\", \"Wueest\", role = \"ctb\") )", + "NeedsCompilation": "yes", + "Author": "Robert J. Hijmans [cre, aut] (), Jacob van Etten [ctb], Michael Sumner [ctb], Joe Cheng [ctb], Dan Baston [ctb], Andrew Bevan [ctb], Roger Bivand [ctb], Lorenzo Busetto [ctb], Mort Canty [ctb], Ben Fasoli [ctb], David Forrest [ctb], Aniruddha Ghosh [ctb], Duncan Golicher [ctb], Josh Gray [ctb], Jonathan A. Greenberg [ctb], Paul Hiemstra [ctb], Kassel Hingee [ctb], Alex Ilich [ctb], Institute for Mathematics Applied Geosciences [cph], Charles Karney [ctb], Matteo Mattiuzzi [ctb], Steven Mosher [ctb], Babak Naimi [ctb], Jakub Nowosad [ctb], Edzer Pebesma [ctb], Oscar Perpinan Lamigueiro [ctb], Etienne B. Racine [ctb], Barry Rowlingson [ctb], Ashton Shortridge [ctb], Bill Venables [ctb], Rafael Wueest [ctb]", + "Maintainer": "Robert J. Hijmans ", + "Repository": "CRAN" + }, + "rcmdcheck": { + "Package": "rcmdcheck", + "Version": "1.4.0", + "Source": "Repository", + "Title": "Run 'R CMD check' from 'R' and Capture Results", + "Authors@R": "person(given = \"Gábor\", family = \"Csárdi\", role = c(\"cre\", \"aut\"), email = \"csardi.gabor@gmail.com\")", + "Description": "Run 'R CMD check' from 'R' and capture the results of the individual checks. Supports running checks in the background, timeouts, pretty printing and comparing check results.", + "License": "MIT + file LICENSE", + "URL": "https://r-lib.github.io/rcmdcheck/, https://github.com/r-Lib/rcmdcheck#readme", + "BugReports": "https://github.com/r-Lib/rcmdcheck/issues", + "Imports": [ + "callr (>= 3.1.1.9000)", + "cli (>= 3.0.0)", + "curl", + "desc (>= 1.2.0)", + "digest", + "pkgbuild", + "prettyunits", + "R6", + "rprojroot", + "sessioninfo (>= 1.1.1)", + "utils", + "withr", + "xopen" + ], + "Suggests": [ + "covr", + "knitr", + "mockery", + "processx", + "ps", + "rmarkdown", + "svglite", + "testthat", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [cre, aut]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "readr": { + "Package": "readr", + "Version": "2.1.5", + "Source": "Repository", + "Title": "Read Rectangular Text Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Romain\", \"Francois\", role = \"ctb\"), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = c(\"ctb\", \"cph\"), comment = \"grisu3 implementation\") )", + "Description": "The goal of 'readr' is to provide a fast and friendly way to read rectangular data (like 'csv', 'tsv', and 'fwf'). It is designed to flexibly parse many types of data found in the wild, while still cleanly failing when data unexpectedly changes.", + "License": "MIT + file LICENSE", + "URL": "https://readr.tidyverse.org, https://github.com/tidyverse/readr", + "BugReports": "https://github.com/tidyverse/readr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.2.0)", + "clipr", + "crayon", + "hms (>= 0.4.1)", + "lifecycle (>= 0.2.0)", + "methods", + "R6", + "rlang", + "tibble", + "utils", + "vroom (>= 1.6.0)" + ], + "Suggests": [ + "covr", + "curl", + "datasets", + "knitr", + "rmarkdown", + "spelling", + "stringi", + "testthat (>= 3.2.0)", + "tzdb (>= 0.1.1)", + "waldo", + "withr", + "xml2" + ], + "LinkingTo": [ + "cpp11", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Jim Hester [aut], Romain Francois [ctb], Jennifer Bryan [aut, cre] (), Shelby Bearrows [ctb], Posit Software, PBC [cph, fnd], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [ctb, cph] (grisu3 implementation), Mikkel Jørgensen [ctb, cph] (grisu3 implementation)", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "readxl": { + "Package": "readxl", + "Version": "1.4.5", + "Source": "Repository", + "Title": "Read Excel Files", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\"), comment = \"Copyright holder of all R code and all C/C++ code without explicit copyright attribution\"), person(\"Marcin\", \"Kalicinski\", role = c(\"ctb\", \"cph\"), comment = \"Author of included RapidXML code\"), person(\"Komarov Valery\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Christophe Leitienne\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Bob Colbert\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"David Hoerl\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\"), person(\"Evan Miller\", role = c(\"ctb\", \"cph\"), comment = \"Author of included libxls code\") )", + "Description": "Import excel files into R. Supports '.xls' via the embedded 'libxls' C library and '.xlsx' via the embedded 'RapidXML' C++ library . Works on Windows, Mac and Linux without external dependencies.", + "License": "MIT + file LICENSE", + "URL": "https://readxl.tidyverse.org, https://github.com/tidyverse/readxl", + "BugReports": "https://github.com/tidyverse/readxl/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cellranger", + "tibble (>= 2.0.1)", + "utils" + ], + "Suggests": [ + "covr", + "knitr", + "rmarkdown", + "testthat (>= 3.1.6)", + "withr" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)", + "progress" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate, tidyverse", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Note": "libxls v1.6.3 c199d13", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut] (), Jennifer Bryan [aut, cre] (), Posit, PBC [cph, fnd] (Copyright holder of all R code and all C/C++ code without explicit copyright attribution), Marcin Kalicinski [ctb, cph] (Author of included RapidXML code), Komarov Valery [ctb, cph] (Author of included libxls code), Christophe Leitienne [ctb, cph] (Author of included libxls code), Bob Colbert [ctb, cph] (Author of included libxls code), David Hoerl [ctb, cph] (Author of included libxls code), Evan Miller [ctb, cph] (Author of included libxls code)", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "rematch": { + "Package": "rematch", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Match Regular Expressions with a Nicer 'API'", + "Author": "Gabor Csardi", + "Maintainer": "Gabor Csardi ", + "Description": "A small wrapper on 'regexpr' to extract the matches and captured groups from the match of a regular expression to a character vector.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/gaborcsardi/rematch", + "BugReports": "https://github.com/gaborcsardi/rematch/issues", + "RoxygenNote": "5.0.1.9000", + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Title": "Tidy Output from Regular Expression Matching", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", email = \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Matthew\", \"Lincoln\", email = \"matthew.d.lincoln@gmail.com\", role = c(\"ctb\")))", + "Description": "Wrappers on 'regexpr' and 'gregexpr' to return the match results in tidy data frames.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/r-lib/rematch2#readme", + "BugReports": "https://github.com/r-lib/rematch2/issues", + "RoxygenNote": "7.1.0", + "Imports": [ + "tibble" + ], + "Suggests": [ + "covr", + "testthat" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Matthew Lincoln [ctb]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "remind2": { + "Package": "remind2", + "Version": "2.0.11", + "Source": "Repository", + "Type": "Package", + "Title": "The REMIND R package (2nd generation)", + "Date": "2026-03-18", + "Authors@R": "c( person(\"Renato\", \"Rodrigues\", , \"renato.rodrigues@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Lavinia\", \"Baumstark\", role = \"aut\"), person(\"Falk\", \"Benke\", role = \"aut\"), person(\"David\", \"Bantje\", role = \"aut\"), person(\"Jan Philipp\", \"Dietrich\", role = \"aut\"), person(\"Alois\", \"Dirnaichner\", role = \"aut\"), person(\"Tabea\", \"Dorndorf\", role = \"aut\"), person(\"Jakob\", \"Duerrwaechter\", role = \"aut\"), person(\"Pascal\", \"Führlich\", role = \"aut\"), person(\"Anastasis\", \"Giannousakis\", role = \"aut\"), person(\"Robin\", \"Hasse\", role = \"aut\"), person(\"Jérome\", \"Hilaire\", role = \"aut\"), person(\"David\", \"Klein\", role = \"aut\"), person(\"Johannes\", \"Koch\", role = \"aut\"), person(\"Katarzyna\", \"Kowalczyk\", role = \"aut\"), person(\"Fabrice\", \"Lécuyer\", role = \"aut\"), person(\"Antoine\", \"Levesque\", role = \"aut\"), person(\"Aman\", \"Malik\", role = \"aut\"), person(\"Anne\", \"Merfort\", role = \"aut\"), person(\"Leon\", \"Merfort\", role = \"aut\"), person(\"Simón\", \"Morena-Leiva\", role = \"aut\"), person(\"Michaja\", \"Pehl\", role = \"aut\"), person(\"Robert\", \"Pietzcker\", role = \"aut\"), person(\"Sebastian\", \"Rauner\", role = \"aut\"), person(\"Oliver\", \"Richters\", role = \"aut\"), person(\"Marianna\", \"Rottoli\", role = \"aut\"), person(\"Tonn\", \"Rüter\", , \"tonn.rueter@pik-potsdam.de\", role = \"aut\"), person(\"Robert\", \"Salzwedel\", role = \"aut\"), person(\"Christof\", \"Schötz\", role = \"aut\"), person(\"Felix\", \"Schreyer\", role = \"aut\"), person(\"Kais\", \"Siala\", role = \"aut\"), person(\"Björn\", \"Sörgel\", role = \"aut\"), person(\"Mike\", \"Spahr\", role = \"aut\"), person(\"Jessica\", \"Strefler\", role = \"aut\"), person(\"Philipp\", \"Verpoort\", role = \"aut\"), person(\"Pascal\", \"Weigmann\", role = \"aut\") )", + "Description": "Contains the REMIND-specific routines for data and model output manipulation.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/remind2", + "Depends": [ + "magclass (>= 6.17.2)" + ], + "Imports": [ + "abind", + "assertr", + "data.table", + "dplyr (>= 1.1.1)", + "GDPuc", + "gdx (>= 1.53.0)", + "gdxrrw", + "ggplot2", + "gms", + "lucode2 (>= 0.43.0)", + "lusweave", + "madrat (>= 3.13.0)", + "mip (>= 0.149.2)", + "openxlsx", + "piamInterfaces (>= 0.33.0)", + "piamPlotComparison (>= 0.0.10)", + "piamutils", + "plotly (>= 4.10.4)", + "quitte (>= 0.3132.0)", + "readr", + "remulator", + "reshape2", + "rlang", + "rmarkdown", + "tibble", + "tidyr", + "tidyselect", + "withr", + "digest" + ], + "Suggests": [ + "covr", + "gridExtra", + "htmltools", + "kableExtra", + "knitr", + "scales", + "testthat", + "tidyverse" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/parallel": "true", + "Config/testthat/edition": "3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/remind2.git", + "RemoteRef": "HEAD", + "RemoteSha": "35d8e1eba2a7fa129d1a94c7e539f90c53e801b7", + "NeedsCompilation": "no", + "Author": "Renato Rodrigues [aut, cre], Lavinia Baumstark [aut], Falk Benke [aut], David Bantje [aut], Jan Philipp Dietrich [aut], Alois Dirnaichner [aut], Tabea Dorndorf [aut], Jakob Duerrwaechter [aut], Pascal Führlich [aut], Anastasis Giannousakis [aut], Robin Hasse [aut], Jérome Hilaire [aut], David Klein [aut], Johannes Koch [aut], Katarzyna Kowalczyk [aut], Fabrice Lécuyer [aut], Antoine Levesque [aut], Aman Malik [aut], Anne Merfort [aut], Leon Merfort [aut], Simón Morena-Leiva [aut], Michaja Pehl [aut], Robert Pietzcker [aut], Sebastian Rauner [aut], Oliver Richters [aut], Marianna Rottoli [aut], Tonn Rüter [aut], Robert Salzwedel [aut], Christof Schötz [aut], Felix Schreyer [aut], Kais Siala [aut], Björn Sörgel [aut], Mike Spahr [aut], Jessica Strefler [aut], Philipp Verpoort [aut], Pascal Weigmann [aut]", + "Maintainer": "Renato Rodrigues " + }, + "remindClimateAssessment": { + "Package": "remindClimateAssessment", + "Version": "0.1.0", + "Source": "Repository", + "Type": "Package", + "Title": "REMIND integration of IIASA's `climate-assessment` package", + "Date": "2026-02-16", + "Authors@R": "person(\"Tonn\", \"Rüter\", , \"tonn.rueter@pik-potsdam.de\", role = c(\"aut\", \"cre\"))", + "Description": "The REMIND integration of IIASA's `climate-assessment` provides a standardized interface to simple climate models such as MAGICC7.", + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/remindClimateAssessment", + "Imports": [ + "dplyr", + "gdxrrw", + "lucode2", + "magrittr", + "piamInterfaces", + "purrr", + "quitte (>= 0.3144.0)", + "readr", + "rlang", + "stringr", + "tidyr", + "withr", + "yaml" + ], + "Suggests": [ + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/remindClimateAssessment", + "RemoteRef": "HEAD", + "RemoteSha": "d074736f796a91982ceba51d99615acda9292e10", + "NeedsCompilation": "no", + "Author": "Tonn Rüter [aut, cre]", + "Maintainer": "Tonn Rüter " + }, + "remotes": { + "Package": "remotes", + "Version": "2.5.0", + "Source": "Repository", + "Title": "R Package Installation from Remote Repositories, Including 'GitHub'", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Martin\", \"Morgan\", role = \"aut\"), person(\"Dan\", \"Tenenbaum\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = \"cph\") )", + "Description": "Download and install R packages stored in 'GitHub', 'GitLab', 'Bitbucket', 'Bioconductor', or plain 'subversion' or 'git' repositories. This package provides the 'install_*' functions in 'devtools'. Indeed most of the code was copied over from 'devtools'.", + "License": "MIT + file LICENSE", + "URL": "https://remotes.r-lib.org, https://github.com/r-lib/remotes#readme", + "BugReports": "https://github.com/r-lib/remotes/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Imports": [ + "methods", + "stats", + "tools", + "utils" + ], + "Suggests": [ + "brew", + "callr", + "codetools", + "covr", + "curl", + "git2r (>= 0.23.0)", + "knitr", + "mockery", + "pingr", + "pkgbuild (>= 1.0.1)", + "rmarkdown", + "rprojroot", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "Subversion for install_svn, git for install_git", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Jim Hester [aut], Hadley Wickham [aut], Winston Chang [aut], Martin Morgan [aut], Dan Tenenbaum [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "remulator": { + "Package": "remulator", + "Version": "1.22.0", + "Source": "Repository", + "Type": "Package", + "Title": "R emulator", + "Date": "2023-10-19", + "Authors@R": "c(person(\"David\", \"Klein\", email = \"dklein@pik-potsdam.de\", role = c(\"aut\",\"cre\")))", + "Description": "A collection of R tools for fitting model results.", + "License": "LGPL-3 | file LICENSE", + "Depends": [ + "R(>= 2.10.0)" + ], + "Imports": [ + "gms", + "ggplot2", + "luplot", + "lusweave", + "madrat", + "magclass(>= 4.40)", + "magpie4" + ], + "URL": "https://github.com/pik-piam/remulator, https://doi.org/10.5281/zenodo.2546517", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.3", + "Suggests": [ + "covr", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "knitr", + "Repository": "https://pik-piam.r-universe.dev", + "NeedsCompilation": "no", + "Author": "David Klein [aut, cre]", + "Maintainer": "David Klein " + }, + "renv": { + "Package": "renv", + "Version": "1.1.7", + "Source": "Repository", + "Type": "Package", + "Title": "Project Environments", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\", comment = c(ORCID = \"0000-0003-2880-7407\")), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@rstudio.com\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A dependency management toolkit for R. Using 'renv', you can create and manage project-local R libraries, save the state of these libraries to a 'lockfile', and later restore your library as required. Together, these tools can help make your projects more isolated, portable, and reproducible.", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/renv/, https://github.com/rstudio/renv", + "BugReports": "https://github.com/rstudio/renv/issues", + "Imports": [ + "utils" + ], + "Suggests": [ + "BiocManager", + "cli", + "compiler", + "covr", + "cpp11", + "curl", + "devtools", + "generics", + "gitcreds", + "jsonlite", + "jsonvalidate", + "knitr", + "miniUI", + "modules", + "packrat", + "pak", + "R6", + "remotes", + "reticulate", + "rmarkdown", + "rstudioapi", + "shiny", + "testthat", + "uuid", + "waldo", + "yaml", + "webfakes" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "bioconductor,python,install,restore,snapshot,retrieve,remotes", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Posit Software, PBC [cph, fnd]", + "Maintainer": "Kevin Ushey ", + "Repository": "CRAN" + }, + "reporttransport": { + "Package": "reporttransport", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Reporting package for edgeTransport", + "Date": "2026-02-10", + "Authors@R": "c( person(\"Johanna\", \"Hoppe\", , \"johanna.hoppe@pik-potsdam.de\", role = c(\"aut\", \"cre\")), person(\"Jarusch\", \"Muessel\", email = \"jarusch.muessel@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0002-1857-7866\")), person(\"Alex K.\", \"Hagen\",email = \"alex.hagen@pik-potsdam.de\", role = c(\"aut\"), comment = c(ORCID = \"0000-0003-4793-8664\")))", + "Description": "This package contains edgeTransport-specific routines to report model results. The main functionality is to generate transport reporting variables in MIF format from a given edgeTransport model run folder or REMIND input data.", + "Depends": [ + "R (>= 3.5.0)" + ], + "License": "LGPL-3", + "URL": "https://github.com/pik-piam/reporttransport", + "Imports": [ + "data.table", + "gdx", + "gdxrrw", + "piamPlotComparison", + "quitte", + "rmndt", + "utils" + ], + "Suggests": [ + "knitr", + "sf", + "testthat" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/reporttransport", + "RemoteRef": "HEAD", + "RemoteSha": "ded63724df341ae267a3bfa89cde49e9efcc9ea7", + "NeedsCompilation": "no", + "Author": "Johanna Hoppe [aut, cre], Jarusch Muessel [aut] (), Alex K. Hagen [aut] ()", + "Maintainer": "Johanna Hoppe " + }, + "reprex": { + "Package": "reprex", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Prepare Reproducible Example Code via the Clipboard", + "Authors@R": "c( person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"David\", \"Robinson\", , \"admiral.david@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Convenience wrapper that uses the 'rmarkdown' package to render small snippets of code to target formats that include both code and output. The goal is to encourage the sharing of small, reproducible, and runnable examples on code-oriented websites, such as and , or in email. The user's clipboard is the default source of input code and the default target for rendered output. 'reprex' also extracts clean, runnable R code from various common formats, such as copy/paste from an R session.", + "License": "MIT + file LICENSE", + "URL": "https://reprex.tidyverse.org, https://github.com/tidyverse/reprex", + "BugReports": "https://github.com/tidyverse/reprex/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "callr (>= 3.6.0)", + "cli (>= 3.2.0)", + "clipr (>= 0.4.0)", + "fs", + "glue", + "knitr (>= 1.23)", + "lifecycle", + "rlang (>= 1.0.0)", + "rmarkdown", + "rstudioapi", + "utils", + "withr (>= 2.3.0)" + ], + "Suggests": [ + "covr", + "fortunes", + "miniUI", + "rprojroot", + "sessioninfo", + "shiny", + "spelling", + "styler (>= 1.2.0)", + "testthat (>= 3.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "knitr-options, venues, reprex", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.2", + "SystemRequirements": "pandoc (>= 2.0) - https://pandoc.org/", + "NeedsCompilation": "no", + "Author": "Jennifer Bryan [aut, cre] (), Jim Hester [aut] (), David Robinson [aut], Hadley Wickham [aut] (), Christophe Dervieux [aut] (), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "reshape": { + "Package": "reshape", + "Version": "0.8.10", + "Source": "Repository", + "Title": "Flexibly Reshape Data", + "Description": "Flexibly restructure and aggregate data using just two functions: melt and cast.", + "Authors@R": "person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", c(\"aut\", \"cre\"))", + "URL": "http://had.co.nz/reshape", + "Depends": [ + "R (>= 2.6.1)" + ], + "Imports": [ + "plyr" + ], + "License": "MIT + file LICENSE", + "LazyData": "true", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Title": "Flexibly Reshape Data: A Reboot of the Reshape Package", + "Author": "Hadley Wickham ", + "Maintainer": "Hadley Wickham ", + "Description": "Flexibly restructure and aggregate data using just two functions: melt and 'dcast' (or 'acast').", + "License": "MIT + file LICENSE", + "URL": "https://github.com/hadley/reshape", + "BugReports": "https://github.com/hadley/reshape/issues", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "plyr (>= 1.8.1)", + "Rcpp", + "stringr" + ], + "Suggests": [ + "covr", + "lattice", + "testthat (>= 0.8.0)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.1.0", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "reticulate": { + "Package": "reticulate", + "Version": "1.43.0", + "Source": "Repository", + "Type": "Package", + "Title": "Interface to 'Python'", + "Authors@R": "c( person(\"Tomasz\", \"Kalinowski\", role = c(\"ctb\", \"cre\"), email = \"tomasz@posit.co\"), person(\"Kevin\", \"Ushey\", role = c(\"aut\"), email = \"kevin@posit.co\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")), person(\"Yuan\", \"Tang\", role = c(\"aut\", \"cph\"), email = \"terrytangyuan@gmail.com\", comment = c(ORCID = \"0000-0001-5243-233X\")), person(\"Dirk\", \"Eddelbuettel\", role = c(\"ctb\", \"cph\"), email = \"edd@debian.org\"), person(\"Bryan\", \"Lewis\", role = c(\"ctb\", \"cph\"), email = \"blewis@illposed.net\"), person(\"Sigrid\", \"Keydana\", role = c(\"ctb\"), email = \"sigrid@posit.co\"), person(\"Ryan\", \"Hafen\", role = c(\"ctb\", \"cph\"), email = \"rhafen@gmail.com\"), person(\"Marcus\", \"Geelnard\", role = c(\"ctb\", \"cph\"), comment = \"TinyThread library, http://tinythreadpp.bitsnbites.eu/\") )", + "Description": "Interface to 'Python' modules, classes, and functions. When calling into 'Python', R data types are automatically converted to their equivalent 'Python' types. When values are returned from 'Python' to R they are converted back to R types. Compatible with all versions of 'Python' >= 2.7.", + "License": "Apache License 2.0", + "URL": "https://rstudio.github.io/reticulate/, https://github.com/rstudio/reticulate", + "BugReports": "https://github.com/rstudio/reticulate/issues", + "SystemRequirements": "Python (>= 2.7.0)", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 3.5)" + ], + "Imports": [ + "Matrix", + "Rcpp (>= 1.0.7)", + "RcppTOML", + "graphics", + "here", + "jsonlite", + "methods", + "png", + "rappdirs", + "utils", + "rlang", + "withr" + ], + "Suggests": [ + "callr", + "knitr", + "glue", + "cli", + "rmarkdown", + "pillar", + "testthat" + ], + "LinkingTo": [ + "Rcpp" + ], + "RoxygenNote": "7.3.2", + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "NeedsCompilation": "yes", + "Author": "Tomasz Kalinowski [ctb, cre], Kevin Ushey [aut], JJ Allaire [aut], RStudio [cph, fnd], Yuan Tang [aut, cph] (ORCID: ), Dirk Eddelbuettel [ctb, cph], Bryan Lewis [ctb, cph], Sigrid Keydana [ctb], Ryan Hafen [ctb, cph], Marcus Geelnard [ctb, cph] (TinyThread library, http://tinythreadpp.bitsnbites.eu/)", + "Maintainer": "Tomasz Kalinowski ", + "Repository": "CRAN" + }, + "rex": { + "Package": "rex", + "Version": "1.2.1", + "Source": "Repository", + "Type": "Package", + "Title": "Friendly Regular Expressions", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", , \"kevinushey@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Jim\", \"Hester\", , \"james.f.hester@gmail.com\", role = \"aut\"), person(\"Robert\", \"Krzyzanowski\", , \"rkrzyzanowski@gmail.com\", role = \"aut\") )", + "Description": "A friendly interface for the construction of regular expressions.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/kevinushey/rex", + "BugReports": "https://github.com/kevinushey/rex/issues", + "Imports": [ + "lazyeval" + ], + "Suggests": [ + "covr", + "dplyr", + "ggplot2", + "Hmisc", + "knitr", + "magrittr", + "rmarkdown", + "roxygen2", + "rvest", + "stringr", + "testthat" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "Collate": "'aaa.R' 'utils.R' 'escape.R' 'capture.R' 'character_class.R' 'counts.R' 'lookarounds.R' 'match.R' 'or.R' 'rex-mode.R' 'rex.R' 'shortcuts.R' 'wildcards.R' 'zzz.R'", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre], Jim Hester [aut], Robert Krzyzanowski [aut]", + "Maintainer": "Kevin Ushey ", + "Repository": "CRAN" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.7", + "Source": "Repository", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.", + "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": [ + "R (>= 4.0.0)" + ], + "Imports": [ + "utils" + ], + "Suggests": [ + "cli (>= 3.1.0)", + "covr", + "crayon", + "desc", + "fs", + "glue", + "knitr", + "magrittr", + "methods", + "pillar", + "pkgload", + "rmarkdown", + "stats", + "testthat (>= 3.2.0)", + "tibble", + "usethis", + "vctrs (>= 0.2.3)", + "withr" + ], + "Enhances": [ + "winch" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], mikefc [cph] (Hash implementation based on Mike's xxhashlite), Yann Collet [cph] (Author of the embedded xxHash library), Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.31", + "Source": "Repository", + "Type": "Package", + "Title": "Dynamic Documents for R", + "Authors@R": "c( person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"), person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"), person(\"Javier\", \"Luraschi\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"), person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")), person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")), person(\"Malcolm\", \"Barrett\", role = \"ctb\"), person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"), person(\"Romain\", \"Lesur\", role = \"ctb\"), person(\"Roy\", \"Storey\", role = \"ctb\"), person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"), person(\"Sergio\", \"Oller\", role = \"ctb\"), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"), person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"), person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"), person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"), person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"), person(, \"W3C\", role = \"cph\", comment = \"slidy library\"), person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"), person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"), person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"), person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"), person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"), person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\") )", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown, https://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "bslib (>= 0.2.5.1)", + "evaluate (>= 0.13)", + "fontawesome (>= 0.5.0)", + "htmltools (>= 0.5.1)", + "jquerylib", + "jsonlite", + "knitr (>= 1.43)", + "methods", + "tinytex (>= 0.31)", + "tools", + "utils", + "xfun (>= 0.36)", + "yaml (>= 2.1.19)" + ], + "Suggests": [ + "digest", + "dygraphs", + "fs", + "rsconnect", + "downlit (>= 0.4.0)", + "katex (>= 1.4.0)", + "sass (>= 0.4.0)", + "shiny (>= 1.6.0)", + "testthat (>= 3.0.3)", + "tibble", + "vctrs", + "cleanrmd", + "withr (>= 2.4.2)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Author": "JJ Allaire [aut], Yihui Xie [aut, cre] (ORCID: ), Christophe Dervieux [aut] (ORCID: ), Jonathan McPherson [aut], Javier Luraschi [aut], Kevin Ushey [aut], Aron Atkins [aut], Hadley Wickham [aut], Joe Cheng [aut], Winston Chang [aut], Richard Iannone [aut] (ORCID: ), Andrew Dunning [ctb] (ORCID: ), Atsushi Yasumoto [ctb, cph] (ORCID: , cph: Number sections Lua filter), Barret Schloerke [ctb], Carson Sievert [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Frederik Aust [ctb] (ORCID: ), Jeff Allen [ctb], JooYoung Seo [ctb] (ORCID: ), Malcolm Barrett [ctb], Rob Hyndman [ctb], Romain Lesur [ctb], Roy Storey [ctb], Ruben Arslan [ctb], Sergio Oller [ctb], Posit Software, PBC [cph, fnd], jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/rmd/h/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Alexander Farkas [ctb, cph] (html5shiv library), Scott Jehl [ctb, cph] (Respond.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), Greg Franko [ctb, cph] (tocify library), John MacFarlane [ctb, cph] (Pandoc templates), Google, Inc. [ctb, cph] (ioslides library), Dave Raggett [ctb] (slidy library), W3C [cph] (slidy library), Dave Gandy [ctb, cph] (Font-Awesome), Ben Sperry [ctb] (Ionicons), Drifty [cph] (Ionicons), Aidan Lister [ctb, cph] (jQuery StickyTabs), Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter), Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "rmndt": { + "Package": "rmndt", + "Version": "0.6.0", + "Source": "Repository", + "Title": "Tools for data.table objects in the REMIND context", + "Authors@R": "person(\"Alois\", \"Dirnaichner\", email = \"dirnaichner@pik-potsdam.de\", role = c(\"aut\", \"cre\"))", + "Description": "Helper functions for REMIND-related tasks with data.table objects, e.g., interpolation and (dis-)aggregation.", + "Depends": [ + "R (>= 3.1)", + "data.table (>= 1.11.0)" + ], + "License": "GPL-3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.1", + "Suggests": [ + "testthat", + "magclass", + "covr" + ], + "Date": "2024-04-18", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/rmndt", + "RemoteRef": "HEAD", + "RemoteSha": "7adc50e4c27032db8f55a2384e2b86cb09782faa", + "NeedsCompilation": "no", + "Author": "Alois Dirnaichner [aut, cre]", + "Maintainer": "Alois Dirnaichner " + }, + "rootSolve": { + "Package": "rootSolve", + "Version": "1.8.2.4", + "Source": "Repository", + "Title": "Nonlinear Root Finding, Equilibrium and Steady-State Analysis of Ordinary Differential Equations", + "Authors@R": "c(person(\"Karline\",\"Soetaert\", role = c(\"aut\", \"cre\"), email = \"karline.soetaert@nioz.nl\"), person(\"Alan C.\",\"Hindmarsh\", role = \"ctb\", comment = \"files lsodes.f, sparse.f\"), person(\"S.C.\",\"Eisenstat\", role = \"ctb\", comment = \"file sparse.f\"), person(\"Cleve\",\"Moler\", role = \"ctb\", comment = \"file dlinpk.f\"), person(\"Jack\",\"Dongarra\", role = \"ctb\", comment = \"file dlinpk.f\"), person(\"Youcef\", \"Saad\", role = \"ctb\", comment = \"file dsparsk.f\"))", + "Maintainer": "Karline Soetaert ", + "Author": "Karline Soetaert [aut, cre], Alan C. Hindmarsh [ctb] (files lsodes.f, sparse.f), S.C. Eisenstat [ctb] (file sparse.f), Cleve Moler [ctb] (file dlinpk.f), Jack Dongarra [ctb] (file dlinpk.f), Youcef Saad [ctb] (file dsparsk.f)", + "Depends": [ + "R (>= 2.01)" + ], + "Imports": [ + "stats", + "graphics", + "grDevices" + ], + "Description": "Routines to find the root of nonlinear functions, and to perform steady-state and equilibrium analysis of ordinary differential equations (ODE). Includes routines that: (1) generate gradient and jacobian matrices (full and banded), (2) find roots of non-linear equations by the 'Newton-Raphson' method, (3) estimate steady-state conditions of a system of (differential) equations in full, banded or sparse form, using the 'Newton-Raphson' method, or by dynamically running, (4) solve the steady-state conditions for uni-and multicomponent 1-D, 2-D, and 3-D partial differential equations, that have been converted to ordinary differential equations by numerical differencing (using the method-of-lines approach). Includes fortran code.", + "License": "GPL (>= 2)", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "roxygen2": { + "Package": "roxygen2", + "Version": "7.3.3", + "Source": "Repository", + "Title": "In-Line Documentation for R", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Peter\", \"Danenberg\", , \"pcd@roxygen.org\", role = c(\"aut\", \"cph\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"aut\"), person(\"Manuel\", \"Eugster\", role = c(\"aut\", \"cph\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Generate your Rd documentation, 'NAMESPACE' file, and collation field using specially formatted comments. Writing documentation in-line with code makes it easier to keep your documentation up-to-date as your requirements change. 'roxygen2' is inspired by the 'Doxygen' system for C++.", + "License": "MIT + file LICENSE", + "URL": "https://roxygen2.r-lib.org/, https://github.com/r-lib/roxygen2", + "BugReports": "https://github.com/r-lib/roxygen2/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "brew", + "cli (>= 3.3.0)", + "commonmark", + "desc (>= 1.2.0)", + "knitr", + "methods", + "pkgload (>= 1.0.2)", + "purrr (>= 1.0.0)", + "R6 (>= 2.1.2)", + "rlang (>= 1.0.6)", + "stringi", + "stringr (>= 1.0.0)", + "utils", + "withr", + "xml2" + ], + "Suggests": [ + "covr", + "R.methodsS3", + "R.oo", + "rmarkdown (>= 2.16)", + "testthat (>= 3.1.2)", + "yaml" + ], + "LinkingTo": [ + "cpp11" + ], + "VignetteBuilder": "knitr", + "Config/Needs/development": "testthat", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre, cph] (ORCID: ), Peter Danenberg [aut, cph], Gábor Csárdi [aut], Manuel Eugster [aut, cph], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "rpart": { + "Package": "rpart", + "Version": "4.1.21", + "Source": "Repository", + "Priority": "recommended", + "Date": "2023-10-09", + "Authors@R": "c(person(\"Terry\", \"Therneau\", role = \"aut\", email = \"therneau@mayo.edu\"), person(\"Beth\", \"Atkinson\", role = c(\"aut\", \"cre\"), email = \"atkinson@mayo.edu\"), person(\"Brian\", \"Ripley\", role = \"trl\", email = \"ripley@stats.ox.ac.uk\", comment = \"producer of the initial R port, maintainer 1999-2017\"))", + "Description": "Recursive partitioning for classification, regression and survival trees. An implementation of most of the functionality of the 1984 book by Breiman, Friedman, Olshen and Stone.", + "Title": "Recursive Partitioning and Regression Trees", + "Depends": [ + "R (>= 2.15.0)", + "graphics", + "stats", + "grDevices" + ], + "Suggests": [ + "survival" + ], + "License": "GPL-2 | GPL-3", + "LazyData": "yes", + "ByteCompile": "yes", + "NeedsCompilation": "yes", + "Author": "Terry Therneau [aut], Beth Atkinson [aut, cre], Brian Ripley [trl] (producer of the initial R port, maintainer 1999-2017)", + "Maintainer": "Beth Atkinson ", + "Repository": "CRAN", + "URL": "https://github.com/bethatkinson/rpart, https://cran.r-project.org/package=rpart", + "BugReports": "https://github.com/bethatkinson/rpart/issues" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.1.1", + "Source": "Repository", + "Title": "Finding Files in Project Subdirectories", + "Authors@R": "person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\"))", + "Description": "Robust, reliable and flexible paths to files below a project root. The 'root' of a project is defined as a directory that matches a certain criterion, e.g., it contains a certain regular file.", + "License": "MIT + file LICENSE", + "URL": "https://rprojroot.r-lib.org/, https://github.com/r-lib/rprojroot", + "BugReports": "https://github.com/r-lib/rprojroot/issues", + "Depends": [ + "R (>= 3.0.0)" + ], + "Suggests": [ + "covr", + "knitr", + "lifecycle", + "rlang", + "rmarkdown", + "testthat (>= 3.2.0)", + "withr" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "no", + "Author": "Kirill Müller [aut, cre] (ORCID: )", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.17.1", + "Source": "Repository", + "Title": "Safely Access the RStudio API", + "Description": "Access the RStudio API (if available) and provide informative error messages when it's not.", + "Authors@R": "c( person(\"Kevin\", \"Ushey\", role = c(\"aut\", \"cre\"), email = \"kevin@rstudio.com\"), person(\"JJ\", \"Allaire\", role = c(\"aut\"), email = \"jj@posit.co\"), person(\"Hadley\", \"Wickham\", role = c(\"aut\"), email = \"hadley@posit.co\"), person(\"Gary\", \"Ritchie\", role = c(\"aut\"), email = \"gary@posit.co\"), person(family = \"RStudio\", role = \"cph\") )", + "Maintainer": "Kevin Ushey ", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/rstudioapi/, https://github.com/rstudio/rstudioapi", + "BugReports": "https://github.com/rstudio/rstudioapi/issues", + "RoxygenNote": "7.3.2", + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "clipr", + "covr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Kevin Ushey [aut, cre], JJ Allaire [aut], Hadley Wickham [aut], Gary Ritchie [aut], RStudio [cph]", + "Repository": "CRAN" + }, + "rversions": { + "Package": "rversions", + "Version": "3.0.0", + "Source": "Repository", + "Title": "Query 'R' Versions, Including 'r-release' and 'r-oldrel'", + "Authors@R": "c(person(given = \"Gábor\", family = \"Csárdi\", role = c(\"aut\", \"cre\"), email = \"csardi.gabor@gmail.com\"), person(given = \"Jeroen\", family = \"Ooms\", role = \"ctb\", email = \"jeroen.ooms@stat.ucla.edu\"), person(given = \"R Consortium\", role = \"fnd\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")))", + "Description": "Query the main 'R' 'SVN' repository to find the versions 'r-release' and 'r-oldrel' refer to, and also all previous 'R' versions and their release dates.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-hub/rversions, https://r-hub.github.io/rversions/", + "BugReports": "https://github.com/r-hub/rversions/issues", + "Imports": [ + "curl" + ], + "Suggests": [ + "pillar", + "testthat (>= 3.0.0)", + "webfakes", + "withr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Jeroen Ooms [ctb], R Consortium [fnd], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "rvest": { + "Package": "rvest", + "Version": "1.0.4", + "Source": "Repository", + "Title": "Easily Harvest (Scrape) Web Pages", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Wrappers around the 'xml2' and 'httr' packages to make it easy to download, then manipulate, HTML and XML.", + "License": "MIT + file LICENSE", + "URL": "https://rvest.tidyverse.org/, https://github.com/tidyverse/rvest", + "BugReports": "https://github.com/tidyverse/rvest/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli", + "glue", + "httr (>= 0.5)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.1.0)", + "selectr", + "tibble", + "xml2 (>= 1.3)" + ], + "Suggests": [ + "chromote", + "covr", + "knitr", + "R6", + "readr", + "repurrrsive", + "rmarkdown", + "spelling", + "stringi (>= 0.3.1)", + "testthat (>= 3.0.2)", + "webfakes" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.1", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "rworldmap": { + "Package": "rworldmap", + "Version": "1.3-8", + "Source": "Repository", + "Type": "Package", + "Title": "Mapping Global Data", + "Date": "2023-10-15", + "Authors@R": "person(given = \"Andy\", family = \"South\", role = c(\"aut\", \"cre\"), email = \"southandy@gmail.com\", comment = c(ORCID = \"0000-0003-4051-6135\"))", + "Description": "Enables mapping of country level and gridded user datasets.", + "License": "GPL (>= 2)", + "Depends": [ + "R (>= 2.10.0)", + "sp" + ], + "Imports": [ + "fields", + "methods", + "raster", + "terra" + ], + "Suggests": [ + "rworldxtra", + "RColorBrewer", + "classInt", + "sf" + ], + "LazyData": "true", + "URL": "https://github.com/AndySouth/rworldmap/, https://groups.google.com/forum/#!forum/rworldmap", + "BugReports": "https://github.com/AndySouth/rworldmap/issues", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Author": "Andy South [aut, cre] ()", + "Maintainer": "Andy South ", + "Repository": "CRAN" + }, + "sass": { + "Package": "sass", + "Version": "0.4.10", + "Source": "Repository", + "Type": "Package", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this, R developers can use variables, inheritance, and functions to generate dynamic style sheets. The package uses the 'Sass CSS' extension language, which is stable, powerful, and CSS compatible.", + "Authors@R": "c( person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"), person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"), person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"), comment = c(ORCID = \"0000-0003-4474-2498\")), person(family = \"RStudio\", role = c(\"cph\", \"fnd\")), person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"), comment = \"LibSass library\"), person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"), comment = \"json.cpp\"), person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"), comment = \"utf8.h\") )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "GNU make", + "Imports": [ + "fs (>= 1.2.4)", + "rlang (>= 0.4.10)", + "htmltools (>= 0.5.1)", + "R6", + "rappdirs" + ], + "Suggests": [ + "testthat", + "knitr", + "rmarkdown", + "withr", + "shiny", + "curl" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Joe Cheng [aut], Timothy Mastny [aut], Richard Iannone [aut] (), Barret Schloerke [aut] (), Carson Sievert [aut, cre] (), Christophe Dervieux [ctb] (), RStudio [cph, fnd], Sass Open Source Foundation [ctb, cph] (LibSass library), Greter Marcel [ctb, cph] (LibSass library), Mifsud Michael [ctb, cph] (LibSass library), Hampton Catlin [ctb, cph] (LibSass library), Natalie Weizenbaum [ctb, cph] (LibSass library), Chris Eppstein [ctb, cph] (LibSass library), Adams Joseph [ctb, cph] (json.cpp), Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN" + }, + "scales": { + "Package": "scales", + "Version": "1.4.0", + "Source": "Repository", + "Title": "Scale Functions for Visualization", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Dana\", \"Seidel\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Graphical scales map data to aesthetics, and provide methods for automatically determining breaks and labels for axes and legends.", + "License": "MIT + file LICENSE", + "URL": "https://scales.r-lib.org, https://github.com/r-lib/scales", + "BugReports": "https://github.com/r-lib/scales/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli", + "farver (>= 2.0.3)", + "glue", + "labeling", + "lifecycle", + "R6", + "RColorBrewer", + "rlang (>= 1.1.0)", + "viridisLite" + ], + "Suggests": [ + "bit64", + "covr", + "dichromat", + "ggplot2", + "hms (>= 0.5.0)", + "stringi", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "LazyLoad": "yes", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut], Thomas Lin Pedersen [cre, aut] (), Dana Seidel [aut], Posit Software, PBC [cph, fnd] (03wc8by49)", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "selectr": { + "Package": "selectr", + "Version": "0.4-2", + "Source": "Repository", + "Type": "Package", + "Title": "Translate CSS Selectors to XPath Expressions", + "Date": "2019-11-20", + "Authors@R": "c(person(\"Simon\", \"Potter\", role = c(\"aut\", \"trl\", \"cre\"), email = \"simon@sjp.co.nz\"), person(\"Simon\", \"Sapin\", role = \"aut\"), person(\"Ian\", \"Bicking\", role = \"aut\"))", + "License": "BSD_3_clause + file LICENCE", + "Depends": [ + "R (>= 3.0)" + ], + "Imports": [ + "methods", + "stringr", + "R6" + ], + "Suggests": [ + "testthat", + "XML", + "xml2" + ], + "URL": "https://sjp.co.nz/projects/selectr", + "BugReports": "https://github.com/sjp/selectr/issues", + "Description": "Translates a CSS3 selector into an equivalent XPath expression. This allows us to use CSS selectors when working with the XML package as it can only evaluate XPath expressions. Also provided are convenience functions useful for using CSS selectors on XML nodes. This package is a port of the Python package 'cssselect' ().", + "NeedsCompilation": "no", + "Author": "Simon Potter [aut, trl, cre], Simon Sapin [aut], Ian Bicking [aut]", + "Maintainer": "Simon Potter ", + "Repository": "CRAN" + }, + "sessioninfo": { + "Package": "sessioninfo", + "Version": "1.2.3", + "Source": "Repository", + "Title": "R Session Information", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"cre\"), person(\"Hadley\", \"Wickham\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Robert\", \"Flight\", role = \"aut\"), person(\"Kirill\", \"Müller\", role = \"aut\"), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"R Core team\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Maintainer": "Gábor Csárdi ", + "Description": "Query and print information about the current R session. It is similar to 'utils::sessionInfo()', but includes more information about packages, and where they were installed from.", + "License": "GPL-2", + "URL": "https://github.com/r-lib/sessioninfo#readme, https://sessioninfo.r-lib.org", + "BugReports": "https://github.com/r-lib/sessioninfo/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "cli (>= 3.1.0)", + "tools", + "utils" + ], + "Suggests": [ + "callr", + "covr", + "gh", + "reticulate", + "rmarkdown", + "testthat (>= 3.2.0)", + "withr" + ], + "Config/Needs/website": "pkgdown, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [cre], Hadley Wickham [aut], Winston Chang [aut], Robert Flight [aut], Kirill Müller [aut], Jim Hester [aut], R Core team [ctb], Posit Software, PBC [cph, fnd]", + "Repository": "CRAN" + }, + "shiny": { + "Package": "shiny", + "Version": "1.11.1", + "Source": "Repository", + "Type": "Package", + "Title": "Web Application Framework for R", + "Authors@R": "c( person(\"Winston\", \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@posit.co\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@posit.co\"), person(\"JJ\", \"Allaire\", role = \"aut\", email = \"jj@posit.co\"), person(\"Carson\", \"Sievert\", role = \"aut\", email = \"carson@posit.co\", comment = c(ORCID = \"0000-0002-4958-2844\")), person(\"Barret\", \"Schloerke\", role = \"aut\", email = \"barret@posit.co\", comment = c(ORCID = \"0000-0001-9986-114X\")), person(\"Yihui\", \"Xie\", role = \"aut\", email = \"yihui@posit.co\"), person(\"Jeff\", \"Allen\", role = \"aut\"), person(\"Jonathan\", \"McPherson\", role = \"aut\", email = \"jonathan@posit.co\"), person(\"Alan\", \"Dipert\", role = \"aut\"), person(\"Barbara\", \"Borges\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library and jQuery UI library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt\"), person(family = \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt\"), person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"), person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"), person(family = \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"), person(family = \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"), person(\"Prem Nawaz\", \"Khan\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Victor\", \"Tsaran\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Dennis\", \"Lembree\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Srinivasu\", \"Chakravarthula\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(\"Cathy\", \"O'Connor\", role = \"ctb\", comment = \"Bootstrap accessibility plugin\"), person(family = \"PayPal, Inc\", role = \"cph\", comment = \"Bootstrap accessibility plugin\"), person(\"Stefan\", \"Petre\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Andrew\", \"Rowls\", role = c(\"ctb\", \"cph\"), comment = \"Bootstrap-datepicker library\"), person(\"Brian\", \"Reavis\", role = c(\"ctb\", \"cph\"), comment = \"selectize.js library\"), person(\"Salmen\", \"Bejaoui\", role = c(\"ctb\", \"cph\"), comment = \"selectize-plugin-a11y library\"), person(\"Denis\", \"Ineshin\", role = c(\"ctb\", \"cph\"), comment = \"ion.rangeSlider library\"), person(\"Sami\", \"Samhuri\", role = c(\"ctb\", \"cph\"), comment = \"Javascript strftime library\"), person(family = \"SpryMedia Limited\", role = c(\"ctb\", \"cph\"), comment = \"DataTables library\"), person(\"John\", \"Fraser\", role = c(\"ctb\", \"cph\"), comment = \"showdown.js library\"), person(\"John\", \"Gruber\", role = c(\"ctb\", \"cph\"), comment = \"showdown.js library\"), person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"), person(given = \"R Core Team\", role = c(\"ctb\", \"cph\"), comment = \"tar implementation from R\") )", + "Description": "Makes it incredibly easy to build interactive web applications with R. Automatic \"reactive\" binding between inputs and outputs and extensive prebuilt widgets make it possible to build beautiful, responsive, and powerful applications with minimal effort.", + "License": "GPL-3 | file LICENSE", + "Depends": [ + "R (>= 3.0.2)", + "methods" + ], + "Imports": [ + "utils", + "grDevices", + "httpuv (>= 1.5.2)", + "mime (>= 0.3)", + "jsonlite (>= 0.9.16)", + "xtable", + "fontawesome (>= 0.4.0)", + "htmltools (>= 0.5.4)", + "R6 (>= 2.0)", + "sourcetools", + "later (>= 1.0.0)", + "promises (>= 1.3.2)", + "tools", + "cli", + "rlang (>= 0.4.10)", + "fastmap (>= 1.1.1)", + "withr", + "commonmark (>= 1.7)", + "glue (>= 1.3.2)", + "bslib (>= 0.6.0)", + "cachem (>= 1.1.0)", + "lifecycle (>= 0.2.0)" + ], + "Suggests": [ + "coro (>= 1.1.0)", + "datasets", + "DT", + "Cairo (>= 1.5-5)", + "testthat (>= 3.2.1)", + "knitr (>= 1.6)", + "markdown", + "rmarkdown", + "ggplot2", + "reactlog (>= 1.0.0)", + "magrittr", + "yaml", + "mirai", + "future", + "dygraphs", + "ragg", + "showtext", + "sass", + "watcher" + ], + "URL": "https://shiny.posit.co/, https://github.com/rstudio/shiny", + "BugReports": "https://github.com/rstudio/shiny/issues", + "Collate": "'globals.R' 'app-state.R' 'app_template.R' 'bind-cache.R' 'bind-event.R' 'bookmark-state-local.R' 'bookmark-state.R' 'bootstrap-deprecated.R' 'bootstrap-layout.R' 'conditions.R' 'map.R' 'utils.R' 'bootstrap.R' 'busy-indicators-spinners.R' 'busy-indicators.R' 'cache-utils.R' 'deprecated.R' 'devmode.R' 'diagnose.R' 'extended-task.R' 'fileupload.R' 'graph.R' 'reactives.R' 'reactive-domains.R' 'history.R' 'hooks.R' 'html-deps.R' 'image-interact-opts.R' 'image-interact.R' 'imageutils.R' 'input-action.R' 'input-checkbox.R' 'input-checkboxgroup.R' 'input-date.R' 'input-daterange.R' 'input-file.R' 'input-numeric.R' 'input-password.R' 'input-radiobuttons.R' 'input-select.R' 'input-slider.R' 'input-submit.R' 'input-text.R' 'input-textarea.R' 'input-utils.R' 'insert-tab.R' 'insert-ui.R' 'jqueryui.R' 'knitr.R' 'middleware-shiny.R' 'middleware.R' 'timer.R' 'shiny.R' 'mock-session.R' 'modal.R' 'modules.R' 'notifications.R' 'priorityqueue.R' 'progress.R' 'react.R' 'reexports.R' 'render-cached-plot.R' 'render-plot.R' 'render-table.R' 'run-url.R' 'runapp.R' 'serializers.R' 'server-input-handlers.R' 'server-resource-paths.R' 'server.R' 'shiny-options.R' 'shiny-package.R' 'shinyapp.R' 'shinyui.R' 'shinywrappers.R' 'showcase.R' 'snapshot.R' 'staticimports.R' 'tar.R' 'test-export.R' 'test-server.R' 'test.R' 'update-input.R' 'utils-lang.R' 'version_bs_date_picker.R' 'version_ion_range_slider.R' 'version_jquery.R' 'version_jqueryui.R' 'version_selectize.R' 'version_strftime.R' 'viewer.R'", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "Config/Needs/check": "shinytest2", + "NeedsCompilation": "no", + "Author": "Winston Chang [aut, cre] (ORCID: ), Joe Cheng [aut], JJ Allaire [aut], Carson Sievert [aut] (ORCID: ), Barret Schloerke [aut] (ORCID: ), Yihui Xie [aut], Jeff Allen [aut], Jonathan McPherson [aut], Alan Dipert [aut], Barbara Borges [aut], Posit Software, PBC [cph, fnd], jQuery Foundation [cph] (jQuery library and jQuery UI library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/www/shared/jquery-AUTHORS.txt), jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in inst/www/shared/jqueryui/AUTHORS.txt), Mark Otto [ctb] (Bootstrap library), Jacob Thornton [ctb] (Bootstrap library), Bootstrap contributors [ctb] (Bootstrap library), Twitter, Inc [cph] (Bootstrap library), Prem Nawaz Khan [ctb] (Bootstrap accessibility plugin), Victor Tsaran [ctb] (Bootstrap accessibility plugin), Dennis Lembree [ctb] (Bootstrap accessibility plugin), Srinivasu Chakravarthula [ctb] (Bootstrap accessibility plugin), Cathy O'Connor [ctb] (Bootstrap accessibility plugin), PayPal, Inc [cph] (Bootstrap accessibility plugin), Stefan Petre [ctb, cph] (Bootstrap-datepicker library), Andrew Rowls [ctb, cph] (Bootstrap-datepicker library), Brian Reavis [ctb, cph] (selectize.js library), Salmen Bejaoui [ctb, cph] (selectize-plugin-a11y library), Denis Ineshin [ctb, cph] (ion.rangeSlider library), Sami Samhuri [ctb, cph] (Javascript strftime library), SpryMedia Limited [ctb, cph] (DataTables library), John Fraser [ctb, cph] (showdown.js library), John Gruber [ctb, cph] (showdown.js library), Ivan Sagalaev [ctb, cph] (highlight.js library), R Core Team [ctb, cph] (tar implementation from R)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7-1", + "Source": "Repository", + "Type": "Package", + "Title": "Tools for Reading, Tokenizing and Parsing R Code", + "Author": "Kevin Ushey", + "Maintainer": "Kevin Ushey ", + "Description": "Tools for the reading and tokenization of R code. The 'sourcetools' package provides both an R and C++ interface for the tokenization of R code, and helpers for interacting with the tokenized representation of R code.", + "License": "MIT + file LICENSE", + "Depends": [ + "R (>= 3.0.2)" + ], + "Suggests": [ + "testthat" + ], + "RoxygenNote": "5.0.1", + "BugReports": "https://github.com/kevinushey/sourcetools/issues", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "sp": { + "Package": "sp", + "Version": "2.2-0", + "Source": "Repository", + "Title": "Classes and Methods for Spatial Data", + "Authors@R": "c(person(\"Edzer\", \"Pebesma\", role = c(\"aut\", \"cre\"), email = \"edzer.pebesma@uni-muenster.de\"), person(\"Roger\", \"Bivand\", role = \"aut\", email = \"Roger.Bivand@nhh.no\"), person(\"Barry\", \"Rowlingson\", role = \"ctb\"), person(\"Virgilio\", \"Gomez-Rubio\", role = \"ctb\"), person(\"Robert\", \"Hijmans\", role = \"ctb\"), person(\"Michael\", \"Sumner\", role = \"ctb\"), person(\"Don\", \"MacQueen\", role = \"ctb\"), person(\"Jim\", \"Lemon\", role = \"ctb\"), person(\"Finn\", \"Lindgren\", role = \"ctb\"), person(\"Josh\", \"O'Brien\", role = \"ctb\"), person(\"Joseph\", \"O'Rourke\", role = \"ctb\"), person(\"Patrick\", \"Hausmann\", role = \"ctb\"))", + "Depends": [ + "R (>= 3.5.0)", + "methods" + ], + "Imports": [ + "utils", + "stats", + "graphics", + "grDevices", + "lattice", + "grid" + ], + "Suggests": [ + "RColorBrewer", + "gstat", + "deldir", + "knitr", + "maps", + "mapview", + "rmarkdown", + "sf", + "terra", + "raster" + ], + "Description": "Classes and methods for spatial data; the classes document where the spatial location information resides, for 2D or 3D data. Utility functions are provided, e.g. for plotting data as maps, spatial selection, as well as methods for retrieving coordinates, for subsetting, print, summary, etc. From this version, 'rgdal', 'maptools', and 'rgeos' are no longer used at all, see for details.", + "License": "GPL (>= 2)", + "URL": "https://github.com/edzer/sp/ https://edzer.github.io/sp/", + "BugReports": "https://github.com/edzer/sp/issues", + "Collate": "bpy.colors.R AAA.R Class-CRS.R CRS-methods.R Class-Spatial.R Spatial-methods.R projected.R Class-SpatialPoints.R SpatialPoints-methods.R Class-SpatialPointsDataFrame.R SpatialPointsDataFrame-methods.R Class-SpatialMultiPoints.R SpatialMultiPoints-methods.R Class-SpatialMultiPointsDataFrame.R SpatialMultiPointsDataFrame-methods.R Class-GridTopology.R Class-SpatialGrid.R Class-SpatialGridDataFrame.R Class-SpatialLines.R SpatialLines-methods.R Class-SpatialLinesDataFrame.R SpatialLinesDataFrame-methods.R Class-SpatialPolygons.R Class-SpatialPolygonsDataFrame.R SpatialPolygons-methods.R SpatialPolygonsDataFrame-methods.R GridTopology-methods.R SpatialGrid-methods.R SpatialGridDataFrame-methods.R SpatialPolygons-internals.R point.in.polygon.R SpatialPolygons-displayMethods.R zerodist.R image.R stack.R bubble.R mapasp.R select.spatial.R gridded.R asciigrid.R spplot.R over.R spsample.R recenter.R dms.R gridlines.R spdists.R rbind.R flipSGDF.R chfids.R loadmeuse.R compassRose.R surfaceArea.R spOptions.R subset.R disaggregate.R sp_spat1.R merge.R aggregate.R elide.R sp2Mondrian.R", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Edzer Pebesma [aut, cre], Roger Bivand [aut], Barry Rowlingson [ctb], Virgilio Gomez-Rubio [ctb], Robert Hijmans [ctb], Michael Sumner [ctb], Don MacQueen [ctb], Jim Lemon [ctb], Finn Lindgren [ctb], Josh O'Brien [ctb], Joseph O'Rourke [ctb], Patrick Hausmann [ctb]", + "Maintainer": "Edzer Pebesma ", + "Repository": "CRAN" + }, + "spam": { + "Package": "spam", + "Version": "2.11-1", + "Source": "Repository", + "Type": "Package", + "Title": "SPArse Matrix", + "Date": "2025-01-20", + "Authors@R": "c(person(\"Reinhard\", \"Furrer\", role = c(\"aut\", \"cre\"), email = \"reinhard.furrer@math.uzh.ch\", comment = c(ORCID = \"0000-0002-6319-2332\")), person(\"Florian\", \"Gerber\", role = c(\"aut\"), email = \"florian.gerber@math.uzh.ch\", comment = c(ORCID = \"0000-0001-8545-5263\")), person(\"Roman\", \"Flury\", role = c(\"aut\"), email = \"roman.flury@math.uzh.ch\", comment = c(ORCID = \"0000-0002-0349-8698\")), person(\"Daniel\", \"Gerber\", role = \"ctb\", email = \"daniel_gerber_2222@hotmail.com\"), person(\"Kaspar\", \"Moesinger\", role = \"ctb\", email = \"kaspar.moesinger@gmail.com\"), person(\"Annina\", \"Cincera\", email = \"annina.cincera@math.uzh.ch\", role = \"ctb\"), person(\"Youcef\", \"Saad\", role = \"ctb\", comment = \"SPARSEKIT http://www-users.cs.umn.edu/~saad/software/SPARSKIT/\"), person(c(\"Esmond\", \"G.\"), \"Ng\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Barry\", \"W.\"), \"Peyton\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Joseph\", \"W.H.\"), \"Liu\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Alan\", \"D.\"), \"George\", role = \"ctb\", comment = \"Fortran Cholesky routines\"), person(c(\"Lehoucq\", \"B.\"), \"Rich\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Maschhoff\"), \"Kristi\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Sorensen\", \"C.\"), \"Danny\", role = \"ctb\", comment = \"ARPACK\"), person(c(\"Yang\"), \"Chao\", role = \"ctb\", comment = \"ARPACK\"))", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "dotCall64", + "grid", + "methods", + "Rcpp (>= 1.0.8.3)" + ], + "LinkingTo": [ + "Rcpp" + ], + "Suggests": [ + "spam64", + "fields", + "Matrix", + "testthat", + "R.rsp", + "truncdist", + "knitr", + "rmarkdown" + ], + "VignetteBuilder": "R.rsp, knitr", + "Description": "Set of functions for sparse matrix algebra. Differences with other sparse matrix packages are: (1) we only support (essentially) one sparse matrix format, (2) based on transparent and simple structure(s), (3) tailored for MCMC calculations within G(M)RF. (4) and it is fast and scalable (with the extension package spam64). Documentation about 'spam' is provided by vignettes included in this package, see also Furrer and Sain (2010) ; see 'citation(\"spam\")' for details.", + "LazyData": "true", + "License": "LGPL-2 | BSD_3_clause + file LICENSE", + "URL": "https://www.math.uzh.ch/pages/spam/", + "BugReports": "https://git.math.uzh.ch/reinhard.furrer/spam/-/issues", + "NeedsCompilation": "yes", + "Author": "Reinhard Furrer [aut, cre] (), Florian Gerber [aut] (), Roman Flury [aut] (), Daniel Gerber [ctb], Kaspar Moesinger [ctb], Annina Cincera [ctb], Youcef Saad [ctb] (SPARSEKIT http://www-users.cs.umn.edu/~saad/software/SPARSKIT/), Esmond G. Ng [ctb] (Fortran Cholesky routines), Barry W. Peyton [ctb] (Fortran Cholesky routines), Joseph W.H. Liu [ctb] (Fortran Cholesky routines), Alan D. George [ctb] (Fortran Cholesky routines), Lehoucq B. Rich [ctb] (ARPACK), Maschhoff Kristi [ctb] (ARPACK), Sorensen C. Danny [ctb] (ARPACK), Yang Chao [ctb] (ARPACK)", + "Maintainer": "Reinhard Furrer ", + "Repository": "CRAN" + }, + "stringi": { + "Package": "stringi", + "Version": "1.8.7", + "Source": "Repository", + "Date": "2025-03-27", + "Title": "Fast and Portable Character String Processing Facilities", + "Description": "A collection of character string/text/natural language processing tools for pattern searching (e.g., with 'Java'-like regular expressions or the 'Unicode' collation algorithm), random string generation, case mapping, string transliteration, concatenation, sorting, padding, wrapping, Unicode normalisation, date-time formatting and parsing, and many more. They are fast, consistent, convenient, and - thanks to 'ICU' (International Components for Unicode) - portable across all locales and platforms. Documentation about 'stringi' is provided via its website at and the paper by Gagolewski (2022, ).", + "URL": "https://stringi.gagolewski.com/, https://github.com/gagolews/stringi, https://icu.unicode.org/", + "BugReports": "https://github.com/gagolews/stringi/issues", + "SystemRequirements": "ICU4C (>= 61, optional)", + "Type": "Package", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "tools", + "utils", + "stats" + ], + "Biarch": "TRUE", + "License": "file LICENSE", + "Authors@R": "c(person(given = \"Marek\", family = \"Gagolewski\", role = c(\"aut\", \"cre\", \"cph\"), email = \"marek@gagolewski.com\", comment = c(ORCID = \"0000-0003-0637-6028\")), person(given = \"Bartek\", family = \"Tartanus\", role = \"ctb\"), person(\"Unicode, Inc. and others\", role=\"ctb\", comment = \"ICU4C source code, Unicode Character Database\") )", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Author": "Marek Gagolewski [aut, cre, cph] (), Bartek Tartanus [ctb], Unicode, Inc. and others [ctb] (ICU4C source code, Unicode Character Database)", + "Maintainer": "Marek Gagolewski ", + "License_is_FOSS": "yes", + "Repository": "CRAN" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.2", + "Source": "Repository", + "Title": "Simple, Consistent Wrappers for Common String Operations", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\", \"cph\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A consistent, simple and easy to use set of wrappers around the fantastic 'stringi' package. All function and argument names (and positions) are consistent, all functions deal with \"NA\"'s and zero length vectors in the same way, and the output from one function is easy to feed into the input of another.", + "License": "MIT + file LICENSE", + "URL": "https://stringr.tidyverse.org, https://github.com/tidyverse/stringr", + "BugReports": "https://github.com/tidyverse/stringr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli", + "glue (>= 1.6.1)", + "lifecycle (>= 1.0.3)", + "magrittr", + "rlang (>= 1.0.0)", + "stringi (>= 1.5.3)", + "vctrs (>= 0.4.0)" + ], + "Suggests": [ + "covr", + "dplyr", + "gt", + "htmltools", + "htmlwidgets", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre, cph], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "svglite": { + "Package": "svglite", + "Version": "2.2.2", + "Source": "Repository", + "Title": "An 'SVG' Graphics Device", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"T Jake\", \"Luciani\", , \"jake@apache.org\", role = \"aut\"), person(\"Matthieu\", \"Decorde\", , \"matthieu.decorde@ens-lyon.fr\", role = \"aut\"), person(\"Vaudor\", \"Lise\", , \"lise.vaudor@ens-lyon.fr\", role = \"aut\"), person(\"Tony\", \"Plate\", role = \"ctb\", comment = \"Early line dashing code\"), person(\"David\", \"Gohel\", role = \"ctb\", comment = \"Line dashing code and early raster code\"), person(\"Yixuan\", \"Qiu\", role = \"ctb\", comment = \"Improved styles; polypath implementation\"), person(\"Håkon\", \"Malmedal\", role = \"ctb\", comment = \"Opacity code\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "A graphics device for R that produces 'Scalable Vector Graphics'. 'svglite' is a fork of the older 'RSvgDevice' package.", + "License": "GPL (>= 2)", + "URL": "https://svglite.r-lib.org, https://github.com/r-lib/svglite", + "BugReports": "https://github.com/r-lib/svglite/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "base64enc", + "cli", + "lifecycle", + "rlang (>= 1.1.0)", + "systemfonts (>= 1.3.0)", + "textshaping (>= 0.3.0)" + ], + "Suggests": [ + "covr", + "fontquiver (>= 0.2.0)", + "htmltools", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)", + "xml2 (>= 1.0.0)" + ], + "LinkingTo": [ + "cpp11", + "systemfonts", + "textshaping" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-25", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "libpng", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Lionel Henry [aut], Thomas Lin Pedersen [cre, aut] (ORCID: ), T Jake Luciani [aut], Matthieu Decorde [aut], Vaudor Lise [aut], Tony Plate [ctb] (Early line dashing code), David Gohel [ctb] (Line dashing code and early raster code), Yixuan Qiu [ctb] (Improved styles; polypath implementation), Håkon Malmedal [ctb] (Opacity code), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "sys": { + "Package": "sys", + "Version": "3.4.3", + "Source": "Repository", + "Type": "Package", + "Title": "Powerful and Reliable Tools for Running System Commands in R", + "Authors@R": "c(person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroenooms@gmail.com\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = \"ctb\"))", + "Description": "Drop-in replacements for the base system2() function with fine control and consistent behavior across platforms. Supports clean interruption, timeout, background tasks, and streaming STDIN / STDOUT / STDERR over binary or text connections. Arguments on Windows automatically get encoded and quoted to work on different locales.", + "License": "MIT + file LICENSE", + "URL": "https://jeroen.r-universe.dev/sys", + "BugReports": "https://github.com/jeroen/sys/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "Suggests": [ + "unix (>= 1.4)", + "spelling", + "testthat" + ], + "Language": "en-US", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), Gábor Csárdi [ctb]", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "systemfonts": { + "Package": "systemfonts", + "Version": "1.3.1", + "Source": "Repository", + "Type": "Package", + "Title": "System Native Font Finding", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Jeroen\", \"Ooms\", , \"jeroen@berkeley.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"Devon\", \"Govett\", role = \"aut\", comment = \"Author of font-manager\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides system native access to the font catalogue. As font handling varies between systems it is difficult to correctly locate installed fonts across different operating systems. The 'systemfonts' package provides bindings to the native libraries on Windows, macOS and Linux for finding font files that can then be used further by e.g. graphic devices. The main use is intended to be from compiled code but 'systemfonts' also provides access from R.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/systemfonts, https://systemfonts.r-lib.org", + "BugReports": "https://github.com/r-lib/systemfonts/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "base64enc", + "grid", + "jsonlite", + "lifecycle", + "tools", + "utils" + ], + "Suggests": [ + "covr", + "farver", + "ggplot2", + "graphics", + "knitr", + "ragg", + "rmarkdown", + "svglite", + "testthat (>= 2.1.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "fontconfig, freetype2", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [aut, cre] (ORCID: ), Jeroen Ooms [aut] (ORCID: ), Devon Govett [aut] (Author of font-manager), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "terra": { + "Package": "terra", + "Version": "1.8-70", + "Source": "Repository", + "Type": "Package", + "Title": "Spatial Data Analysis", + "Date": "2025-09-26", + "Depends": [ + "R (>= 3.5.0)" + ], + "Suggests": [ + "parallel", + "tinytest", + "ncdf4", + "sf (>= 0.9-8)", + "deldir", + "XML", + "leaflet (>= 2.2.1)", + "htmlwidgets" + ], + "LinkingTo": [ + "Rcpp" + ], + "Imports": [ + "methods", + "Rcpp (>= 1.0-10)" + ], + "SystemRequirements": "C++17, GDAL (>= 2.2.3), GEOS (>= 3.4.0), PROJ (>= 4.9.3), TBB, sqlite3", + "Encoding": "UTF-8", + "Language": "en-US", + "Maintainer": "Robert J. Hijmans ", + "Description": "Methods for spatial data analysis with vector (points, lines, polygons) and raster (grid) data. Methods for vector data include geometric operations such as intersect and buffer. Raster methods include local, focal, global, zonal and geometric operations. The predict and interpolate methods facilitate the use of regression type (interpolation, machine learning) models for spatial prediction, including with satellite remote sensing data. Processing of very large files is supported. See the manual and tutorials on to get started. 'terra' replaces the 'raster' package ('terra' can do more, and it is faster and easier to use).", + "License": "GPL (>= 3)", + "URL": "https://rspatial.org/, https://rspatial.github.io/terra/", + "BugReports": "https://github.com/rspatial/terra/issues/", + "LazyLoad": "yes", + "Authors@R": "c( person(\"Robert J.\", \"Hijmans\", role=c(\"cre\", \"aut\"), email=\"r.hijmans@gmail.com\", comment=c(ORCID=\"0000-0001-5872-2872\")),\t\t\t person(\"Márcia\", \"Barbosa\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8972-7713\")), person(\"Roger\", \"Bivand\", role=\"ctb\", comment=c(ORCID=\"0000-0003-2392-6140\")), person(\"Andrew\", \"Brown\", role=\"ctb\", comment=c(ORCID=\"0000-0002-4565-533X\")), person(\"Michael\", \"Chirico\", role=\"ctb\", comment=c(ORCID=\"0000-0003-0787-087X\")), person(\"Emanuele\", \"Cordano\", role=\"ctb\",comment=c(ORCID=\"0000-0002-3508-5898\")), person(\"Krzysztof\", \"Dyba\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8614-3816\")), person(\"Edzer\", \"Pebesma\", role=\"ctb\", comment=c(ORCID=\"0000-0001-8049-7069\")), person(\"Barry\", \"Rowlingson\", role=\"ctb\", comment=c(ORCID=\"0000-0002-8586-6625\")), person(\"Michael D.\", \"Sumner\", role=\"ctb\", comment=c(ORCID=\"0000-0002-2471-7511\")))", + "NeedsCompilation": "yes", + "Author": "Robert J. Hijmans [cre, aut] (ORCID: ), Márcia Barbosa [ctb] (ORCID: ), Roger Bivand [ctb] (ORCID: ), Andrew Brown [ctb] (ORCID: ), Michael Chirico [ctb] (ORCID: ), Emanuele Cordano [ctb] (ORCID: ), Krzysztof Dyba [ctb] (ORCID: ), Edzer Pebesma [ctb] (ORCID: ), Barry Rowlingson [ctb] (ORCID: ), Michael D. Sumner [ctb] (ORCID: )", + "Repository": "CRAN" + }, + "testthat": { + "Package": "testthat", + "Version": "3.2.3", + "Source": "Repository", + "Title": "Unit Testing for R", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"R Core team\", role = \"ctb\", comment = \"Implementation of utils::recover()\") )", + "Description": "Software testing is important, but, in part because it is frustrating and boring, many of us avoid it. 'testthat' is a testing framework for R that is easy to learn and use, and integrates with your existing 'workflow'.", + "License": "MIT + file LICENSE", + "URL": "https://testthat.r-lib.org, https://github.com/r-lib/testthat", + "BugReports": "https://github.com/r-lib/testthat/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "brio (>= 1.1.3)", + "callr (>= 3.7.3)", + "cli (>= 3.6.1)", + "desc (>= 1.4.2)", + "digest (>= 0.6.33)", + "evaluate (>= 1.0.1)", + "jsonlite (>= 1.8.7)", + "lifecycle (>= 1.0.3)", + "magrittr (>= 2.0.3)", + "methods", + "pkgload (>= 1.3.2.1)", + "praise (>= 1.0.0)", + "processx (>= 3.8.2)", + "ps (>= 1.7.5)", + "R6 (>= 2.5.1)", + "rlang (>= 1.1.1)", + "utils", + "waldo (>= 0.6.0)", + "withr (>= 3.0.2)" + ], + "Suggests": [ + "covr", + "curl (>= 0.9.5)", + "diffviewer (>= 0.1.0)", + "knitr", + "rmarkdown", + "rstudioapi", + "S7", + "shiny", + "usethis", + "vctrs (>= 0.1.0)", + "xml2" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "watcher, parallel*", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd], R Core team [ctb] (Implementation of utils::recover())", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "textshaping": { + "Package": "textshaping", + "Version": "1.0.4", + "Source": "Repository", + "Title": "Bindings to the 'HarfBuzz' and 'Fribidi' Libraries for Text Shaping", + "Authors@R": "c( person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Provides access to the text shaping functionality in the 'HarfBuzz' library and the bidirectional algorithm in the 'Fribidi' library. 'textshaping' is a low-level utility package mainly for graphic devices that expands upon the font tool-set provided by the 'systemfonts' package.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/textshaping", + "BugReports": "https://github.com/r-lib/textshaping/issues", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "lifecycle", + "stats", + "stringi", + "systemfonts (>= 1.3.0)", + "utils" + ], + "Suggests": [ + "covr", + "grDevices", + "grid", + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.1)", + "systemfonts (>= 1.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/build/compilation-database": "true", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-04-23", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "SystemRequirements": "freetype2, harfbuzz, fribidi", + "NeedsCompilation": "yes", + "Author": "Thomas Lin Pedersen [cre, aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Thomas Lin Pedersen ", + "Repository": "CRAN" + }, + "tibble": { + "Package": "tibble", + "Version": "3.3.0", + "Source": "Repository", + "Title": "Simple Data Frames", + "Authors@R": "c(person(given = \"Kirill\", family = \"M\\u00fcller\", role = c(\"aut\", \"cre\"), email = \"kirill@cynkra.com\", comment = c(ORCID = \"0000-0002-1416-3412\")), person(given = \"Hadley\", family = \"Wickham\", role = \"aut\", email = \"hadley@rstudio.com\"), person(given = \"Romain\", family = \"Francois\", role = \"ctb\", email = \"romain@r-enthusiasts.com\"), person(given = \"Jennifer\", family = \"Bryan\", role = \"ctb\", email = \"jenny@rstudio.com\"), person(given = \"RStudio\", role = c(\"cph\", \"fnd\")))", + "Description": "Provides a 'tbl_df' class (the 'tibble') with stricter checking and better formatting than the traditional data frame.", + "License": "MIT + file LICENSE", + "URL": "https://tibble.tidyverse.org/, https://github.com/tidyverse/tibble", + "BugReports": "https://github.com/tidyverse/tibble/issues", + "Depends": [ + "R (>= 3.4.0)" + ], + "Imports": [ + "cli", + "lifecycle (>= 1.0.0)", + "magrittr", + "methods", + "pillar (>= 1.8.1)", + "pkgconfig", + "rlang (>= 1.0.2)", + "utils", + "vctrs (>= 0.5.0)" + ], + "Suggests": [ + "bench", + "bit64", + "blob", + "brio", + "callr", + "DiagrammeR", + "dplyr", + "evaluate", + "formattable", + "ggplot2", + "here", + "hms", + "htmltools", + "knitr", + "lubridate", + "nycflights13", + "pkgload", + "purrr", + "rmarkdown", + "stringi", + "testthat (>= 3.0.2)", + "tidyr", + "withr" + ], + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "true", + "Config/testthat/start-first": "vignette-formats, as_tibble, add, invariants", + "Config/autostyle/scope": "line_breaks", + "Config/autostyle/strict": "true", + "Config/autostyle/rmd": "false", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Author": "Kirill Müller [aut, cre] (ORCID: ), Hadley Wickham [aut], Romain Francois [ctb], Jennifer Bryan [ctb], RStudio [cph, fnd]", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.3.1", + "Source": "Repository", + "Title": "Tidy Messy Data", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = \"aut\"), person(\"Maximilian\", \"Girlich\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Tools to help to create tidy data, where each column is a variable, each row is an observation, and each cell contains a single value. 'tidyr' contains tools for changing the shape (pivoting) and hierarchy (nesting and 'unnesting') of a dataset, turning deeply nested lists into rectangular data frames ('rectangling'), and extracting values out of string columns. It also includes tools for working with missing values (both implicit and explicit).", + "License": "MIT + file LICENSE", + "URL": "https://tidyr.tidyverse.org, https://github.com/tidyverse/tidyr", + "BugReports": "https://github.com/tidyverse/tidyr/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "cli (>= 3.4.1)", + "dplyr (>= 1.0.10)", + "glue", + "lifecycle (>= 1.0.3)", + "magrittr", + "purrr (>= 1.0.1)", + "rlang (>= 1.1.1)", + "stringr (>= 1.5.0)", + "tibble (>= 2.1.1)", + "tidyselect (>= 1.2.0)", + "utils", + "vctrs (>= 0.5.2)" + ], + "Suggests": [ + "covr", + "data.table", + "knitr", + "readr", + "repurrrsive (>= 1.1.0)", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.4.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.3.0", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Davis Vaughan [aut], Maximilian Girlich [aut], Kevin Ushey [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.2.1", + "Source": "Repository", + "Title": "Select from a Set of Strings", + "Authors@R": "c( person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A backend for the selecting functions of the 'tidyverse'. It makes it easy to implement select-like functions in your own packages in a way that is consistent with other 'tidyverse' interfaces for selection.", + "License": "MIT + file LICENSE", + "URL": "https://tidyselect.r-lib.org, https://github.com/r-lib/tidyselect", + "BugReports": "https://github.com/r-lib/tidyselect/issues", + "Depends": [ + "R (>= 3.4)" + ], + "Imports": [ + "cli (>= 3.3.0)", + "glue (>= 1.3.0)", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.0.4)", + "vctrs (>= 0.5.2)", + "withr" + ], + "Suggests": [ + "covr", + "crayon", + "dplyr", + "knitr", + "magrittr", + "rmarkdown", + "stringr", + "testthat (>= 3.1.1)", + "tibble (>= 2.1.3)" + ], + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.0.9000", + "NeedsCompilation": "yes", + "Author": "Lionel Henry [aut, cre], Hadley Wickham [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "2.0.0", + "Source": "Repository", + "Title": "Easily Install and Load the 'Tidyverse'", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "The 'tidyverse' is a set of packages that work in harmony because they share common data representations and 'API' design. This package is designed to make it easy to install and load multiple 'tidyverse' packages in a single step. Learn more about the 'tidyverse' at .", + "License": "MIT + file LICENSE", + "URL": "https://tidyverse.tidyverse.org, https://github.com/tidyverse/tidyverse", + "BugReports": "https://github.com/tidyverse/tidyverse/issues", + "Depends": [ + "R (>= 3.3)" + ], + "Imports": [ + "broom (>= 1.0.3)", + "conflicted (>= 1.2.0)", + "cli (>= 3.6.0)", + "dbplyr (>= 2.3.0)", + "dplyr (>= 1.1.0)", + "dtplyr (>= 1.2.2)", + "forcats (>= 1.0.0)", + "ggplot2 (>= 3.4.1)", + "googledrive (>= 2.0.0)", + "googlesheets4 (>= 1.0.1)", + "haven (>= 2.5.1)", + "hms (>= 1.1.2)", + "httr (>= 1.4.4)", + "jsonlite (>= 1.8.4)", + "lubridate (>= 1.9.2)", + "magrittr (>= 2.0.3)", + "modelr (>= 0.1.10)", + "pillar (>= 1.8.1)", + "purrr (>= 1.0.1)", + "ragg (>= 1.2.5)", + "readr (>= 2.1.4)", + "readxl (>= 1.4.2)", + "reprex (>= 2.0.2)", + "rlang (>= 1.0.6)", + "rstudioapi (>= 0.14)", + "rvest (>= 1.0.3)", + "stringr (>= 1.5.0)", + "tibble (>= 3.1.8)", + "tidyr (>= 1.3.0)", + "xml2 (>= 1.3.3)" + ], + "Suggests": [ + "covr (>= 3.6.1)", + "feather (>= 0.3.5)", + "glue (>= 1.6.2)", + "mockr (>= 0.2.0)", + "knitr (>= 1.41)", + "rmarkdown (>= 2.20)", + "testthat (>= 3.1.6)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "timechange": { + "Package": "timechange", + "Version": "0.3.0", + "Source": "Repository", + "Title": "Efficient Manipulation of Date-Times", + "Authors@R": "c(person(\"Vitalie\", \"Spinu\", email = \"spinuvit@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Google Inc.\", role = c(\"ctb\", \"cph\")))", + "Description": "Efficient routines for manipulation of date-time objects while accounting for time-zones and daylight saving times. The package includes utilities for updating of date-time components (year, month, day etc.), modification of time-zones, rounding of date-times, period addition and subtraction etc. Parts of the 'CCTZ' source code, released under the Apache 2.0 License, are included in this package. See for more details.", + "Depends": [ + "R (>= 3.3)" + ], + "License": "GPL (>= 3)", + "Encoding": "UTF-8", + "LinkingTo": [ + "cpp11 (>= 0.2.7)" + ], + "Suggests": [ + "testthat (>= 0.7.1.99)", + "knitr" + ], + "SystemRequirements": "A system with zoneinfo data (e.g. /usr/share/zoneinfo) as well as a recent-enough C++11 compiler (such as g++-4.8 or later). On Windows the zoneinfo included with R is used.", + "BugReports": "https://github.com/vspinu/timechange/issues", + "URL": "https://github.com/vspinu/timechange/", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "yes", + "Author": "Vitalie Spinu [aut, cre], Google Inc. [ctb, cph]", + "Maintainer": "Vitalie Spinu ", + "Repository": "CRAN" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.58", + "Source": "Repository", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")), person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")), person(\"Ethan\", \"Heinzen\", role = \"ctb\"), person(\"Fernando\", \"Cagua\", role = \"ctb\"), person() )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution named 'TinyTeX' (), a lightweight, cross-platform, portable, and easy-to-maintain version of 'TeX Live'. This package also contains helper functions to compile 'LaTeX' documents, and install missing 'LaTeX' packages automatically.", + "Imports": [ + "xfun (>= 0.48)" + ], + "Suggests": [ + "testit", + "rstudioapi" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: ), Posit Software, PBC [cph, fnd], Christophe Dervieux [ctb] (ORCID: ), Devon Ryan [ctb] (ORCID: ), Ethan Heinzen [ctb], Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "trafficlight": { + "Package": "trafficlight", + "Version": "1.15.1", + "Source": "Repository", + "Type": "Package", + "Title": "traffic light - Tools for data validation", + "Date": "2024-01-16", + "Authors@R": "c(person(\"Jan Philipp\", \"Dietrich\", email = \"dietrich@pik-potsdam.de\", role = c(\"aut\",\"cre\")), person(\"Markus Bonsch\", \"Bonsch\", role = c(\"aut\")))", + "Maintainer": "Jan Philipp Dietrich ", + "Description": "The package contains tools for data validation and aggregation of validation results.", + "Depends": [ + "R(>= 2.10.0)" + ], + "Imports": [ + "magclass", + "ggplot2", + "qualV" + ], + "License": "LGPL-3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.0", + "Repository": "https://rse.pik-potsdam.de/r/packages", + "RemoteUrl": "https://github.com/pik-piam/trafficlight", + "RemoteRef": "HEAD", + "RemoteSha": "3ff25cf3c1c9a9d60f1e92c5de0714e44ac923a3", + "NeedsCompilation": "no", + "Author": "Jan Philipp Dietrich [aut, cre], Markus Bonsch Bonsch [aut]" + }, + "tzdb": { + "Package": "tzdb", + "Version": "0.5.0", + "Source": "Repository", + "Title": "Time Zone Database Information", + "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"Howard\", \"Hinnant\", role = \"cph\", comment = \"Author of the included date library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provides an up-to-date copy of the Internet Assigned Numbers Authority (IANA) Time Zone Database. It is updated periodically to reflect changes made by political bodies to time zone boundaries, UTC offsets, and daylight saving time rules. Additionally, this package provides a C++ interface for working with the 'date' library. 'date' provides comprehensive support for working with dates and date-times, which this package exposes to make it easier for other R packages to utilize. Headers are provided for calendar specific calculations, along with a limited interface for time zone manipulations.", + "License": "MIT + file LICENSE", + "URL": "https://tzdb.r-lib.org, https://github.com/r-lib/tzdb", + "BugReports": "https://github.com/r-lib/tzdb/issues", + "Depends": [ + "R (>= 4.0.0)" + ], + "Suggests": [ + "covr", + "testthat (>= 3.0.0)" + ], + "LinkingTo": [ + "cpp11 (>= 0.5.2)" + ], + "Biarch": "yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "yes", + "Author": "Davis Vaughan [aut, cre], Howard Hinnant [cph] (Author of the included date library), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "urlchecker": { + "Package": "urlchecker", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Run CRAN URL Checks from Older R Versions", + "Authors@R": "c( person(\"R Core team\", role = \"aut\", comment = \"The code in urltools.R adapted from the tools package\"), person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "Provide the URL checking tools available in R 4.1+ as a package for earlier versions of R. Also uses concurrent requests so can be much faster than the serial versions.", + "License": "GPL-3", + "URL": "https://github.com/r-lib/urlchecker", + "BugReports": "https://github.com/r-lib/urlchecker/issues", + "Depends": [ + "R (>= 3.3)" + ], + "Imports": [ + "cli", + "curl", + "tools", + "xml2" + ], + "Suggests": [ + "covr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Author": "R Core team [aut] (The code in urltools.R adapted from the tools package), Jim Hester [aut] (), Gábor Csárdi [aut, cre], RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "usethis": { + "Package": "usethis", + "Version": "3.2.1", + "Source": "Repository", + "Title": "Automate Package and Project Setup", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Malcolm\", \"Barrett\", , \"malcolmbarrett@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Andy\", \"Teucher\", , \"andy.teucher@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0002-7840-692X\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Automate package and project setup tasks that are otherwise performed manually. This includes setting up unit testing, test coverage, continuous integration, Git, 'GitHub', licenses, 'Rcpp', 'RStudio' projects, and more.", + "License": "MIT + file LICENSE", + "URL": "https://usethis.r-lib.org, https://github.com/r-lib/usethis", + "BugReports": "https://github.com/r-lib/usethis/issues", + "Depends": [ + "R (>= 4.1)" + ], + "Imports": [ + "cli (>= 3.0.1)", + "clipr (>= 0.3.0)", + "crayon", + "curl (>= 2.7)", + "desc (>= 1.4.2)", + "fs (>= 1.3.0)", + "gert (>= 1.4.1)", + "gh (>= 1.2.1)", + "glue (>= 1.3.0)", + "jsonlite", + "lifecycle (>= 1.0.0)", + "purrr", + "rappdirs", + "rlang (>= 1.1.0)", + "rprojroot (>= 2.1.1)", + "rstudioapi", + "stats", + "tools", + "utils", + "whisker", + "withr (>= 2.3.0)", + "yaml" + ], + "Suggests": [ + "covr", + "knitr", + "magick", + "pkgload (>= 1.3.2.1)", + "quarto (>= 1.5.1)", + "rmarkdown", + "roxygen2 (>= 7.1.2)", + "spelling (>= 1.2)", + "testthat (>= 3.1.8)" + ], + "Config/Needs/website": "r-lib/asciicast, tidyverse/tidytemplate, xml2", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "TRUE", + "Config/testthat/start-first": "github-actions, release", + "Config/usethis/last-upkeep": "2025-04-22", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Malcolm Barrett [aut] (ORCID: ), Andy Teucher [aut] (ORCID: ), Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "utf8": { + "Package": "utf8", + "Version": "1.2.4", + "Source": "Repository", + "Title": "Unicode Text Processing", + "Authors@R": "c(person(given = c(\"Patrick\", \"O.\"), family = \"Perry\", role = c(\"aut\", \"cph\")), person(given = \"Kirill\", family = \"M\\u00fcller\", role = \"cre\", email = \"kirill@cynkra.com\"), person(given = \"Unicode, Inc.\", role = c(\"cph\", \"dtc\"), comment = \"Unicode Character Database\"))", + "Description": "Process and print 'UTF-8' encoded international text (Unicode). Input, validate, normalize, encode, format, and display.", + "License": "Apache License (== 2.0) | file LICENSE", + "URL": "https://ptrckprry.com/r-utf8/, https://github.com/patperry/r-utf8", + "BugReports": "https://github.com/patperry/r-utf8/issues", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "cli", + "covr", + "knitr", + "rlang", + "rmarkdown", + "testthat (>= 3.0.0)", + "withr" + ], + "VignetteBuilder": "knitr, rmarkdown", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Patrick O. Perry [aut, cph], Kirill Müller [cre], Unicode, Inc. [cph, dtc] (Unicode Character Database)", + "Maintainer": "Kirill Müller ", + "Repository": "CRAN" + }, + "uuid": { + "Package": "uuid", + "Version": "1.2-1", + "Source": "Repository", + "Title": "Tools for Generating and Handling of UUIDs", + "Author": "Simon Urbanek [aut, cre, cph] (https://urbanek.org, ), Theodore Ts'o [aut, cph] (libuuid)", + "Maintainer": "Simon Urbanek ", + "Authors@R": "c(person(\"Simon\", \"Urbanek\", role=c(\"aut\",\"cre\",\"cph\"), email=\"Simon.Urbanek@r-project.org\", comment=c(\"https://urbanek.org\", ORCID=\"0000-0003-2297-1732\")), person(\"Theodore\",\"Ts'o\", email=\"tytso@thunk.org\", role=c(\"aut\",\"cph\"), comment=\"libuuid\"))", + "Depends": [ + "R (>= 2.9.0)" + ], + "Description": "Tools for generating and handling of UUIDs (Universally Unique Identifiers).", + "License": "MIT + file LICENSE", + "URL": "https://www.rforge.net/uuid", + "BugReports": "https://github.com/s-u/uuid/issues", + "NeedsCompilation": "yes", + "Repository": "CRAN" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.5", + "Source": "Repository", + "Title": "Vector Helpers", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")), person(\"data.table team\", role = \"cph\", comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Defines new notions of prototype and size that are used to provide tools for consistent and well-founded type-coercion and size-recycling, and are in turn connected to ideas of type- and size-stability useful for analysing function interfaces.", + "License": "MIT + file LICENSE", + "URL": "https://vctrs.r-lib.org/, https://github.com/r-lib/vctrs", + "BugReports": "https://github.com/r-lib/vctrs/issues", + "Depends": [ + "R (>= 3.5.0)" + ], + "Imports": [ + "cli (>= 3.4.0)", + "glue", + "lifecycle (>= 1.0.3)", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "bit64", + "covr", + "crayon", + "dplyr (>= 0.8.5)", + "generics", + "knitr", + "pillar (>= 1.4.4)", + "pkgdown (>= 2.0.1)", + "rmarkdown", + "testthat (>= 3.0.0)", + "tibble (>= 3.1.3)", + "waldo (>= 0.2.0)", + "withr", + "xml2", + "zeallot" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut], Lionel Henry [aut], Davis Vaughan [aut, cre], data.table team [cph] (Radix sort based on data.table's forder() and their contribution to R's order()), Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.4.2", + "Source": "Repository", + "Type": "Package", + "Title": "Colorblind-Friendly Color Maps (Lite Version)", + "Date": "2023-05-02", + "Authors@R": "c( person(\"Simon\", \"Garnier\", email = \"garnier@njit.edu\", role = c(\"aut\", \"cre\")), person(\"Noam\", \"Ross\", email = \"noam.ross@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Bob\", \"Rudis\", email = \"bob@rud.is\", role = c(\"ctb\", \"cph\")), person(\"Marco\", \"Sciaini\", email = \"sciaini.marco@gmail.com\", role = c(\"ctb\", \"cph\")), person(\"Antônio Pedro\", \"Camargo\", role = c(\"ctb\", \"cph\")), person(\"Cédric\", \"Scherer\", email = \"scherer@izw-berlin.de\", role = c(\"ctb\", \"cph\")) )", + "Maintainer": "Simon Garnier ", + "Description": "Color maps designed to improve graph readability for readers with common forms of color blindness and/or color vision deficiency. The color maps are also perceptually-uniform, both in regular form and also when converted to black-and-white for printing. This is the 'lite' version of the 'viridis' package that also contains 'ggplot2' bindings for discrete and continuous color and fill scales and can be found at .", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Depends": [ + "R (>= 2.10)" + ], + "Suggests": [ + "hexbin (>= 1.27.0)", + "ggplot2 (>= 1.0.1)", + "testthat", + "covr" + ], + "URL": "https://sjmgarnier.github.io/viridisLite/, https://github.com/sjmgarnier/viridisLite/", + "BugReports": "https://github.com/sjmgarnier/viridisLite/issues/", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Simon Garnier [aut, cre], Noam Ross [ctb, cph], Bob Rudis [ctb, cph], Marco Sciaini [ctb, cph], Antônio Pedro Camargo [ctb, cph], Cédric Scherer [ctb, cph]", + "Repository": "CRAN" + }, + "vroom": { + "Package": "vroom", + "Version": "1.6.6", + "Source": "Repository", + "Title": "Read and Write Rectangular Text Data Quickly", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\", comment = c(ORCID = \"0000-0002-2739-7082\")), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Jennifer\", \"Bryan\", , \"jenny@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-6983-2759\")), person(\"Shelby\", \"Bearrows\", role = \"ctb\"), person(\"https://github.com/mandreyel/\", role = \"cph\", comment = \"mio library\"), person(\"Jukka\", \"Jylänki\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Mikkel\", \"Jørgensen\", role = \"cph\", comment = \"grisu3 implementation\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "The goal of 'vroom' is to read and write data (like 'csv', 'tsv' and 'fwf') quickly. When reading it uses a quick initial indexing step, then reads the values lazily , so only the data you actually use needs to be read. The writer formats the data in parallel and writes to disk asynchronously from formatting.", + "License": "MIT + file LICENSE", + "URL": "https://vroom.r-lib.org, https://github.com/tidyverse/vroom", + "BugReports": "https://github.com/tidyverse/vroom/issues", + "Depends": [ + "R (>= 3.6)" + ], + "Imports": [ + "bit64", + "cli (>= 3.2.0)", + "crayon", + "glue", + "hms", + "lifecycle (>= 1.0.3)", + "methods", + "rlang (>= 0.4.2)", + "stats", + "tibble (>= 2.0.0)", + "tidyselect", + "tzdb (>= 0.1.1)", + "vctrs (>= 0.2.0)", + "withr" + ], + "Suggests": [ + "archive", + "bench (>= 1.1.0)", + "covr", + "curl", + "dplyr", + "forcats", + "fs", + "ggplot2", + "knitr", + "patchwork", + "prettyunits", + "purrr", + "rmarkdown", + "rstudioapi", + "scales", + "spelling", + "testthat (>= 2.1.0)", + "tidyr", + "utils", + "waldo", + "xml2" + ], + "LinkingTo": [ + "cpp11 (>= 0.2.0)", + "progress (>= 1.2.3)", + "tzdb (>= 0.1.1)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "nycflights13, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/testthat/parallel": "false", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.3.3", + "NeedsCompilation": "yes", + "Author": "Jim Hester [aut] (ORCID: ), Hadley Wickham [aut] (ORCID: ), Jennifer Bryan [aut, cre] (ORCID: ), Shelby Bearrows [ctb], https://github.com/mandreyel/ [cph] (mio library), Jukka Jylänki [cph] (grisu3 implementation), Mikkel Jørgensen [cph] (grisu3 implementation), Posit Software, PBC [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN" + }, + "waldo": { + "Package": "waldo", + "Version": "0.6.2", + "Source": "Repository", + "Title": "Find Differences Between R Objects", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Compare complex R objects and reveal the key differences. Designed particularly for use in testing packages where being able to quickly isolate key differences makes understanding test failures much easier.", + "License": "MIT + file LICENSE", + "URL": "https://waldo.r-lib.org, https://github.com/r-lib/waldo", + "BugReports": "https://github.com/r-lib/waldo/issues", + "Depends": [ + "R (>= 4.0)" + ], + "Imports": [ + "cli", + "diffobj (>= 0.3.4)", + "glue", + "methods", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "bit64", + "R6", + "S7", + "testthat (>= 3.0.0)", + "withr", + "xml2" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "NeedsCompilation": "no", + "Author": "Hadley Wickham [aut, cre], Posit Software, PBC [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "whisker": { + "Package": "whisker", + "Version": "0.4.1", + "Source": "Repository", + "Maintainer": "Edwin de Jonge ", + "License": "GPL-3", + "Title": "{{mustache}} for R, Logicless Templating", + "Type": "Package", + "LazyLoad": "yes", + "Author": "Edwin de Jonge", + "Description": "Implements 'Mustache' logicless templating.", + "URL": "https://github.com/edwindj/whisker", + "Suggests": [ + "markdown" + ], + "RoxygenNote": "6.1.1", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "whoami": { + "Package": "whoami", + "Version": "1.3.0", + "Source": "Repository", + "Title": "Username, Full Name, Email Address, 'GitHub' Username of the Current User", + "Authors@R": "c(person(given = \"Gábor\", family = \"Csárdi\", email = \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(given = \"Maëlle\", family = \"Salmon\", role = \"ctb\"))", + "Description": "Look up the username and full name of the current user, the current user's email address and 'GitHub' username, using various sources of system and configuration information.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/whoami#readme", + "BugReports": "https://github.com/r-lib/whoami/issues", + "Imports": [ + "httr", + "jsonlite", + "utils" + ], + "Suggests": [ + "covr", + "mockery", + "testthat", + "withr" + ], + "Encoding": "UTF-8", + "RoxygenNote": "6.1.1", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Maëlle Salmon [ctb]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "withr": { + "Package": "withr", + "Version": "3.0.2", + "Source": "Repository", + "Title": "Run Code 'With' Temporarily Modified Global State", + "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = c(\"aut\", \"cre\")), person(\"Kirill\", \"Müller\", , \"krlmlr+r@mailbox.org\", role = \"aut\"), person(\"Kevin\", \"Ushey\", , \"kevinushey@gmail.com\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Jennifer\", \"Bryan\", role = \"ctb\"), person(\"Richard\", \"Cotton\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "A set of functions to run code 'with' safely and temporarily modified global state. Many of these functions were originally a part of the 'devtools' package, this provides a simple package with limited dependencies to provide access to these functions.", + "License": "MIT + file LICENSE", + "URL": "https://withr.r-lib.org, https://github.com/r-lib/withr#readme", + "BugReports": "https://github.com/r-lib/withr/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "graphics", + "grDevices" + ], + "Suggests": [ + "callr", + "DBI", + "knitr", + "methods", + "rlang", + "rmarkdown (>= 2.12)", + "RSQLite", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2", + "Collate": "'aaa.R' 'collate.R' 'connection.R' 'db.R' 'defer-exit.R' 'standalone-defer.R' 'defer.R' 'devices.R' 'local_.R' 'with_.R' 'dir.R' 'env.R' 'file.R' 'language.R' 'libpaths.R' 'locale.R' 'makevars.R' 'namespace.R' 'options.R' 'par.R' 'path.R' 'rng.R' 'seed.R' 'wrap.R' 'sink.R' 'tempfile.R' 'timezone.R' 'torture.R' 'utils.R' 'with.R'", + "NeedsCompilation": "no", + "Author": "Jim Hester [aut], Lionel Henry [aut, cre], Kirill Müller [aut], Kevin Ushey [aut], Hadley Wickham [aut], Winston Chang [aut], Jennifer Bryan [ctb], Richard Cotton [ctb], Posit Software, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN" + }, + "writexl": { + "Package": "writexl", + "Version": "1.5.4", + "Source": "Repository", + "Type": "Package", + "Title": "Export Data Frames to Excel 'xlsx' Format", + "Authors@R": "c( person(\"Jeroen\", \"Ooms\", ,\"jeroenooms@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-4035-0289\")), person(\"John McNamara\", role = \"cph\", comment = \"Author of libxlsxwriter (see AUTHORS and COPYRIGHT files for details)\"))", + "Description": "Zero-dependency data frame to xlsx exporter based on 'libxlsxwriter' . Fast and no Java or Excel required.", + "License": "BSD_2_clause + file LICENSE", + "Encoding": "UTF-8", + "URL": "https://ropensci.r-universe.dev/writexl https://docs.ropensci.org/writexl/", + "BugReports": "https://github.com/ropensci/writexl/issues", + "RoxygenNote": "7.0.2", + "Suggests": [ + "spelling", + "readxl", + "nycflights13", + "testthat", + "bit64" + ], + "Language": "en-US", + "SystemRequirements": "zlib", + "NeedsCompilation": "yes", + "Author": "Jeroen Ooms [aut, cre] (), John McNamara [cph] (Author of libxlsxwriter (see AUTHORS and COPYRIGHT files for details))", + "Maintainer": "Jeroen Ooms ", + "Repository": "CRAN" + }, + "xfun": { + "Package": "xfun", + "Version": "0.57", + "Source": "Repository", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Authors@R": "c( person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\", URL = \"https://yihui.org\")), person(\"Wush\", \"Wu\", role = \"ctb\"), person(\"Daijiang\", \"Li\", role = \"ctb\"), person(\"Xianying\", \"Tan\", role = \"ctb\"), person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")), person(\"Christophe\", \"Dervieux\", role = \"ctb\"), person() )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Depends": [ + "R (>= 3.2.0)" + ], + "Imports": [ + "grDevices", + "stats", + "tools" + ], + "Suggests": [ + "testit", + "parallel", + "codetools", + "methods", + "rstudioapi", + "tinytex (>= 0.30)", + "mime", + "litedown (>= 0.6)", + "commonmark", + "knitr (>= 1.50)", + "remotes", + "pak", + "curl", + "xml2", + "jsonlite", + "magick", + "yaml", + "data.table", + "qs2" + ], + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "litedown", + "NeedsCompilation": "yes", + "Author": "Yihui Xie [aut, cre, cph] (ORCID: , URL: https://yihui.org), Wush Wu [ctb], Daijiang Li [ctb], Xianying Tan [ctb], Salim Brüggemann [ctb] (ORCID: ), Christophe Dervieux [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN" + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.6", + "Source": "Repository", + "Title": "Parse XML", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = c(\"aut\", \"cre\")), person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Jeroen\", \"Ooms\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"R Foundation\", role = \"ctb\", comment = \"Copy of R-project homepage cached as example\") )", + "Description": "Work with XML files using a simple, consistent interface. Built on top of the 'libxml2' C library.", + "License": "MIT + file LICENSE", + "URL": "https://xml2.r-lib.org/, https://github.com/r-lib/xml2", + "BugReports": "https://github.com/r-lib/xml2/issues", + "Depends": [ + "R (>= 3.6.0)" + ], + "Imports": [ + "cli", + "methods", + "rlang (>= 1.1.0)" + ], + "Suggests": [ + "covr", + "curl", + "httr", + "knitr", + "magrittr", + "mockery", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "libxml2: libxml2-dev (deb), libxml2-devel (rpm)", + "Collate": "'S4.R' 'as_list.R' 'xml_parse.R' 'as_xml_document.R' 'classes.R' 'format.R' 'import-standalone-obj-type.R' 'import-standalone-purrr.R' 'import-standalone-types-check.R' 'init.R' 'nodeset_apply.R' 'paths.R' 'utils.R' 'xml2-package.R' 'xml_attr.R' 'xml_children.R' 'xml_document.R' 'xml_find.R' 'xml_missing.R' 'xml_modify.R' 'xml_name.R' 'xml_namespaces.R' 'xml_node.R' 'xml_nodeset.R' 'xml_path.R' 'xml_schema.R' 'xml_serialize.R' 'xml_structure.R' 'xml_text.R' 'xml_type.R' 'xml_url.R' 'xml_write.R' 'zzz.R'", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [aut, cre], Jim Hester [aut], Jeroen Ooms [aut], Posit Software, PBC [cph, fnd], R Foundation [ctb] (Copy of R-project homepage cached as example)", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "xmlparsedata": { + "Package": "xmlparsedata", + "Version": "1.0.5", + "Source": "Repository", + "Title": "Parse Data of 'R' Code as an 'XML' Tree", + "Author": "Gábor Csárdi", + "Maintainer": "Gábor Csárdi ", + "Description": "Convert the output of 'utils::getParseData()' to an 'XML' tree, that one can search via 'XPath', and easier to manipulate in general.", + "License": "MIT + file LICENSE", + "LazyData": "true", + "URL": "https://github.com/r-lib/xmlparsedata#readme", + "BugReports": "https://github.com/r-lib/xmlparsedata/issues", + "RoxygenNote": "6.0.1", + "Suggests": [ + "covr", + "testthat", + "xml2" + ], + "Depends": [ + "R (>= 3.0.0)" + ], + "Encoding": "UTF-8", + "NeedsCompilation": "no", + "Repository": "CRAN" + }, + "xopen": { + "Package": "xopen", + "Version": "1.0.1", + "Source": "Repository", + "Title": "Open System Files, 'URLs', Anything", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Fathi\", \"Boudra\", role = \"aut\"), person(\"Rex\", \"Dieter\", role = \"aut\"), person(\"Kevin\", \"Krammer\", role = \"aut\"), person(\"Jeremy\", \"White\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", + "Description": "Cross platform solution to open files, directories or 'URLs' with their associated programs.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/xopen#readme, https://r-lib.github.io/xopen/", + "BugReports": "https://github.com/r-lib/xopen/issues", + "Depends": [ + "R (>= 3.1)" + ], + "Imports": [ + "processx" + ], + "Suggests": [ + "ps", + "testthat (>= 3.0.0)" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Author": "Gábor Csárdi [aut, cre], Fathi Boudra [aut], Rex Dieter [aut], Kevin Krammer [aut], Jeremy White [aut], Posit Software, PBC [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Date": "2019-04-08", + "Title": "Export Tables to LaTeX or HTML", + "Authors@R": "c(person(\"David B.\", \"Dahl\", role=\"aut\"), person(\"David\", \"Scott\", role=c(\"aut\",\"cre\"), email=\"d.scott@auckland.ac.nz\"), person(\"Charles\", \"Roosen\", role=\"aut\"), person(\"Arni\", \"Magnusson\", role=\"aut\"), person(\"Jonathan\", \"Swinton\", role=\"aut\"), person(\"Ajay\", \"Shah\", role=\"ctb\"), person(\"Arne\", \"Henningsen\", role=\"ctb\"), person(\"Benno\", \"Puetz\", role=\"ctb\"), person(\"Bernhard\", \"Pfaff\", role=\"ctb\"), person(\"Claudio\", \"Agostinelli\", role=\"ctb\"), person(\"Claudius\", \"Loehnert\", role=\"ctb\"), person(\"David\", \"Mitchell\", role=\"ctb\"), person(\"David\", \"Whiting\", role=\"ctb\"), person(\"Fernando da\", \"Rosa\", role=\"ctb\"), person(\"Guido\", \"Gay\", role=\"ctb\"), person(\"Guido\", \"Schulz\", role=\"ctb\"), person(\"Ian\", \"Fellows\", role=\"ctb\"), person(\"Jeff\", \"Laake\", role=\"ctb\"), person(\"John\", \"Walker\", role=\"ctb\"), person(\"Jun\", \"Yan\", role=\"ctb\"), person(\"Liviu\", \"Andronic\", role=\"ctb\"), person(\"Markus\", \"Loecher\", role=\"ctb\"), person(\"Martin\", \"Gubri\", role=\"ctb\"), person(\"Matthieu\", \"Stigler\", role=\"ctb\"), person(\"Robert\", \"Castelo\", role=\"ctb\"), person(\"Seth\", \"Falcon\", role=\"ctb\"), person(\"Stefan\", \"Edwards\", role=\"ctb\"), person(\"Sven\", \"Garbade\", role=\"ctb\"), person(\"Uwe\", \"Ligges\", role=\"ctb\"))", + "Maintainer": "David Scott ", + "Imports": [ + "stats", + "utils" + ], + "Suggests": [ + "knitr", + "plm", + "zoo", + "survival" + ], + "VignetteBuilder": "knitr", + "Description": "Coerce data to LaTeX and HTML tables.", + "URL": "http://xtable.r-forge.r-project.org/", + "Depends": [ + "R (>= 2.10.0)" + ], + "License": "GPL (>= 2)", + "Repository": "CRAN", + "NeedsCompilation": "no", + "Author": "David B. Dahl [aut], David Scott [aut, cre], Charles Roosen [aut], Arni Magnusson [aut], Jonathan Swinton [aut], Ajay Shah [ctb], Arne Henningsen [ctb], Benno Puetz [ctb], Bernhard Pfaff [ctb], Claudio Agostinelli [ctb], Claudius Loehnert [ctb], David Mitchell [ctb], David Whiting [ctb], Fernando da Rosa [ctb], Guido Gay [ctb], Guido Schulz [ctb], Ian Fellows [ctb], Jeff Laake [ctb], John Walker [ctb], Jun Yan [ctb], Liviu Andronic [ctb], Markus Loecher [ctb], Martin Gubri [ctb], Matthieu Stigler [ctb], Robert Castelo [ctb], Seth Falcon [ctb], Stefan Edwards [ctb], Sven Garbade [ctb], Uwe Ligges [ctb]" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.12", + "Source": "Repository", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"cre\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Shawn\", \"Garbett\", , \"shawn.garbett@vumc.org\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4079-5621\")), person(\"Jeremy\", \"Stephens\", role = c(\"aut\", \"ctb\")), person(\"Kirill\", \"Simonov\", role = \"aut\"), person(\"Yihui\", \"Xie\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0645-5666\")), person(\"Zhuoer\", \"Dong\", role = \"ctb\"), person(\"Jeffrey\", \"Horner\", role = \"ctb\"), person(\"reikoch\", role = \"ctb\"), person(\"Will\", \"Beasley\", role = \"ctb\", comment = c(ORCID = \"0000-0002-5613-5006\")), person(\"Brendan\", \"O'Connor\", role = \"ctb\"), person(\"Michael\", \"Quinn\", role = \"ctb\"), person(\"Charlie\", \"Gao\", role = \"ctb\"), person(c(\"Gregory\", \"R.\"), \"Warnes\", role = \"ctb\"), person(c(\"Zhian\", \"N.\"), \"Kamvar\", role = \"ctb\") )", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter () for R.", + "License": "BSD_3_clause + file LICENSE", + "URL": "https://yaml.r-lib.org, https://github.com/r-lib/yaml/", + "BugReports": "https://github.com/r-lib/yaml/issues", + "Suggests": [ + "knitr", + "rmarkdown", + "testthat (>= 3.0.0)" + ], + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Author": "Hadley Wickham [cre] (ORCID: ), Shawn Garbett [ctb] (ORCID: ), Jeremy Stephens [aut, ctb], Kirill Simonov [aut], Yihui Xie [ctb] (ORCID: ), Zhuoer Dong [ctb], Jeffrey Horner [ctb], reikoch [ctb], Will Beasley [ctb] (ORCID: ), Brendan O'Connor [ctb], Michael Quinn [ctb], Charlie Gao [ctb], Gregory R. Warnes [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN" + }, + "ymlthis": { + "Package": "ymlthis", + "Version": "0.1.7", + "Source": "Repository", + "Title": "Write 'YAML' for 'R Markdown', 'bookdown', 'blogdown', and More", + "Authors@R": "c( person(\"Malcolm\", \"Barrett\", , \"malcolmbarrett@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0299-5825\")), person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", + "Description": "Write 'YAML' front matter for R Markdown and related documents. Work with 'YAML' objects more naturally and write the resulting 'YAML' to your clipboard or to 'YAML' files related to your project.", + "License": "MIT + file LICENSE", + "URL": "https://ymlthis.r-lib.org, https://github.com/r-lib/ymlthis", + "BugReports": "https://github.com/r-lib/ymlthis/issues", + "Depends": [ + "R (>= 3.2)" + ], + "Imports": [ + "crayon", + "fs", + "glue", + "magrittr", + "purrr (>= 0.3.2)", + "rlang (>= 0.4.10)", + "rmarkdown (>= 2.10)", + "rstudioapi", + "stringr", + "usethis (>= 1.5.0)", + "whoami", + "withr", + "yaml" + ], + "Suggests": [ + "blogdown", + "bookdown", + "covr", + "knitr", + "miniUI", + "pkgdown", + "prettydoc", + "roxygen2 (>= 7.0.0)", + "shiny", + "shinyBS", + "spelling", + "testthat (>= 3.0.0)", + "xaringan" + ], + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.2.0", + "NeedsCompilation": "no", + "Author": "Malcolm Barrett [aut, cre] (), Richard Iannone [aut] (), RStudio [cph, fnd]", + "Maintainer": "Malcolm Barrett ", + "Repository": "CRAN" + }, + "zip": { + "Package": "zip", + "Version": "2.3.3", + "Source": "Repository", + "Title": "Cross-Platform 'zip' Compression", + "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Kuba\", \"Podgórski\", role = \"ctb\"), person(\"Rich\", \"Geldreich\", role = \"ctb\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"), comment = c(ROR = \"03wc8by49\")) )", + "Description": "Cross-Platform 'zip' Compression Library. A replacement for the 'zip' function, that does not require any additional external tools on any platform.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/zip, https://r-lib.github.io/zip/", + "BugReports": "https://github.com/r-lib/zip/issues", + "Suggests": [ + "covr", + "pillar", + "processx", + "R6", + "testthat", + "withr" + ], + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Config/usethis/last-upkeep": "2025-05-07", + "Encoding": "UTF-8", + "RoxygenNote": "7.3.2.9000", + "NeedsCompilation": "yes", + "Author": "Gábor Csárdi [aut, cre], Kuba Podgórski [ctb], Rich Geldreich [ctb], Posit Software, PBC [cph, fnd] (ROR: )", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN" + }, + "zoo": { + "Package": "zoo", + "Version": "1.8-14", + "Source": "Repository", + "Date": "2025-04-09", + "Title": "S3 Infrastructure for Regular and Irregular Time Series (Z's Ordered Observations)", + "Authors@R": "c(person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")), person(given = \"Gabor\", family = \"Grothendieck\", role = \"aut\", email = \"ggrothendieck@gmail.com\"), person(given = c(\"Jeffrey\", \"A.\"), family = \"Ryan\", role = \"aut\", email = \"jeff.a.ryan@gmail.com\"), person(given = c(\"Joshua\", \"M.\"), family = \"Ulrich\", role = \"ctb\", email = \"josh.m.ulrich@gmail.com\"), person(given = \"Felix\", family = \"Andrews\", role = \"ctb\", email = \"felix@nfrac.org\"))", + "Description": "An S3 class with methods for totally ordered indexed observations. It is particularly aimed at irregular time series of numeric vectors/matrices and factors. zoo's key design goals are independence of a particular index/date/time class and consistency with ts and base R by providing methods to extend standard generics.", + "Depends": [ + "R (>= 3.1.0)", + "stats" + ], + "Suggests": [ + "AER", + "coda", + "chron", + "ggplot2 (>= 3.5.0)", + "mondate", + "scales", + "stinepack", + "strucchange", + "timeDate", + "timeSeries", + "tinyplot", + "tis", + "tseries", + "xts" + ], + "Imports": [ + "utils", + "graphics", + "grDevices", + "lattice (>= 0.20-27)" + ], + "License": "GPL-2 | GPL-3", + "URL": "https://zoo.R-Forge.R-project.org/", + "NeedsCompilation": "yes", + "Author": "Achim Zeileis [aut, cre] (), Gabor Grothendieck [aut], Jeffrey A. Ryan [aut], Joshua M. Ulrich [ctb], Felix Andrews [ctb]", + "Maintainer": "Achim Zeileis ", + "Repository": "CRAN" + } + } +} diff --git a/scripts/cs2/AirPollutantsREMIND-MAgPIE.Rmd b/scripts/cs2/AirPollutantsREMIND-MAgPIE.Rmd index bb92a25ef6..9927b1a479 100644 --- a/scripts/cs2/AirPollutantsREMIND-MAgPIE.Rmd +++ b/scripts/cs2/AirPollutantsREMIND-MAgPIE.Rmd @@ -39,15 +39,10 @@ addSumVariables <- function( ```{r, echo = FALSE, results = 'hide'} # Compute total emissions for CMIP7 harmonization sectors from REMIND -for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { +for (species in c("BC", "CO", "NH3", "NOx", "OC", "SO2", "VOC")) { sumvars <- c( - paste0("Emi|", species, "|Extra|Energy|Demand|Transport|Pass|Aviation"), - paste0("Emi|", species, "|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping"), - paste0("Emi|", species, "|Energy Supply"), - paste0("Emi|", species, "|Energy Demand|Industry"), - paste0("Emi|", species, "|Energy Demand|Buildings"), - paste0("Emi|", species, "|Solvents"), - paste0("Emi|", species, "|Energy Demand|Transport"), + paste0("Emi|", species, "|w/ Bunkers|Energy and Industrial Processes"), + paste0("Emi|", species, "|Product Use|Solvents"), paste0("Emi|", species, "|Waste") ) @@ -57,6 +52,19 @@ for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { bind_rows(data) } +# Compute emissions for CMIP7 industrial sector from REMIND +for (species in c("BC", "CO", "NH3", "NOx", "OC", "SO2", "VOC")) { + sumvars <- c( + paste0("Emi|", species, "|Energy|Demand|Industry"), + paste0("Emi|", species, "|Industrial Processes") + ) + + data <- data %>% + filter(model == "REMIND") %>% + addSumVariables(sumvars, paste0("Emi|", species,"|Industrial Sector"), only.new = TRUE) %>% + bind_rows(data) +} + # Compute total emissions for CMIP7 harmonization sectors from MAgPIE for (species_MAgPIE in c("BC", "CO", "NH3", "NO2", "OC", "SO2", "VOC")) { if (species_MAgPIE %in% c("NH3","NO2")) { @@ -86,8 +94,8 @@ for (species_MAgPIE in c("BC", "CO", "NH3", "NO2", "OC", "SO2", "VOC")) { # Compute total emissions for CMIP7 harmonization sectors from REMIND and MAgPIE -for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { - if (species == "NOX") { +for (species in c("BC", "CO", "NH3", "NOx", "OC", "SO2", "VOC")) { + if (species == "NOx") { species_MAgPIE <- "NO2" } else { species_MAgPIE <- species @@ -99,7 +107,7 @@ for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { ) data <- data %>% - filter(model %in% c("MAgPIE", "REMIND")) %>% mutate(model = "REMIND-MAgPIE", unit = "Mt NOX/yr") %>% + filter(model %in% c("MAgPIE", "REMIND")) %>% mutate(model = "REMIND-MAgPIE", unit = "Mt NOx/yr") %>% addSumVariables(sumvars, paste0("Emi|", species,"|REMIND-MAgPIE total"), only.new = TRUE) %>% bind_rows(data) } @@ -128,82 +136,82 @@ for (species in c("BC", "CO", "NH3", "NOX", "OC", "Sulfur", "VOC")) { ## BC ### Emi|BC|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r BC Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|BC|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|BC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r BC Emissions - REMIND Total} showLinePlots(data, "Emi|BC|REMIND total", histVars = "Emi|BC|REMIND total", vlines = 2020) ``` ### Emi|BC|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r BC Emissions - MAgPIE Total} showLinePlots(data, "Emissions|BC|MAgPIE total", vlines = 2020) ``` ### Emi|BC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r BC Emissions - Aviation} showLinePlots(data, "Emi|BC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|BC|Aircraft", vlines = 2020) ``` ### Emi|BC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r BC Emissions - International Shipping} showLinePlots(data, "Emi|BC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|BC|International Shipping", vlines = 2020) ``` ### Emissions|BC|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r BC Emissions - Biomass Burning} showLinePlots(data, "Emissions|BC|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|BC|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|BC|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r BC Emissions - Forest Burning} showLinePlots(data, "Emissions|BC|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|BC|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r BC Emissions - Grassland Burning} showLinePlots(data, "Emissions|BC|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|BC|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r BC Emissions - Peat Burning} showLinePlots(data, "Emissions|BC|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|BC|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r BC Emissions - Agriculture} showLinePlots(data, "Emissions|BC|AFOLU|Agriculture", vlines = 2020) ``` -### Emi|BC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|BC|Energy Supply", histVars = "Emi|BC|Energy Sector", vlines = 2020) +### Emi|BC|Energy|Supply +```{r BC Emissions - Energy Supply} +showLinePlots(data, "Emi|BC|Energy|Supply", histVars = "Emi|BC|Energy Sector", vlines = 2020) ``` -### Emi|BC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|BC|Energy Demand|Industry", histVars = "Emi|BC|Industrial Sector", vlines = 2020) +### Emi|BC|Industrial Sector +```{r BC Emissions - Industry} +showLinePlots(data, "Emi|BC|Industrial Sector", histVars = "Emi|BC|Industrial Sector", vlines = 2020) ``` -### Emi|BC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|BC|Energy Demand|Buildings", histVars = "Emi|BC|Residential Commercial Other", vlines = 2020) +### Emi|BC|Energy|Demand|Buildings +```{r BC Emissions - Buildings} +showLinePlots(data, "Emi|BC|Energy|Demand|Buildings", histVars = "Emi|BC|Residential Commercial Other", vlines = 2020) ``` -### Emi|BC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|BC|Solvents", histVars = "Emi|BC|Solvents Production and Application", vlines = 2020) +### Emi|BC|Product Use|Solvents +```{r BC Emissions - Solvents} +showLinePlots(data, "Emi|BC|Product Use|Solvents", histVars = "Emi|BC|Solvents Production and Application", vlines = 2020) ``` -### Emi|BC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|BC|Energy Demand|Transport", histVars = "Emi|BC|Transportation Sector", vlines = 2020) +### Emi|BC|w/o Bunkers|Energy|Demand|Transport +```{r BC Emissions - Transport} +showLinePlots(data, "Emi|BC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|BC|Transportation Sector", vlines = 2020) ``` ### Emi|BC|Waste -```{r Black Carbon Emissions - Waste} +```{r BC Emissions - Waste} showLinePlots(data, "Emi|BC|Waste", histVars = "Emi|BC|Waste", vlines = 2020) ``` @@ -211,82 +219,82 @@ showLinePlots(data, "Emi|BC|Waste", histVars = "Emi|BC|Waste", vlines = 2020) ## CO ### Emi|CO|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r CO Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|CO|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|CO|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r CO Emissions - REMIND Total} showLinePlots(data, "Emi|CO|REMIND total", histVars = "Emi|CO|REMIND total", vlines = 2020) ``` ### Emi|CO|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r CO Emissions - MAgPIE Total} showLinePlots(data, "Emissions|CO|MAgPIE total", vlines = 2020) ``` ### Emi|CO|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r CO Emissions - Aviation} showLinePlots(data, "Emi|CO|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|CO|Aircraft", vlines = 2020) ``` ### Emi|CO|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r CO Emissions - International Shipping} showLinePlots(data, "Emi|CO|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|CO|International Shipping", vlines = 2020) ``` ### Emissions|CO|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r CO Emissions - Biomass Burning} showLinePlots(data, "Emissions|CO|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|CO|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|CO|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r CO Emissions - Forest Burning} showLinePlots(data, "Emissions|CO|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|CO|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r CO Emissions - Grassland Burning} showLinePlots(data, "Emissions|CO|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|CO|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r CO Emissions - Peat Burning} showLinePlots(data, "Emissions|CO|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|CO|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r CO Emissions - Agriculture} showLinePlots(data, "Emissions|CO|AFOLU|Agriculture", vlines = 2020) ``` -### Emi|CO|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|CO|Energy Supply", histVars = "Emi|CO|Energy Sector", vlines = 2020) +### Emi|CO|Energy|Supply +```{r CO Emissions - Energy Supply} +showLinePlots(data, "Emi|CO|Energy|Supply", histVars = "Emi|CO|Energy Sector", vlines = 2020) ``` -### Emi|CO|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|CO|Energy Demand|Industry", histVars = "Emi|CO|Industrial Sector", vlines = 2020) +### Emi|CO|Industrial Sector +```{r CO Emissions - Industry} +showLinePlots(data, "Emi|CO|Industrial Sector", histVars = "Emi|CO|Industrial Sector", vlines = 2020) ``` -### Emi|CO|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|CO|Energy Demand|Buildings", histVars = "Emi|CO|Residential Commercial Other", vlines = 2020) +### Emi|CO|Energy|Demand|Buildings +```{r CO Emissions - Buildings} +showLinePlots(data, "Emi|CO|Energy|Demand|Buildings", histVars = "Emi|CO|Residential Commercial Other", vlines = 2020) ``` -### Emi|CO|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|CO|Solvents", histVars = "Emi|CO|Solvents Production and Application", vlines = 2020) +### Emi|CO|Product Use|Solvents +```{r CO Emissions - Solvents} +showLinePlots(data, "Emi|CO|Product Use|Solvents", histVars = "Emi|CO|Solvents Production and Application", vlines = 2020) ``` -### Emi|CO|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|CO|Energy Demand|Transport", histVars = "Emi|CO|Transportation Sector", vlines = 2020) +### Emi|CO|w/o Bunkers|Energy|Demand|Transport +```{r CO Emissions - Transport} +showLinePlots(data, "Emi|CO|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|CO|Transportation Sector", vlines = 2020) ``` ### Emi|CO|Waste -```{r Black Carbon Emissions - Waste} +```{r CO Emissions - Waste} showLinePlots(data, "Emi|CO|Waste", histVars = "Emi|CO|Waste", vlines = 2020) ``` @@ -294,166 +302,166 @@ showLinePlots(data, "Emi|CO|Waste", histVars = "Emi|CO|Waste", vlines = 2020) ## NH3 ### Emi|NH3|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r NH3 Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|NH3|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|NH3|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r NH3 Emissions - REMIND Total} showLinePlots(data, "Emi|NH3|REMIND total", histVars = "Emi|NH3|REMIND total", vlines = 2020) ``` ### Emi|NH3|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r NH3 Emissions - MAgPIE Total} showLinePlots(data, "Emissions|NH3|MAgPIE total", vlines = 2020) ``` ### Emi|NH3|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r NH3 Emissions - Aviation} showLinePlots(data, "Emi|NH3|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NH3|Aircraft", vlines = 2020) ``` ### Emi|NH3|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r NH3 Emissions - International Shipping} showLinePlots(data, "Emi|NH3|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NH3|International Shipping", vlines = 2020) ``` ### Emissions|NH3|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r NH3 Emissions - Biomass Burning} showLinePlots(data, "Emissions|NH3|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|NH3|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|NH3|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r NH3 Emissions - Forest Burning} showLinePlots(data, "Emissions|NH3|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|NH3|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r NH3 Emissions - Grassland Burning} showLinePlots(data, "Emissions|NH3|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|NH3|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r NH3 Emissions - Peat Burning} showLinePlots(data, "Emissions|NH3|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|NH3|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r NH3 Emissions - Agriculture} showLinePlots(data, "Emissions|NH3|Land|Agriculture", vlines = 2020) ``` -### Emi|NH3|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|NH3|Energy Supply", histVars = "Emi|NH3|Energy Sector", vlines = 2020) +### Emi|NH3|Energy|Supply +```{r NH3 Emissions - Energy Supply} +showLinePlots(data, "Emi|NH3|Energy|Supply", histVars = "Emi|NH3|Energy Sector", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|NH3|Energy Demand|Industry", histVars = "Emi|NH3|Industrial Sector", vlines = 2020) +### Emi|NH3|Industrial Sector +```{r NH3 Emissions - Industry} +showLinePlots(data, "Emi|NH3|Industrial Sector", histVars = "Emi|NH3|Industrial Sector", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|NH3|Energy Demand|Buildings", histVars = "Emi|NH3|Residential Commercial Other", vlines = 2020) +### Emi|NH3|Energy|Demand|Buildings +```{r NH3 Emissions - Buildings} +showLinePlots(data, "Emi|NH3|Energy|Demand|Buildings", histVars = "Emi|NH3|Residential Commercial Other", vlines = 2020) ``` -### Emi|NH3|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|NH3|Solvents", histVars = "Emi|NH3|Solvents Production and Application", vlines = 2020) +### Emi|NH3|Product Use|Solvents +```{r NH3 Emissions - Solvents} +showLinePlots(data, "Emi|NH3|Product Use|Solvents", histVars = "Emi|NH3|Solvents Production and Application", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|NH3|Energy Demand|Transport", histVars = "Emi|NH3|Transportation Sector", vlines = 2020) +### Emi|NH3|w/o Bunkers|Energy|Demand|Transport +```{r NH3 Emissions - Transport} +showLinePlots(data, "Emi|NH3|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|NH3|Transportation Sector", vlines = 2020) ``` ### Emi|NH3|Waste -```{r Black Carbon Emissions - Waste} +```{r NH3 Emissions - Waste} showLinePlots(data, "Emi|NH3|Waste", histVars = "Emi|NH3|Waste", vlines = 2020) ``` -## NOX +## NOx -### Emi|NOX|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} -showLinePlots(data, "Emi|NOX|REMIND-MAgPIE total", vlines = 2020) +### Emi|NOx|REMIND-MAgPIE total +```{r NOx Emissions - REMIND-MAgPIE Total} +showLinePlots(data, "Emi|NOx|REMIND-MAgPIE total", vlines = 2020) ``` -### Emi|NOX|REMIND total -```{r Black Carbon Emissions - REMIND Total} -showLinePlots(data, "Emi|NOX|REMIND total", histVars = "Emi|NOX|REMIND total", vlines = 2020) +### Emi|NOx|REMIND total +```{r NOx Emissions - REMIND Total} +showLinePlots(data, "Emi|NOx|REMIND total", histVars = "Emi|NOX|REMIND total", vlines = 2020) ``` ### Emi|NO2|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r NOx Emissions - MAgPIE Total} showLinePlots(data, "Emissions|NO2|MAgPIE total", vlines = 2020) ``` -### Emi|NOX|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} -showLinePlots(data, "Emi|NOX|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NOX|Aircraft", vlines = 2020) +### Emi|NOx|Extra|Energy|Demand|Transport|Pass|Aviation +```{r NOx Emissions - Aviation} +showLinePlots(data, "Emi|NOx|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NOX|Aircraft", vlines = 2020) ``` -### Emi|NOX|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} -showLinePlots(data, "Emi|NOX|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NOX|International Shipping", vlines = 2020) +### Emi|NOx|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping +```{r NOx Emissions - International Shipping} +showLinePlots(data, "Emi|NOx|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NOX|International Shipping", vlines = 2020) ``` ### Emissions|NO2|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r NOx Emissions - Biomass Burning} showLinePlots(data, "Emissions|NO2|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|NO2|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|NO2|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r NOx Emissions - Forest Burning} showLinePlots(data, "Emissions|NO2|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|NO2|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r NOx Emissions - Grassland Burning} showLinePlots(data, "Emissions|NO2|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|NO2|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r NOx Emissions - Peat Burning} showLinePlots(data, "Emissions|NO2|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|NO2|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r NOx Emissions - Agriculture} showLinePlots(data, "Emissions|NO2|Land|Agriculture", vlines = 2020) ``` -### Emi|NOX|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|NOX|Energy Supply", histVars = "Emi|NOX|Energy Sector", vlines = 2020) +### Emi|NOx|Energy|Supply +```{r NOx Emissions - Energy Supply} +showLinePlots(data, "Emi|NOx|Energy|Supply", histVars = "Emi|NOX|Energy Sector", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|NOX|Energy Demand|Industry", histVars = "Emi|NOX|Industrial Sector", vlines = 2020) +### Emi|NOx|Industrial Sector +```{r NOx Emissions - Industry} +showLinePlots(data, "Emi|NOx|Industrial Sector", histVars = "Emi|NOX|Industrial Sector", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|NOX|Energy Demand|Buildings", histVars = "Emi|NOX|Residential Commercial Other", vlines = 2020) +### Emi|NOx|Energy|Demand|Buildings +```{r NOx Emissions - Buildings} +showLinePlots(data, "Emi|NOx|Energy|Demand|Buildings", histVars = "Emi|NOX|Residential Commercial Other", vlines = 2020) ``` -### Emi|NOX|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|NOX|Solvents", histVars = "Emi|NOX|Solvents Production and Application", vlines = 2020) +### Emi|NOx|Product Use|Solvents +```{r NOx Emissions - Solvents} +showLinePlots(data, "Emi|NOx|Product Use|Solvents", histVars = "Emi|NOX|Solvents Production and Application", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|NOX|Energy Demand|Transport", histVars = "Emi|NOX|Transportation Sector", vlines = 2020) +### Emi|NOx|w/o Bunkers|Energy|Demand|Transport +```{r NOx Emissions - Transport} +showLinePlots(data, "Emi|NOx|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|NOX|Transportation Sector", vlines = 2020) ``` -### Emi|NOX|Waste -```{r Black Carbon Emissions - Waste} -showLinePlots(data, "Emi|NOX|Waste", histVars = "Emi|NOX|Waste", vlines = 2020) +### Emi|NOx|Waste +```{r NOx Emissions - Waste} +showLinePlots(data, "Emi|NOx|Waste", histVars = "Emi|NOX|Waste", vlines = 2020) ``` @@ -461,82 +469,82 @@ showLinePlots(data, "Emi|NOX|Waste", histVars = "Emi|NOX|Waste", vlines = 2020) ## OC ### Emi|OC|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r OC Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|OC|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|OC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r OC Emissions - REMIND Total} showLinePlots(data, "Emi|OC|REMIND total", histVars = "Emi|OC|REMIND total", vlines = 2020) ``` ### Emi|OC|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r OC Emissions - MAgPIE Total} showLinePlots(data, "Emissions|OC|MAgPIE total", vlines = 2020) ``` ### Emi|OC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r OC Emissions - Aviation} showLinePlots(data, "Emi|OC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|OC|Aircraft", vlines = 2020) ``` ### Emi|OC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r OC Emissions - International Shipping} showLinePlots(data, "Emi|OC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|OC|International Shipping", vlines = 2020) ``` ### Emissions|OC|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r OC Emissions - Biomass Burning} showLinePlots(data, "Emissions|OC|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|OC|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|OC|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r OC Emissions - Forest Burning} showLinePlots(data, "Emissions|OC|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|OC|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r OC Emissions - Grassland Burning} showLinePlots(data, "Emissions|OC|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|OC|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r OC Emissions - Peat Burning} showLinePlots(data, "Emissions|OC|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|OC|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r OC Emissions - Agriculture} showLinePlots(data, "Emissions|OC|AFOLU|Agriculture", vlines = 2020) ``` -### Emi|OC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|OC|Energy Supply", histVars = "Emi|OC|Energy Sector", vlines = 2020) +### Emi|OC|Energy|Supply +```{r OC Emissions - Energy Supply} +showLinePlots(data, "Emi|OC|Energy|Supply", histVars = "Emi|OC|Energy Sector", vlines = 2020) ``` -### Emi|OC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|OC|Energy Demand|Industry", histVars = "Emi|OC|Industrial Sector", vlines = 2020) +### Emi|OC|Industrial Sector +```{r OC Emissions - Industry} +showLinePlots(data, "Emi|OC|Industrial Sector", histVars = "Emi|OC|Industrial Sector", vlines = 2020) ``` -### Emi|OC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|OC|Energy Demand|Buildings", histVars = "Emi|OC|Residential Commercial Other", vlines = 2020) +### Emi|OC|Energy|Demand|Buildings +```{r OC Emissions - Buildings} +showLinePlots(data, "Emi|OC|Energy|Demand|Buildings", histVars = "Emi|OC|Residential Commercial Other", vlines = 2020) ``` -### Emi|OC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|OC|Solvents", histVars = "Emi|OC|Solvents Production and Application", vlines = 2020) +### Emi|OC|Product Use|Solvents +```{r OC Emissions - Solvents} +showLinePlots(data, "Emi|OC|Product Use|Solvents", histVars = "Emi|OC|Solvents Production and Application", vlines = 2020) ``` -### Emi|OC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|OC|Energy Demand|Transport", histVars = "Emi|OC|Transportation Sector", vlines = 2020) +### Emi|OC|w/o Bunkers|Energy|Demand|Transport +```{r OC Emissions - Transport} +showLinePlots(data, "Emi|OC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|OC|Transportation Sector", vlines = 2020) ``` ### Emi|OC|Waste -```{r Black Carbon Emissions - Waste} +```{r OC Emissions - Waste} showLinePlots(data, "Emi|OC|Waste", histVars = "Emi|OC|Waste", vlines = 2020) ``` @@ -544,82 +552,82 @@ showLinePlots(data, "Emi|OC|Waste", histVars = "Emi|OC|Waste", vlines = 2020) ## SO2 ### Emi|SO2|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r SO2 Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|SO2|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|SO2|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r SO2 Emissions - REMIND Total} showLinePlots(data, "Emi|SO2|REMIND total", histVars = "Emi|Sulfur|REMIND total", vlines = 2020) ``` ### Emi|SO2|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r SO2 Emissions - MAgPIE Total} showLinePlots(data, "Emissions|SO2|MAgPIE total", vlines = 2020) ``` ### Emi|SO2|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r SO2 Emissions - Aviation} showLinePlots(data, "Emi|SO2|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|Sulfur|Aircraft", vlines = 2020) ``` ### Emi|SO2|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r SO2 Emissions - International Shipping} showLinePlots(data, "Emi|SO2|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|Sulfur|International Shipping", vlines = 2020) ``` ### Emissions|SO2|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r SO2 Emissions - Biomass Burning} showLinePlots(data, "Emissions|SO2|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|Sulfur|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|SO2|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r SO2 Emissions - Forest Burning} showLinePlots(data, "Emissions|SO2|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|SO2|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r SO2 Emissions - Grassland Burning} showLinePlots(data, "Emissions|SO2|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|SO2|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r SO2 Emissions - Peat Burning} showLinePlots(data, "Emissions|SO2|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|SO2|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r SO2 Emissions - Agriculture} showLinePlots(data, "Emissions|SO2|AFOLU|Agriculture", vlines = 2020) ``` -### Emi|SO2|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|SO2|Energy Supply", histVars = "Emi|Sulfur|Energy Sector", vlines = 2020) +### Emi|SO2|Energy|Supply +```{r SO2 Emissions - Energy Supply} +showLinePlots(data, "Emi|SO2|Energy|Supply", histVars = "Emi|Sulfur|Energy Sector", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|SO2|Energy Demand|Industry", histVars = "Emi|Sulfur|Industrial Sector", vlines = 2020) +### Emi|SO2|Industrial Sector +```{r SO2 Emissions - Industry} +showLinePlots(data, "Emi|SO2|Industrial Sector", histVars = "Emi|Sulfur|Industrial Sector", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|SO2|Energy Demand|Buildings", histVars = "Emi|Sulfur|Residential Commercial Other", vlines = 2020) +### Emi|SO2|Energy|Demand|Buildings +```{r SO2 Emissions - Buildings} +showLinePlots(data, "Emi|SO2|Energy|Demand|Buildings", histVars = "Emi|Sulfur|Residential Commercial Other", vlines = 2020) ``` -### Emi|SO2|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|SO2|Solvents", histVars = "Emi|Sulfur|Solvents Production and Application", vlines = 2020) +### Emi|SO2|Product Use|Solvents +```{r SO2 Emissions - Solvents} +showLinePlots(data, "Emi|SO2|Product Use|Solvents", histVars = "Emi|Sulfur|Solvents Production and Application", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|SO2|Energy Demand|Transport", histVars = "Emi|Sulfur|Transportation Sector", vlines = 2020) +### Emi|SO2|w/o Bunkers|Energy|Demand|Transport +```{r SO2 Emissions - Transport} +showLinePlots(data, "Emi|SO2|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|Sulfur|Transportation Sector", vlines = 2020) ``` ### Emi|SO2|Waste -```{r Black Carbon Emissions - Waste} +```{r SO2 Emissions - Waste} showLinePlots(data, "Emi|SO2|Waste", histVars = "Emi|Sulfur|Waste", vlines = 2020) ``` @@ -627,81 +635,81 @@ showLinePlots(data, "Emi|SO2|Waste", histVars = "Emi|Sulfur|Waste", vlines = 202 ## VOC ### Emi|VOC|REMIND-MAgPIE total -```{r Black Carbon Emissions - REMIND-MAgPIE Total} +```{r VOC Emissions - REMIND-MAgPIE Total} showLinePlots(data, "Emi|VOC|REMIND-MAgPIE total", vlines = 2020) ``` ### Emi|VOC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r VOC Emissions - REMIND Total} showLinePlots(data, "Emi|VOC|REMIND total", histVars = "Emi|VOC|REMIND total", vlines = 2020) ``` ### Emi|VOC|MAgPIE total -```{r Black Carbon Emissions - REMIND Total} +```{r VOC Emissions - MAgPIE Total} showLinePlots(data, "Emissions|VOC|MAgPIE total", vlines = 2020) ``` ### Emi|VOC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r VOC Emissions - Aviation} showLinePlots(data, "Emi|VOC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|VOC|Aircraft", vlines = 2020) ``` ### Emi|VOC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r VOC Emissions - International Shipping} showLinePlots(data, "Emi|VOC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|VOC|International Shipping", vlines = 2020) ``` ### Emissions|VOC|Land|Biomass Burning|Burning of Crop Residues -```{r Black Carbon Emissions - Biomass Burning} +```{r VOC Emissions - Biomass Burning} showLinePlots(data, "Emissions|VOC|Land|Biomass Burning|Burning of Crop Residues", histVars = "Emissions|VOC|Land|Biomass Burning|+|Agricultural Waste Burning", vlines = 2020) ``` ### Emissions|VOC|AFOLU|Land|Fires|Forest Burning -```{r Black Carbon Emissions - Forest Burning} +```{r VOC Emissions - Forest Burning} showLinePlots(data, "Emissions|VOC|AFOLU|Land|Fires|Forest Burning", vlines = 2020) ``` ### Emissions|VOC|AFOLU|Land|Fires|Grassland Burning -```{r Black Carbon Emissions - Grassland Burning} +```{r VOC Emissions - Grassland Burning} showLinePlots(data, "Emissions|VOC|AFOLU|Land|Fires|Grassland Burning", vlines = 2020) ``` ### Emissions|VOC|AFOLU|Land|Fires|Peat Burning -```{r Black Carbon Emissions - Peat Burning} +```{r VOC Emissions - Peat Burning} showLinePlots(data, "Emissions|VOC|AFOLU|Land|Fires|Peat Burning", vlines = 2020) ``` ### Emissions|VOC|AFOLU|Agriculture -```{r Black Carbon Emissions - Agriculture} +```{r VOC Emissions - Agriculture} showLinePlots(data, "Emissions|VOC|AFOLU|Agriculture", vlines = 2020) ``` -### Emi|VOC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|VOC|Energy Supply", histVars = "Emi|VOC|Energy Sector", vlines = 2020) +### Emi|VOC|Energy|Supply +```{r VOC Emissions - Energy Supply} +showLinePlots(data, "Emi|VOC|Energy|Supply", histVars = "Emi|VOC|Energy Sector", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|VOC|Energy Demand|Industry", histVars = "Emi|VOC|Industrial Sector", vlines = 2020) +### Emi|VOC|Industrial Sector +```{r VOC Emissions - Industry} +showLinePlots(data, "Emi|VOC|Industrial Sector", histVars = "Emi|VOC|Industrial Sector", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|VOC|Energy Demand|Buildings", histVars = "Emi|VOC|Residential Commercial Other", vlines = 2020) +### Emi|VOC|Energy|Demand|Buildings +```{r VOC Emissions - Buildings} +showLinePlots(data, "Emi|VOC|Energy|Demand|Buildings", histVars = "Emi|VOC|Residential Commercial Other", vlines = 2020) ``` -### Emi|VOC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|VOC|Solvents", histVars = "Emi|VOC|Solvents Production and Application", vlines = 2020) +### Emi|VOC|Product Use|Solvents +```{r VOC Emissions - Solvents} +showLinePlots(data, "Emi|VOC|Product Use|Solvents", histVars = "Emi|VOC|Solvents Production and Application", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|VOC|Energy Demand|Transport", histVars = "Emi|VOC|Transportation Sector", vlines = 2020) +### Emi|VOC|w/o Bunkers|Energy|Demand|Transport +```{r VOC Emissions - Transport} +showLinePlots(data, "Emi|VOC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|VOC|Transportation Sector", vlines = 2020) ``` ### Emi|VOC|Waste -```{r Black Carbon Emissions - Waste} +```{r VOC Emissions - Waste} showLinePlots(data, "Emi|VOC|Waste", histVars = "Emi|VOC|Waste", vlines = 2020) ``` diff --git a/scripts/cs2/AirPollutantsREMIND.Rmd b/scripts/cs2/AirPollutantsREMIND.Rmd index 9ef6c9b3f2..22f2e07661 100644 --- a/scripts/cs2/AirPollutantsREMIND.Rmd +++ b/scripts/cs2/AirPollutantsREMIND.Rmd @@ -6,7 +6,7 @@ | REMIND License Exception, version 1.0 (see LICENSE file). | Contact: remind@pik-potsdam.de --> -# Air Pollutants for CMIP7 harmonization - REMIND-MAgPIE +# Air Pollutants for CMIP7 harmonization - REMIND ```{r, echo = FALSE, results = 'hide'} # Adds a new variable as the sum of a list of variables @@ -39,15 +39,10 @@ addSumVariables <- function( ```{r, echo = FALSE, results = 'hide'} # Compute total emissions for CMIP7 harmonization sectors from REMIND -for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { +for (species in c("BC", "CO", "NH3", "NOx", "OC", "SO2", "VOC")) { sumvars <- c( - paste0("Emi|", species, "|Extra|Energy|Demand|Transport|Pass|Aviation"), - paste0("Emi|", species, "|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping"), - paste0("Emi|", species, "|Energy Supply"), - paste0("Emi|", species, "|Energy Demand|Industry"), - paste0("Emi|", species, "|Energy Demand|Buildings"), - paste0("Emi|", species, "|Solvents"), - paste0("Emi|", species, "|Energy Demand|Transport"), + paste0("Emi|", species, "|w/ Bunkers|Energy and Industrial Processes"), + paste0("Emi|", species, "|Product Use|Solvents"), paste0("Emi|", species, "|Waste") ) @@ -57,6 +52,19 @@ for (species in c("BC", "CO", "NH3", "NOX", "OC", "SO2", "VOC")) { bind_rows(data) } +# Compute emissions for CMIP7 industrial sector from REMIND +for (species in c("BC", "CO", "NH3", "NOx", "OC", "SO2", "VOC")) { + sumvars <- c( + paste0("Emi|", species, "|Energy|Demand|Industry"), + paste0("Emi|", species, "|Industrial Processes") + ) + + data <- data %>% + filter(model == "REMIND") %>% + addSumVariables(sumvars, paste0("Emi|", species,"|Industrial Sector"), only.new = TRUE) %>% + bind_rows(data) +} + # Compute total emissions for CMIP7 harmonization sectors from CEDS for (species in c("BC", "CO", "NH3", "NOX", "OC", "Sulfur", "VOC")) { sumvars <- c( @@ -80,47 +88,47 @@ for (species in c("BC", "CO", "NH3", "NOX", "OC", "Sulfur", "VOC")) { ## BC ### Emi|BC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r BC Emissions - REMIND Total} showLinePlots(data, "Emi|BC|REMIND total", histVars = "Emi|BC|REMIND total", vlines = 2020) ``` ### Emi|BC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r BC Emissions - Aviation} showLinePlots(data, "Emi|BC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|BC|Aircraft", vlines = 2020) ``` ### Emi|BC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r BC Emissions - International Shipping} showLinePlots(data, "Emi|BC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|BC|International Shipping", vlines = 2020) ``` -### Emi|BC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|BC|Energy Supply", histVars = "Emi|BC|Energy Sector", vlines = 2020) +### Emi|BC|Energy|Supply +```{r BC Emissions - Energy Supply} +showLinePlots(data, "Emi|BC|Energy|Supply", histVars = "Emi|BC|Energy Sector", vlines = 2020) ``` -### Emi|BC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|BC|Energy Demand|Industry", histVars = "Emi|BC|Industrial Sector", vlines = 2020) +### Emi|BC|Energy|Demand|Industry +```{r BC Emissions - Industry} +showLinePlots(data, "Emi|BC|Industrial Sector", histVars = "Emi|BC|Industrial Sector", vlines = 2020) ``` -### Emi|BC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|BC|Energy Demand|Buildings", histVars = "Emi|BC|Residential Commercial Other", vlines = 2020) +### Emi|BC|Energy|Demand|Buildings +```{r BC Emissions - Buildings} +showLinePlots(data, "Emi|BC|Energy|Demand|Buildings", histVars = "Emi|BC|Residential Commercial Other", vlines = 2020) ``` -### Emi|BC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|BC|Solvents", histVars = "Emi|BC|Solvents Production and Application", vlines = 2020) +### Emi|BC|Product Use|Solvents +```{r BC Emissions - Solvents} +showLinePlots(data, "Emi|BC|Product Use|Solvents", histVars = "Emi|BC|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|BC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|BC|Energy Demand|Transport", histVars = "Emi|BC|Transportation Sector", vlines = 2020) +### Emi|BC|w/o Bunkers|Energy|Demand|Transport +```{r BC Emissions - Transport} +showLinePlots(data, "Emi|BC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|BC|Transportation Sector", vlines = 2020) ``` ### Emi|BC|Waste -```{r Black Carbon Emissions - Waste} +```{r BC Emissions - Waste} showLinePlots(data, "Emi|BC|Waste", histVars = "Emi|BC|Waste", vlines = 2020) ``` @@ -128,47 +136,47 @@ showLinePlots(data, "Emi|BC|Waste", histVars = "Emi|BC|Waste", vlines = 2020) ## CO ### Emi|CO|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r CO Emissions - REMIND Total} showLinePlots(data, "Emi|CO|REMIND total", histVars = "Emi|CO|REMIND total", vlines = 2020) ``` ### Emi|CO|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r CO Emissions - Aviation} showLinePlots(data, "Emi|CO|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|CO|Aircraft", vlines = 2020) ``` ### Emi|CO|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r CO Emissions - International Shipping} showLinePlots(data, "Emi|CO|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|CO|International Shipping", vlines = 2020) ``` -### Emi|CO|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|CO|Energy Supply", histVars = "Emi|CO|Energy Sector", vlines = 2020) +### Emi|CO|Energy|Supply +```{r CO Emissions - Energy Supply} +showLinePlots(data, "Emi|CO|Energy|Supply", histVars = "Emi|CO|Energy Sector", vlines = 2020) ``` -### Emi|CO|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|CO|Energy Demand|Industry", histVars = "Emi|CO|Industrial Sector", vlines = 2020) +### Emi|CO|Industrial Sector +```{r CO Emissions - Industry} +showLinePlots(data, "Emi|CO|Industrial Sector", histVars = "Emi|CO|Industrial Sector", vlines = 2020) ``` -### Emi|CO|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|CO|Energy Demand|Buildings", histVars = "Emi|CO|Residential Commercial Other", vlines = 2020) +### Emi|CO|Energy|Demand|Buildings +```{r CO Emissions - Buildings} +showLinePlots(data, "Emi|CO|Energy|Demand|Buildings", histVars = "Emi|CO|Residential Commercial Other", vlines = 2020) ``` -### Emi|CO|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|CO|Solvents", histVars = "Emi|CO|Solvents Production and Application", vlines = 2020) +### Emi|CO|Product Use|Solvents +```{r CO Emissions - Solvents} +showLinePlots(data, "Emi|CO|Product Use|Solvents", histVars = "Emi|CO|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|CO|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|CO|Energy Demand|Transport", histVars = "Emi|CO|Transportation Sector", vlines = 2020) +### Emi|CO|w/o Bunkers|Energy|Demand|Transport +```{r CO Emissions - Transport} +showLinePlots(data, "Emi|CO|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|CO|Transportation Sector", vlines = 2020) ``` ### Emi|CO|Waste -```{r Black Carbon Emissions - Waste} +```{r CO Emissions - Waste} showLinePlots(data, "Emi|CO|Waste", histVars = "Emi|CO|Waste", vlines = 2020) ``` @@ -176,189 +184,189 @@ showLinePlots(data, "Emi|CO|Waste", histVars = "Emi|CO|Waste", vlines = 2020) ## NH3 ### Emi|NH3|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r NH3 Emissions - REMIND Total} showLinePlots(data, "Emi|NH3|REMIND total", histVars = "Emi|NH3|REMIND total", vlines = 2020) ``` ### Emi|NH3|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r NH3 Emissions - Aviation} showLinePlots(data, "Emi|NH3|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NH3|Aircraft", vlines = 2020) ``` ### Emi|NH3|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r NH3 Emissions - International Shipping} showLinePlots(data, "Emi|NH3|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NH3|International Shipping", vlines = 2020) ``` -### Emi|NH3|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|NH3|Energy Supply", histVars = "Emi|NH3|Energy Sector", vlines = 2020) +### Emi|NH3|Energy|Supply +```{r NH3 Emissions - Energy Supply} +showLinePlots(data, "Emi|NH3|Energy|Supply", histVars = "Emi|NH3|Energy Sector", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|NH3|Energy Demand|Industry", histVars = "Emi|NH3|Industrial Sector", vlines = 2020) +### Emi|NH3|Industrial Sector +```{r NH3 Emissions - Industry} +showLinePlots(data, "Emi|NH3|Industrial Sector", histVars = "Emi|NH3|Industrial Sector", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|NH3|Energy Demand|Buildings", histVars = "Emi|NH3|Residential Commercial Other", vlines = 2020) +### Emi|NH3|Energy|Demand|Buildings +```{r NH3 Emissions - Buildings} +showLinePlots(data, "Emi|NH3|Energy|Demand|Buildings", histVars = "Emi|NH3|Residential Commercial Other", vlines = 2020) ``` -### Emi|NH3|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|NH3|Solvents", histVars = "Emi|NH3|Solvents Production and Application", vlines = 2020) +### Emi|NH3|Product Use|Solvents +```{r NH3 Emissions - Solvents} +showLinePlots(data, "Emi|NH3|Product Use|Solvents", histVars = "Emi|NH3|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|NH3|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|NH3|Energy Demand|Transport", histVars = "Emi|NH3|Transportation Sector", vlines = 2020) +### Emi|NH3|w/o Bunkers|Energy|Demand|Transport +```{r NH3 Emissions - Transport} +showLinePlots(data, "Emi|NH3|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|NH3|Transportation Sector", vlines = 2020) ``` ### Emi|NH3|Waste -```{r Black Carbon Emissions - Waste} +```{r NH3 Emissions - Waste} showLinePlots(data, "Emi|NH3|Waste", histVars = "Emi|NH3|Waste", vlines = 2020) ``` -## NOX +## NOx -### Emi|NOX|REMIND total -```{r Black Carbon Emissions - REMIND Total} -showLinePlots(data, "Emi|NOX|REMIND total", histVars = "Emi|NOX|REMIND total", vlines = 2020) +### Emi|NOx|REMIND total +```{r NOx Emissions - REMIND Total} +showLinePlots(data, "Emi|NOx|REMIND total", histVars = "Emi|NOX|REMIND total", vlines = 2020) ``` -### Emi|NOX|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} -showLinePlots(data, "Emi|NOX|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NOX|Aircraft", vlines = 2020) +### Emi|NOx|Extra|Energy|Demand|Transport|Pass|Aviation +```{r NOx Emissions - Aviation} +showLinePlots(data, "Emi|NOx|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|NOX|Aircraft", vlines = 2020) ``` -### Emi|NOX|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} -showLinePlots(data, "Emi|NOX|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NOX|International Shipping", vlines = 2020) +### Emi|NOx|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping +```{r NOx Emissions - International Shipping} +showLinePlots(data, "Emi|NOx|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|NOX|International Shipping", vlines = 2020) ``` -### Emi|NOX|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|NOX|Energy Supply", histVars = "Emi|NOX|Energy Sector", vlines = 2020) +### Emi|NOx|Energy|Supply +```{r NOx Emissions - Energy Supply} +showLinePlots(data, "Emi|NOx|Energy|Supply", histVars = "Emi|NOX|Energy Sector", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|NOX|Energy Demand|Industry", histVars = "Emi|NOX|Industrial Sector", vlines = 2020) +### Emi|NOx|Industrial Sector +```{r NOx Emissions - Industry} +showLinePlots(data, "Emi|NOx|Industrial Sector", histVars = "Emi|NOX|Industrial Sector", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|NOX|Energy Demand|Buildings", histVars = "Emi|NOX|Residential Commercial Other", vlines = 2020) +### Emi|NOx|Energy|Demand|Buildings +```{r NOx Emissions - Buildings} +showLinePlots(data, "Emi|NOx|Energy|Demand|Buildings", histVars = "Emi|NOX|Residential Commercial Other", vlines = 2020) ``` -### Emi|NOX|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|NOX|Solvents", histVars = "Emi|NOX|Solvents Production and Application", vlines = 2020) +### Emi|NOx|Product Use|Solvents +```{r NOx Emissions - Solvents} +showLinePlots(data, "Emi|NOx|Product Use|Solvents", histVars = "Emi|NOX|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|NOX|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|NOX|Energy Demand|Transport", histVars = "Emi|NOX|Transportation Sector", vlines = 2020) +### Emi|NOx|w/o Bunkers|Energy|Demand|Transport +```{r NOx Emissions - Transport} +showLinePlots(data, "Emi|NOx|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|NOX|Transportation Sector", vlines = 2020) ``` -### Emi|NOX|Waste -```{r Black Carbon Emissions - Waste} -showLinePlots(data, "Emi|NOX|Waste", histVars = "Emi|NOX|Waste", vlines = 2020) +### Emi|NOx|Waste +```{r NOx Emissions - Waste} +showLinePlots(data, "Emi|NOx|Waste", histVars = "Emi|NOX|Waste", vlines = 2020) ``` ## OC ### Emi|OC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r OC Emissions - REMIND Total} showLinePlots(data, "Emi|OC|REMIND total", histVars = "Emi|OC|REMIND total", vlines = 2020) ``` ### Emi|OC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r OC Emissions - Aviation} showLinePlots(data, "Emi|OC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|OC|Aircraft", vlines = 2020) ``` ### Emi|OC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r OC Emissions - International Shipping} showLinePlots(data, "Emi|OC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|OC|International Shipping", vlines = 2020) ``` -### Emi|OC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|OC|Energy Supply", histVars = "Emi|OC|Energy Sector", vlines = 2020) +### Emi|OC|Energy|Supply +```{r OC Emissions - Energy Supply} +showLinePlots(data, "Emi|OC|Energy|Supply", histVars = "Emi|OC|Energy Sector", vlines = 2020) ``` -### Emi|OC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|OC|Energy Demand|Industry", histVars = "Emi|OC|Industrial Sector", vlines = 2020) +### Emi|OC|Industrial Sector +```{r OC Emissions - Industry} +showLinePlots(data, "Emi|OC|Industrial Sector", histVars = "Emi|OC|Industrial Sector", vlines = 2020) ``` -### Emi|OC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|OC|Energy Demand|Buildings", histVars = "Emi|OC|Residential Commercial Other", vlines = 2020) +### Emi|OC|Energy|Demand|Buildings +```{r OC Emissions - Buildings} +showLinePlots(data, "Emi|OC|Energy|Demand|Buildings", histVars = "Emi|OC|Residential Commercial Other", vlines = 2020) ``` -### Emi|OC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|OC|Solvents", histVars = "Emi|OC|Solvents Production and Application", vlines = 2020) +### Emi|OC|Product Use|Solvents +```{r OC Emissions - Solvents} +showLinePlots(data, "Emi|OC|Product Use|Solvents", histVars = "Emi|OC|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|OC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|OC|Energy Demand|Transport", histVars = "Emi|OC|Transportation Sector", vlines = 2020) +### Emi|OC|w/o Bunkers|Energy|Demand|Transport +```{r OC Emissions - Transport} +showLinePlots(data, "Emi|OC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|OC|Transportation Sector", vlines = 2020) ``` ### Emi|OC|Waste -```{r Black Carbon Emissions - Waste} +```{r OC Emissions - Waste} showLinePlots(data, "Emi|OC|Waste", histVars = "Emi|OC|Waste", vlines = 2020) ``` ## SO2 ### Emi|SO2|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r SO2 Emissions - REMIND Total} showLinePlots(data, "Emi|SO2|REMIND total", histVars = "Emi|Sulfur|REMIND total", vlines = 2020) ``` ### Emi|SO2|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r SO2 Emissions - Aviation} showLinePlots(data, "Emi|SO2|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|Sulfur|Aircraft", vlines = 2020) ``` ### Emi|SO2|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r SO2 Emissions - International Shipping} showLinePlots(data, "Emi|SO2|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|Sulfur|International Shipping", vlines = 2020) ``` -### Emi|SO2|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|SO2|Energy Supply", histVars = "Emi|Sulfur|Energy Sector", vlines = 2020) +### Emi|SO2|Energy|Supply +```{r SO2 Emissions - Energy Supply} +showLinePlots(data, "Emi|SO2|Energy|Supply", histVars = "Emi|Sulfur|Energy Sector", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|SO2|Energy Demand|Industry", histVars = "Emi|Sulfur|Industrial Sector", vlines = 2020) +### Emi|SO2|Industrial Sector +```{r SO2 Emissions - Industry} +showLinePlots(data, "Emi|SO2|Industrial Sector", histVars = "Emi|Sulfur|Industrial Sector", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|SO2|Energy Demand|Buildings", histVars = "Emi|Sulfur|Residential Commercial Other", vlines = 2020) +### Emi|SO2|Energy|Demand|Buildings +```{r SO2 Emissions - Buildings} +showLinePlots(data, "Emi|SO2|Energy|Demand|Buildings", histVars = "Emi|Sulfur|Residential Commercial Other", vlines = 2020) ``` -### Emi|SO2|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|SO2|Solvents", histVars = "Emi|Sulfur|Solvents Production and Application", vlines = 2020) +### Emi|SO2|Product Use|Solvents +```{r SO2 Emissions - Solvents} +showLinePlots(data, "Emi|SO2|Product Use|Solvents", histVars = "Emi|Sulfur|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|SO2|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|SO2|Energy Demand|Transport", histVars = "Emi|Sulfur|Transportation Sector", vlines = 2020) +### Emi|SO2|w/o Bunkers|Energy|Demand|Transport +```{r SO2 Emissions - Transport} +showLinePlots(data, "Emi|SO2|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|Sulfur|Transportation Sector", vlines = 2020) ``` ### Emi|SO2|Waste -```{r Black Carbon Emissions - Waste} +```{r SO2 Emissions - Waste} showLinePlots(data, "Emi|SO2|Waste", histVars = "Emi|Sulfur|Waste", vlines = 2020) ``` @@ -366,46 +374,46 @@ showLinePlots(data, "Emi|SO2|Waste", histVars = "Emi|Sulfur|Waste", vlines = 202 ## VOC ### Emi|VOC|REMIND total -```{r Black Carbon Emissions - REMIND Total} +```{r VOC Emissions - REMIND Total} showLinePlots(data, "Emi|VOC|REMIND total", histVars = "Emi|VOC|REMIND total", vlines = 2020) ``` ### Emi|VOC|Extra|Energy|Demand|Transport|Pass|Aviation -```{r Black Carbon Emissions - Total} +```{r VOC Emissions - Aviation} showLinePlots(data, "Emi|VOC|Extra|Energy|Demand|Transport|Pass|Aviation", histVars = "Emi|VOC|Aircraft", vlines = 2020) ``` ### Emi|VOC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping -```{r Black Carbon Emissions - Total} +```{r VOC Emissions - International Shipping} showLinePlots(data, "Emi|VOC|Extra|Energy|Demand|Transport|Bunkers|Freight|International Shipping", histVars = "Emi|VOC|International Shipping", vlines = 2020) ``` -### Emi|VOC|Energy Supply -```{r Black Carbon Emissions - Energy Supply} -showLinePlots(data, "Emi|VOC|Energy Supply", histVars = "Emi|VOC|Energy Sector", vlines = 2020) +### Emi|VOC|Energy|Supply +```{r VOC Emissions - Energy Supply} +showLinePlots(data, "Emi|VOC|Energy|Supply", histVars = "Emi|VOC|Energy Sector", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Industry -```{r Black Carbon Emissions - Industry} -showLinePlots(data, "Emi|VOC|Energy Demand|Industry", histVars = "Emi|VOC|Industrial Sector", vlines = 2020) +### Emi|VOC|Industrial Sector +```{r VOC Emissions - Industry} +showLinePlots(data, "Emi|VOC|Industrial Sector", histVars = "Emi|VOC|Industrial Sector", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Buildings -```{r Black Carbon Emissions - Buildings} -showLinePlots(data, "Emi|VOC|Energy Demand|Buildings", histVars = "Emi|VOC|Residential Commercial Other", vlines = 2020) +### Emi|VOC|Energy|Demand|Buildings +```{r VOC Emissions - Buildings} +showLinePlots(data, "Emi|VOC|Energy|Demand|Buildings", histVars = "Emi|VOC|Residential Commercial Other", vlines = 2020) ``` -### Emi|VOC|Solvents -```{r Black Carbon Emissions - Solvents} -showLinePlots(data, "Emi|VOC|Solvents", histVars = "Emi|VOC|Solvents Production and Application", vlines = 2020) +### Emi|VOC|Product Use|Solvents +```{r VOC Emissions - Solvents} +showLinePlots(data, "Emi|VOC|Product Use|Solvents", histVars = "Emi|VOC|Product Use|Solvents Production and Application", vlines = 2020) ``` -### Emi|VOC|Energy Demand|Transport -```{r Black Carbon Emissions - Transport} -showLinePlots(data, "Emi|VOC|Energy Demand|Transport", histVars = "Emi|VOC|Transportation Sector", vlines = 2020) +### Emi|VOC|w/o Bunkers|Energy|Demand|Transport +```{r VOC Emissions - Transport} +showLinePlots(data, "Emi|VOC|w/o Bunkers|Energy|Demand|Transport", histVars = "Emi|VOC|Transportation Sector", vlines = 2020) ``` ### Emi|VOC|Waste -```{r Black Carbon Emissions - Waste} +```{r VOC Emissions - Waste} showLinePlots(data, "Emi|VOC|Waste", histVars = "Emi|VOC|Waste", vlines = 2020) ``` diff --git a/scripts/cs2/magpie.Rmd b/scripts/cs2/magpie.Rmd index ffcc3a8c1e..15f20874c1 100644 --- a/scripts/cs2/magpie.Rmd +++ b/scripts/cs2/magpie.Rmd @@ -6,6 +6,7 @@ | REMIND License Exception, version 1.0 (see LICENSE file). | Contact: remind@pik-potsdam.de --> + # MAgPIE ## Resources|Land Cover Change @@ -26,10 +27,10 @@ showAreaAndBarPlots(data, items, scales = "fixed") showAreaAndBarPlotsPlus(data, "Resources|Land Cover Change|Forest", scales = "fixed") ``` -### Resources|Land Cover Change|Forest|Managed Forest +### Resources|Land Cover Change|Forest|Planted Forest ```{r} -showAreaAndBarPlotsPlus(data, "Resources|Land Cover Change|Forest|Managed Forest", scales = "fixed") +showAreaAndBarPlotsPlus(data, "Resources|Land Cover Change|Forest|Planted Forest", scales = "fixed") ``` ### Resources|Land Cover Change|Forest|Natural Forest @@ -53,29 +54,46 @@ showLinePlots(data, "Resources|NetForestChange") showLinePlots(data, "Productivity|Landuse Intensity Indicator Tau") ``` -### Productivity|Yield +### Productivity|Yield|Bioenergy crops ```{r} -items <- c( - "Productivity|Yield|Bioenergy crops", - "Productivity|Yield|Crops", - "Productivity|Yield|Forage", - "Productivity|Yield|Pasture") -showAreaAndBarPlots(data, items, scales = "fixed") +showLinePlots(data, "Productivity|Yield|Bioenergy crops") ``` -#### Productivity|Yield|Bioenergy crops +### Productivity|Yield|Crops ```{r} -showLinePlots(data, "Productivity|Yield|Bioenergy crops") +showLinePlots(data, "Productivity|Yield|Crops") ``` -#### Productivity|Yield|Crops +### Productivity|Yield|Forage ```{r} -showLinePlots(data, "Productivity|Yield|Crops") +showLinePlots(data, "Productivity|Yield|Forage") +``` + +### Productivity|Yield|Pasture + +```{r} +showLinePlots(data, "Productivity|Yield|Pasture") ``` +## Biodiversity + +```{r results='asis'} +items <- c( + "Biodiversity|BII", + "Biodiversity|Biodiversity Hotspot BII", + "Biodiversity|Cropland Landscapes BII", + "Biodiversity|Key Biodiversity Area BII", + "Biodiversity|BII in areas outside Biodiversity Hotspots, Intact Forest & Cropland Landscapes", + "Biodiversity|Shannon crop area diversity index") +walk(items, function(v) { + cat("###", v, "\n\n") + showLinePlots(data, v, ylim = NULL, scales = "fixed") + cat("\n\n") +}) +``` ## SDG @@ -84,6 +102,7 @@ items <- c( "SDG|SDG02|Agricultural commodity price index wrt 2020", "SDG|SDG02|Food availability", "SDG|SDG02|Food expenditure share", + "SDG|SDG02|Agricultural primary product expenditure share", "SDG|SDG15|Industrial and intentional biological fixation of N", "SDG|SDG12|Food waste", "SDG|SDG06|Agricultural water use") @@ -96,7 +115,7 @@ walk(items, function(v) { ## Demand -### Selection +### Areaplot - Split 1 - Selection ```{r} items <- c( @@ -108,19 +127,58 @@ items <- c( showAreaAndBarPlots(data, items, scales = "fixed") ``` -### Aggregation 1 +### Areaplot - Split 1 ```{r} -showAreaAndBarPlotsPlus(data, "Demand", plusNum = 1, scales = "fixed") +showAreaAndBarPlotsPlus(data, "Demand", plusNum = 2, scales = "fixed") ``` -### Aggregation 2 +### Lineplots - Split 1 + +```{r results='asis'} +items <- c( + "Demand|Bioenergy crops", + "Demand|Crop residues", + "Demand|Crops", + "Demand|Fish", + "Demand|Forage", + "Demand|Forest products", + "Demand|Livestock products", + "Demand|Pasture", + "Demand|Secondary products" + ) +walk(items, function(v) { + cat("####", v, "\n\n") + showLinePlots(data, v) + cat("\n\n") +}) +``` + +### Areaplot - Split 2 ```{r} -showAreaAndBarPlotsPlus(data, "Demand", plusNum = 2, scales = "fixed") +showAreaAndBarPlotsPlus(data, "Demand", plusNum = 1, scales = "fixed") ``` +### Lineplots - Split 2 +```{r results='asis'} +items <- c( + "Demand|Agricultural Supply Chain Loss", + "Demand|Bioenergy", + "Demand|Domestic Balanceflow", + "Demand|Feed", + "Demand|Food", + "Demand|Material", + "Demand|Processing", + "Demand|Seed" + ) +walk(items, function(v) { + cat("####", v, "\n\n") + showLinePlots(data, v) + cat("\n\n") +}) +``` ## Nutrition @@ -136,6 +194,12 @@ showAreaAndBarPlotsPlus(data, "Nutrition|Calorie Intake", scales = "fixed") showAreaAndBarPlotsPlus(data, "Nutrition|Calorie Supply", scales = "fixed") ``` +### Nutrition|Dietary Composition|Livestock Share + +```{r} +showLinePlots(data, "Nutrition|Dietary Composition|Livestock Share") +``` + ## Prices|Food Expenditure Index diff --git a/scripts/cs2/planetaryboundaries.Rmd b/scripts/cs2/planetaryboundaries.Rmd new file mode 100644 index 0000000000..a559aaf0a5 --- /dev/null +++ b/scripts/cs2/planetaryboundaries.Rmd @@ -0,0 +1,185 @@ +# Planetary Boundaries Indicators + + +## PB 1: Climate Change Indicators + +### Atmospheric CO2 concentration + +```{r} +showLinePlotsWithZones( + data, + "MAGICC7 AR6|Atmospheric Concentrations|CO2|67.0th Percentile", + # from Richardson et al.(2023) + safePB = 350, + highRisk = 450 +) +``` + + +### Radiative Forcing + +```{r} +showLinePlotsWithZones( + data, + "MAGICC7 AR6|Effective Radiative Forcing|Basket|Anthropogenic|67.0th Percentile", + # from Richardson et al.(2023) + safePB = 1, + highRisk = 1.5 +) +``` + + +### Global Mean Surface Temperature + +```{r} +showLinePlotsWithZones( + data, + "MAGICC7 AR6|Surface Temperature (GSAT)|67.0th Percentile", + # from Beier et al.(2025) + safePB = 1, + highRisk = 2 +) +``` + + +## PB 2: Novel Entities + + + + +## PB 3: Stratospheric Ozone Depletion + + + + +## PB 4: Atmospheric Aerosol Loading + + + + +## PB 5: Ocean Acidification + + + +```{r} +a <- -5e-8 # RoSa:van Vuuren et al. (2025) value was given by Gt, so I changed to exponent from e-5 to e-8 to adjust to our values in Mt +b <- 8.0957 + +data2 <- data %>% + dplyr::mutate( + value = dplyr::if_else( + variable == "Emi|CO2|Cumulated", + a * value + b, + value + ), + variable = dplyr::if_else( + variable == "Emi|CO2|Cumulated", + "pH", + variable + ), + unit = dplyr::if_else( + variable == "pH", + "pH", + unit + ) + ) + +showLinePlotsWithZones( + data2, + "pH", + # from van Vuuren et al.(2025) + safePB = 8.01, + highRisk = 7.94, + ylim = c(7.85,8.1) +) +``` + + +## PB 6: Biogeochemical Flows + +### Nitrogen Surplus + +```{r} +showLinePlotsWithZones( + data, + "Planetary Boundary|Nitrogen|Agricultural Nitrogen surplus", + # taken from Beier et al. (2025) based on Rockström et al. (2023), Richardson et al (2023) state 62, and upper limit 82 + safePB = 61, + highRisk = 84 +) +``` + +### Phosphorus Balance + + + + +## PB 7: Freshwater Change + +### Freshwater Consumption + +```{r} +showLinePlotsWithZones( + data, + "Planetary Boundary|Freshwater|Water consumption", + # based on Beier et al (2025) + safePB = 2800, + highRisk = 4500 +) +``` + + +## PB 8: Land System Change / Land Cover + +### Forest Cover + +```{r} +showLinePlotsWithZones( + data, + "Planetary Boundary|Land|Forest cover", + # based on Beier et al (2025) + safePB = 4790, + highRisk = 3449 +) +``` + + +## PB 9: Biosphere Integrity + +### Share of intact land relative to total land area + +```{r} +showLinePlotsWithZones( + data, + "Planetary Boundary|Biosphere|Share of intact land relative to total land area", + # from Beier et al. (2025) based on Rockström et al. (2023) + safePB = 0.6, + highRisk = 0.5, + ylim = c(0.35,0.7) +) +``` + +### Share of land area that satisfies landscape target + +```{r} +showLinePlotsWithZones( + data, + "Planetary Boundary|Biosphere|Share of land area that satisfies landscape target", + # from Beier et al. (2025) based on Rockström et al. (2023) + safePB = 1, + #highRisk = 4500, + ylim = c(0.7,1.05) +) +``` \ No newline at end of file diff --git a/scripts/cs2/profiles.json b/scripts/cs2/profiles.json index f3e765b982..e5ec467087 100644 --- a/scripts/cs2/profiles.json +++ b/scripts/cs2/profiles.json @@ -78,7 +78,7 @@ }, "REMIND-MAgPIE": { "projectLibrary": "'remind2'", - "userSectionPath": "normalizePath('./scripts/cs2/magpie.Rmd')" + "userSectionPath": "c(normalizePath('./scripts/cs2/magpie.Rmd'), normalizePath('./scripts/cs2/planetaryboundaries.Rmd'))" }, "MAgPIE": { "sections": "0", @@ -104,6 +104,10 @@ "yearsHist": "c(seq(1990, 2024, 1), seq(2025, 2050, 5))", "userSectionPath": "normalizePath('./scripts/cs2/AirPollutantsREMIND-MAgPIE.Rmd')" }, + "PlanetaryBoundaries": { + "sections": "0", + "userSectionPath": "normalizePath('./scripts/cs2/planetaryboundaries.Rmd')" + }, "mySection": { "sections": "0", "userSectionPath": "normalizePath('./scripts/cs2/mySection.Rmd')" diff --git a/scripts/input/climateAssessmentInterimRun.R b/scripts/input/climateAssessmentInterimRun.R index 9b95ad97e5..c2c1a3398b 100644 --- a/scripts/input/climateAssessmentInterimRun.R +++ b/scripts/input/climateAssessmentInterimRun.R @@ -71,7 +71,7 @@ gdxFile <- normalizePath(file.path(outputDir, "fulldata_postsolve.gdx"), mustWor cat(date(), "climateAssessmentInterimRun.R: Using", gdxFile, "\n", file = cfg$logFile, append = TRUE) runTimes <- c(runTimes, "preprocessing start" = Sys.time()) -climateAssessmentInputData <- reportEmiForClimateAssessment(gdxFile) %>% +climateAssessmentInputData <- reportEmiForClimateAssessment(gdxFile, extraData = cfg$reportsDir) %>% as.quitte() %>% emissionDataForClimateAssessment(cfg$scenario, mapping = "climateassessment", logFile = cfg$logFile) %>% write_csv(cfg$remindEmissionsFile, quote = "none") diff --git a/scripts/input/exoGAINS2025Airpollutants.R b/scripts/input/exoGAINS2025Airpollutants.R deleted file mode 100644 index a1821f309f..0000000000 --- a/scripts/input/exoGAINS2025Airpollutants.R +++ /dev/null @@ -1,259 +0,0 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | REMIND License Exception, version 1.0 (see LICENSE file). -# | Contact: remind@pik-potsdam.de - -############################################################## -######################## PREAMBLE ############################ -############################################################## - -# Only output messages to the log if it is the first run of exoGAINS2025 to avoid repetition in the log.txt file -firstIteration = FALSE -if (file.exists("log.txt")){ - if(!any(grepl("ExoGAINS2025 - log for first iteration...", readLines("log.txt")))){ - firstIteration = TRUE - cat("\nExoGAINS2025 - log for first iteration...\n\n") - } -} - -# load required packages -for (pkg in c('madrat', 'dplyr', 'remind2', 'gdx')) { - suppressPackageStartupMessages(require(pkg, character.only = TRUE)) -} - -# stop madrat reporting its default settings _every damn time_ -invisible(getConfig(option = NULL, verbose = firstIteration)) - -############################################################## -######## READ AP SETTINGS FOR SCENARIO, SSP AND SOURCE ####### -############################################################## - -load("config.Rdata") -# AP scenario -ap_scenario <- cfg$gms$cm_APscen -# AP SSP -if (ap_scenario == "MTFR" | ap_scenario == "SMIPVLLO") { - # MTFR and SMIPVLLO are not differentiated by SSP, so set to ap_scenario - ap_ssp <- ap_scenario -} else if (ap_scenario == "CLE" | ap_scenario == "SLE" | ap_scenario == "SMIPbySSP") { - # CLE, SLE and SMIPbySSP are differentiated by SSP, but SSP4 is not available for SMIPbySSP - if (ap_scenario == "SMIPbySSP" & ((cfg$gms$cm_APssp == "SSP4") | (cfg$gms$cm_APssp == "FROMGDPSSP" & cfg$gms$cm_GDPpopScen == "SSP4"))) { - stop(paste0("cm_APssp 'SSP4' is not available for SMIPbySSP. Please select another SSP.")) - } - # Determine ap_ssp based on cm_APscen and cm_APssp setting - if (cfg$gms$cm_APssp == "FROMGDPSSP"){ - ap_ssp <- cfg$gms$cm_GDPpopScen - } else if (cfg$gms$cm_APssp %in% c("SSP1", "SSP2", "SSP3", "SSP4", "SSP5")) { - ap_ssp <- cfg$gms$cm_APssp - } else { - stop(paste0("cm_APssp '", cfg$gms$cm_APssp,"' is not supported by exoGAINS2025. Please select one of the following: FROMGDPSSP, SSP1-5")) - } -} else { - stop(paste0("cm_APscen '",ap_scenario,"' is not supported by exoGAINS2025. Please select one of the following: CLE, SLE, MTFR, SMIPbySSP, SMIPVLLO")) -} -# AP source for baseyear emissions -ap_source <- cfg$gms$cm_APsource - -############################################################## -################ READ IN GDX AND RUN REPORTING ############### -############################################################## - -# Use input.gdx if the fulldata_exoGAINS2025.gdx is not available -if (file.exists("fulldata_exoGAINS2025.gdx")) { - gdx <- "fulldata_exoGAINS2025.gdx" - iterationInfo <- paste("iteration", as.numeric(readGDX(gdx = gdx, "o_iterationNumber", format = "simplest"))) -} else { - gdx <- "input.gdx" - iterationInfo <- gdx -} - -t <- c(seq(2005,2060,5),seq(2070,2110,10),2130,2150) -rem_in_mo <- NULL -message("With data from ", iterationInfo, ": exoGAINS2025Airpollutants.R calls remind2::reportMacroEconomy ", appendLF = FALSE) -rem_in_mo <- mbind(rem_in_mo,reportMacroEconomy(gdx)[,t,]) -message("- reportPE ", appendLF = FALSE) -rem_in_mo <- mbind(rem_in_mo,reportPE(gdx)[,t,]) -message("- reportSE ", appendLF = FALSE) -rem_in_mo <- mbind(rem_in_mo,reportSE(gdx)[,t,]) -message("- reportFE") -rem_in_mo <- mbind(rem_in_mo,reportFE(gdx)[,t,]) - -# delete "+", "++" and "+++" from variable names -rem_in_mo <- piamutils::deletePlus(rem_in_mo) - -# for easier debugging use rem_in in the remainder of the script -rem_in <- rem_in_mo - -############################################################## -########### Load GAINS emissions and emission factors ######## -############################################################## - -if (ap_source == 1) { - emifacs <- read.magpie("emifacs_sectGAINS_sourceCEDS.cs4r") - emis <- read.magpie("emi2020_sectGAINS_sourceCEDS.cs4r") -} else if (ap_source == 2) { - emifacs <- read.magpie("emifacs_sectGAINS_sourceGAINS.cs4r") - emis <- read.magpie("emi2020_sectGAINS_sourceGAINS.cs4r") -} else { - stop(paste0("cm_APsource '",ap_source,"' is not supported by exoGAINS2025. Please select one of the following: CEDS, GAINS")) -} -getSets(emifacs) <- c("region","year","ssp", "scenario","sector", "species") -getSets(emis) <- c("region","year","sector", "species") - -# Subset the chosen scenario and SSP -emifacs <- emifacs[,,list(ssp = ap_ssp, scenario = ap_scenario)] -emifacs <- collapseDim(emifacs, dim = c("ssp", "scenario")) - -############################################################## -################### Load REMIND activities ################### -############################################################## - -map_GAINS2REMIND <- read.csv("mappingGAINS2025toREMIND.csv", stringsAsFactors=FALSE) - -# End_Use_Services_Coal is mapped to an activity that is so far not existing in the REMIND reporting: -# FE|Solids without BioTrad (EJ/yr) = Final Energy|Solids (EJ/yr) - Final Energy|Solids|Biomass|Traditional (EJ/yr) -# Thus, add this new activity -rem_in <- add_columns(rem_in,addnm = "FE|Solids without BioTrad (EJ/yr)",dim=3.1) -rem_in[,,"FE|Solids without BioTrad (EJ/yr)"] <- rem_in[,,"FE|Solids (EJ/yr)"] - rem_in[,,"FE|Solids|Biomass|Traditional (EJ/yr)"] - -# compute relative regional share of global total -rem_in_regishare_2020 <- rem_in[,2020,] / rem_in["GLO",2020,] - -# set activities to NA that account for less than 0.1% of global activity in 2020 -# since huge relative changes in region x sector combinations with initially very low activity -# can lead to very high emissions that are not realistic -rem_in_regishare_2020[rem_in_regishare_2020 < 0.001] <- NA - -mask <- setYears(rem_in_regishare_2020, NULL) -mask[!is.na(mask)] <- 1 -rem_in <- rem_in * mask - -# select REMIND activity (RA) data according to order in mapping -RA <- collapseNames(rem_in[,,map_GAINS2REMIND$REMINDactivity]) -# remove global dimension from RA -RA <- RA["GLO",,invert=TRUE] - -############################################################## -################### Select GAINS data ################### -############################################################## - -# logging missing sectors -if(firstIteration){ - cat("List of sectors that are not in the GAINS2REMIND mapping because there is no emission and/or activity data.\nThese sectors will be omitted in the calculations!\n") - missing_sectors <- setdiff(getNames(emifacs,dim=1),map_GAINS2REMIND$GAINSsector) - cat(missing_sectors,sep="\n") -} - -# Select GAINS data according to order in mapping and bring regions into same (alphabetically sorted) order as RA -emifacs <- emifacs[getRegions(RA),,map_GAINS2REMIND$GAINSsector] -emis <- emis[getRegions(RA),,map_GAINS2REMIND$GAINSsector] - -# Rename REMIND activities to GAINS sectors to make them compatible for calculation -# IMPORTANT: before renaming, order of REMIND sectors must be identical to order of GAINS sectors, otherwise data would be mixed up -# This was already taken care of by selecting both REMIND and GAINS data using the map_GAINS2REMIND (see above) -getItems(RA, dim = 3) <- getItems(emifacs,dim=3.1) -getSets(RA) <- c("region","year","sector") - -# create magpie object of the structure of RA, fill with elasticity data from map_GAINS2REMIND -elasticity <- RA * 0 -tmp <- as.magpie(map_GAINS2REMIND$elasticity) -getNames(tmp) <- getNames(RA) -elasticity[,,] <- tmp - -# create magpie object of the structure of emifacs, fill with constantef data from map_GAINS2REMIND -constantef <- emifacs * 0 -tmp <- as.magpie(map_GAINS2REMIND$constantef) -getNames(tmp) <- getNames(emifacs, dim = "sector") -tmp <- add_dimension(tmp, add = "species", nm = getNames(emifacs, dim = "species"), dim = 3.2) -constantef[,,] <- tmp - -# create magpie object of the structure of emifacs, fill with constantemi data from map_GAINS2REMIND -constantemi <- emifacs * 0 -tmp <- as.magpie(map_GAINS2REMIND$constantemi) -getNames(tmp) <- getNames(emifacs, dim = "sector") -tmp <- add_dimension(tmp, add = "species", nm = getNames(emifacs, dim = "species"), dim = 3.2) -constantemi[,,] <- tmp - -############################################################## -#################### Calculate emissions ##################### -############################################################## - -# Compute relative change in activitiy compared to 2020 -RA_change <- RA / (setYears(RA[,2020,])) -# Compute relative change in emission factor compared to 2020 -emifacs_change <- emifacs / (setYears(emifacs[,2020,])) -# Compute emissions with formula: emis = emifac/emifac(2020) * emis(2020) * (RA/RA(2020))^elasticity -emis_projected <- setYears(emis) * emifacs_change * (RA_change)^elasticity - -# Special case 1: constant emission factor -# Not yet needed since no sector is marked as constantef in the mapping -# emis_projected_constantef <- setYears(emis) * 1 * (RA_change)^elasticity -# emis_projected[emis_projected_constantef == 1] <- emis_projected_constantef - -# Special case 2: constant emissions -# Not yet needed since no sector is marked as constantemi in the mapping - -# logging species x sector x region combinations for which baseyear emissions (2020) are positive but projected emissions are NA -# this happens if RA in 2020 is zero (division by zero in RA_change) or if emifacs in 2020 is zero (division by zero in emifacs_change) -if(firstIteration){ - cat("List of species x sector x region combinations for which projected emissions are NA but baseyear emissions (2020) are positive.\n - This can happen if the REMIND activity in 2020 is zero or the emission factor in 2020 is zero.\n") - for (species in getNames(emis_projected,dim="species")){ - for (sector in getNames(emis_projected,dim="sector")){ - missing_combinations <- which(is.na(emis_projected[,2020,species][,,sector]) & (emis[,2020,species][,,sector] > 0)) - if (length(missing_combinations) > 0){ - cat(paste0("Region(s) with missing projected emissions for species ",species," and sector ",sector,":")) - cat(paste0(getRegions(emis_projected)[missing_combinations])) - cat("\n") - } - } - } -} - -# fill NA values with zero -emis_projected[is.na(emis_projected)] <- 0 - -#add global dimension -emis_projected_GLO <- dimSums(emis_projected,dim=1) -getItems(emis_projected_GLO, dim = 1) <- "GLO" -emis_projected <- mbind(emis_projected,emis_projected_GLO) - -############################################################## -################ Aggregate to REMIND sectors ################# -############################################################## - -emis_projected_rem <- madrat::toolAggregate(x = emis_projected, weight = NULL, dim = "sector", rel = map_GAINS2REMIND, from = "GAINSsector", to = "REMINDsector") - -# rename emissions to names defined in emiRCP -getNames(emis_projected_rem,dim=2) <- gsub("VOC","NMVOC",getNames(emis_projected_rem,dim=2)) -getNames(emis_projected_rem,dim=2) <- gsub("SO2","SOx",getNames(emis_projected_rem,dim=2)) - -# rename dimension to the ones we need in GAMS (gdx will use these) -getSets(emis_projected_rem) <- c("all_regi","tall","all_sectorEmi","emiRCP") - -############################################################## -###################### Export to gdx ######################## -############################################################## - -# select data that will be exported to GDX -out <- emis_projected_rem["GLO",,invert=TRUE] - -# construct attributes that are required by writeGDX -gdxdata <- list() -gdxdata$name <- "p11_emiAPexsolve" -gdxdata$type <- "parameter" -gdxdata$form <- "sparse" -gdxdata$domains <- c("tall", "all_regi", "all_sectorEmi", "emiRCP") -#gdxdata$domInfo <- "full" - -# add newly created attributes to existing ones -attributes(out) <- c(attributes(out),list(gdxdata =gdxdata)) - -# Write gdx with following dimensions: p11_emiAPexsolve(tall,all_regi,all_sectorEmi,emiRCP) -writeGDX(out,file="p11_emiAPexsolve",period_with_y = FALSE) - -if(firstIteration){ - cat("\nExoGAINS2025 - end of first iteration.\n\n") -} diff --git a/scripts/input/magpie.R b/scripts/input/magpie.R new file mode 100644 index 0000000000..ba6a9f02dd --- /dev/null +++ b/scripts/input/magpie.R @@ -0,0 +1,308 @@ + +# Mapping of MAgPIE variables to REMIND variables +# If you change the mapping, check whether the structure of the gdx object in �getMagpieData� (see below) needs to be adjusted. +mag2rem <- tibble::tribble( + ~mag , ~enty , ~factorMag2Rem , ~parameter , + 'Demand|Bioenergy|2nd generation|++|Bioenergy crops' , NA , 1/31.536 , 'pm_pebiolc_demandmag' , + 'Costs Accounting|Costs without incentives' , NA , 1/1000/1000 , 'p26_totLUcost_coupling' , + 'Prices|Bioenergy' , NA , 0.0315576 , 'p30_pebiolc_pricemag' , + 'Emissions|CO2|Land|+|Land-use Change' , 'co2luc' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|+|Deforestation' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|+|Forest degradation' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|+|Other land conversion' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|+|Wood Harvest' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Peatland|+|Positive' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Peatland|+|Negative' , 'co2lucNegIntentPeat' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|CO2-price AR' , 'co2lucNegIntentAR' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|NPI_NDC AR' , 'co2lucNegIntentAR' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|Cropland Tree Cover' , 'co2lucNegIntentAgroforestry', 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|Other Land' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|Secondary Forest' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Regrowth|+|Timber Plantations' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Residual|+|Positive' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Residual|+|Negative' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Soil|++|Emissions' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Soil|Cropland management|+|Withdrawals' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Soil|Land Conversion|+|Withdrawals' , 'co2lucNegUnintent' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Soil|Soil Carbon Management|+|Withdrawals' , 'co2lucNegIntentSCM' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Timber|+|Storage in HWP' , 'co2lucNegIntentTimber' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CO2|Land|Land-use Change|Timber|+|Release from HWP' , 'co2lucPos' , 1/1000*12/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|+|Animal Waste Management' , 'n2oanwstm' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Inorganic Fertilizers' , 'n2ofertin' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Manure applied to Croplands', 'n2oanwstc' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Decay of Crop Residues' , 'n2ofertcr' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Soil Organic Matter Loss' , 'n2ofertsom' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Pasture' , 'n2oanwstp' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|N2O|Land|+|Peatland' , 'n2opeatland' , 28/44 , 'f_macBaseMagpie_coupling', + 'Emissions|CH4|Land|Agriculture|+|Rice' , 'ch4rice' , 1 , 'f_macBaseMagpie_coupling', + 'Emissions|CH4|Land|Agriculture|+|Animal waste management' , 'ch4anmlwst' , 1 , 'f_macBaseMagpie_coupling', + 'Emissions|CH4|Land|Agriculture|+|Enteric fermentation' , 'ch4animals' , 1 , 'f_macBaseMagpie_coupling', + 'Emissions|CH4|Land|+|Peatland' , 'ch4peatland' , 1 , 'f_macBaseMagpie_coupling') + + +# Delete entries in stack that contain needle and append new +.setgdxcopy <- function(needle,stack,new){ + matches <- grepl(needle,stack) + out <- c(stack[!matches],new) + return(out) +} + +# Returns TRUE if fullname ends with extension (eg. if "C_SSP2-Base/fulldata.gdx" ends with "fulldata.gdx") +# AND if the file given in fullname exists. +.isFileAndAvailable <- function(fullname, extension) { + isTRUE(stringr::str_sub(fullname, -nchar(extension), -1) == extension) && + file.exists(fullname) +} + +createREMINDReporting <- function(gdx) { + # Record the time when the preparation for MAgPIE starts in runtime.log + write(paste(format(Sys.time(), "%Y-%m-%d %H:%M:%S"), "convGDX2MIF_REMIND2MAgPIE", NashIteration, sep = ","), file = paste0("runtime.log"), append = TRUE) + # Create reduced REMIND reporting + message(round(Sys.time()), " Generating reduced REMIND reporting for MAgPIE") + if(!file.exists(gdx)) stop("The MAgPIE coupling script 'magpie.R' could not find a REMIND fulldata.gdx file:", gdx) + scenario <- lucode2::getScenNames(".") + remind2::convGDX2MIF_REMIND2MAgPIE(gdx = gdx, file = paste0("REMIND_rem2mag-", i,".mif"), scenario = scenario, extraData = "reporting") + message(round(Sys.time()), " Finished reporting") + return(file.path(cfg$remind_folder, cfg$results_folder, paste0("REMIND_rem2mag-", i,".mif"))) +} + +runMAgPIE <- function(pathToRemindReport) { + # Record the time when MAgPIE starts in runtime.log + write(paste(format(Sys.time(), "%Y-%m-%d %H:%M:%S"), "MAgPIE", NashIteration, sep = ","), file = paste0("runtime.log"), append = TRUE) + + # Switch to MAgPIE main folder + message(round(Sys.time()), " Preparing MAgPIE") + message(" Switching from REMIND ", getwd()) + message(" to MAgPIE ", cfg$path_magpie) + withr::with_dir(cfg$path_magpie,{ + source("scripts/start_functions.R") + + runname <- gsub("output\\/", "", cfg$results_folder) + cfg$cfg_mag$results_folder <- paste0("output/",runname,"-mag-",i) + cfg$cfg_mag$title <- paste0(runname,"-mag-",i) + cfg$cfg_mag$path_to_report_bioenergy <- pathToRemindReport + # Set path for GHG prices only if path_to_report_ghgprices is NA. This can only be the case in the first + # Nash iteration. In all later iterations it will not be NA anymore since they inherit it from the preceding + # iteration. If in the first iteration path_to_report_ghgprices is not NA (path to external mif) nothing + # will be changed and MAgPIE will thus use the GHG prices from the externel path. + if (is.na(cfg$cfg_mag$path_to_report_ghgprices)) cfg$cfg_mag$path_to_report_ghgprices <- pathToRemindReport + + # ---------------- MAgPIE empty ------------------------------- + # Needs to be done once per scenario actually. Thus, could be moved to start.R + # However, so far MAgPIE 'start_functions.R' only needs to be sourced here and + # not in start.R. So to avoid also sourcing it there, this code block stays here. + if (cfg$magpie_empty) { + # Find latest fulldata.gdx from automated model test (AMT) runs + amtRunDirs <- list.files("/p/projects/landuse/tests/magpie/output", + pattern = "default_\\d{4}-\\d{2}-\\d{2}_\\d{2}\\.\\d{2}.\\d{2}", + full.names = TRUE) + fullDataGdxs <- file.path(amtRunDirs, "fulldata.gdx") + latestFullData <- sort(fullDataGdxs[file.exists(fullDataGdxs)], decreasing = TRUE)[[1]] + cfg$cfg_mag <- configureEmptyModel(cfg$cfg_mag, latestFullData) # defined in start_functions.R + # also configure magpie to only run the reportings necessary for coupling + # the other reportings are pointless anyway with an empty model + cfg$cfg_mag$output <- c("extra/reportMAgPIE2REMIND") + } + + # ---------------------------------------------------------------- + if (!is.null(renv::project())) { + message(" Using REMIND's renv.lock for MAgPIE") + cfg$cfg_mag$renv_lock <- normalizePath(file.path(cfg$remind_folder, cfg$results_folder, "renv.lock")) + } + + # Providing MAgPIE with gdx from last iteration's solution only for time steps >= cfg$gms$cm_startyear + # For years prior to cfg$gms$cm_startyear MAgPIE output has to be identical across iterations. + # Because gdxes might slightly lead to a different solution exclude gdxes for the fixing years. + if (i > 1) { + message(" Copying MAgPIE gdx files from previous iteration") + gdxlist <- paste0("output/", runname, "-mag-", i-1, "/magpie_y", seq(cfg$gms$cm_startyear,2150,5), ".gdx") + cfg$cfg_mag$files2export$start <- .setgdxcopy(".gdx",cfg$cfg_mag$files2export$start,gdxlist) + } + + # Save the same (potentially updated) elements that were loaded to make MAgPIE paths accessible for getRunStatus + save(list = elementsLoaded, file = file.path(cfg$remind_folder, cfg$results_folder, "config.Rdata")) + + # Start MAgPIE + message(round(Sys.time()), " Starting MAgPIE\n with Report = ", pathToRemindReport, "\n Folder = ", cfg$cfg_mag$results_folder) + outfolder_mag <- start_run(cfg$cfg_mag, codeCheck = FALSE) + pathToMagpieReport <- file.path(cfg$path_magpie, outfolder_mag, "report.mif") + message(round(Sys.time()), " MAgPIE finished") + + # Checking whether MAgPIE is optimal in all years + file_modstat <- file.path(outfolder_mag, "glo.magpie_modelstat.csv") + if (file.exists(file_modstat)) { + modstat_mag <- read.csv(file_modstat, stringsAsFactors = FALSE, row.names=1, na.strings="") + } else { + modstat_mag <- gdx::readGDX(file.path(outfolder_mag, "fulldata.gdx"), "p80_modelstat", "o_modelstat", format="first_found") + } + + if (!all((modstat_mag == 2) | (modstat_mag == 7))) + stop("Iteration stopped! MAgPIE modelstat is not 2 or 7 for all years.\n") + + # Switch back to REMIND run folder + message(" Switching from MAgPIE ", getwd()) + message(" back to REMIND ", file.path(cfg$remind_folder, cfg$results_folder), "\n") + return(pathToMagpieReport) + }) +} + +# Transfer coupling variables from MAgPIE report to magpieData.gdx read by REMIND between the Nash iterations +getMagpieData <- function(path_to_report = "report.mif", mapping) { + + require(gamstransfer, quietly = TRUE, warn.conflicts = FALSE) + require(quitte, quietly = TRUE, warn.conflicts = FALSE) + require(dplyr, quietly = TRUE, warn.conflicts = FALSE) + require(readr, quietly = TRUE, warn.conflicts = FALSE) + + # ---- Record runtime when the data transfer from MAgPIE to REMIND starts in runtime.log ---- + + write(paste(format(Sys.time(), "%Y-%m-%d %H:%M:%S"), "getMagpieData", NashIteration, sep = ","), file = paste0("runtime.log"), append = TRUE) + message(round(Sys.time()), " Transferring MAgPIE data") + message(" from ", path_to_report) + message(" to ./magpieData.gdx") + + # ---- Read and prepare MAgPIE data ---- + + mag <- quitte::read.quitte(path_to_report, check.duplicates = FALSE) + + # Stop if variables are missing + variablesMissing <- ! mapping$mag %in% mag$variable + if (any(variablesMissing)) { + stop("The following variables defined in the coupling interface could not be found in the MAgPIE report: ", + mapping$mag[variablesMissing]) + } + + rem <- mag |> + inner_join(mapping, by = c("variable" = "mag"), # combine tables keeping relevant variables only + relationship = "many-to-one", # each row in x (mag) matches at most 1 row in y (mapping) + unmatched = c("drop", "error")) |> # drop rows from x that are not in y, error: all rows in y must be in x + mutate(value = value * factorMag2Rem) |> # apply unit conversion + group_by(period, region, enty, parameter) |> # define groups for summation + summarise(value = sum(value), .groups = "drop") |> # sum MAgPIE emissions (variable) that have the same enty in remind + rename(ttot = period, regi = region) |> # use REMIND set names + filter(, regi != "World", between(ttot, 2005, 2150)) |> # keep REMIND time horizon and remove World region + select(regi, ttot, enty, parameter, value) # keep only columns required for import to REMIND + + + # ---- Start creating objects that will be written to gdx ---- + + # ---- Define SETS ---- + + m <- Container$new() + + regi <- m$addSet( + "regi", + records = unique(rem$regi), + description = "regions" + ) + + ttot <- m$addSet( + "ttot", + records = unique(rem$ttot), + description = "years" + ) + + emiMacMagpie <- m$addSet( + "emiMacMagpie", + records = mapping |> + filter(parameter == "f_macBaseMagpie_coupling") |> + select(enty) |> + unique(), + description = "emission types coming from MAgPIE" + ) + + # ---- Define PARAMETERS ---- + + f_macBaseMagpie_coupling <- m$addParameter( + "f_macBaseMagpie_coupling", + domain = c(ttot, regi, emiMacMagpie), + records = rem |> + filter(parameter == "f_macBaseMagpie_coupling") |> + select(ttot, regi, enty, value) |> + rename(emiMacMagpie = enty), + description = "emissions from MAgPIE" + ) + + p30_pebiolc_pricemag <- m$addParameter( + "p30_pebiolc_pricemag", + domain = c(ttot, regi), + records = rem |> + filter(parameter == "p30_pebiolc_pricemag") |> + select(ttot, regi, value), + description = "bioenergy price from MAgPIE" + ) + + pm_pebiolc_demandmag <- m$addParameter( + "pm_pebiolc_demandmag", + domain = c(ttot, regi), + records = rem |> + filter(parameter == "pm_pebiolc_demandmag") |> + select(ttot, regi, value), + description = "demand for bioenergy in MAgPIE from which the prices result" + ) + + p26_totLUcost_coupling <- m$addParameter( + "p26_totLUcost_coupling", + domain = c(ttot, regi), + records = rem |> + filter(parameter == "p26_totLUcost_coupling") %>% + select(ttot, regi, value), + description = "total production costs from MAgPIE without costs for GHG" + ) + + # ---- Write to gdx file ---- + + m$write("magpieData.gdx") +} + +# Obtain number of MAgPIE iteration and Nash iteration passed to this script by GAMS +args <- commandArgs(trailingOnly = TRUE) +i <- as.numeric(args[1]) +NashIteration <- as.numeric(args[2]) + +message("\n", round(Sys.time()), " ### MAgPIE-COUPLING ###") +message(" MAgPIE iteration ", i) +message(" Nash iteration ", NashIteration) + +# Rename gdx from previous MAgPIE iteration so that REMIND can only continue if a new one could be successfully created +if(file.exists("magpieData.gdx")) file.rename("magpieData.gdx", paste0("magpieData-", i-1,".gdx")) + +# Load REMIND config +elementsLoaded <- load("config.Rdata") + +if (is.null(cfg$continueFromHere) || NashIteration > 1) { + # Regular magpie iteration + pathToRemindReport <- createREMINDReporting(gdx = "fulldata.gdx") + pathToMagpieReport <- runMAgPIE(pathToRemindReport) + +} else if (names(cfg$continueFromHere) %in% "full") { + # No regular magpie iteration + # Continue from an external REMIND fulldata.gdx + message(round(Sys.time()), " Continuing with createREMINDReporting using ", cfg$continueFromHere) + pathToRemindReport <- createREMINDReporting(gdx = cfg$continueFromHere) + pathToMagpieReport <- runMAgPIE(pathToRemindReport) + +} else if (names(cfg$continueFromHere) %in% "runMAgPIE") { + # No regular magpie iteration + # Continue from an external REMIND mif + message(round(Sys.time()), " Continuing with runMAgPIE using ", cfg$continueFromHere) + pathToRemindReport <- cfg$continueFromHere + pathToMagpieReport <- runMAgPIE(pathToRemindReport) + +} else if (names(cfg$continueFromHere) %in% "getMagpieData") { + # No regular magpie iteration + # Continue from an external MAgPIE mif + message(round(Sys.time()), " Continuing with getMagpieData using ", cfg$continueFromHere) + pathToMagpieReport <- cfg$continueFromHere +} + +# Write pathToMagpieReport to cfg, so reporting.R can find the MAgPIE report and append it to the REMIND reporting +cfg$pathToMagpieReport <- pathToMagpieReport + +# In any case transfer MAgPIE data from report to magpieData.gdx +getMagpieData(path_to_report = pathToMagpieReport, mapping = mag2rem) + +# Save the same elements that were loaded (they may have been updated in the meantime) +save(list = elementsLoaded, file = "config.Rdata") + +message("\n", round(Sys.time()), " Continuing with REMIND Nash iteration") \ No newline at end of file diff --git a/scripts/input/prepare_NDC.R b/scripts/input/prepare_NDC.R index b09146ea09..4ca5779c23 100644 --- a/scripts/input/prepare_NDC.R +++ b/scripts/input/prepare_NDC.R @@ -6,39 +6,38 @@ # | Contact: remind@pik-potsdam.de ### Function to create files with regional BAU emissions -prepare_NDC<-function(gdx, cfg){ - - library(luplot,quietly=TRUE,warn.conflicts =FALSE) - library(lucode2,quietly=TRUE,warn.conflicts =FALSE) - library(gdx,quietly=TRUE,warn.conflicts =FALSE) - library(remind2,quietly = TRUE,warn.conflicts =FALSE) +prepare_NDC <- function(gdx, cfg) { + library(luplot, quietly = TRUE, warn.conflicts = FALSE) + library(lucode2, quietly = TRUE, warn.conflicts = FALSE) + library(gdx, quietly = TRUE, warn.conflicts = FALSE) + library(remind2, quietly = TRUE, warn.conflicts = FALSE) ############################# BASIC CONFIGURATION ############################# - #Define arguments that can be read from command line + # Define arguments that can be read from command line # gdx <- "fulldata.gdx" # readArgs("fulldata.gdx") ############################################################################### - + if (file.exists(gdx)) { - emi <- reportEmi(gdx) + emi <- reportEmi(gdx, extraData = "./core/input/reporting/") } else { stop("No gdx file found - please provide gdx from reference BAU run") } - regs <- setdiff(getRegions(emi),"GLO") - if ("Emi|GHG|w/o Bunkers|w/o Land-Use Change (Mt CO2eq/yr)" %in% getItems(emi,3.1)) { - pm_BAU_reg_emi_wo_LU_wo_bunkers <- emi[regs,seq(2005,2050,5),"Emi|GHG|w/o Bunkers|w/o Land-Use Change (Mt CO2eq/yr)"] - } else if ("Emi|Kyoto Gases excl Land-Use Change|w/o Bunkers (Mt CO2-equiv/yr)" %in% getItems(emi,3.1)) { - pm_BAU_reg_emi_wo_LU_wo_bunkers <- emi[regs,seq(2005,2050,5),"Emi|Kyoto Gases excl Land-Use Change|w/o Bunkers (Mt CO2-equiv/yr)"] + regs <- setdiff(getRegions(emi), "GLO") + if ("Emi|GHG|w/o Bunkers|w/o Land-Use Change (Mt CO2eq/yr)" %in% getItems(emi, 3.1)) { + pm_BAU_reg_emi_wo_LU_wo_bunkers <- emi[regs, seq(2005, 2050, 5), "Emi|GHG|w/o Bunkers|w/o Land-Use Change (Mt CO2eq/yr)"] + } else if ("Emi|Kyoto Gases excl Land-Use Change|w/o Bunkers (Mt CO2-equiv/yr)" %in% getItems(emi, 3.1)) { + pm_BAU_reg_emi_wo_LU_wo_bunkers <- emi[regs, seq(2005, 2050, 5), "Emi|Kyoto Gases excl Land-Use Change|w/o Bunkers (Mt CO2-equiv/yr)"] } else { - stop("No emissions variable found in the NDC script!") + stop("No emissions variable found in the NDC script!") } getNames(pm_BAU_reg_emi_wo_LU_wo_bunkers) <- NULL write.magpie(pm_BAU_reg_emi_wo_LU_wo_bunkers, "./modules/45_carbonprice/NDC/input/pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r", - comment = "description: Regional GHG emi (excl. LU and bunkers) in BAU scenario \nunit: Mt CO2eq/yr \nfile created with scripts/input/prepare_NDC.R", - comment.char="*** ") - file.copy("./modules/45_carbonprice/NDC/inputpm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r", - "./modules/46_carbonpriceRegi/NDC/input/pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r") + comment = "description: Regional GHG emi (excl. LU and bunkers) in BAU scenario \nunit: Mt CO2eq/yr \nfile created with scripts/input/prepare_NDC.R", + comment.char = "*** " + ) + } diff --git a/scripts/output/comparison/compareScenarios2.R b/scripts/output/comparison/compareScenarios2.R index 5f0fce3e09..cb53aa6faa 100644 --- a/scripts/output/comparison/compareScenarios2.R +++ b/scripts/output/comparison/compareScenarios2.R @@ -25,7 +25,7 @@ if (!exists("outputdirs")) { determineDefaultProfiles <- function(outputDir) { env <- new.env() load(file.path(outputDir, "config.Rdata"), envir = env) - if (tolower(env$cfg$gms$cm_MAgPIE_coupling) == "on") return("REMIND-MAgPIE") + if (isTRUE(env$cfg$gms$cm_MAgPIE_Nash == 1) | isTRUE(env$cfg$gms$cm_MAgPIE_coupling == "on")) return("REMIND-MAgPIE") regionMappingFile <- basename(env$cfg$regionmapping) defaults <- switch( regionMappingFile, diff --git a/scripts/output/comparison/plotRemMagNash.R b/scripts/output/comparison/plotRemMagNash.R new file mode 100644 index 0000000000..1f2189a9e8 --- /dev/null +++ b/scripts/output/comparison/plotRemMagNash.R @@ -0,0 +1,295 @@ +# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +# | authors, and contributors see CITATION.cff file. This file is part +# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +# | AGPL-3.0, you are granted additional permissions described in the +# | REMIND License Exception, version 1.0 (see LICENSE file). +# | Contact: remind@pik-potsdam.de + +############################# LOAD LIBRARIES ############################# + +library(dplyr, quietly = TRUE, warn.conflicts = FALSE) +library(ggplot2, quietly = TRUE, warn.conflicts = FALSE) +# Functions from the following libraries are loaded using :: +# lucode2, tidyr, mip, quitte, lusweave, withr + +############################# BASIC CONFIGURATION ############################# + +if (!exists("source_include")) lucode2::readArgs("outputdirs") + +############################# DEFINE FUNCTIONS ########################### + +# Plot dimension specified for 'color' over dimension specified for 'xaxis' as line plot or bar plot +myplot <- function(dat, parName, runName, type = "line", xaxis = "ttot", color = "iteration", scales = "free_y", ylab = NULL, title = "auto") { + + # Find last (continuous) iteration per outputDir + if("outputdirs" %in% names(dat)) last <- dat |> group_by(outputdirs) |> summarise(iteration = max(iteration)) + + # Zero values are not stored in the gdx and are thus missing in dat. + # Add '0' for the missing combinations of iteration, ttot, all_regi. + dat <- dat |> filter(ttot > 2000, par %in% parName) |> ungroup() |> + tidyr::complete(iteration, ttot, all_regi, fill = list("value" = 0)) + + # Generate auto title if wanted + if(!is.null(title) && title == "auto") { + title <- paste(paste(unique(runName$outputdirs), collapse = "\n"), + dat |> first() |> pull(var), # obtain var name corresponding to par + parName, + sep = "\n") + } + + # convert dimension that should be distinguished by color to factors (relevant if years are plotted over iterations) + dat[[color]] <- as.factor(dat[[color]]) + + text_size <- 10 + scale_color <- as.character(mip::plotstyle(as.character(unique(dat[[color]])), out = "color")) + + p <- ggplot() + if (type == "line") { + p <- p + geom_line( mapping = aes(x=!!sym((xaxis)), y=value, color=!!sym(color), group = !!sym(color)), data = dat, linewidth = 1) + p <- p + geom_point(mapping = aes(x=!!sym((xaxis)), y=value, color=!!sym(color), group = !!sym(color)), data = dat, size = 1) + } else if (type == "bar"){ + p <- p + geom_col( mapping = aes(x=!!sym((xaxis)), y=value, fill=!!sym(color), group = !!sym(color)), data = dat) + } + p <- p + facet_wrap(~all_regi, scales=scales) + + labs(x = NULL, y = ylab, title = title) + + scale_color_manual(values=scale_color) + + theme( + plot.title = element_text(size = text_size+4), + strip.text.x = element_text(size = text_size), + axis.text.y = element_text(size = text_size), + axis.title.x = element_text(size = text_size), + axis.text.x = element_text(size = text_size)) #+ + #theme_bw() + + # If there is more than one run, plot vertical line to separate runs + if("outputdirs" %in% names(dat) & xaxis == "iteration") { + p <- p + geom_vline(xintercept = last$iteration) + } + return(p) +} + +# Compile all plots and produce pdf +plot_iterations <- function(dat, runname) { + + # ---- Plot: MAgPIE prices for purpose grown bioenergy ---- + + p_price_mag <- myplot(dat, "o_p30_pebiolc_pricemag", runname, ylab = "$/GJ") + p_price_mag_it <- myplot(dat, "o_p30_pebiolc_pricemag", runname, xaxis = "iteration", color = "ttot", ylab = "$/GJ") + + # ---- Plot: MAgPIE co2luc ---- + + p_emi_mag <- myplot(dat, "o_vm_emiMacSector_co2luc", runname, ylab = "Mt CO2/yr") + p_emi_mag_it <- myplot(dat, "o_vm_emiMacSector_co2luc", xaxis = "iteration", color = "ttot", runname, ylab = "Mt CO2/yr") + + + # ---- Plot: REMIND Production of purpose grown bioenergy ---- + + p_fuelex <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, ylab = "EJ/yr") + p_fuelex_it <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr") + p_fuelex_it_fix <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr", scales = "fixed") + p_fuelex_it_2060 <- myplot(dat |> filter(ttot == 2060), + "o_vm_fuExtr_pebiolc", runname, type = "bar", + xaxis = "iteration", color = "ttot", ylab = "EJ/yr", scales = "fixed") + + # ---- Plot: REMIND Demand for purpose grown bioenergy ---- + + p_demPE <- myplot(dat, "o_PEDem_Bio_ECrops", runname, ylab = "EJ/yr") + p_demPE_it <- myplot(dat, "o_PEDem_Bio_ECrops", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr") + + # ---- Plot: REMIND Price scaling factor ---- + + p_mult <- myplot(dat, "o_p30_pebiolc_pricmult", runname) + p_mult_it <- myplot(dat, "o_p30_pebiolc_pricmult", runname, xaxis = "iteration", color = "ttot") + + # ---- Plot: REMIND co2 price ---- + + p_price_carbon <- myplot(dat, "pm_taxCO2eq_iter", runname, ylab = "$/tCO2") + + p_price_carbon_it_1 <- myplot(dat |> filter(ttot < 2025), "pm_taxCO2eq_iter", runname, + ylab = "$/tCO2", xaxis = "iteration", color = "ttot") + p_price_carbon_it_2 <- myplot(dat |> filter(ttot > 2020, ttot <= 2100), "pm_taxCO2eq_iter", runname, + ylab = "$/tCO2", xaxis = "iteration", color = "ttot") + + # ---- Print to pdf ---- + + out <- lusweave::swopen(template = "david") + + lusweave::swfigure(out, print, p_price_mag, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_mag_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it_fix, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it_2060, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_demPE_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_emi_mag, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_emi_mag_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_mult, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_mult_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon_it_1, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon_it_2, sw_option = "height=9,width=16") + + filename <- paste0("output/", tail(runname$outputdirs, n=1), ifelse(nrow(runname)>1, "-continued", "")) + lusweave::swclose(out, outfile = filename, clean_output = TRUE, save_stream = FALSE) + file.remove(paste0(filename,c(".log"))) + # out files have "." replaced with "-_-_-" in their names + #file.remove(paste0(gsub("\\.","-_-_-",filename),".out")) + + return("Done\n") +} + +# Read all parameters from gdx and return them all in one data frame +readDataFromGdx <- function(runfolder, allIter = TRUE) { + + # ---- Documentation of the items read from the gdx ---- + + # "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" + # "o_p30_pebiolc_pricemag" + # modules/30_biomass/magpie/presolve.gms + # o_p30_pebiolc_pricemag(iteration,ttot,regi) = p30_pebiolc_pricemag(ttot,regi); + + # "Emi|CO2|+|Land-Use Change (Mt CO2/yr)" + # vm_emiMacSector <- readGDX(gdx, "vm_emiMacSector", field = "l", restore_zeros = FALSE) + # dimSums(vm_emiMacSector[, , "co2luc"] , dim = 3) * GtC_2_MtCO2 + # "o_vm_emiMacSector_co2luc" + # core/postsolve.gms: + # o_vm_emiMacSector_co2luc(iteration,ttot,regi) = vm_emiMacSector.l(ttot,regi,"co2luc"); + + # "Primary Energy Production|Biomass|Energy Crops (EJ/yr)" + # remind2::reportExtraction.R + # fuelex <- readGDX(gdx, name = c("vm_fuExtr", "vm_fuelex"), field = "l", restore_zeros = FALSE, format = "first_found") + # fuelex_bio <- fuelex[, t, c("pebiolc", "pebios", "pebioil")] + # dimSums(fuelex_bio[, , "pebiolc.1"], dim = 3) * TWa_2_EJ + # -> "PE|Production|Biomass|+|Lignocellulosic (EJ/yr)" + # -> "Primary Energy Production|Biomass|Energy Crops (EJ/yr)" (used also in coupling interface in MAgPIE) + # "o_vm_fuExtr_pebiolc" + # core/postsolve.gms: + # o_vm_fuExtr_pebiolc = vm_fuExtr.l(ttot,regi,"pebiolc","1"); + + # "PE|Biomass|+++|Energy Crops (EJ/yr)" + # remind2::reportPE.R + # fuelex[,,"pebiolc.1"] + (1-p_costsPEtradeMp[,,"pebiolc"]) * Mport[,,"pebiolc"] - Xport[,,"pebiolc"] -> "PE|Biomass|+++|Energy Crops (EJ/yr)" + # "o_PEDem_Bio_ECrops" + # core/postsolve.gms: + # o_PEDem_Bio_ECrops(iteration,ttot,regi) = vm_fuExtr.l(ttot,regi,"pebiolc","1") + (1 - pm_costsPEtradeMp(ttot,regi"pebiolc")) * vm_Mport.l(ttot,regi,"pebiolc") - vm_Xport.l(ttot,regi"pebiolc"); + + # "Internal|Price|Biomass|Multfactor ()" + # remind2::reportPrices.R + # p30_pebiolc_pricmult -> "Internal|Price|Biomass|Multfactor ()" + # "o_p30_pebiolc_pricmult" + # modules/30_biomass/magpie/presolve.gms + # o_p30_pebiolc_pricmult(iteration,ttot,regi) = p30_pebiolc_pricmult(ttot,regi); + + # "Price|Carbon (US$2017/t CO2)" + # pm_taxCO2eqSum <- readGDX(gdx, name = "pm_taxCO2eqSum", format = "first_found")[, t, ] + # pm_taxCO2eqSum * 1000 * 12 / 44 + # "pm_taxCO2eq_iter" + # Alternative, that is already being tracked: + # pm_taxCO2eq_iter(iteration,ttot,all_regi) + + + # ---- Settings ---- + gdxName <- file.path(runfolder, "fulldata.gdx") + TWa2EJ <- 31.5576 # TWa to EJ (1 a = 365.25*24*3600 s = 31557600 s) + sm_tdptwyr2dpgj <- 31.71 # convert [TerraDollar per TWyear] to [Dollar per GJoule] + GtC_2_MtCO2 <- 44/12 * 1000 + + items <- tribble( + ~par , ~var , ~factor, + "o_p30_pebiolc_pricemag" , "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" , sm_tdptwyr2dpgj, + "o_vm_emiMacSector_co2luc", "Emi|CO2|+|Land-Use Change (Mt CO2/yr)" , GtC_2_MtCO2, + "o_vm_fuExtr_pebiolc" , "Primary Energy Production|Biomass|Energy Crops (EJ/yr)", TWa2EJ, + "o_PEDem_Bio_ECrops" , "PE|Biomass|+++|Energy Crops (EJ/yr)" , TWa2EJ, + "o_p30_pebiolc_pricmult" , "Internal|Price|Biomass|Multfactor ()" , 1, + "pm_taxCO2eq_iter" , "Price|Carbon (US$2017/t CO2)" , 1000 * 12 / 44, + ) + + data <- items |> pull(par) |> # take only par from items + sapply(quitte::read.gdx, # read all par from gdx + gdxName = gdxName, + simplify = FALSE, # store as list + USE.NAMES = TRUE) |> # use par as names for list elements + bind_rows(.id = "par") |> # bind individual lists rowwise together and identify by par + left_join(items, by = join_by(par)) |> # add other columns from items + mutate(value = value * factor) # unit conversion from gdx units to report units + + # Keep magpieIter only and prepend 1 + + if(!allIter) { + magpieIter <- quitte::read.gdx(gdxName, "magpieIter") + #magpieIter <- rbind(1, # always plot the first iteration + magpieIter <- rbind(magpieIter, + data |> pull(iteration) |> max()) |> # and last iteration (to see what Nash does after last MAgPIE iteration) + distinct() # remove duplicates (if last iteration is also last MAgPIE iteration) + data <- data |> semi_join(magpieIter, by = join_by(iteration)) + } + + return(data) +} + +# Read data for all runs and put into on data frame +allRuns <- + outputdirs |> + sapply(readDataFromGdx, # read gdx files for all outputdirs + allIter = FALSE, # decide whether to plot all Nash iterations or only Nash iterations in which MAgPIE runs + simplify = FALSE, # store as list + USE.NAMES = TRUE) |> # use outputdirs as names for list elements + bind_rows(.id = "outputdirs") |> # bind outputDir lists elements together and identify by outputDir + mutate(outputdirs = basename(outputdirs)) |> # remove 'output/' from scenario names + group_by(outputdirs) #|> + #group_walk(~ plot_iterations( # apply plot_iterations to all rows in a group + # .x, # .x refers to the subset of all rows in a group + # .y)) # .y refers to their key (here: outputdirs) + + +# If a run continues a previous coupled REMIND-MAgPIE runs, produce a pdf that +# concatenates the iterations of all runs and plots all iterations on one axis + +# Continue iteration count for runs that continue other runs + +# Define order of runs in the order they are listed in outputdirs +allRuns$outputdirs <- factor(allRuns$outputdirs, levels = basename(outputdirs)) + +# Find last iteration per outputDir +last <- allRuns |> group_by(outputdirs) |> summarise(iteration = max(iteration)) + +# # A tibble: 2 × 2 +# outputdirs last +# +# 1 randomFolderName1 37 +# 2 randomFolderName2 34 + +# Create data frame that maps single iterations to continuous iterations +mapIterations <- last |> group_by(outputdirs) |> + group_modify( ~ add_row(.x, iteration = 1:max(.x))) |> # per group add iterations 1:last + arrange(outputdirs, iteration) |> + distinct() |> # remove duplicated last iteration + ungroup() |> + mutate(continuous = 1:n()) # add column that continues iteration count across runs + +# A tibble: 71 × 3 +# outputdirs iteration continuous +# +# 1 randomFolderName1 1 1 +# 2 randomFolderName1 2 2 +# ... +# 36 randomFolderName1 36 36 +# 37 randomFolderName1 37 37 +# 38 randomFolderName2 1 38 +# 39 randomFolderName2 2 39 +# ... +# 69 randomFolderName2 32 69 +# 70 randomFolderName2 33 70 +# 71 randomFolderName2 34 71 + +# Add column with continuous iteration numbers to allRuns +allRunsContinued <- allRuns |> + left_join(mapIterations, by = join_by(outputdirs, iteration)) |> + rename(single = iteration) |> + rename(iteration = continuous) + +# Plot all runs into one plot +allRunsContinued |> + ungroup() |> + plot_iterations(runname = select(allRunsContinued, outputdirs) |> distinct() ) + diff --git a/scripts/output/comparison/runtimeMAgPIENash.R b/scripts/output/comparison/runtimeMAgPIENash.R new file mode 100644 index 0000000000..c6d83cb969 --- /dev/null +++ b/scripts/output/comparison/runtimeMAgPIENash.R @@ -0,0 +1,175 @@ +# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +# | authors, and contributors see CITATION.cff file. This file is part +# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +# | AGPL-3.0, you are granted additional permissions described in the +# | REMIND License Exception, version 1.0 (see LICENSE file). +# | Contact: remind@pik-potsdam.de +############################# LOAD LIBRARIES ############################# +library(dplyr, quietly = TRUE,warn.conflicts =FALSE) +library(readr, quietly = TRUE,warn.conflicts =FALSE) +library(ggplot2, quietly = TRUE,warn.conflicts =FALSE) +library(hms, quietly = TRUE,warn.conflicts =FALSE) + +if (!exists("source_include")) lucode2::readArgs("outputdirs") + +# ----------------------------------------------------------------------- +# ----------- Function: Read runtime from NEW coupled runs -------------- +# ----------------------------------------------------------------------- + +# The automatic date parser from the tibble package used in read_csv gets +# confused, because there are mixed types of date formates in the logfile. +# The lines written by the R scripts are correctly formatted, the lines +# written by GAMS are missing leading zeros. Thus, the parser does not +# recognize them and chooses "character" as column type for start. + +# Funtion reading the runtime.log of a single run + +readRun <- function(runDir) { + a <- readr::read_csv(paste0(runDir,"/runtime.log"), + col_names = c("start","phase", "iteration")) |> + mutate(start = gsub(" ([0-9]:)"," 0\\1", start)) |> # insert leading zero for hours in malformed entries from GAMS 9:8:15 --> 09:8:15 + mutate(start = gsub(":([0-9]:)",":0\\1", start)) |> # insert leading zero for minutes in malformed entries from GAMS 9:8:15 --> 9:08:15 + mutate(start = gsub("-([1-9]) ","-0\\1 ", start)) |> # insert leading zero for days in malformed entries from GAMS 2025-11-1 --> 2025-11-01 + mutate(start = gsub("-([1-9])-","-0\\1-", start)) |> # insert leading zero for months in malformed entries from GAMS 2025-2-1 --> 2025-02-1 + mutate(start = gsub(" ([0-9]{2}).([0-9]{2}).", " \\1:\\2:", start)) |> # in a few log time from R scripts was malformed 15.04.23 --> 15:04:23 + mutate(start = parse_datetime(start)) |> + suppressMessages() |> + mutate(run = basename(runDir), .before = start) +} + +# Read and process the runtime.logs of outputdirs + +shapeData <- function(outputdirs) { + data <- outputdirs |> + lapply(readRun) |> + bind_rows() |> + group_by(run) |> + arrange(start) |> + ungroup() |> + mutate(start = start - first(start)) |> # Calculate the start of each step relative to the start of the first step of the first run. + group_by(run) |> + mutate(end = lead(start)) |> # make the start of n+1 ('lead(start') the end of n (end) + mutate(start = hms::as_hms(start), end = hms::as_hms(end)) |> + na.omit() # remove the last entry that has no "end" entry +} + +# ----------------------------------------------------------------------- +# --------------- Function: Read runtime from OLD coupled runs ---------- +# ----------------------------------------------------------------------- + +# Bring old data to the same shape as new data + +shapeOldData <- function(path_to_runtime_rds) { + old <- readRDS(path_to_runtime_rds) |> + as_tibble() |> + mutate(iteration = 0) |> # dummy, not used in plot but required since the new runtime also has it + mutate(phase = paste0(type,"-",section)) |> + mutate(phase = gsub("rem-prep" , "prepare", phase)) |> + mutate(phase = gsub("rem-output", "output" , phase)) |> + mutate(phase = gsub("rem-GAMS" , "GAMS" , phase)) |> + mutate(phase = gsub("mag-GAMS" , "MAgPIE" , phase)) |> + mutate(run = gsub("-(rem|mag)-[0-9]","" , run)) |> + group_by(run) |> + arrange(start) + + # pick last entry of output and put end to start to have the end point availalbe when calculating the durations below + end <- old |> + filter(phase == "output") |> + slice_tail() |> + mutate(start = end) + + # append end to the rest of old and proceed with calcualting + old <- bind_rows(old, end) |> + select(c(run,start,phase,iteration)) |> + ungroup() |> + mutate(start = start - first(start)) |> # Calculate the start of each step relative to the start of the first step of the first run. + group_by(run) |> + mutate(end = lead(start)) |> + mutate(start = hms::as_hms(start), end = hms::as_hms(end)) |> + na.omit() # remove the last entry that has no "end" entry +} + +# ----------------------------------------------------------------------- +# ------------------------ Execute functions ---------------------------- +# ----------------------------------------------------------------------- + +# Use this to let all runs start at minute 0, independent of their real sequence +#data <- outputdirs |> +# lapply(shapeData) |> +# bind_rows() + +# Use this to keep the sequence of runs in time +data <- shapeData(outputdirs) + +# Use this code to compare runtime to old coupled mode +# +# pathsNewCoupled <- c( +# "output/C_SSP2-NPi2025_2025-11-27_21.03.53", +# "output/C_SSP2-PkBudg1000_2025-11-28_08.08.09", +# "output/C_SSP2-PkBudg650_2025-11-28_21.27.26" +# ) +# +# pathsNewStandalone <- c( +# "output/SSP2-NPi2025_2025-11-27_21.02.51", +# "output/SSP2-PkBudg1000_2025-11-28_00.41.58", +# "output/SSP2-PkBudg650_2025-11-28_00.41.51" +# ) +# +# path_to_runtime_rds <- "/p/tmp/dklein/remMagNash-Comp/remind-before/runtime.rds" +# +# oldCoupled <- shapeOldData(path_to_runtime_rds) +# newCoupled <- shapeData(pathsNewCoupled) +# newStandalone <- shapeData(pathsNewStandalone) +# +# data <- bind_rows(newCoupled, newStandalone, oldCoupled) + +# ----------------------------------------------------------------------- +# ------------------------------ Plot ----------------------------------- +# ----------------------------------------------------------------------- + +# Define order for proper ordering in the legend +#data <- data |> mutate(phase = factor(phase, levels=c("prepare","GAMS","solve","exoGAINS","iterativeEdgeTransport","MAgPIE","output", +# "rem-prep","rem-GAMS","rem-output","mag-prep","mag-GAMS","mag-output"))) + +data <- data |> mutate(phase = factor(phase, levels = c("prepare", + "GAMS", + "convGDX2MIF_REMIND2MAgPIE", + "MAgPIE", + "getMagpieData", + "solve", + "exoGAINS", + "iterativeEdgeTransport", + "output", + "mag-prep", # old coupling only + "mag-output"))) # old coupling only + +# Remove timestamp from scenario name +#datetimepattern <- "_[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}" +#data$run <- gsub(datetimepattern, "_new", data$run) + +#data$Phase_ordered <- factor(data$Phase,levels=c("SD","DD","CD","PC","CA")) +#data$Project_ordered <- reorder(data$Project,data$StartDate) + +data$run <- factor(data$run, levels = rev(basename(outputdirs))) + +data <- data |> mutate(run = factor(.data$run, levels = rev(unique(.data$run)))) + +p <- ggplot(data,aes(x=start, y=run, color=phase)) + + geom_segment(aes(x=start,xend=end,yend=run), linewidth = 8) + + scale_colour_discrete(guide=guide_legend(override.aes=list(size = 2))) + + scale_color_manual(values = c("prepare" = "#84A1E0", # "#4E84C4", # "#F4EDCA", + "GAMS" = "#435BB5", # "#293352", + "getMagpieData" = "red", + "convGDX2MIF_REMIND2MAgPIE" = "yellow", + "solve" = "#2D4175", # "#4E84C4", + "exoGAINS" = "#C4961A", + "iterativeEdgeTransport" = "#D16103", + "output" = "#84A1E0", + "MAgPIE" = "#52854C", + "mag-prep" = "#C3D7A4", + "mag-output" = "#C3D7A4")) + + scale_x_time(sec.axis = dup_axis()) + + ylab("") + + xlab("") + +ggsave("output/runtime.png", p, width = 16, height = 5) \ No newline at end of file diff --git a/scripts/output/export/xlsx_IIASA.R b/scripts/output/export/xlsx_IIASA.R index e257458534..ea54190215 100644 --- a/scripts/output/export/xlsx_IIASA.R +++ b/scripts/output/export/xlsx_IIASA.R @@ -33,69 +33,92 @@ checkSummation <- TRUE # if TRUE, tries to use the one f # note: you can also pass all these options to output.R, so 'Rscript output.R logFile=mylogfile.txt' works. lucode2::readArgs("project") + projects <- list( - ELEVATE = list(mapping = c("NAVIGATE", "ELEVATE"), - iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx", - removeFromScen = "C_|eoc"), - ELEVATE_coupled = list(model = "REMIND-MAgPIE 3.5-4.10", - mapping = c("NAVIGATE", "NAVIGATE_coupled", "ELEVATE"), - iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx", - removeFromScen = "C_|eoc"), - ENGAGE_4p5 = list(mapping = c("AR6", "AR6_NGFS"), - iiasatemplate = "ENGAGE_CD-LINKS_template_2019-08-22.xlsx", - removeFromScen = "_diff|_expoLinear|-all_regi"), + IKEA = list( + model = "REMIND 3.5", + mapping = "ScenarioMIP", + iiasatemplate = "https://files.ece.iiasa.ac.at/common-definitions/common-definitions-template.xlsx", + checkSummation = "ScenarioMIP"), + ELEVATE = list( + mapping = c("NAVIGATE", "ELEVATE"), + iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx", + removeFromScen = "C_|eoc"), + ELEVATE_coupled = list( + model = "REMIND-MAgPIE 3.5-4.10", + mapping = c("NAVIGATE", "NAVIGATE_coupled", "ELEVATE"), + iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx", + removeFromScen = "C_|eoc"), + ENGAGE_4p5 = list( + mapping = c("AR6", "AR6_NGFS"), + iiasatemplate = "ENGAGE_CD-LINKS_template_2019-08-22.xlsx", + removeFromScen = "_diff|_expoLinear|-all_regi"), + NGFS = list( + model = "REMIND-MAgPIE 3.3-4.8", + mapping = c("AR6", "AR6_NGFS"), + iiasatemplate = "https://files.ece.iiasa.ac.at/ngfs-phase-5/ngfs-phase-5-template.xlsx", + removeFromScen = "C_|_bIT|_bit|_bIt|_KLW"), + NGFS6 = list( + model = "REMIND-MAgPIE 3.5-4.13", + mapping = c("ScenarioMIP"), + iiasatemplate = "https://files.ece.iiasa.ac.at/ngfs-phase-6/ngfs-phase-6-template.xlsx", + removeFromScen = "C_"), + RIKEN = list( + model = "REMIND-MAgPIE 3.4-4.8", + mapping = c("ScenarioMIP", "MAGICC7_AR6"), + checkSummation = "ScenarioMIP"), + ScenarioMIP = list( + model = "REMIND-MAgPIE 3.5-4.11", + mapping = "ScenarioMIP", + iiasatemplate = "https://files.ece.iiasa.ac.at/ssp-submission/ssp-submission-template.xlsx", + renameScen = c( + "SMIPv08-H-SSP2-rollBack-def" = "SSP2 - High Emissions", + "SMIPv08-H-SSP3-rollBack-def" = "SSP3 - High Emissions", + "SMIPv08-M-SSP1-NPi2025-def" = "SSP1 - Medium Emissions", + "SMIPv08-M-SSP2-NPi2025-def" = "SSP2 - Medium Emissions", + "SMIPv08-M-SSP3-NPi2025-def" = "SSP3 - Medium Emissions", + "SMIPv08-ML-SSP1-EcPrice190-def" = "SSP1 - Medium-Low Emissions", + "SMIPv08-ML-SSP2-EcPrice300-def" = "SSP2 - Medium-Low Emissions", + "SMIPv08-ML-SSP3-EcPrice325-def" = "SSP3 - Medium-Low Emissions", + "SMIPv08-L-SSP1-EcPrice300-def" = "SSP1 - Low Emissions", + "SMIPv08-L-SSP2-EcPrice400-def" = "SSP2 - Low Emissions", + "SMIPv08-L-SSP1-EcPrice300-var_yr2035" = "SSP1 - Low Emissions_c", + "SMIPv08-L-SSP2-EcPrice400-var_yr2035" = "SSP2 - Low Emissions_c", + "SMIPv08-L-SSP1-EcPrice300-var_yr2050" = "SSP1 - Low Emissions_d", + "SMIPv08-L-SSP2-EcPrice400-var_yr2050" = "SSP2 - Low Emissions_d", + "SMIPv08-VLHO-SSP2-EcPrice1300-def" = "SSP2 - Low Overshoot", + "SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035" = "SSP2 - Low Overshoot_c", + "SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050" = "SSP2 - Low Overshoot_d", + "SMIPv08-VLLO-SSP1-PkPrice500-def" = "SSP1 - Very Low Emissions", + "SMIPv08-VLLO-SSP2-PkPrice500-def" = "SSP2 - Very Low Emissions", + "SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035" = "SSP1 - Very Low Emissions_c", + "SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035" = "SSP2 - Very Low Emissions_c", + NULL), + checkSummation = "ScenarioMIP", + timesteps = seq(2005, 2100)), + JustMIP = list( + model = "REMIND-MAgPIE 3.5-4.10", + mapping = "ScenarioMIP", + iiasatemplate = "https://files.ece.iiasa.ac.at/justmip/justmip-template.xlsx", + removeFromScen = "C_|eoc", + renameScen = c("Reference_SSP1_800f" = "SSP1_800f", "Reference_SSP2_800f" = "SSP2_800f"), + checkSummation = "ScenarioMIP", + timesteps = seq(2005, 2100)), + PRISMA = list( + model = "REMIND-MAgPIE 3.4-4.8", + mapping = c("ScenarioMIP", "PRISMA"), + iiasatemplate = "https://files.ece.iiasa.ac.at/prisma/prisma-template.xlsx", + renameScen = c("SMIPv04-M-SSP2-NPi2025-def" = "SSP2 - Medium Emissions", "SMIPv04-L-SSP2-PkBudg1000-def" = "SSP2 - Low Emissions"), + checkSummation = "NAVIGATE"), NAVIGATE_coupled = list(mapping = c("NAVIGATE", "NAVIGATE_coupled")), - NGFS = list(model = "REMIND-MAgPIE 3.3-4.8", - mapping = c("AR6", "AR6_NGFS"), - iiasatemplate = "https://files.ece.iiasa.ac.at/ngfs-phase-5/ngfs-phase-5-template.xlsx", - removeFromScen = "C_|_bIT|_bit|_bIt|_KLW"), - RIKEN = list(model = "REMIND-MAgPIE 3.4-4.8", - mapping = c("ScenarioMIP", "MAGICC7_AR6"), - checkSummation = "ScenarioMIP"), - ScenarioMIP = list(model = "REMIND-MAgPIE 3.5-4.11", - mapping = "ScenarioMIP", - iiasatemplate = "https://files.ece.iiasa.ac.at/ssp-submission/ssp-submission-template.xlsx", - renameScen = c( - "SMIPv08-H-SSP2-rollBack-def" = "SSP2 - High Emissions", - "SMIPv08-H-SSP3-rollBack-def" = "SSP3 - High Emissions", - "SMIPv08-M-SSP1-NPi2025-def" = "SSP1 - Medium Emissions", - "SMIPv08-M-SSP2-NPi2025-def" = "SSP2 - Medium Emissions", - "SMIPv08-M-SSP3-NPi2025-def" = "SSP3 - Medium Emissions", - "SMIPv08-ML-SSP1-EcPrice190-def" = "SSP1 - Medium-Low Emissions", - "SMIPv08-ML-SSP2-EcPrice300-def" = "SSP2 - Medium-Low Emissions", - "SMIPv08-ML-SSP3-EcPrice325-def" = "SSP3 - Medium-Low Emissions", - "SMIPv08-L-SSP1-EcPrice300-def" = "SSP1 - Low Emissions", - "SMIPv08-L-SSP2-EcPrice600-def" = "SSP2 - Low Emissions", - "SMIPv08-L-SSP1-EcPrice300-var_yr2035" = "SSP1 - Low Emissions_c", - "SMIPv08-L-SSP2-EcPrice600-var_yr2035" = "SSP2 - Low Emissions_c", - "SMIPv08-L-SSP1-EcPrice300-var_yr2050" = "SSP1 - Low Emissions_d", - "SMIPv08-L-SSP2-EcPrice600-var_yr2050" = "SSP2 - Low Emissions_d", - "SMIPv08-VLHO-SSP2-EcPrice1300-def" = "SSP2 - Low Overshoot", - "SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2035" = "SSP2 - Low Overshoot_c", - "SMIPv08-VLHO-SSP2-EcPrice1300-var_yr2050" = "SSP2 - Low Overshoot_d", - "SMIPv08-VLLO-SSP1-PkPrice500-def" = "SSP1 - Very Low Emissions", - "SMIPv08-VLLO-SSP2-PkPrice500-def" = "SSP2 - Very Low Emissions", - "SMIPv08-VLLO-SSP1-PkPrice500-var_yr2035" = "SSP1 - Very Low Emissions_c", - "SMIPv08-VLLO-SSP2-PkPrice500-var_yr2035" = "SSP2 - Very Low Emissions_c", - NULL - ), - checkSummation = "ScenarioMIP", - timesteps = seq(2005, 2100)), - JustMIP = list(model = "REMIND-MAgPIE 3.5-4.10", - mapping = "ScenarioMIP", - iiasatemplate = "https://files.ece.iiasa.ac.at/justmip/justmip-template.xlsx", - removeFromScen = "C_|eoc", - renameScen = c("Reference_SSP1_800f" = "SSP1_800f", "Reference_SSP2_800f" = "SSP2_800f"), - checkSummation = "ScenarioMIP", - timesteps = seq(2005, 2100)), - PRISMA = list(model = "REMIND-MAgPIE 3.4-4.8", - mapping = c("ScenarioMIP", "PRISMA"), - iiasatemplate = "https://files.ece.iiasa.ac.at/prisma/prisma-template.xlsx", - renameScen = c("SMIPv04-M-SSP2-NPi2025-def" = "SSP2 - Medium Emissions", "SMIPv04-L-SSP2-PkBudg1000-def" = "SSP2 - Low Emissions"), - checkSummation = "NAVIGATE"), - SHAPE = list(mapping = c("NAVIGATE", "NAVIGATE_coupled", "SHAPE")), - TESTTHAT = list(mapping = "AR6") + SHAPE = list(mapping = c("NAVIGATE", "NAVIGATE_coupled", "SHAPE")), + TESTTHAT = list(mapping = "AR6") ) +# EarthCommission uses the ScenarioMIP scenarios with a different mapping and template: +projects$EC <- modifyList(projects$ScenarioMIP, list( + mapping = c("ScenarioMIP", "EC"), + iiasatemplate = "https://files.ece.iiasa.ac.at/earthcommission/earthcommission-template.xlsx")) + # add pure mapping from piamInterfaces mappings <- setdiff(names(piamInterfaces::mappingNames()), c(names(projects), "AR6_NGFS")) diff --git a/scripts/output/single/.RData b/scripts/output/single/.RData new file mode 100644 index 0000000000..539a06654b Binary files /dev/null and b/scripts/output/single/.RData differ diff --git a/scripts/output/single/plotRemMagNash.R b/scripts/output/single/plotRemMagNash.R new file mode 100644 index 0000000000..8d6a4b3949 --- /dev/null +++ b/scripts/output/single/plotRemMagNash.R @@ -0,0 +1,297 @@ +# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +# | authors, and contributors see CITATION.cff file. This file is part +# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of +# | AGPL-3.0, you are granted additional permissions described in the +# | REMIND License Exception, version 1.0 (see LICENSE file). +# | Contact: remind@pik-potsdam.de + +############################# LOAD LIBRARIES ############################# + +library(dplyr, quietly = TRUE, warn.conflicts = FALSE) +library(ggplot2, quietly = TRUE, warn.conflicts = FALSE) +# Functions from the following libraries are loaded using :: +# lucode2, tidyr, mip, quitte, lusweave, withr + +############################# BASIC CONFIGURATION ############################# + +if (!exists("source_include")) lucode2::readArgs("outputdir") + +outputdirs <- outputdir + +############################# DEFINE FUNCTIONS ########################### + +# Plot dimension specified for 'color' over dimension specified for 'xaxis' as line plot or bar plot +myplot <- function(dat, parName, runName, type = "line", xaxis = "ttot", color = "iteration", scales = "free_y", ylab = NULL, title = "auto") { + + # Find last (continuous) iteration per outputDir + if("outputdirs" %in% names(dat)) last <- dat |> group_by(outputdirs) |> summarise(iteration = max(iteration)) + + # Zero values are not stored in the gdx and are thus missing in dat. + # Add '0' for the missing combinations of iteration, ttot, all_regi. + dat <- dat |> filter(ttot > 2000, par %in% parName) |> ungroup() |> + tidyr::complete(iteration, ttot, all_regi, fill = list("value" = 0)) + + # Generate auto title if wanted + if(!is.null(title) && title == "auto") { + title <- paste(paste(unique(runName$outputdirs), collapse = "\n"), + dat |> first() |> pull(var), # obtain var name corresponding to par + parName, + sep = "\n") + } + + # convert dimension that should be distinguished by color to factors (relevant if years are plotted over iterations) + dat[[color]] <- as.factor(dat[[color]]) + + text_size <- 10 + scale_color <- as.character(mip::plotstyle(as.character(unique(dat[[color]])), out = "color")) + + p <- ggplot() + if (type == "line") { + p <- p + geom_line( mapping = aes(x=!!sym((xaxis)), y=value, color=!!sym(color), group = !!sym(color)), data = dat, linewidth = 1) + p <- p + geom_point(mapping = aes(x=!!sym((xaxis)), y=value, color=!!sym(color), group = !!sym(color)), data = dat, size = 1) + } else if (type == "bar"){ + p <- p + geom_col( mapping = aes(x=!!sym((xaxis)), y=value, fill=!!sym(color), group = !!sym(color)), data = dat) + } + p <- p + facet_wrap(~all_regi, scales=scales) + + labs(x = NULL, y = ylab, title = title) + + scale_color_manual(values=scale_color) + + theme( + plot.title = element_text(size = text_size+4), + strip.text.x = element_text(size = text_size), + axis.text.y = element_text(size = text_size), + axis.title.x = element_text(size = text_size), + axis.text.x = element_text(size = text_size)) #+ + #theme_bw() + + # If there is more than one run, plot vertical line to separate runs + if("outputdirs" %in% names(dat) & xaxis == "iteration") { + p <- p + geom_vline(xintercept = last$iteration) + } + return(p) +} + +# Compile all plots and produce pdf +plot_iterations <- function(dat, runname) { + + # ---- Plot: MAgPIE prices for purpose grown bioenergy ---- + + p_price_mag <- myplot(dat, "o_p30_pebiolc_pricemag", runname, ylab = "$/GJ") + p_price_mag_it <- myplot(dat, "o_p30_pebiolc_pricemag", runname, xaxis = "iteration", color = "ttot", ylab = "$/GJ") + + # ---- Plot: MAgPIE co2luc ---- + + p_emi_mag <- myplot(dat, "o_vm_emiMacSector_co2luc", runname, ylab = "Mt CO2/yr") + p_emi_mag_it <- myplot(dat, "o_vm_emiMacSector_co2luc", xaxis = "iteration", color = "ttot", runname, ylab = "Mt CO2/yr") + + + # ---- Plot: REMIND Production of purpose grown bioenergy ---- + + p_fuelex <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, ylab = "EJ/yr") + p_fuelex_it <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr") + p_fuelex_it_fix <- myplot(dat, "o_vm_fuExtr_pebiolc", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr", scales = "fixed") + p_fuelex_it_2060 <- myplot(dat |> filter(ttot == 2060), + "o_vm_fuExtr_pebiolc", runname, type = "bar", + xaxis = "iteration", color = "ttot", ylab = "EJ/yr", scales = "fixed") + + # ---- Plot: REMIND Demand for purpose grown bioenergy ---- + + p_demPE <- myplot(dat, "o_PEDem_Bio_ECrops", runname, ylab = "EJ/yr") + p_demPE_it <- myplot(dat, "o_PEDem_Bio_ECrops", runname, xaxis = "iteration", color = "ttot", ylab = "EJ/yr") + + # ---- Plot: REMIND Price scaling factor ---- + + p_mult <- myplot(dat, "o_p30_pebiolc_pricmult", runname) + p_mult_it <- myplot(dat, "o_p30_pebiolc_pricmult", runname, xaxis = "iteration", color = "ttot") + + # ---- Plot: REMIND co2 price ---- + + p_price_carbon <- myplot(dat, "pm_taxCO2eq_iter", runname, ylab = "$/tCO2") + + p_price_carbon_it_1 <- myplot(dat |> filter(ttot < 2025), "pm_taxCO2eq_iter", runname, + ylab = "$/tCO2", xaxis = "iteration", color = "ttot") + p_price_carbon_it_2 <- myplot(dat |> filter(ttot > 2020, ttot <= 2100), "pm_taxCO2eq_iter", runname, + ylab = "$/tCO2", xaxis = "iteration", color = "ttot") + + # ---- Print to pdf ---- + + out <- lusweave::swopen(template = "david") + + lusweave::swfigure(out, print, p_price_mag, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_mag_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it_fix, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_fuelex_it_2060, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_demPE_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_emi_mag, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_emi_mag_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_mult, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_mult_it, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon_it_1, sw_option = "height=9,width=16") + lusweave::swfigure(out, print, p_price_carbon_it_2, sw_option = "height=9,width=16") + + filename <- paste0("output/", tail(runname$outputdirs, n=1), ifelse(nrow(runname)>1, "-continued", "")) + lusweave::swclose(out, outfile = filename, clean_output = TRUE, save_stream = FALSE) + file.remove(paste0(filename,c(".log"))) + # out files have "." replaced with "-_-_-" in their names + #file.remove(paste0(gsub("\\.","-_-_-",filename),".out")) + + return("Done\n") +} + +# Read all parameters from gdx and return them all in one data frame +readDataFromGdx <- function(runfolder, allIter = TRUE) { + + # ---- Documentation of the items read from the gdx ---- + + # "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" + # "o_p30_pebiolc_pricemag" + # modules/30_biomass/magpie/presolve.gms + # o_p30_pebiolc_pricemag(iteration,ttot,regi) = p30_pebiolc_pricemag(ttot,regi); + + # "Emi|CO2|+|Land-Use Change (Mt CO2/yr)" + # vm_emiMacSector <- readGDX(gdx, "vm_emiMacSector", field = "l", restore_zeros = FALSE) + # dimSums(vm_emiMacSector[, , "co2luc"] , dim = 3) * GtC_2_MtCO2 + # "o_vm_emiMacSector_co2luc" + # core/postsolve.gms: + # o_vm_emiMacSector_co2luc(iteration,ttot,regi) = vm_emiMacSector.l(ttot,regi,"co2luc"); + + # "Primary Energy Production|Biomass|Energy Crops (EJ/yr)" + # remind2::reportExtraction.R + # fuelex <- readGDX(gdx, name = c("vm_fuExtr", "vm_fuelex"), field = "l", restore_zeros = FALSE, format = "first_found") + # fuelex_bio <- fuelex[, t, c("pebiolc", "pebios", "pebioil")] + # dimSums(fuelex_bio[, , "pebiolc.1"], dim = 3) * TWa_2_EJ + # -> "PE|Production|Biomass|+|Lignocellulosic (EJ/yr)" + # -> "Primary Energy Production|Biomass|Energy Crops (EJ/yr)" (used also in coupling interface in MAgPIE) + # "o_vm_fuExtr_pebiolc" + # core/postsolve.gms: + # o_vm_fuExtr_pebiolc = vm_fuExtr.l(ttot,regi,"pebiolc","1"); + + # "PE|Biomass|+++|Energy Crops (EJ/yr)" + # remind2::reportPE.R + # fuelex[,,"pebiolc.1"] + (1-p_costsPEtradeMp[,,"pebiolc"]) * Mport[,,"pebiolc"] - Xport[,,"pebiolc"] -> "PE|Biomass|+++|Energy Crops (EJ/yr)" + # "o_PEDem_Bio_ECrops" + # core/postsolve.gms: + # o_PEDem_Bio_ECrops(iteration,ttot,regi) = vm_fuExtr.l(ttot,regi,"pebiolc","1") + (1 - pm_costsPEtradeMp(ttot,regi"pebiolc")) * vm_Mport.l(ttot,regi,"pebiolc") - vm_Xport.l(ttot,regi"pebiolc"); + + # "Internal|Price|Biomass|Multfactor ()" + # remind2::reportPrices.R + # p30_pebiolc_pricmult -> "Internal|Price|Biomass|Multfactor ()" + # "o_p30_pebiolc_pricmult" + # modules/30_biomass/magpie/presolve.gms + # o_p30_pebiolc_pricmult(iteration,ttot,regi) = p30_pebiolc_pricmult(ttot,regi); + + # "Price|Carbon (US$2017/t CO2)" + # pm_taxCO2eqSum <- readGDX(gdx, name = "pm_taxCO2eqSum", format = "first_found")[, t, ] + # pm_taxCO2eqSum * 1000 * 12 / 44 + # "pm_taxCO2eq_iter" + # Alternative, that is already being tracked: + # pm_taxCO2eq_iter(iteration,ttot,all_regi) + + + # ---- Settings ---- + gdxName <- file.path(runfolder, "fulldata.gdx") + TWa2EJ <- 31.5576 # TWa to EJ (1 a = 365.25*24*3600 s = 31557600 s) + sm_tdptwyr2dpgj <- 31.71 # convert [TerraDollar per TWyear] to [Dollar per GJoule] + GtC_2_MtCO2 <- 44/12 * 1000 + + items <- tribble( + ~par , ~var , ~factor, + "o_p30_pebiolc_pricemag" , "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" , sm_tdptwyr2dpgj, + "o_vm_emiMacSector_co2luc", "Emi|CO2|+|Land-Use Change (Mt CO2/yr)" , GtC_2_MtCO2, + "o_vm_fuExtr_pebiolc" , "Primary Energy Production|Biomass|Energy Crops (EJ/yr)", TWa2EJ, + "o_PEDem_Bio_ECrops" , "PE|Biomass|+++|Energy Crops (EJ/yr)" , TWa2EJ, + "o_p30_pebiolc_pricmult" , "Internal|Price|Biomass|Multfactor ()" , 1, + "pm_taxCO2eq_iter" , "Price|Carbon (US$2017/t CO2)" , 1000 * 12 / 44, + ) + + data <- items |> pull(par) |> # take only par from items + sapply(quitte::read.gdx, # read all par from gdx + gdxName = gdxName, + simplify = FALSE, # store as list + USE.NAMES = TRUE) |> # use par as names for list elements + bind_rows(.id = "par") |> # bind individual lists rowwise together and identify by par + left_join(items, by = join_by(par)) |> # add other columns from items + mutate(value = value * factor) # unit conversion from gdx units to report units + + # Keep magpieIter only and prepend 1 + + if(!allIter) { + magpieIter <- quitte::read.gdx(gdxName, "magpieIter") + #magpieIter <- rbind(1, # always plot the first iteration + magpieIter <- rbind(magpieIter, + data |> pull(iteration) |> max()) |> # and last iteration (to see what Nash does after last MAgPIE iteration) + distinct() # remove duplicates (if last iteration is also last MAgPIE iteration) + data <- data |> semi_join(magpieIter, by = join_by(iteration)) + } + + return(data) +} + +# Read data for all runs and put into on data frame +allRuns <- + outputdirs |> + sapply(readDataFromGdx, # read gdx files for all outputdirs + allIter = FALSE, # decide whether to plot all Nash iterations or only Nash iterations in which MAgPIE runs + simplify = FALSE, # store as list + USE.NAMES = TRUE) |> # use outputdirs as names for list elements + bind_rows(.id = "outputdirs") |> # bind outputDir lists elements together and identify by outputDir + mutate(outputdirs = basename(outputdirs)) |> # remove 'output/' from scenario names + group_by(outputdirs) #|> + #group_walk(~ plot_iterations( # apply plot_iterations to all rows in a group + # .x, # .x refers to the subset of all rows in a group + # .y)) # .y refers to their key (here: outputdirs) + + +# If a run continues a previous coupled REMIND-MAgPIE runs, produce a pdf that +# concatenates the iterations of all runs and plots all iterations on one axis + +# Continue iteration count for runs that continue other runs + +# Define order of runs in the order they are listed in outputdirs +allRuns$outputdirs <- factor(allRuns$outputdirs, levels = basename(outputdirs)) + +# Find last iteration per outputDir +last <- allRuns |> group_by(outputdirs) |> summarise(iteration = max(iteration)) + +# # A tibble: 2 × 2 +# outputdirs last +# +# 1 randomFolderName1 37 +# 2 randomFolderName2 34 + +# Create data frame that maps single iterations to continuous iterations +mapIterations <- last |> group_by(outputdirs) |> + group_modify( ~ add_row(.x, iteration = 1:max(.x))) |> # per group add iterations 1:last + arrange(outputdirs, iteration) |> + distinct() |> # remove duplicated last iteration + ungroup() |> + mutate(continuous = 1:n()) # add column that continues iteration count across runs + +# A tibble: 71 × 3 +# outputdirs iteration continuous +# +# 1 randomFolderName1 1 1 +# 2 randomFolderName1 2 2 +# ... +# 36 randomFolderName1 36 36 +# 37 randomFolderName1 37 37 +# 38 randomFolderName2 1 38 +# 39 randomFolderName2 2 39 +# ... +# 69 randomFolderName2 32 69 +# 70 randomFolderName2 33 70 +# 71 randomFolderName2 34 71 + +# Add column with continuous iteration numbers to allRuns +allRunsContinued <- allRuns |> + left_join(mapIterations, by = join_by(outputdirs, iteration)) |> + rename(single = iteration) |> + rename(iteration = continuous) + +# Plot all runs into one plot +allRunsContinued |> + ungroup() |> + plot_iterations(runname = select(allRunsContinued, outputdirs) |> distinct() ) + diff --git a/scripts/output/single/rds_report.R b/scripts/output/single/rds_report.R index 1a73705bb6..6db426c1d3 100644 --- a/scripts/output/single/rds_report.R +++ b/scripts/output/single/rds_report.R @@ -13,49 +13,50 @@ library(quitte) options("magclass.verbosity" = 1) ############################# BASIC CONFIGURATION ############################# -if(!exists("source_include")) { +if (!exists("source_include")) { outputdir <- "output/default_2021-03-18_18.16.40/" readArgs("outputdir") } load(paste0(outputdir, "/config.Rdata")) -gdx <- file.path(outputdir,"fulldata.gdx") -gdx_ref <- file.path(outputdir,"input_refpolicycost.gdx") -if(!file.exists(gdx_ref)) gdx_ref <- NULL +gdx <- file.path(outputdir, "fulldata.gdx") +gdx_ref <- file.path(outputdir, "input_refpolicycost.gdx") +if (!file.exists(gdx_ref)) gdx_ref <- NULL rds <- paste0(outputdir, "/report.rds") -runstatistics <- paste0(outputdir,"/runstatistics.rda") +runstatistics <- paste0(outputdir, "/runstatistics.rda") resultsarchive <- "/p/projects/rd3mod/models/results/remind" ############################################################################### -mif <- file.path(outputdir,paste0("REMIND_generic_",cfg$title,".mif")) +mif <- file.path(outputdir, paste0("REMIND_generic_", cfg$title, ".mif")) -if(file.exists(mif)) { +if (file.exists(mif)) { report <- read.quitte(mif) } else { - report <- convGDX2MIF(gdx,gdx_ref,scenario=cfg$title) + extra_data_path <- file.path(outputdir, "reporting") + report <- convGDX2MIF(gdx, gdx_ref, scenario = cfg$title, extraData = extra_data_path) } if (!is.quitte(report)) report <- as.quitte(report) -q<-report -if(all(is.na(q$value))) stop("No values in reporting!") -saveRDS(q,file=rds) +q <- report +if (all(is.na(q$value))) stop("No values in reporting!") +saveRDS(q, file = rds) -if(file.exists(runstatistics) & dir.exists(resultsarchive)) { +if (file.exists(runstatistics) & dir.exists(resultsarchive)) { stats <- list() load(runstatistics) - if(is.null(stats$id)) { - # create an id if it does not exist (which means that statistics have not + if (is.null(stats$id)) { + # create an id if it does not exist (which means that statistics have not # been saved to the archive before) and save statistics to the archive - message("No id found in runstatistics.rda. Calling lucode2::runstatistics() to create one.") + message("No id found in runstatistics.rda. Calling lucode2::runstatistics() to create one.") stats <- lucode2::runstatistics(file = runstatistics, submit = cfg$runstatistics) - message("Created the id ",stats$id) - # save stats locally (including id) otherwise it would generate a new id (and + message("Created the id ", stats$id) + # save stats locally (including id) otherwise it would generate a new id (and # resubmit the results and the statistics) next time rds_report is executed - save(stats, file=runstatistics, compress="xz") + save(stats, file = runstatistics, compress = "xz") } - + # Save report to results archive - saveRDS(q,file=paste0(resultsarchive,"/",stats$id,".rds")) + saveRDS(q, file = paste0(resultsarchive, "/", stats$id, ".rds")) cwd <- getwd() setwd(resultsarchive) system("find -type f -name '1*.rds' -printf '%f\n' | sort > fileListForShinyresults") diff --git a/scripts/output/single/reporting.R b/scripts/output/single/reporting.R index 133fdf6978..6e697256ca 100644 --- a/scripts/output/single/reporting.R +++ b/scripts/output/single/reporting.R @@ -127,9 +127,8 @@ if (!is.null(magpie_reporting_file) && file.exists(magpie_reporting_file)) { paste(sharedvariables, collapse = ", ")) tmp_mag <- dplyr::filter(tmp_mag, !.data$variable %in% sharedvariables) } - # harmonize scenario name from -mag-xx to -rem-xx + # Harmonize scenario names: use the REMIND scenario name also for MAgPIE tmp_mag$scenario <- paste0(scenario) - tmp_mag$value[! is.finite(tmp_mag$value)] <- NA # MAgPIE reports Inf https://github.com/pik-piam/magpie4/issues/70 tmp_rem_mag <- rbind(tmp_rem, tmp_mag) quitte::write.mif(tmp_rem_mag, path = remind_reporting_file) piamutils::deletePlus(remind_reporting_file, writemif = TRUE) diff --git a/scripts/output/single/reportingREMIND2MAgPIE.R b/scripts/output/single/reportingREMIND2MAgPIE.R index f267eb8ed2..45c1f191b4 100644 --- a/scripts/output/single/reportingREMIND2MAgPIE.R +++ b/scripts/output/single/reportingREMIND2MAgPIE.R @@ -12,15 +12,15 @@ library(gms) library(methods) library(piamutils) ############################# BASIC CONFIGURATION ############################# -gdx_name <- "fulldata.gdx" # name of the gdx +gdx_name <- "fulldata.gdx" # name of the gdx -if(!exists("source_include")) { - # Define arguments that can be read from command line - outputdir <- "." - readArgs("outputdir", "gdx_name") +if (!exists("source_include")) { + # Define arguments that can be read from command line + outputdir <- "." + readArgs("outputdir", "gdx_name") } -gdx <- file.path(outputdir,gdx_name) +gdx <- file.path(outputdir, gdx_name) scenario <- getScenNames(outputdir) configfile <- file.path(outputdir, "config.Rdata") @@ -29,14 +29,15 @@ load(configfile, envir = envir) ############################################################################### # paths of the reporting files -remind_reporting_file <- file.path(outputdir,paste0("REMIND_generic_",scenario,".mif")) +remind_reporting_file <- file.path(outputdir, paste0("REMIND_generic_", scenario, ".mif")) # produce REMIND reporting *.mif based on gdx information message("\n### start generation of mif files at ", round(Sys.time())) -convGDX2MIF_REMIND2MAgPIE(gdx, file = remind_reporting_file, scenario = scenario) +extra_data_path <- file.path(outputdir, "reporting") +convGDX2MIF_REMIND2MAgPIE(gdx, file = remind_reporting_file, scenario = scenario, extraData = extra_data_path) magpie_reporting_file <- envir$cfg$pathToMagpieReport -if (! is.null(magpie_reporting_file) && file.exists(magpie_reporting_file)) { +if (!is.null(magpie_reporting_file) && file.exists(magpie_reporting_file)) { message("add MAgPIE reporting from ", magpie_reporting_file) tmp_rem <- quitte::as.quitte(remind_reporting_file) tmp_mag <- dplyr::filter(quitte::as.quitte(magpie_reporting_file), .data$period %in% unique(tmp_rem$period)) @@ -44,7 +45,7 @@ if (! is.null(magpie_reporting_file) && file.exists(magpie_reporting_file)) { sharedvariables <- intersect(tmp_mag$variable, tmp_rem$variable) if (length(sharedvariables) > 0) { message("The following variables will be dropped from MAgPIE reporting because they are in REMIND reporting: ", paste(sharedvariables, collapse = ", ")) - tmp_mag <- dplyr::filter(tmp_mag, ! .data$variable %in% sharedvariables) + tmp_mag <- dplyr::filter(tmp_mag, !.data$variable %in% sharedvariables) } # harmonize scenario name from -mag-xx to -rem-xx tmp_mag$scenario <- paste0(scenario) diff --git a/scripts/start/checkFixCfg.R b/scripts/start/checkFixCfg.R index 934a465cdd..5d0b504134 100644 --- a/scripts/start/checkFixCfg.R +++ b/scripts/start/checkFixCfg.R @@ -19,10 +19,10 @@ checkFixCfg <- function(cfg, remindPath = ".", testmode = FALSE) { NC <- "\033[0m" # No Color refcfg <- gms::readDefaultConfig(remindPath) - remindextras <- c("backup", "remind_folder", "pathToMagpieReport", "cm_nash_autoconverge_lastrun", "var_luc", + remindextras <- c("backup", "remind_folder", "cm_nash_autoconverge_lastrun", "gms$c_expname", "restart_subsequent_runs", "gms$cm_CES_configuration", "gms$c_description", "model", "UseThisRenvLock", - "gms$c_model_version", "gms$c_results_folder") + "gms$c_model_version", "gms$c_results_folder", "path_magpie", "magpie_empty", "cfg_mag", "continueFromHere") fail <- tryCatch(gms::check_config(cfg, reference_file = refcfg, modulepath = file.path(remindPath, "modules"), settings_config = file.path(remindPath, "config", "settings_config.csv"), extras = remindextras), diff --git a/scripts/start/configureCfg.R b/scripts/start/configureCfg.R index 1822d4a111..e0e55ef177 100644 --- a/scripts/start/configureCfg.R +++ b/scripts/start/configureCfg.R @@ -111,10 +111,15 @@ configureCfg <- function(icfg, iscen, iscenarios, verboseGamsCompile = TRUE) { } } } - + # Define path where the GDXs will be taken from gdxlist <- unlist(iscenarios[iscen, names(path_gdx_list)]) names(gdxlist) <- path_gdx_list + + # if MAgPIE coupled prepend 'C_' to name of reference scenarios + if(icfg$gms$cm_MAgPIE_Nash > 0) { + gdxlist[gdxlist %in% rownames(iscenarios)] <- paste0("C_", gdxlist[gdxlist %in% rownames(iscenarios)]) + } # add gdxlist to list of files2export icfg$files2export$start <- c(icfg$files2export$start, gdxlist, config.file) @@ -122,6 +127,13 @@ configureCfg <- function(icfg, iscen, iscenarios, verboseGamsCompile = TRUE) { # add table with information about runs that need the fulldata.gdx of the current run as input icfg$RunsUsingTHISgdxAsInput <- iscenarios %>% select(contains("path_gdx")) %>% # select columns that have "path_gdx" in their name filter(rowSums(. == iscen, na.rm = TRUE) > 0) # select rows that have the current scenario in any column + + # For coupled runs add "C_" to scenario names + if(nrow(icfg$RunsUsingTHISgdxAsInput) > 0 & icfg$gms$cm_MAgPIE_Nash > 0) { + selection <- !is.na(icfg$RunsUsingTHISgdxAsInput) + icfg$RunsUsingTHISgdxAsInput[selection] <- paste0("C_", icfg$RunsUsingTHISgdxAsInput[selection]) + rownames(icfg$RunsUsingTHISgdxAsInput) <- paste0("C_", rownames(icfg$RunsUsingTHISgdxAsInput)) + } return(icfg) } diff --git a/scripts/start/getReportData.R b/scripts/start/getReportData.R deleted file mode 100644 index 539db5bae3..0000000000 --- a/scripts/start/getReportData.R +++ /dev/null @@ -1,162 +0,0 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | REMIND License Exception, version 1.0 (see LICENSE file). -# | Contact: remind@pik-potsdam.de - -getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc="costs",var_luc="smooth") { - - require(dplyr, quietly = TRUE, warn.conflicts = FALSE) - require(quitte, quietly = TRUE, warn.conflicts = FALSE) - require(readr, quietly = TRUE, warn.conflicts = FALSE) - - magData <- quitte::read.quitte(path_to_report, check.duplicates = FALSE) - - .emissions <- function(mag, mapping, file, var_luc, path_to_report) { - - if (var_luc == "smooth") { - # do nothing and use variable names as defined above - } else if (var_luc == "raw") { - # add RAW to variable names - mapping$mag <- gsub("Emissions|CO2|Land","Emissions|CO2|Land RAW", mapping$mag, fixed = TRUE) - } else { - stop(paste0("Unkown setting for 'var_luc': `", var_luc, "`. Only `smooth` or `raw` are allowed.")) - } - - # Stop if variables are missing - variablesMissing <- ! mapping$mag %in% mag$variable - if (any(variablesMissing)) { - stop("The following variables could not be found in the MAgPIE report: ", mapping$mag[variablesMissing]) - } - - write(paste0("*** ", format(Sys.time(), "%Y-%m-%d %H:%M:%S"), " Data transferred from ", path_to_report), file = file) - - rem <- mag |> - inner_join(mapping, by = c("variable" = "mag"), # combine tables keeping relevant variables only - relationship = "many-to-one", # each row in x (mag) matches at most 1 row in y (mapping) - unmatched = c("drop", "error")) |> # drop rows from x that are not in y, error: all rows in y must be in x - mutate(value = value * factorMag2Rem) |> # apply unit conversion - group_by(period, region, rem) |> # define groups for summation - summarise(value = sum(value)) |> # sum MAgPIE emissions (mag) that have the same enty in remind (rem) - relocate(period, .before = region) |> # put period in front of region for proper order for GAMS import - filter(period >= 2005, region != "World") |> # keep REMIND time horizon and remove World region - readr::write_csv(file = file, col_names = FALSE, append = TRUE) - - write(paste0("*** EOF ", file ," ***"), file = file, append = TRUE) - - return(rem) - } - - .convertAndWrite <- function(mag, mapping, file, path_to_report) { - - # Stop if variables are missing - variablesMissing <- ! mapping$mag %in% mag$variable - if (any(variablesMissing)) { - stop("The following variables could not be found in the MAgPIE report: ", mapping$mag[variablesMissing]) - } - - write(paste0("*** ", format(Sys.time(), "%Y-%m-%d %H:%M:%S"), " Data transferred from ", path_to_report), file = file) - - mag <- mag |> - inner_join(mapping, by = c("variable" = "mag"), # combine tables keeping relevant variables only - relationship = "many-to-one", # each row in x (mag) matches at most 1 row in y (mapping) - unmatched = c("drop", "error")) |> # drop rows from x that are not in y, error: all rows in y must be in x - mutate(value = value * factorMag2Rem) |> # apply unit conversion - mutate(value = round(value, digits = 11)) |> # limit number of decimals - relocate(period, .before = region) |> # put period in front of region for proper order for GAMS import - filter(period >= 2005, region != "World") |> # keep REMIND time horizon and remove World region - select(period, region, value) |> # keep relevant columns only - tidyr::pivot_wider(names_from = region, values_from = value) |> # make 2D-table - readr::write_csv(file = file, col_names = TRUE, append = TRUE) - - write(paste0("*** EOF ", file ," ***"), file = file, append = TRUE) - - return(mag) - } - - ### ---- Emissions ---- - - # define three columns of dataframe: - # mag (magpie emission names) - # rem (remind emission names) - # factorMag2Rem (factor for converting magpie units into remind units) - # nitrogen: 28/44, # Tg N2O/yr = Mt N2O/yr -> Mt N/yr - # carbon: 1/1000*12/44, # Mt CO2/yr -> Gt CO2/yr -> Gt C/yr - - mag2rem <- tribble( - ~mag, ~rem, ~factorMag2Rem, - "Emissions|CO2|Land|+|Land-use Change" , "co2luc" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|+|Deforestation" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|+|Forest degradation" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|+|Other land conversion" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|+|Wood Harvest" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Peatland|+|Positive" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Peatland|+|Negative" , "co2lucNegIntentPeat" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|CO2-price AR" , "co2lucNegIntentAR" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|NPI_NDC AR" , "co2lucNegIntentAR" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|Cropland Tree Cover" , "co2lucNegIntentAgroforestry",1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|Other Land" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|Secondary Forest" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Regrowth|+|Timber Plantations" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Residual|+|Positive" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Residual|+|Negative" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Soil|++|Emissions" , "co2lucPos" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Soil|Cropland management|+|Withdrawals" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Soil|Land Conversion|+|Withdrawals" , "co2lucNegUnintent" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Soil|Soil Carbon Management|+|Withdrawals" , "co2lucNegIntentSCM" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Timber|+|Storage in HWP" , "co2lucNegIntentTimber" , 1/1000*12/44, - "Emissions|CO2|Land|Land-use Change|Timber|+|Release from HWP" , "co2lucPos" , 1/1000*12/44, - "Emissions|N2O|Land|Agriculture|+|Animal Waste Management" , "n2oanwstm" , 28/44, - "Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Inorganic Fertilizers" , "n2ofertin" , 28/44, - "Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Manure applied to Croplands" , "n2oanwstc" , 28/44, - "Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Decay of Crop Residues" , "n2ofertcr" , 28/44, - "Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Soil Organic Matter Loss" , "n2ofertsom" , 28/44, - "Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Pasture" , "n2oanwstp" , 28/44, - "Emissions|N2O|Land|+|Peatland" , "n2opeatland" , 28/44, - "Emissions|CH4|Land|Agriculture|+|Rice" , "ch4rice" , 1, - "Emissions|CH4|Land|Agriculture|+|Animal waste management" , "ch4anmlwst" , 1, - "Emissions|CH4|Land|Agriculture|+|Enteric fermentation" , "ch4animals" , 1, - "Emissions|CH4|Land|+|Peatland" , "ch4peatland" , 1 - ) - - emi <- .emissions(magData, mag2rem, file = paste0("./core/input/f_macBaseMagpie_coupling.cs4r"), var_luc, path_to_report) - - ### ---- Bioenergy prices ---- - - mag2rem <- tribble( - ~mag, ~factorMag2Rem, - "Prices|Bioenergy", 0.0315576) # US$2017/GJ to US$2017/Wa - - pricBio <- .convertAndWrite(magData, mag2rem, file = paste0("./modules/30_biomass/",inputpath_mag,"/input/p30_pebiolc_pricemag_coupling.csv"), path_to_report) - - ### ---- Bioenergy production ---- - - mag2rem <- tribble( - ~mag, ~factorMag2Rem, - "Demand|Bioenergy|2nd generation|++|Bioenergy crops", 1/31.536) # EJ to TWa - - prodBio <- .convertAndWrite(magData, mag2rem, file = paste0("./modules/30_biomass/",inputpath_mag,"/input/pm_pebiolc_demandmag_coupling.csv"), path_to_report) - - ### ---- Agricultural costs ---- - - mag2rem <- tribble( - ~mag, ~factorMag2Rem, - "Costs Accounting|Costs without incentives", 1/1000/1000) # 10E6 US$2017 to 10E12 US$2017 - - cost <- .convertAndWrite(magData, mag2rem, file = paste0("./modules/26_agCosts/",inputpath_acc,"/input/p26_totLUcost_coupling.csv"), path_to_report) - - ### ---- Agricultural trade ---- - - mag2rem <- tribble( - ~mag, ~factorMag2Rem, - "Costs Accounting|+|Trade", 1/1000/1000) # 10E6 US$2017 to 10E12 US$2017 - - # needs to be updated to MAgPIE 4 interface - # trade <- .convertAndWrite(magData, mag2rem, file = paste0("./modules/26_agCosts/",inputpath_acc,"/input/trade_bal_reg.rem.csv"), path_to_report) - - ### ---- return ---- - - #tmp <- rbind(emi, pricBio, prodBio, cost) - #return(invisible(tmp)) -} diff --git a/scripts/start/needBau.R b/scripts/start/needBau.R index 25af30586b..021855f312 100644 --- a/scripts/start/needBau.R +++ b/scripts/start/needBau.R @@ -9,5 +9,5 @@ # This allows readCheckScenarioConfig and checkFixConfig to set it to NA # if not needed, and complain if it is missing. needBau <- list(carbonprice = "NDC", - carbonpriceRegi = "NDC", + carbonpriceRegi = "netZero", emicapregi = "AbilityToPay") diff --git a/scripts/start/prepare.R b/scripts/start/prepare.R index 3c172271e1..559d91fdd3 100644 --- a/scripts/start/prepare.R +++ b/scripts/start/prepare.R @@ -8,6 +8,10 @@ prepare <- function() { timePrepareStart <- Sys.time() + # Record the time when the preparation starts in runtime.log + # The content of this file will be added to runstatistics.rda at the end. + cat("Saving timePrepareStart to runtime.log\n") + write(paste(Sys.time(), "prepare", 0, sep = ","), file = "runtime.log") # Load libraries #require(lucode, quietly = TRUE,warn.conflicts =FALSE) @@ -105,17 +109,6 @@ prepare <- function() { create_input_for_50_damage_exogenous(as.character(cfg$files2export$start["input_damage.gdx"])) } - # If a path to a MAgPIE report is supplied use it as REMIND input (used for REMIND-MAgPIE coupling) - # ATTENTION: modifying gms files - if (!is.null(cfg$pathToMagpieReport)) { - getReportData( - path_to_report = cfg$pathToMagpieReport, - inputpath_mag = cfg$gms$biomass, - inputpath_acc = cfg$gms$agCosts, - var_luc = cfg$var_luc - ) - } - # Update module paths in GAMS code update_modules_embedding() @@ -189,13 +182,16 @@ prepare <- function() { replace_in_file('core/sets.gms',content,"MODULES",comment="***") ### ADD MODULE INFO IN SETS ############# END ######### - # copy right gdx file to the output folder - gdx_name <- paste0("config/gdx-files/",cfg$gms$cm_CES_configuration,".gdx") - if (0 != system(paste('cp', gdx_name, - file.path(cfg$results_folder, 'input.gdx')))) { - stop('Could not copy gdx file ', gdx_name) - } else { - message('Copied ', gdx_name, ' to input.gdx') + # Retrieve appropriate gdx file + gdxConfig <- paste0("config/gdx-files/", cfg$gms$cm_CES_configuration, ".gdx") + gdxInput <- file.path(cfg$results_folder, "input.gdx") + if (file.copy(gdxConfig, gdxInput)) { + message("Copied: ", gdxConfig, "\n to: ", gdxInput) + } else { + stop(ifelse (cfg$gms$CES_parameters == "calibrate", + "Calibration requires a starting gdx; please copy the gdx file with the closest configuration and paste it to:", + "Could not find gdx file:"), + "\n ", gdxConfig, "\n\n") } # choose which conopt files to copy diff --git a/scripts/start/readCheckScenarioConfig.R b/scripts/start/readCheckScenarioConfig.R index 8af0ea70f8..6ca38ee33a 100644 --- a/scripts/start/readCheckScenarioConfig.R +++ b/scripts/start/readCheckScenarioConfig.R @@ -16,7 +16,7 @@ #' @author Oliver Richters #' @return list with scenario config content readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE, fillWithDefault = FALSE) { - coupling <- if (grepl("scenario_config_coupled", filename)) "MAgPIE" else FALSE + coupling <- if (grepl("scenario_config_magpie", filename)) "MAgPIE" else FALSE if (testmode) { cfg <- suppressWarnings(gms::readDefaultConfig(remindPath)) } else { @@ -147,9 +147,9 @@ readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE # check column names knownColumnNames <- c(names(path_gdx_list), "start", "model", "copyConfigFrom") if (coupling %in% "MAgPIE") { - knownColumnNames <- c(knownColumnNames, "cm_nash_autoconverge_lastrun", "oldrun", "path_report", "magpie_scen", - "no_ghgprices_land_until", "qos", "sbatch", "path_mif_ghgprice_land", "max_iterations", - "magpie_empty", "var_luc") + knownColumnNames <- c(knownColumnNames, "magpie_scen", + "no_ghgprices_land_until", "sbatch", "path_mif_ghgprice_land", "max_iterations", + "magpie_empty", "continueFromHere", "magpieIter") # identify MAgPIE switches by "cfg_mag" and "scenario_config" knownColumnNames <- c(knownColumnNames, grep("cfg_mag|scenario_config", names(scenConf), value = TRUE)) } else { # not a coupling config @@ -202,6 +202,7 @@ readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE "cm_POPscen" = "Use cm_GDPpopScen instead, see https://github.com/remindmodel/remind/pull/1973", "cm_DiscRateScen" = "Deleted, not used anymore, see https://github.com/remindmodel/remind/pull/2001", "cm_transpGDPscale" = "Deleted, not used anymore, see https://github.com/remindmodel/remind/pull/2092", + "var_luc" = "Deleted, not used anymore. Land-use CO2 emissions are always RAW now. See https://github.com/remindmodel/remind/pull/2255", NULL) for (i in intersect(names(forbiddenColumnNames), unknownColumnNames)) { msg <- paste0("Column name ", i, " in remind settings is outdated. ", forbiddenColumnNames[i]) diff --git a/scripts/start/run.R b/scripts/start/run.R index 118aac03da..147314bc8b 100644 --- a/scripts/start/run.R +++ b/scripts/start/run.R @@ -108,6 +108,9 @@ run <- function() { timeGAMSEnd <- Sys.time() gams_runtime <- timeGAMSEnd - timeGAMSStart timeOutputStart <- Sys.time() + + # Record the time when the output starts in runtime.log + write(paste(Sys.time(), "output", 0, sep = ","), file = "runtime.log", append = TRUE) # If REMIND actually did run if (cfg$action == "ce" && cfg$gms$c_skip_output != "on") { @@ -156,12 +159,9 @@ run <- function() { #====================== Subsequent runs =========================== - # Use the name to check whether it is a coupled run (TRUE if the name ends with "-rem-xx") - coupled_run <- grepl("-rem-[0-9]{1,2}$",cfg$title) - # Don't start subsequent runs form here if REMIND runs coupled. They are started in start_coupled.R instead. # Only if this run has been restarted manually cfg$restart_subsequent_runs is TRUE. If the run is resumed after # preemtion it is just NULL and isFALSE(NULL) is FALSE, so subsequent standalone runs will be started. - start_subsequent_runs <- ! isFALSE(cfg$restart_subsequent_runs) && ! coupled_run + start_subsequent_runs <- ! isFALSE(cfg$restart_subsequent_runs) if (start_subsequent_runs & (length(rownames(cfg$RunsUsingTHISgdxAsInput)) > 0)) { # track whether any subsequent run was actually started @@ -268,11 +268,18 @@ run <- function() { # get runtime for output timeOutputEnd <- Sys.time() + # Record the time when the run finishes in runtime.log + write(paste(Sys.time(), "end", 0, sep = ","), file = paste0(cfg$results_folder, "/runtime.log"), append = TRUE) + + # Add the runtime.log to runstatistics.rda + runtimeLog <- readr::read_csv(paste0(cfg$results_folder, "/runtime.log"), col_names = c("time","phase", "iteration")) |> suppressMessages() + # Save run statistics to local file cat("\nSaving timeOutputStart and timeOutputEnd to runstatistics.rda\n") - lucode2::runstatistics(file = paste0(cfg$results_folder, "/runstatistics.rda"), + lucode2::runstatistics(file = paste0(cfg$results_folder, "/runstatistics.rda"), timeOutputStart = timeOutputStart, - timeOutputEnd = timeOutputEnd) + timeOutputEnd = timeOutputEnd, + runtimeLog = runtimeLog) return(cfg$results_folder) # on.exit sets working directory back to results folder diff --git a/scripts/start/submit.R b/scripts/start/submit.R index 3e5f3dad79..9c2c56ce42 100644 --- a/scripts/start/submit.R +++ b/scripts/start/submit.R @@ -48,7 +48,7 @@ submit <- function(cfg, restart = FALSE, stopOnFolderCreateError = TRUE) { } else { # we only want to run renv checks/updates in the first run in a cascade: # cfg$UseThisRenvLock is only NULL for the first run in a cascade. - # For a subsequent run it has been set by the parent run in run.R (standalone) or start_coupled.R (coupled). + # For a subsequent run it has been set by the parent run in run.R firstRunInCascade <- is.null(cfg$UseThisRenvLock) if (firstRunInCascade) { if (getOption("autoRenvUpdates", FALSE)) { @@ -86,6 +86,11 @@ submit <- function(cfg, restart = FALSE, stopOnFolderCreateError = TRUE) { createResultsfolderRenv <- function() { renv::init() # will overwrite renv.lock if existing... file.rename("_renv.lock", "renv.lock") # so we need this rename + if (!identical(Sys.info()[["sysname"]], "Windows")) { + # the renv package installation folder is copied from the renv cache, where it might + # be write protected, but we don't want write protection in the results folder + system("chmod ug+w -R renv/library/R-*/*") + } renv::restore(prompt = FALSE) } diff --git a/scripts/utils/set-local-calibration.sh b/scripts/utils/set-local-calibration.sh index 051bc91199..a5c256c760 100755 --- a/scripts/utils/set-local-calibration.sh +++ b/scripts/utils/set-local-calibration.sh @@ -12,7 +12,7 @@ grep -q "^$caldir/$" .gitignore || echo "$caldir/" >> .gitignore cd "$caldir" -git init > /dev/null +git init -b main > /dev/null cp ../scripts/utils/set-local-calibration/collect_calibration ./ cp ../scripts/utils/set-local-calibration/gitignore .gitignore chmod u+x collect_calibration @@ -24,10 +24,10 @@ cp ../scripts/utils/set-local-calibration/pre-commit .git/hooks cp ../scripts/utils/set-local-calibration/post-commit .git/hooks chmod u+x .git/hooks/pre-commit .git/hooks/post-commit -cd "$OLDPWD" - # create additional .Rprofile (sourced through default .Rprofile) echo -e "options(remind_repos = c(\n" \ " getOption(\"remind_repos\"),\n" \ - " stats::setNames(list(x = NULL), \"$PWD/$caldir/\")))" \ - > calibration_results/.Rprofile_calibration_results + " stats::setNames(list(x = NULL), \"$PWD\")))" \ + > .Rprofile_calibration_results + +cd "$OLDPWD" diff --git a/standalone/MOFEX/MOFEX.gms b/standalone/MOFEX/MOFEX.gms index 231d28591c..4336396408 100644 --- a/standalone/MOFEX/MOFEX.gms +++ b/standalone/MOFEX/MOFEX.gms @@ -77,7 +77,7 @@ $setGlobal agCosts costs !! def = costs ***--------------------- 29_CES_parameters -------------------------------- $setglobal CES_parameters load !! def = load ***--------------------- 30_biomass --------------------------------------- -$setGlobal biomass magpie_40 !! def = magpie_40 +$setGlobal biomass magpie !! def = magpie ***--------------------- 31_fossil ---------------------------------------- $setGlobal fossil timeDepGrades !! def = MOFEX ***--------------------- 32_power ---------------------------------------- @@ -209,7 +209,6 @@ cm_import_EU "EU switch for different scenarios of EU SE import a cm_noPeFosCCDeu "switch to suppress Pe2Se Fossil Carbon Capture in Germany" cm_HeatLim_b "switch to set maximum share of district heating in FE buildings" cm_ElLim_b "switch to set maximum share of electricity in FE buildings" -cm_startIter_EDGET "starting iteration of EDGE-T" cm_ARIADNE_FeShareBounds "switch for minimum share of liquids and gases for industry needed for the ARIADNE project" cm_ariadne_trade_el "switch for enabling electricity imports to Germany for ARIADNE project" cm_ariadne_trade_h2 "switch for enabling H2 imports to Germany for ARIADNE project" @@ -233,7 +232,6 @@ cm_iteration_max = 1; !! def = 1 c_solver_try_max = 2; !! def = 2 c_keep_iteration_gdxes = 0; !! def = 0 cm_nash_autoconverge = 1; !! def = 1 -$setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" @@ -335,15 +333,11 @@ $setGlobal cm_pushCalib none !! def = none $setGlobal cm_reducCostB none !! def = none $setGlobal cm_effHP 5 !! def = 5 -$setGlobal cm_EDGEtr_scen ConvCase !! def = ConvCase - $setGlobal c_regi_nucscen all !! def = all $setGlobal c_regi_capturescen all !! def = all $setGlobal c_regi_synfuelscen all !! def = all $setGlobal c_regi_sensscen all !! def = all - - cm_biotrade_phaseout = 0; !! def 0 cm_bioprod_histlim = -1; !! def -1 @@ -377,9 +371,6 @@ cm_noPeFosCCDeu = 0; !! def 0 cm_HeatLim_b = 1; !! def 1 cm_ElLim_b = 1; !! def 1 -cm_startIter_EDGET = 14; !! def 14, by default EDGE-T is run first in iteration 14 - - cm_TaxConvCheck = 0; !! def 0, which means tax convergence check is off diff --git a/standalone/template.gms b/standalone/template.gms index 1f17a9891b..7676faa249 100644 --- a/standalone/template.gms +++ b/standalone/template.gms @@ -74,7 +74,7 @@ $setGlobal agCosts costs !! def = costs ***--------------------- 29_CES_parameters -------------------------------- $setglobal CES_parameters load !! def = load ***--------------------- 30_biomass --------------------------------------- -$setGlobal biomass magpie_40 !! def = magpie_40 +$setGlobal biomass magpie !! def = magpie ***--------------------- 31_fossil ---------------------------------------- $setGlobal fossil timeDepGrades !! def = grades2poly ***--------------------- 32_power ---------------------------------------- @@ -191,7 +191,6 @@ cm_iteration_max = 1; !! def = 1 cm_solver_try_max = 2; !! def = 2 c_keep_iteration_gdxes = 0; !! def = 0 cm_nash_autoconverge = 1; !! def = 1 -$setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" diff --git a/standalone/trade/trade.gms b/standalone/trade/trade.gms index a79472322a..2cecbf7d50 100644 --- a/standalone/trade/trade.gms +++ b/standalone/trade/trade.gms @@ -79,7 +79,7 @@ $setGlobal agCosts costs !! def = costs ***--------------------- 29_CES_parameters -------------------------------- $setglobal CES_parameters load !! def = load ***--------------------- 30_biomass --------------------------------------- -$setGlobal biomass magpie_40 !! def = magpie_40 +$setGlobal biomass magpie !! def = magpie ***--------------------- 31_fossil ---------------------------------------- $setGlobal fossil grades2poly !! def = grades2poly ***--------------------- 32_power ---------------------------------------- @@ -213,7 +213,6 @@ cm_import_EU "EU switch for different scenarios of EU SE import a cm_noPeFosCCDeu "switch to suppress Pe2Se Fossil Carbon Capture in Germany" cm_HeatLim_b "switch to set maximum share of district heating in FE buildings" cm_ElLim_b "switch to set maximum share of electricity in FE buildings" -cm_startIter_EDGET "starting iteration of EDGE-T" cm_ARIADNE_FeShareBounds "switch for minimum share of liquids and gases for industry needed for the ARIADNE project" cm_ariadne_trade_el "switch for enabling electricity imports to Germany for ARIADNE project" cm_ariadne_trade_h2 "switch for enabling H2 imports to Germany for ARIADNE project" @@ -237,7 +236,6 @@ cm_iteration_max = 1; !! def = 1 c_solver_try_max = 2; !! def = 2 c_keep_iteration_gdxes = 0; !! def = 0 cm_nash_autoconverge = 1; !! def = 1 -$setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" @@ -341,16 +339,12 @@ $setGlobal cm_pushCalib none !! def = none $setGlobal cm_reducCostB none !! def = none $setGlobal cm_effHP 5 !! def = 5 -$setGlobal cm_EDGEtr_scen ConvCase !! def = ConvCase - $setGlobal c_regi_nucscen all !! def = all $setGlobal c_regi_capturescen all !! def = all $setGlobal c_regi_synfuelscen all !! def = all $setGlobal c_regi_sensscen all !! def = all - - - + cm_biotrade_phaseout = 0; !! def 0 cm_bioprod_histlim = -1; !! def -1 @@ -383,9 +377,6 @@ cm_noPeFosCCDeu = 0; !! def 0 cm_HeatLim_b = 1; !! def 1 cm_ElLim_b = 1; !! def 1 -cm_startIter_EDGET = 14; !! def 14, by default EDGE-T is run first in iteration 14 - - cm_TaxConvCheck = 0; !! def 0, which means tax convergence check is off diff --git a/start.R b/start.R index df06118639..ff2eb5416d 100755 --- a/start.R +++ b/start.R @@ -112,11 +112,30 @@ if ( 'TRUE' != Sys.getenv('ignoreRenvUpdates') # initialize madrat settings invisible(madrat::getConfig(verbose = FALSE)) +# Define colors for output +red <- "\033[0;31m" +green <- "\033[0;32m" +blue <- "\033[0;34m" +NC <- "\033[0m" # No Color + errorsfound <- 0 # counts ignored errors in --test mode startedRuns <- 0 waitingRuns <- 0 modeltestRunsUsed <- 0 +nonStoppingError <- function(...) { # error display that increments the global errorsfound counter + message(red, "Error", NC, ": ", ...) + errorsfound <<- errorsfound + 1 # operator <<- ensures that the global variable errorsfound is modified +} + +# Returns TRUE if 'fullname' ends with 'extension' (eg. if "C_SSP2-Base/fulldata.gdx" ends with "fulldata.gdx") +# AND if the file given in 'fullname' exists. +.isFileAndAvailable <- function(fullname, extension) { + isTRUE(stringr::str_sub(fullname, -nchar(extension), -1) == extension) && + file.exists(fullname) +} + + ###################### Choose submission type ######################### testOneRegi_region <- "" @@ -129,9 +148,6 @@ if (any(c("--reprepare", "--restart") %in% flags)) { # choose results folder from list searchforfile <- if ("--reprepare" %in% flags) "config.Rdata" else "full.gms" possibledirs <- basename(dirname(Sys.glob(file.path("output", "*", searchforfile)))) - # DK: The following outcommented lines are specially made for listing results of coupled runs - # runs <- lucode2::findCoupledruns("./output/") - # possibledirs <- sub("./output/", "", lucode2::findIterations(runs, modelpath = "./output", latest = TRUE)) outputdirs <- gms::chooseFromList(sort(unique(possibledirs)), returnBoolean = FALSE, type = paste0("runs to be re", ifelse("--reprepare" %in% flags, "prepared", "started"))) if ("--gamscompile" %in% flags) { @@ -209,7 +225,7 @@ if (any(c("--reprepare", "--restart") %in% flags)) { if (is.null(config.file) & "--interactive" %in% flags) { possiblecsv <- Sys.glob(c(file.path("./config/scenario_config*.csv"), file.path("./config","*","scenario_config*.csv"))) - possiblecsv <- possiblecsv[! grepl(".*scenario_config_coupled.*csv$", possiblecsv)] + possiblecsv <- possiblecsv[! grepl(".*scenario_config_magpie.*csv$", possiblecsv)] config.file <- gms::chooseFromList(possiblecsv, type = "one config file", returnBoolean = FALSE, multiple = FALSE) } if (all(c("--testOneRegi", "--interactive") %in% flags)) testOneRegi_region <- selectTestOneRegiRegion() @@ -219,11 +235,51 @@ if (any(c("--reprepare", "--restart") %in% flags)) { # If a scenario_config.csv file was provided, set cfg according to it. if (! length(config.file) == 0) { - cat(paste("\nReading config file", config.file, "\n")) + + # MAgPIE coupling: if a file containing "_magpie" is passed to this script, it activates the coupled mode. + # Read scenario_config_magpie.csv before reading the scenario_config.csv + if (grepl("_magpie", config.file)) { + message("\nStarting REMIND in coupled mode with MAgPIE,\n as you have provided a scenario_config_magpie.csv.\nReading ", config.file) + settings_magpie <- readCheckScenarioConfig(config.file, ".") + scenarios_magpie <- selectScenarios(settings = settings_magpie, interactive = "--interactive" %in% flags, startgroup = startgroup) + config.coupled <- config.file + config.file <- gsub("_magpie", "", config.file) + } + + message("Reading config file ", config.file) # Read-in the switches table, use first column as row names settings <- readCheckScenarioConfig(config.file, ".") - scenarios <- selectScenarios(settings = settings, interactive = "--interactive" %in% flags, startgroup = startgroup) + + if(!exists("scenarios_magpie")) { + # If REMIND runs standalone (not coupled to MAgPIE) select scenarios from standalone config + scenarios <- selectScenarios(settings = settings, interactive = "--interactive" %in% flags, startgroup = startgroup) + } else { + # =================== MAgPIE coupling =================== + + # If REMIND runs coupled to MAgPIE select those scenarios from standalone config that were activated in coupled config + missing <- setdiff(rownames(scenarios_magpie),rownames(settings)) + if (!identical(missing, character(0))) { + message("The following scenarios are given in '",config.coupled ,"' but could not be found in '", config.file, "':") + message(" ", paste(missing, collapse = ", "), "\n") + } + common <- intersect(rownames(settings), rownames(scenarios_magpie)) + if (! identical(common, character(0))) { + message("\n################################\n") + message("The following ", length(common), " scenarios will be started:") + message(" ", paste(common, collapse = ", ")) + } else { + stop("No scenario found with start=", startgroup, " in ", config.coupled, " that is also defined in ", config.file, ".") + } + scenarios <- settings[common,] + + # General settings for MAgPIE coupling (independent of the scenario) + path_magpie <- normalizePath(file.path(getwd(), "magpie"), mustWork = FALSE) + if (! dir.exists(path_magpie)) path_magpie <- normalizePath(file.path(getwd(), "..", "magpie"), mustWork = FALSE) + + # ======================================================= + } + } else { # if no csv was provided create dummy list with default/testOneRegi as the only scenario if (any(c("--quick", "--testOneRegi") %in% flags)) { @@ -238,8 +294,6 @@ if (any(c("--reprepare", "--restart") %in% flags)) { scenarios <- addTitletag(titletag = titletag, scenarios = scenarios) } - ###################### Loop over scenarios ############################### - # ask for slurmConfig if not specified for every run if ("--gamscompile" %in% flags) { slurmConfig <- "direct" @@ -259,6 +313,8 @@ if (any(c("--reprepare", "--restart") %in% flags)) { } } + ###################### Loop over scenarios ############################### + # Modify and save cfg for all runs for (scen in rownames(scenarios)) { @@ -276,8 +332,7 @@ if (any(c("--reprepare", "--restart") %in% flags)) { cfg$gms$optimization <- "testOneRegi" cfg$output <- NA cfg$results_folder <- paste0("output/", cfg$title) - # delete existing Results directory - cfg$force_replace <- TRUE + cfg$force_replace <- TRUE # delete existing Results directory if (testOneRegi_region != "") cfg$gms$c_testOneRegi_region <- testOneRegi_region } if ("--quick" %in% flags) { @@ -290,10 +345,12 @@ if (any(c("--reprepare", "--restart") %in% flags)) { # configure cfg according to settings from csv if provided if (! length(config.file) == 0) { + if (exists("scenarios_magpie")) cfg$gms$cm_MAgPIE_Nash <- 1 # activate MAgPIE coupling, used in configureCfg below cfg <- configureCfg(cfg, scen, scenarios, verboseGamsCompile = ! "--gamscompile" %in% flags || "--interactive" %in% flags) errorsfound <- sum(errorsfound, cfg$errorsfoundInConfigureCfg) cfg$errorsfoundInConfigureCfg <- NULL + # set optimization mode to testOneRegi, if specified as command line argument if (any(c("--quick", "--testOneRegi") %in% flags)) { cfg$description <- paste("testOneRegi:", cfg$description) @@ -326,6 +383,179 @@ if (any(c("--reprepare", "--restart") %in% flags)) { # abort on too long paths ---- cfg$gms$cm_CES_configuration <- calculate_CES_configuration(cfg, check = TRUE) + # offer to copy existing gdx when missing required calibration gdx (interactive mode only) ---- + if ("--interactive" %in% flags && cfg$gms$CES_parameters == "calibrate") { + gdxFolder <- "./config/gdx-files" + gdxConfig <- file.path(gdxFolder, paste0(cfg$gms$cm_CES_configuration, ".gdx")) + if (!file.exists(gdxConfig)) { + message("\nCalibration requires a starting gdx that does not exist:\n ", gdxConfig) + abortText <- paste0("Please copy the gdx file with the closest configuration and paste it to:\n ", gdxConfig, "\n") + + # List available gdx files + gdxFiles <- list.files(gdxFolder, pattern = "\\.gdx$", full.names = TRUE) + if (length(gdxFiles) > 0) { # length is zero when input data has not been collected yet and copying gdx is impossible + # Prompt user to choose an existing gdx file + gdxClosest <- gdxFiles[which.min(adist(basename(gdxConfig), basename(gdxFiles)))] # existing file with the closest name + abortOption <- paste0(crayon::red("ABORT"), ": you will then need to copy the gdx of your choice manually") + gdxFiles <- c(abortOption, gdxFiles) + gdxSelection <- gdxFiles[gms::chooseFromList( + ifelse(gdxFiles == gdxClosest, crayon::cyan(gdxFiles), gdxFiles), + type = "an existing gdx file that you would like to use", + userinfo = paste0("Leave empty to select existing gdx with ", crayon::cyan("most similar name")), + returnBoolean = TRUE, + multiple = FALSE + )] + + if (length(gdxSelection) == 0) { gdxSelection <- gdxClosest } # default option + if (gdxSelection == abortOption || !file.copy(gdxSelection, gdxConfig)) { # abort option or copy failure + nonStoppingError(abortText) + } else { + message("Copied: ", gdxSelection, "\n to: ", gdxConfig, "\n") + + # Add the .gdx and .inc to list of possible names + addLine <- function(line, path = "files") { + if (!file.exists(path)) message(path, " does not exist, you may have to manually add ", line) + else if (!(line %in% readLines(path))) { + write(line, path, append = TRUE) + message("Added in ", path, " the line ", line) + } + } + addLine(paste0(cfg$gms$cm_CES_configuration, ".gdx"), path = file.path(gdxFolder, "files")) + addLine(paste0(cfg$gms$cm_CES_configuration, ".inc"), path = file.path("./modules/29_CES_parameters/load/input", "files")) + } + } + } + } + + # =================== MAgPIE coupling =================== + + if (exists("scenarios_magpie")) { + + # Overwrite magpieIter with values from scenarios_magpie + if ("magpieIter" %in% names(scenarios_magpie) && !is.na(scenarios_magpie[scen, "magpieIter"])) { + cfg$gms$c_magpieIter <- scenarios_magpie[scen, "magpieIter"] + } + + # If a starting point was provided find out what it is and how to continue + if ("continueFromHere" %in% names(scenarios_magpie) && !is.na(scenarios_magpie[scen, "continueFromHere"])) { + # Let magpie.R run in first Nash iteration + cfg$gms$c_magpieIter <- paste0("1,", cfg$gms$c_magpieIter) + + # Find out what is in continueFromHere + if (.isFileAndAvailable(scenarios_magpie[scen, "continueFromHere"], "report.mif")) { + # Is a MAgPIE report + # -> continue with REMIND: dont run MAgPIE, only run getMagpieData() + cfg$continueFromHere <- c("getMagpieData" = scenarios_magpie[scen, "continueFromHere"]) + message(" Continuing MAgPIE coupling from MAgPIE report ", scenarios_magpie[scen, "continueFromHere"]) + } else if (.isFileAndAvailable(scenarios_magpie[scen, "continueFromHere"], ".mif")) { + # If its not a report.mif but a mif assume it is a REMIND_generic_*.mif + # -> continue with MAgPIE without producing a REMIND report + cfg$continueFromHere <- c("runMAgPIE" = scenarios_magpie[scen, "continueFromHere"]) + # Take gdx of the run that is to be continued as start gdx + cfg$files2export$start["input.gdx"] <- file.path(dirname(scenarios_magpie[scen, "continueFromHere"]), "fulldata.gdx") + message(" Continuing MAgPIE coupling from REMIND report ", scenarios_magpie[scen, "continueFromHere"]) + } else if (.isFileAndAvailable(scenarios_magpie[scen, "continueFromHere"], "fulldata.gdx")) { + # If its a fulldata.gdx assume it is from REMIND + # -> continue with MAgPIE and and produce a REMIND report (= run the full magpie.R) + cfg$continueFromHere <- c("full" = scenarios_magpie[scen, "continueFromHere"]) + # Take gdx of the run that is to be continued as start gdx + cfg$files2export$start["input.gdx"] <- scenarios_magpie[scen, "continueFromHere"] + message(" Continuing MAgPIE coupling from REMIND gdx ", scenarios_magpie[scen, "continueFromHere"]) + } else { + nonStoppingError("Could not find what is given in 'scenarios_magpie[scen, continueFromHere]': ", scenarios_magpie[scen, "continueFromHere"]) + } + } + + cfg$title <- paste0("C_", cfg$title) # add prefix indicating a coupled run + cfg$output <- c(setdiff(cfg$output, "plotRemMagNash"), "plotRemMagNash") # plot convergence + cfg$path_magpie <- path_magpie + cfg$magpie_empty <- isTRUE(scenarios_magpie[scen, "magpie_empty"]) # if magpie should be replaced by an empty model + cfg$slurmConfig <- combine_slurmConfig(cfg$slurmConfig, "--comment=REMIND-MAgPIE") + + magpieEnv <- new.env() + source(file.path(path_magpie, "config", "default.cfg"), local = magpieEnv) # retrieve MAgPIE settings + cfg_mag <- magpieEnv$cfg + + cfg_mag$sequential <- TRUE + cfg_mag$force_replace <- TRUE + + # extract columns from coupled config that define magpie scenarios + # the column must be named 'magpie_scen' (then the default config/scenario_config.csv will be loaded) + # or they have to have the path to a scenario_config*.csv as their name + magpieScenarios <- scenarios_magpie[scen, grepl("scenario_config|magpie_scen", colnames(scenarios_magpie)), drop = FALSE] + + # configure MAgPIE using the scenarios extracted above + message("Configuring MAgPIE") + if (nrow(magpieScenarios) > 0) { + for (i in seq_len(ncol(magpieScenarios))) { + pathToScenarioConfig <- colnames(magpieScenarios)[i] + # backwards compatibility: if the column name is 'magpie_scen' use the 'config/scenario_config.csv' + pathToScenarioConfig <- ifelse(pathToScenarioConfig == "magpie_scen", "config/scenario_config.csv", pathToScenarioConfig) + scenarioList <- magpieScenarios[,i] + if(!is.na(scenarioList)) { + cfg_mag <- setScenario(cfg_mag, trimws(unlist(strsplit(scenarioList, split = ",|\\|"))), + scenario_config = file.path(path_magpie, pathToScenarioConfig)) + } + } + } + + # always select 'coupling' scenario + cfg_mag <- gms::setScenario(cfg_mag, "coupling", scenario_config = file.path(path_magpie, "config", "scenario_config.csv")) + + # extract magpie switches from coupled config, replace NA otherwise setScenario complains + magpieSwitches <- scenarios_magpie %>% select(contains("cfg_mag")) %>% t() %>% as.data.frame() %>% replace(is.na(.), "") + + # configure MAgPIE according to individual switches provided in scenario_config_magpie*.csv + if (nrow(magpieSwitches) > 0) { + # remove prefix "cfg_mag$" from switch names to yield original MAgPIE names + row.names(magpieSwitches) <- gsub("cfg_mag\\$", "", row.names(magpieSwitches)) + cfg_mag <- setScenario(cfg_mag, scen, scenario_config = magpieSwitches) + } + + cfg_mag <- check_config(cfg_mag, reference_file = file.path(path_magpie, "config", "default.cfg"), + modulepath = file.path(path_magpie, "modules")) + + # GHG prices will be set to zero (in MAgPIE) until and including the year specified here + cfg_mag$gms$c56_mute_ghgprices_until <- scenarios_magpie[scen, "no_ghgprices_land_until"] + + # if provided use ghg prices for land (MAgPIE) from a different REMIND run than the one MAgPIE runs coupled to + path_mif_ghgprice_land <- NULL + if ("path_mif_ghgprice_land" %in% names(scenarios_magpie)) { + if (! is.na(scenarios_magpie[scen, "path_mif_ghgprice_land"])) { + if (.isFileAndAvailable(scenarios_magpie[scen, "path_mif_ghgprice_land"], ".mif")) { + # if real file is given (has ".mif" at the end) take it for path_mif_ghgprice_land + path_mif_ghgprice_land <- normalizePath(scenarios_magpie[scen, "path_mif_ghgprice_land"]) + } else if (scenarios_magpie[scen, "path_mif_ghgprice_land"] %in% common) { + # if no real file is given but a reference to another scenario (that has to run first) create path to the reference scenario + #ghgprice_remindrun <- paste0(prefix_runname, scenarios_magpie[scen, "path_mif_ghgprice_land"], "-rem-", i) + #path_mif_ghgprice_land <- file.path(path_remind, "output", ghgprice_remindrun, paste0("REMIND_generic_", ghgprice_remindrun, ".mif")) + nonStoppingError("path_mif_ghgprice_land must be a path to an existing file and cannot reference another scenario by name currently: ", + scenarios_magpie[scen, "path_mif_ghgprice_land"]) + path_mif_ghgprice_land <- FALSE + } else { + nonStoppingError("path_mif_ghgprice_land is neither an existing file nor a scenario that will be started: ", + scenarios_magpie[scen, "path_mif_ghgprice_land"]) + path_mif_ghgprice_land <- FALSE + } + cfg_mag$path_to_report_ghgprices <- path_mif_ghgprice_land + } + } + + #if (cfg_rem$gms$optimization == "nash" && cfg_rem$gms$cm_nash_mode == 2 && isFALSE(magpie_empty)) { + # # for nash: set the number of CPUs per node to number of regions + 1 + # numberOfTasks <- length(unique(read.csv2(cfg_rem$regionmapping)$RegionCode)) + 1 + #} else { + # # for negishi and model tests: use only one CPU + # numberOfTasks <- 1 + #} + + errorsfound <- errorsfound + checkSettingsRemMag(cfg, cfg_mag, testmode = "--test" %in% flags) + + cfg <- append(cfg, list("cfg_mag" = cfg_mag)) + } + + # ================== End MAgPIE ========================= + cfg <- checkFixCfg(cfg, testmode = "--test" %in% flags) if ("errorsfoundInCheckFixCfg" %in% names(cfg)) { errorsfound <- errorsfound + cfg$errorsfoundInCheckFixCfg @@ -346,6 +576,16 @@ if (any(c("--reprepare", "--restart") %in% flags)) { errorsfound <- errorsfound + ! gcresult } else if (start_now) { if (errorsfound == 0) { + caldir <- "calibration_results/" + if (cfg$gms$CES_parameters == "calibrate" && !dir.exists(caldir)) { + if (0 == system("./scripts/utils/set-local-calibration.sh")) { + message(" Folder ", caldir, " has been automatically set up.") + cfg$repositories <- append(cfg$repositories, setNames(list(NULL), normalizePath(caldir))) + source(file.path(caldir, ".Rprofile_calibration_results")) + } else { + warning(" Could not set up ", caldir, " automatically. Please run 'make set-local-calibration' manually.") + } + } submit(cfg) } else { message(" Not started, as errors were found.") @@ -360,7 +600,7 @@ if (any(c("--reprepare", "--restart") %in% flags)) { message(" Subsequent runs: ", paste(rownames(cfg$RunsUsingTHISgdxAsInput), collapse = ", ")) } } - } + } # end scenario loop message("") if (exists("lockID")) gms::model_unlock(lockID) } diff --git a/start_bundle_coupled.R b/start_bundle_coupled.R deleted file mode 100755 index 7c3a0e6089..0000000000 --- a/start_bundle_coupled.R +++ /dev/null @@ -1,715 +0,0 @@ -#!/usr/bin/env Rscript -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | REMIND License Exception, version 1.0 (see LICENSE file). -# | Contact: remind@pik-potsdam.de -if (is.null(renv::project())) { - stop("No renv found. Coupled runs must run via renv.") -} -require(lucode2) -require(magclass) -require(gms) -require(remind2) -require(gtools) # required for mixedsort() -require(dplyr) # for filter, secelt, %>% -require(stringr) # for str_sub - -helpText <- " -#' Usage: -#' Before running this script, edit start_bundle_coupled.R -#' and specify the user settings -#' -#' Rscript start_bundle_coupled.R [options] -#' Rscript start_bundle_coupled.R scenario_config_coupled_*.csv -#' Rscript start_bundle_coupled.R --test scenario_config_coupled_*.csv -#' -#' scenario_config_coupled_*.csv must be a coupled scenario config .csv file (usually -#' in the config/ directory), which corresponds to a normal scenario_config_*.csv file. -#' Using this will start all REMIND runs specified by \"start = 1\" in that file -#' (check the startgroup option to start a specific group). -#' -#' Control the script's behavior by providing additional arguments: -#' -#' --help, -h: show this help text and exit -#' --gamscompile, -g: compile gms of all selected runs. Combined with -#' --interactive, it stops in case of compilation -#' errors, allowing to fix them and rerun gamscompile -#' --interactive, -i: interactively select run(s) to be started. Asks for -#' config file also if the one specified as -#' path_settings_coupled cannot be found. -#' --test, -t: Test scenario configuration without starting the runs. -#' startgroup=MYGROUP when reading a scenario config .csv file, don't start -#' everything specified by \"start = 1\", instead start -#' everything specified by \"start = MYGROUP\" -" - -######################################################################################################## -################################# U S E R S E T T I N G S ########################################### -######################################################################################################## - -# Please provide all files and paths relative to the folder where start_coupled is executed -path_remind <- getwd() # provide path to REMIND. Default: the actual path which the script is started from -path_magpie <- normalizePath(file.path(getwd(), "magpie"), mustWork = FALSE) -if (! dir.exists(path_magpie)) path_magpie <- normalizePath(file.path(getwd(), "..", "magpie"), mustWork = FALSE) - -# Paths to the files where scenarios are defined -# path_settings_remind contains the detailed configuration of the REMIND scenarios -# path_settings_coupled defines which runs will be started, coupling infos, and optimal gdx and report information that overrides path_settings_remind -# these settings will be overwritten if you provide the path to the coupled file as first command line argument -path_settings_coupled <- file.path(path_remind, "config", "scenario_config_coupled.csv") -path_settings_remind <- sub("scenario_config_coupled", "scenario_config", path_settings_coupled) - # file.path(path_remind, "config", "scenario_config.csv") - -# You can put a prefix in front of the names of your runs, this will turn e.g. "SSP2-Base" into "prefix_SSP2-Base". -# This allows storing results of multiple coupled runs (which have the same scenario names) in the same MAgPIE and REMIND output folders. -prefix_runname <- "C_" - -# If there are existing runs you would like to take the gdxes (REMIND) or reportings (REMIND or MAgPIE) from, provide the path here and the name prefix below. -# Note: the scenario names of the old runs have to be identical to the runs that are to be started. If they differ please provide the names of the old scenarios in the -# file that you specified on path_settings_coupled (scenario_config_coupled_xxx.csv). -path_remind_oldruns <- file.path(path_remind, "output") -path_magpie_oldruns <- file.path(path_magpie, "output") - -# If you want the script to find gdxs or reports of older runs as starting point for new runs please -# provide the prefix of the old run names so the script can find them. -prefix_oldruns <- "C_" - -# number of coupling iterations, can also be specified in path_settings_coupled -max_iterations <- 5 - -# Number of coupling iterations (before final iteration) in which MAgPIE uses higher n600 resolution. -# Until "max_iterations - n600_iterations" iteration MAgPIE runs with n200 resolution. -# Afterwards REMIND runs for "n600_iterations" iterations with results from higher resolution. -n600_iterations <- 0 # max_iterations - -# Use this qos if none is specified in config file. "auto" means use "priority" slot if available, else "short" -qos_default <- "auto" - -# run a compareScenario for each scenario comparing all rem-x: Choose qos (short, priority) or set to FALSE -run_compareScenarios <- "short" - -# use an empty magpie model (just reproduces the latest AMT results) -magpie_empty <- FALSE - -######################################################################################################## -################################# load command line arguments ######################################## -######################################################################################################## - -# Source everything from scripts/start so that all functions are available everywhere -invisible(sapply(list.files("scripts/start", pattern = "\\.R$", full.names = TRUE), source)) - -# Define colors for output -red <- "\033[0;31m" -green <- "\033[0;32m" -blue <- "\033[0;34m" -NC <- "\033[0m" # No Color - -# define arguments that are accepted (test for backward compatibility) -startgroup <- "1" -flags <- lucode2::readArgs("startgroup", .flags = c(h = "--help", g = "--gamscompile", i = "--interactive", t = "--test")) -if (! exists("argv")) argv <- commandArgs(trailingOnly = TRUE) -if ("--help" %in% flags) { - message(helpText) - q() -} -if ("test" %in% argv) flags <- unique(c(flags, "--test")) - -# load arguments from command line -argv <- grep('(^-|=|^test$)', argv, value = TRUE, invert = TRUE) -if (length(argv) > 0) { - file_exists <- file.exists(argv) - if (sum(file_exists) > 1) stop("Enter only a scenario_config_coupled* file via command line or set all files manually in start_bundle_coupled.R") - if (!all(file_exists)) stop("Unknown parameter provided: ", paste(argv[!file_exists], collapse = ", ")) - # set config file to not known parameter where the file actually exists - path_settings_coupled <- normalizePath(argv[[1]]) - if (! isTRUE(grepl("scenario_config_coupled", path_settings_coupled))) - stop("Enter only a scenario_config_coupled* file via command line or set all files manually in start_bundle_coupled.R.\n", - "Your command line arguments were: ", paste0(argv, collapse = " ")) - path_settings_remind <- sub("scenario_config_coupled", "scenario_config", path_settings_coupled) -} else if (! file.exists(path_settings_coupled)) { - possiblecsv <- Sys.glob(c(file.path("config", "scenario_config_coupled*.csv"), - file.path("config", "*", "scenario_config_coupled*.csv"))) - path_settings_coupled <- gms::chooseFromList(possiblecsv, type = "one coupled config file", returnBoolean = FALSE, multiple = FALSE) - path_settings_remind <- sub("scenario_config_coupled", "scenario_config", path_settings_coupled) - message("") -} - -dir.create(file.path(path_remind, "output"), showWarnings = FALSE) -dir.create(file.path(path_magpie, "output"), showWarnings = FALSE) - -ensureRequirementsInstalled(rerunPrompt = "start_bundle_coupled.R") - -piamenv::installDeps(path_magpie) - -errorsfound <- 0 -startedRuns <- NULL -finishedRuns <- NULL -waitingRuns <- NULL -qosRuns <- list() -deletedFolders <- NULL - -stamp <- format(Sys.time(), "_%Y-%m-%d_%H.%M.%S") - -message("path_remind: ", if (dir.exists(path_remind)) green else red, path_remind, NC) -message("path_magpie: ", if (dir.exists(path_magpie)) green else red, path_magpie, NC) -message("path_settings_coupled: ", if (file.exists(path_settings_coupled)) green else red, path_settings_coupled, NC) -message("path_settings_remind: ", if (file.exists(path_settings_remind)) green else red, path_settings_remind, NC) -message("path_remind_oldruns: ", if (dir.exists(path_remind_oldruns)) green else red, path_remind_oldruns, NC) -message("path_magpie_oldruns: ", if (dir.exists(path_magpie_oldruns)) green else red, path_magpie_oldruns, NC) -message("prefix_runname: ", prefix_runname) -message("n600_iterations: ", n600_iterations) -message("run_compareScenarios: ", run_compareScenarios) - -if (any(! file.exists(c(path_settings_coupled, path_settings_remind))) || - any(! dir.exists(c(path_remind, path_magpie, path_remind_oldruns, path_magpie_oldruns)))) { - stop("Missing files or directories, see in red above.") -} - -#################################################### -############## F U N C T I O N S ################### -#################################################### -.setgdxcopy <- function(needle, stack, new){ - # delete entries in stack that contain needle and append new - matches <- grepl(needle, stack) - out <- c(stack[!matches], new) - return(out) -} - -# Returns TRUE if fullname ends with extension (eg. if "C_SSP2-Base/fulldata.gdx" ends with "fulldata.gdx") -# AND if the file given in fullname exists. -.isFileAndAvailable <- function(fullname, extension) { - isTRUE(stringr::str_sub(fullname, -nchar(extension), -1) == extension) && - file.exists(fullname) -} - -# find last REMIND / MAgPIE run -findLastRem <- function(folder, scenario) { - filesfound <- Sys.glob(file.path(folder, paste0(scenario, "-rem-*"), "fulldata.gdx")) - filesfound <- grep("-rem-[0-9]+.fulldata\\.gdx$", filesfound, value = TRUE) - return(mixedsort(filesfound)[1]) -} -findLastMag <- function(folder, scenario) { - filesfound <- Sys.glob(file.path(folder, paste0(scenario, "-mag-*"), "report.mif")) - filesfound <- grep("-mag-[0-9]+.report\\.mif$", filesfound, value = TRUE) - return(mixedsort(filesfound)[1]) -} - -#################################################### -############## READ SCENARIO FILES ################ -#################################################### -# Read-in the switches table, use first column as row names - -settings_coupled <- readCheckScenarioConfig(path_settings_coupled, path_remind) -settings_remind <- readCheckScenarioConfig(path_settings_remind, path_remind) - -scenarios_coupled <- selectScenarios(settings = settings_coupled, - interactive = "--interactive" %in% flags, - startgroup = startgroup) - -missing <- setdiff(rownames(scenarios_coupled),rownames(settings_remind)) -if (!identical(missing, character(0))) { - message("The following scenarios are given in '", path_settings_coupled, - "' but could not be found in '", path_settings_remind, "':") - message(" ", paste(missing, collapse = ", "), "\n") -} - -if ("max_iterations" %in% colnames(scenarios_coupled)) { - if (nrow(unique(scenarios_coupled["max_iterations"])) > 1) { - stop("You have specified different `max_iterations` for different scenarios, that is not supported.") - } - max_iterations <- scenarios_coupled[1, "max_iterations"] -} -message("max_iterations: ", max_iterations) - -common <- intersect(rownames(settings_remind), rownames(scenarios_coupled)) -knownRefRuns <- apply(expand.grid(prefix_runname , common, "-rem-", seq(max_iterations)), 1, paste, collapse="") -knownRefRuns <- gsub(" ", "", knownRefRuns) # if max_iterations has two digits apply in the line above introduces whitespaces before the single-digit iterations ("rem- 9"). Remove them. - -if (! identical(common, character(0))) { - message("\n################################\n") - message("The following ", length(common), " scenarios will be started:") - message(" ", paste(common, collapse = ", ")) -} else { - stop("No scenario found with start=", startgroup, " in ", basename(path_settings_coupled), " that is also defined in ", basename(path_settings_remind), ".") -} -message("") - -# If provided replace gdx paths given in scenario_config with paths given in scenario_config_coupled -for (scen in common) { - use_path_gdx <- names(path_gdx_list)[! is.na(scenarios_coupled[scen, names(path_gdx_list)])] - if (length(use_path_gdx) > 0) { - settings_remind[scen, use_path_gdx] <- scenarios_coupled[scen, use_path_gdx] - message("For ", scen, ", use data specified in coupled config for: ", paste(use_path_gdx, collapse = ", "), ".") - } -} - -# assign qos_default as defined above to runs without qos specification -if (! "qos" %in% names(scenarios_coupled)) scenarios_coupled[, "qos"] <- qos_default -scenarios_coupled[, "qos"] <- ifelse(is.na(scenarios_coupled[, "qos"]), qos_default, scenarios_coupled[, "qos"]) - -#################################################### -######## PREPARE AND START COUPLED RUNS ############ -#################################################### - -# initialize madrat settings -invisible(madrat::getConfig(verbose = FALSE)) - -# prepare runs: write RData files -for(scen in common){ - message("\n################################\nPreparing run ", scen, "\n") - - start_now <- FALSE # initalize, will be overwritten if all conditions are satisfied - runname <- paste0(prefix_runname, scen) # name of the run that is used for the folder names - path_report <- NULL # sets the path to the report REMIND is started with in the first loop - qos <- scenarios_coupled[scen, "qos"] # set the SLURM quality of service (priority/short/medium/...) - sbatch <- scenarios_coupled[scen, "sbatch"] # retrieve sbatch options from scenarios_coupled - if (is.null(sbatch) || is.na(sbatch)) sbatch <- "" # if sbatch could not be found in scenarios_coupled use empty string - start_iter_first <- 1 # iteration to start the coupling with - scenarios_coupled[scen, "start_iter_first"] <- start_iter_first # is used again when starting runs - magpie_empty <- scenarios_coupled[scen, "magpie_empty"] # if magpie should be replaced by an empty model - if (is.null(magpie_empty) || is.na(magpie_empty)) magpie_empty <- FALSE - if (isTRUE(magpie_empty)) run_compareScenarios <- FALSE # no need to run cs2 on empty model - - # Check for existing REMIND and MAgPIE runs and whether iteration can be continued from those (at least one REMIND iteration has to exist!) - # Look whether there is already a fulldata.gdx from a former REMIND run (check for old name if provided) - iter_rem <- 0 - already_rem <- findLastRem(file.path(path_remind, "output"), runname) - if (! is.na(already_rem)) { - iter_rem <- as.integer(sub(".*rem-(\\d.*)/.*","\\1", already_rem)) - } else { - message("No ", scen, " run found in current REMIND directory, now search for oldrun.") - if (.isFileAndAvailable(scenarios_coupled[scen, "oldrun"], "/fulldata.gdx")) { - already_rem <- scenarios_coupled[scen, "oldrun"] - } else { - lookfor <- if (is.na(scenarios_coupled[scen, "oldrun"])) scen else scenarios_coupled[scen, "oldrun"] - already_rem <- findLastRem(path_remind_oldruns, paste0(prefix_oldruns, lookfor)) - } - } - - if (.isFileAndAvailable(settings_remind[scen, "path_gdx"], "/fulldata.gdx")) { - # if there is a REMIND gdx given in scenario_cofig or scenario_config_coupled, use it instead of the one found automatically - message("Using REMIND gdx specified in ", basename(path_settings_coupled), - " or ", basename(path_settings_remind),": ", settings_remind[scen, "path_gdx"]) - } else if (! is.na(already_rem)) { - # if there is an existing REMIND run, use its gdx for the run to be started - settings_remind[scen, "path_gdx"] <- normalizePath(already_rem) - message("Found REMIND gdx here: ", normalizePath(already_rem)) - } else { - message("No ", scen, " run found in REMIND oldrun directory, starting with ", runname, "-rem-1.") - } - - # is there already a MAgPIE run with this name? - iter_mag <- 0 - already_mag <- findLastMag(file.path(path_magpie, "output"), runname) - if (! is.na(already_mag)) { - iter_mag <- as.integer(sub(".*mag-(\\d.*)/.*","\\1",already_mag)) - } else { - message("No ", scen, " run found in current MAgPIE directory, continue with oldrun") - lookfor <- if (is.na(scenarios_coupled[scen, "oldrun"])) scen else scenarios_coupled[scen, "oldrun"] - already_mag <- findLastMag(path_magpie_oldruns, paste0(prefix_oldruns, lookfor)) - } - - path_report_found <- NULL - if (.isFileAndAvailable(scenarios_coupled[scen, "path_report"], "/report.mif")) { - path_report_found <- scenarios_coupled[scen, "path_report"] - message("Using MAgPIE report specified in ", basename(path_settings_coupled), ": ", scenarios_coupled[scen, "path_report"]) - } else if (! is.na(already_mag)) { - path_report_found <- normalizePath(already_mag) - message("Found MAgPIE report here: ", path_report_found) - } else { - message("No ", scen, " run found in MAgPIE oldrun directory, starting REMIND standalone.") - } - - # decide whether to continue with REMIND or MAgPIE - scenarios_coupled[scen, "start_magpie"] <- FALSE - scenarios_coupled[scen, "start_scenario"] <- TRUE - if (iter_rem == iter_mag + 1 & iter_rem < max_iterations) { - # if only remind has finished an iteration -> start with magpie in this iteration using a REMIND report - start_iter_first <- iter_rem - path_run <- gsub("/fulldata.gdx", "", already_rem) - path_report_found <- Sys.glob(file.path(path_run, "REMIND_generic_*"))[1] # take the first entry to ignore REMIND_generic_*_withoutPlus.mif - if (is.na(path_report_found)) stop("There is a fulldata.gdx but no REMIND_generic_.mif in ", path_run, - ".\nPlease use Rscript output.R to produce it.") - message("Found REMIND report here: ", path_report_found) - message("Starting MAgPIE run ", runname, "-mag-", start_iter_first, ".") - scenarios_coupled[scen, "start_magpie"] <- TRUE - } else if (iter_rem == iter_mag) { - # if remind and magpie iteration is the same -> start next iteration with REMIND with or without MAgPIE report - start_iter_first <- iter_rem + 1 - message("REMIND and MAgPIE ", if (iter_rem == 0) "were never started" else paste("each finished run", iter_rem), ".") - message("Starting REMIND run ", runname, "-rem-", start_iter_first, ".") - } else if (iter_rem >= max_iterations & iter_mag >= max_iterations - 1) { - message("This scenario is already completed with rem-", iter_rem, " and mag-", iter_mag, " and max_iterations=", max_iterations, ".") - scenarios_coupled[scen, "start_scenario"] <- FALSE - finishedRuns <- c(finishedRuns, scen) - next - } else { - message(red, "Error", NC, ": REMIND has finished ", iter_rem, " runs, but MAgPIE ", iter_mag, " runs. Something is wrong!") - errorsfound <- errorsfound + 1 - } - # save to use it later when starting runs - scenarios_coupled[scen, "start_iter_first"] <- start_iter_first - - - cfg <- readDefaultConfig(path_remind) # retrieve REMIND settings - cfg_rem <- cfg - rm(cfg) - cfg_rem$title <- scen - cfg_rem$files2export$start <- c(cfg_rem$files2export$start, path_settings_coupled, path_settings_remind) - rem_filesstart <- cfg_rem$files2export$start # save to reset it to that later - - source(file.path(path_magpie, "config", "default.cfg")) # retrieve MAgPIE settings - cfg_mag <- cfg - rm(cfg) - cfg_mag$title <- scen - - # extract columns from coupled config that define magpie scenarios - # the column must be named 'magpie_scen' (then the default config/scenario_config.csv will be loaded) - # or they have to have the path to a scenario_config*.csv as their name - magpieScenarios <- scenarios_coupled[scen, grepl("scenario_config|magpie_scen", colnames(scenarios_coupled)), drop = FALSE] - - # configure MAgPIE using the scenarios extracted above - if (nrow(magpieScenarios) > 0) { - for (i in seq_len(ncol(magpieScenarios))) { - pathToScenarioConfig <- colnames(magpieScenarios)[i] - # backwards compatibility: if the column name is 'magpie_scen' use the 'config/scenario_config.csv' - pathToScenarioConfig <- ifelse(pathToScenarioConfig == "magpie_scen", "config/scenario_config.csv", pathToScenarioConfig) - scenarioList <- magpieScenarios[,i] - if(!is.na(scenarioList)) { - cfg_mag <- setScenario(cfg_mag, trimws(unlist(strsplit(scenarioList, split = ",|\\|"))), - scenario_config = file.path(path_magpie, pathToScenarioConfig)) - } - } - } - - # always select 'coupling' scenario - cfg_mag <- setScenario(cfg_mag, "coupling", scenario_config = file.path(path_magpie, "config", "scenario_config.csv")) - - # extract magpie switches from coupled config, replace NA otherwise setScenario complains - magpieSwitches <- scenarios_coupled %>% select(contains("cfg_mag")) %>% t() %>% as.data.frame() %>% replace(is.na(.), "") - - # configure MAgPIE according to individual switches provided in scenario_config_coupled*.csv - if (nrow(magpieSwitches) > 0) { - # remove prefix "cfg_mag$" from switch names to yield original MAgPIE names - row.names(magpieSwitches) <- gsub("cfg_mag\\$", "", row.names(magpieSwitches)) - cfg_mag <- setScenario(cfg_mag, scen, scenario_config = magpieSwitches) - } - - cfg_mag <- check_config(cfg_mag, reference_file=file.path(path_magpie, "config", "default.cfg"), - modulepath = file.path(path_magpie, "modules")) - - # GHG prices will be set to zero (in MAgPIE) until and including the year specified here - if (!is.null(cfg_mag$gms$c56_mute_ghgprices_until)) { - # Use the new name of the switch if it exists - cfg_mag$gms$c56_mute_ghgprices_until <- scenarios_coupled[scen, "no_ghgprices_land_until"] - } else { - # To ensure backwards compatibility keep the old switch here for a while (has been transformed into a gms switch in MAgPIE) - cfg_mag$mute_ghgprices_until <- scenarios_coupled[scen, "no_ghgprices_land_until"] - } - - # Write choice of land-use change variable to config. Use smoothed variable - # if not specified otherwise in coupled config, i.e. if the column is missing - # completely or if the row entry is empty. - if (! "var_luc" %in% names(scenarios_coupled) || is.na(scenarios_coupled[scen, "var_luc"])) { - cfg_rem$var_luc <- "smooth" - } else if (scenarios_coupled[scen, "var_luc"] %in% c("smooth", "raw")) { - cfg_rem$var_luc <- scenarios_coupled[scen, "var_luc"] - } else { - stop(paste0("Unkown setting in coupled config file for 'var_luc': `", scenarios_coupled[scen, "var_luc"], "`. Please chose either `smooth` or `raw`")) - } - - # Edit remind main model file, region settings and input data revision based on scenarios table, if cell non-empty - cfg_rem_options <- c("model", "regionmapping", "extramappings_historic", "inputRevision", setdiff(names(cfg_rem), c("gms", "output"))) - for (switchname in intersect(cfg_rem_options, names(settings_remind))) { - if ( ! is.na(settings_remind[scen, switchname] )) { - cfg_rem[[switchname]] <- settings_remind[scen, switchname] - } - } - - # Set reporting scripts - if ("output" %in% names(settings_remind) && ! is.na(settings_remind[scen, "output"])) { - scenoutput <- gsub('c\\("|\\)|"', '', trimws(unlist(strsplit(settings_remind[scen, "output"], split = ',')))) - cfg_rem$output <- unique(c(if ("cfg$output" %in% scenoutput) cfg_rem$output, setdiff(scenoutput, "cfg$output"))) - } - - # Edit GAMS switches in default.cfg based on scenarios table, if cell non-empty - for (switchname in intersect(names(cfg_rem$gms), names(settings_remind))) { - if ( ! is.na(settings_remind[scen, switchname] )) { - cfg_rem$gms[[switchname]] <- settings_remind[scen, switchname] - } - } - - # Set description - if ("description" %in% names(settings_remind) && ! is.na(settings_remind[scen, "description"])) { - cfg_rem$description <- iconv(gsub('"', '', settings_remind[scen, "description"]), from = "UTF-8", to = "ASCII//TRANSLIT") - } else { - cfg_rem$description <- paste0("Coupled REMIND and MAgPIE run ", scen, " started by ", path_settings_remind, " and ", path_settings_coupled, ".") - } - - # save cm_nash_autoconverge to be used for all but last REMIND run - cm_nash_autoconverge <- cfg_rem$gms$cm_nash_autoconverge - - # abort on too long paths ---- - cfg_rem$gms$cm_CES_configuration <- calculate_CES_configuration(cfg_rem, check = TRUE) - - for (i in max_iterations:start_iter_first) { - fullrunname <- paste0(runname, "-rem-", i) - start_iter <- i - - # If provided replace the path to the MAgPIE report found automatically with path given in scenario_config_coupled.csv - if (i == start_iter_first) { - if (! is.na(scenarios_coupled[scen, "path_report"]) & i == 1) { - path_report <- scenarios_coupled[scen, "path_report"] # sets the path to the report REMIND is started with in the first loop - message("Replacing path to MAgPIE report with that one specified in\n ", path_settings_coupled, "\n ", scenarios_coupled[scen, "path_report"], "\n") - } else { - path_report <- path_report_found - } - } else { - # start_coupled.R uses the name of this run to create the name of the MAgPIE report for the subsequent runs (next iteration) - path_report <- runname - } - - # if provided use ghg prices for land (MAgPIE) from a different REMIND run than the one MAgPIE runs coupled to - path_mif_ghgprice_land <- NULL - if ("path_mif_ghgprice_land" %in% names(scenarios_coupled)) { - if (! is.na(scenarios_coupled[scen, "path_mif_ghgprice_land"])) { - if (.isFileAndAvailable(scenarios_coupled[scen, "path_mif_ghgprice_land"], ".mif")) { - # if real file is given (has ".mif" at the end) take it for path_mif_ghgprice_land - path_mif_ghgprice_land <- normalizePath(scenarios_coupled[scen, "path_mif_ghgprice_land"]) - } else if (scenarios_coupled[scen, "path_mif_ghgprice_land"] %in% common) { - # if no real file is given but a reference to another scenario (that has to run first) create path to the reference scenario - ghgprice_remindrun <- paste0(prefix_runname, scenarios_coupled[scen, "path_mif_ghgprice_land"], "-rem-", i) - path_mif_ghgprice_land <- file.path(path_remind, "output", ghgprice_remindrun, paste0("REMIND_generic_", ghgprice_remindrun, ".mif")) - } else { - message(red, "Error", NC, ": path_mif_ghgprice_land neither an existing file nor a scenario that will be started: ", - scenarios_coupled[scen, "path_mif_ghgprice_land"]) - errorsfound <- errorsfound + 1 - path_mif_ghgprice_land <- FALSE - } - cfg_mag$path_to_report_ghgprices <- path_mif_ghgprice_land - } - } - - # Create list of gdx's that this run needs as input from other runs - gdxlist <- unlist(settings_remind[scen, names(path_gdx_list)]) - names(gdxlist) <- path_gdx_list - if (scen %in% gdxlist) stop(scen, " is self-referencial for ", paste(names(path_gdx_list)[which(gdxlist == scen)], collapse = ", ")) - # look for gdx's not only among runs to be started but among all coupled scenarios, as runs that have already finished may also be required - gdxlist[gdxlist %in% rownames(settings_coupled)] <- paste0(prefix_runname, gdxlist[gdxlist %in% rownames(settings_coupled)], "-rem-", i) - possibleFulldata <- file.path(path_remind, "output", gdxlist, "fulldata.gdx") - possibleRemindReport <- file.path(path_remind, "output", gdxlist, paste0("REMIND_generic_", gdxlist, ".mif")) - # if file fulldata.gdx and report already exists because run was already finished, use it directly as input - replaceByFulldata <- file.exists(possibleFulldata) & file.exists(possibleRemindReport) - gdxlist[replaceByFulldata] <- possibleFulldata[replaceByFulldata] - - if (i == start_iter_first) { - gdx_specified <- grepl(".gdx", gdxlist, fixed = TRUE) - gdx_na <- is.na(gdxlist) - start_now <- all(gdx_specified | gdx_na) - } - - # remove gdxlist generated by earlier i - cfg_rem$files2export$start <- rem_filesstart - # Remove potential elements that contain ".gdx" and append gdxlist - cfg_rem$files2export$start <- .setgdxcopy(".gdx", cfg_rem$files2export$start, gdxlist) - - # add table with information about runs that need the fulldata.gdx of the current run as input (will be further processed in start_coupled.R) - cfg_rem$RunsUsingTHISgdxAsInput <- settings_remind[common, ] %>% select(contains("path_gdx")) %>% # select columns that have "path_gdx" in their name - filter(rowSums(. == scen, na.rm = TRUE) > 0) # select rows that have the current scenario in any column - if (length(cfg_rem$RunsUsingTHISgdxAsInput[[1]]) > 0) { - cfg_rem$RunsUsingTHISgdxAsInput[! is.na(cfg_rem$RunsUsingTHISgdxAsInput)] <- paste0(prefix_runname, - cfg_rem$RunsUsingTHISgdxAsInput[! is.na(cfg_rem$RunsUsingTHISgdxAsInput)], "-rem-", i) - rownames(cfg_rem$RunsUsingTHISgdxAsInput) <- paste0(prefix_runname, rownames(cfg_rem$RunsUsingTHISgdxAsInput), "-rem-", i) - } - # add the next remind run - cfg_rem$gms$cm_nash_autoconverge <- cm_nash_autoconverge - if (i < max_iterations) { - cfg_rem$RunsUsingTHISgdxAsInput[paste0(runname, "-rem-", (i+1)), "path_gdx"] <- fullrunname - } else if ("cm_nash_autoconverge_lastrun" %in% names(scenarios_coupled) && ! is.na(scenarios_coupled[scen, "cm_nash_autoconverge_lastrun"])) { - # change autoconverge only in last iteration and if well-defined - cfg_rem$gms$cm_nash_autoconverge <- scenarios_coupled[scen, "cm_nash_autoconverge_lastrun"] - } - - if (i > start_iter_first || ! start_now) { - # if no real file is given but a reference to another scenario (that has to run first) create paths to their gdx files - # using the scenario names given in the respective path_gdx* columns in the REMIND standalone scenario config - for (path_gdx in names(path_gdx_list)) { - if (! is.na(cfg_rem$files2export$start[path_gdx_list[path_gdx]]) && ! grepl(".gdx", cfg_rem$files2export$start[path_gdx_list[path_gdx]], fixed = TRUE)) { - cfg_rem$files2export$start[path_gdx_list[path_gdx]] <- paste0(prefix_runname, settings_remind[scen, path_gdx], "-rem-", i) - } - } - if (i > start_iter_first) { - cfg_rem$files2export$start["input.gdx"] <- paste0(runname, "-rem-", i-1) - } - } - - # If the preceding run has already finished (= its gdx file exist) start - # the current run immediately. This might be the case e.g. if you started - # the NDC run in a first batch and now want to start the subsequent policy - # runs by hand after the NDC has finished. - if (i == start_iter_first && ! start_now && all(file.exists(cfg_rem$files2export$start[path_gdx_list]) | unlist(gdx_na))) { - start_now <- TRUE - } - - foldername <- file.path("output", fullrunname) - if ((i > start_iter_first || !scenarios_coupled[scen, "start_magpie"]) && file.exists(foldername)) { - if (errorsfound == 0 && ! any(c("--test", "--gamscompile") %in% flags)) { - message("Folder ", foldername, " exists but incomplete. Delete it and rerun (else will be skipped)? y/N") - if (tolower(gms::getLine()) %in% c("y", "yes")) { - unlink(foldername, recursive = TRUE, force = TRUE) - deletedFolders <- c(deletedFolders, basename(foldername)) - } else { - start_now <- FALSE - } - } - } - - if (cfg_rem$gms$optimization == "nash" && cfg_rem$gms$cm_nash_mode == 2 && isFALSE(magpie_empty)) { - # for nash: set the number of CPUs per node to number of regions + 1 - numberOfTasks <- length(unique(read.csv2(cfg_rem$regionmapping)$RegionCode)) + 1 - } else { - # for negishi and model tests: use only one CPU - numberOfTasks <- 1 - } - - cfg_rem <- checkFixCfg(cfg_rem, remindPath = path_remind, testmode = "--test" %in% flags) - if ("errorsfoundInCheckFixCfg" %in% names(cfg_rem)) { - errorsfound <- errorsfound + cfg_rem$errorsfoundInCheckFixCfg - } - - if (i == start_iter_first) { - errorsfound <- errorsfound + checkSettingsRemMag(cfg_rem, cfg_mag, testmode = "--test" %in% flags) - } - - if (! any(c("--test", "--gamscompile") %in% flags)) { - Rdatafile <- paste0(fullrunname, ".RData") - message("Save settings to ", Rdatafile) - save(path_remind, path_magpie, cfg_rem, cfg_mag, runname, fullrunname, max_iterations, start_iter, - n600_iterations, path_report, qos, sbatch, prefix_runname, run_compareScenarios, magpie_empty, - numberOfTasks, start_now, file = Rdatafile) - } else if (start_now) { - startedRuns <- c(startedRuns, fullrunname) - } - - } # end for (i %in% iterations) - - # convert from logi to character so file.exists does not throw an error - path_report <- as.character(path_report) - - qosRuns[qos] <- if (is.null(qosRuns[[qos]])) 1 else qosRuns[[qos]] + 1 # count - message("\nSUMMARY") - message("runname : ", runname) - message("Start iter : ", if (scenarios_coupled[scen, "start_magpie"]) "mag-" else "rem-", start_iter_first) - message("QOS : ", qos) - message("remind gdxes :") - for (path_gdx in names(path_gdx_list)) { - gdxname <- cfg_rem$files2export$start[path_gdx_list[path_gdx]] - gdxfound <- (is.na(gdxname) || file.exists(gdxname)) - usecolor <- if (gdxfound) green else if (gdxname %in% knownRefRuns) blue else red - message(" ", str_pad(path_gdx, 23, "right"), ": ", usecolor, gdxname, NC) - } - if (! is.null(path_mif_ghgprice_land)) { - usecolor <- if (isFALSE(path_mif_ghgprice_land)) red else if (file.exists(path_mif_ghgprice_land)) green else blue - message("ghg_price_mag : ", usecolor, path_mif_ghgprice_land, NC, "\n") - } - message("path_report : ",ifelse(file.exists(path_report),green,red), path_report, NC) - message("no_ghgprices_land_until: ", cfg_mag$gms$c56_mute_ghgprices_until) - message("var_luc: ", cfg_rem$var_luc) - - if ("--gamscompile" %in% flags) { - message("Compiling ", fullrunname) - lockID <- gms::model_lock() - gcresult <- runGamsCompile(if (is.null(cfg_rem$model)) "main.gms" else cfg_rem$model, cfg_rem, - interactive = "--interactive" %in% flags) - gms::model_unlock(lockID) - errorsfound <- errorsfound + ! gcresult - } - if (!start_now) { - missingRefRuns <- unique(cfg_rem$files2export$start[path_gdx_list][! gdx_specified & ! gdx_na]) - message("Waiting for: ", blue, paste(intersect(knownRefRuns, missingRefRuns), collapse = ", "), NC) - if (length(setdiff(missingRefRuns, knownRefRuns)) > 0) { - message(red, "Error", NC, ": Cannot start because ", paste(setdiff(missingRefRuns, knownRefRuns), collapse = ", "), " not found!") - errorsfound <- errorsfound + length(setdiff(missingRefRuns, knownRefRuns)) - } else { - waitingRuns <- c(waitingRuns, fullrunname) - } - } -} - -warnings() - -# start runs -message("\nStarting Runs") -for (scen in common) { - if (! scenarios_coupled[scen, "start_scenario"]) { - next - } - start_iter_first <- scenarios_coupled[scen, "start_iter_first"] - runname <- paste0(prefix_runname, scen) - fullrunname <- paste0(runname, "-rem-", start_iter_first) - if ("--test" %in% flags || "--gamscompile" %in% flags) { - message("Test mode: run ", fullrunname, " NOT submitted to the cluster.") - next - } - Rdatafile <- paste0(fullrunname, ".RData") - runEnv <- new.env() - load(Rdatafile, envir = runEnv) - if (runEnv$start_now) { - if (errorsfound > 0) { - message("Errors found: run ", fullrunname, " NOT submitted to the cluster.") - } else { - startedRuns <- c(startedRuns, fullrunname) - if (isTRUE(scenarios_coupled[scen, "start_magpie"])) { - # MAgPIE alone does not need medium - runEnv$qos <- gsub("^(medium|standby)$", "auto", runEnv$qos) - runEnv$numberOfTasks <- 3 - } - logfile <- file.path("output", fullrunname, paste0("log", if (scenarios_coupled[scen, "start_magpie"]) "-mag", ".txt")) - if (! file.exists(dirname(logfile))) dir.create(dirname(logfile)) - message("Find logging in ", logfile) - if (isTRUE(runEnv$qos == "auto")) { - sq <- system(paste0("squeue -u ", Sys.info()[["user"]], " -o '%q %j'"), intern = TRUE) - runEnv$qos <- if (is.null(attr(sq, "status")) && sum(grepl("^priority ", sq)) < 4) "priority" else "short" - } - slurmOptions <- combine_slurmConfig(paste0("--qos=", runEnv$qos, - " --job-name=", fullrunname, " --output=", logfile, - " --open-mode=append --mail-type=END,FAIL --comment=REMIND-MAgPIE --tasks-per-node=", runEnv$numberOfTasks, - if (runEnv$numberOfTasks == 1) " --mem=8000"), runEnv$sbatch) - slurmCommand <- paste0("sbatch ", slurmOptions, " --wrap=\"Rscript start_coupled.R coupled_config=", Rdatafile, "\"") - message(slurmCommand) - exitCode <- system(slurmCommand) - if (0 < exitCode) { - errorsfound <- errorsfound + 1 - message("sbatch command failed, check logs.") - } - } - } -} - -if (! "--test" %in% flags && ! "--gamscompile" %in% flags) { - cs_runs <- paste0(file.path("output", paste0(prefix_runname, common, "-rem-", max_iterations)), collapse = ",") - cs_name <- paste0("compScen-all-rem-", max_iterations) - cs_qos <- if (! isFALSE(run_compareScenarios)) run_compareScenarios else "short" - cs_command <- paste0("sbatch --qos=", cs_qos, " --job-name=", cs_name, " --output=", cs_name, ".out --error=", - cs_name, ".out --mail-type=END,FAIL --time=60 --mem=8000 --wrap='Rscript scripts/cs2/run_compareScenarios2.R outputDirs=", - cs_runs, " profileName=REMIND-MAgPIE outFileName=", cs_name, - " regionList=World,LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA mainRegName=World'") - message("\n### To start a compareScenario once everything is finished, run:") - message(cs_command) -} - -message("#### Summary ####") -message("\nDone.", if(any(c("--test", "--gamscompile") %in% flags)) " You are in TEST or gamscompile mode, no runs were actually started.") -message("- ", length(finishedRuns), " runs already finished: ", paste(finishedRuns, collapse = ", ")) -message("- ", length(deletedFolders), " folders deleted: ", paste(deletedFolders, collapse = ", ")) -message("- ", length(startedRuns), " runs started: ", paste(startedRuns, collapse = ", ")) -message("- ", length(waitingRuns), " runs are waiting: ", paste(waitingRuns, collapse = ", ")) -message("- qos statistics: ", paste0(names(qosRuns), ": ", unlist(qosRuns), collapse = ", "), ".", - if (isTRUE(qosRuns[["priority"]] > 4)) " More than 4 runs with qos=priority. They may not be able to run in parallel on the PIK cluster.") -# make sure we have a non-zero exit status if there were any errors -if (0 < errorsfound) { - warnings() - stop(red, errorsfound, NC, " errors were identified, check logs above for details.") -} diff --git a/start_coupled.R b/start_coupled.R deleted file mode 100644 index 6249d08bee..0000000000 --- a/start_coupled.R +++ /dev/null @@ -1,353 +0,0 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | REMIND License Exception, version 1.0 (see LICENSE file). -# | Contact: remind@pik-potsdam.de - -################################################################## -################# D E F I N E start_coupled ##################### -################################################################## - -start_coupled <- function(path_remind, path_magpie, cfg_rem, cfg_mag, runname, max_iterations = 5, start_iter = 1, - n600_iterations = 0, report = NULL, qos, fullrunname = FALSE, - prefix_runname = "C_", run_compareScenarios = TRUE, magpie_empty = FALSE) { - require(lucode2) - require(gms) - require(magclass) - require(gdx) - library(methods) - library(remind2) - source("scripts/start/combine_slurmConfig.R") - - errorsfound <- 0 - # delete entries in stack that contain needle and append new - .setgdxcopy <- function(needle,stack,new){ - matches <- grepl(needle,stack) - out <- c(stack[!matches],new) - return(out) - } - - mainwd <- getwd() # save folder in which this script is executed - - # Retrieve REMIND settings -# cfg_rem <- check_config(cfg_rem, file.path(path_remind, "config", "default.cfg"), file.path(path_remind, "modules"), -# extras = c("backup", "remind_folder", "pathToMagpieReport", "cm_nash_autoconverge_lastrun", -# "gms$c_expname", "restart_subsequent_runs", -# "gms$cm_CES_configuration", "gms$c_description")) - cfg_rem$slurmConfig <- "direct" - cfg_rem_original <- c(setdiff(cfg_rem$output, "emulator"), "emulator") # save default remind output config and add "emulator" if missing - - # retrieve MAgPIE settings - cfg_mag <- check_config(cfg_mag, file.path(path_magpie, "config", "default.cfg"), file.path(path_magpie,"modules")) - cfg_mag$sequential <- TRUE - cfg_mag$force_replace <- TRUE - # if provided use ghg prices for land (MAgPIE) from a different REMIND run than the one MAgPIE runs coupled to - use_external_ghgprices <- ifelse(is.na(cfg_mag$path_to_report_ghgprices), FALSE, TRUE) - - if (start_iter > max_iterations) stop("### COUPLING ### start_iter > max_iterations") - - possible_pathes_to_gdx <- c("input.gdx", "input_ref.gdx", "input_refpolicycost.gdx", - "input_bau.gdx", "input_carbonprice.gdx") - - startIterations <- c(start_iter) - - # Start REMIND and MAgPIE iteratively - for (i in startIterations) { - message("### COUPLING ### Iteration ", i) - - ################################################################## - #################### R E M I N D ################################# - ################################################################## - - ####################### PREPARE REMIND ########################### - - message("### COUPLING ### Preparing REMIND") - message("### COUPLING ### Set working directory from ", getwd()) - setwd(path_remind) - message(" to ", getwd(), "\n") - source("scripts/start/submit.R") # provide source of "get_magpie_data" and "start_run" - - cfg_rem$results_folder <- paste0("output/",runname,"-rem-",i) - cfg_rem$title <- paste0(runname,"-rem-",i) - - # Switch off generation of needless output for all but the last REMIND iteration - output_all_iter <- c("reporting", "reportingREMIND2MAgPIE", "emulator", "rds_report", "fixOnRef", "checkProjectSummations") - if (i < max_iterations) { - cfg_rem$output <- intersect(cfg_rem_original, output_all_iter) - } else { - cfg_rem$output <- cfg_rem_original - } - - ############ DECIDE IF AND HOW TO START REMIND ################### - outfolder_rem <- NULL - if (is.null(report)) { - if (i == 1) { - ######### S T A R T R E M I N D S T A N D A L O N E ############## - cfg_rem$gms$cm_MAgPIE_coupling <- "off" - message("### COUPLING ### No MAgPIE report for REMIND input provided.") - message("### COUPLING ### REMIND will be started in stand-alone mode with\n ", runname, "\n ", cfg_rem$results_folder) - outfolder_rem <- submit(cfg_rem, stopOnFolderCreateError = FALSE) - } else { - stop("I'm in coupling iteration ", i, ", but no REMIND or MAgPIE report from earlier iterations found. That should never have happened.") - } - } else if (grepl(paste0("report.mif"), report)) { # if it is a MAgPIE report - ######### S T A R T R E M I N D C O U P L E D ############## - cfg_rem$gms$cm_MAgPIE_coupling <- "on" - if (!file.exists(report)) stop(paste0("### COUPLING ### Could not find report: ", report,"\n")) - message("### COUPLING ### Starting REMIND in coupled mode with\n Report = ", report, "\n Folder = ", cfg_rem$results_folder) - # Keep path to MAgPIE report in mind to have it available after the coupling loop - mag_report_keep_in_mind <- report - cfg_rem$pathToMagpieReport <- report - outfolder_rem <- submit(cfg_rem, stopOnFolderCreateError = FALSE) - ############################ - } else if (grepl("REMIND_generic_",report)) { # if it is a REMIND report - ############### O M I T R E M I N D ############################### - message("### COUPLING ### Omitting REMIND in this iteration\n Report = ", report) - report <- report - } else { - stop(paste0("### COUPLING ### Could not decide whether ",report," is REMIND or MAgPIE output.\n")) - } - - if(!is.null(outfolder_rem)) { - report <- file.path(path_remind, outfolder_rem, paste0("REMIND_generic_", cfg_rem$title, ".mif")) - message("### COUPLING ### REMIND output was stored in ", outfolder_rem) - if (file.exists(paste0(outfolder_rem,"/fulldata.gdx"))) { - modstat <- readGDX(paste0(outfolder_rem,"/fulldata.gdx"),types="parameters",format="raw",c("s80_bool","o_modelstat")) - if (cfg_rem$gms$optimization == "negishi") { - if (as.numeric(modstat$o_modelstat$val)!=2 && as.numeric(modstat$o_modelstat$val)!=7) stop("Iteration stopped! REMIND o_modelstat was ",modstat," but is required to be 2 or 7.\n") - } else if (cfg_rem$gms$optimization == "nash") { - if (as.numeric(modstat$s80_bool$val)!=1) message("Warning: REMIND s80_bool not 1. Iteration continued though.") - } - } else if (file.exists(paste0(outfolder_rem,"/non_optimal.gdx"))) { - stop("### COUPLING ### REMIND didn't find an optimal solution. Coupling iteration stopped!") - } else { - stop("### COUPLING ### REMIND didn't produce any gdx. Coupling iteration stopped!") - } - - # In the coupling, at the end of each REMIND run, reporting.R already automatically appends the MAgPIE - # report of the previous MAgPIE run to the normal REMIND_generic reporting. - # After the last coupling iteration: read this combined report from the REMIND output folder, set the - # model name to 'REMIND-MAgPIE' and write the combined report directly to the 'output' folder. - report_rem <- file.path(path_remind, outfolder_rem, paste0("REMIND_generic_", cfg_rem$title, ".mif")) - if (i == max_iterations) { - # Replace REMIND and MAgPIE with REMIND-MAgPIE and write directly to output folder - tmp_rem_mag <- quitte::as.quitte(report_rem) - tmp_rem_mag$model <- "REMIND-MAgPIE" - tmp_rem_mag$scenario <- runname - quitte::write.mif(tmp_rem_mag, path = file.path("output", paste0(runname, ".mif"))) - message("\n### output/", runname, ".mif written: model='REMIND-MAgPIE', scenario='", runname, "'.") - } - } - - if (!file.exists(report)) stop(paste0("### COUPLING ### Could not find report: ", report,"\n")) - - # If in the last iteration don't run MAgPIE - if (i == max_iterations) { - report_mag <- mag_report_keep_in_mind - break - } - - ################################################################## - #################### M A G P I E ################################# - ################################################################## - message("### COUPLING ### Preparing MAgPIE") - message("### COUPLING ### Set working directory from ", getwd()) - setwd(path_magpie) - message(" to ", getwd(), "\n") - source("scripts/start_functions.R") - cfg_mag$results_folder <- paste0("output/",runname,"-mag-",i) - cfg_mag$title <- paste0(runname,"-mag-",i) - if (!is.null(renv::project())) { - cfg_mag$renv_lock <- normalizePath(file.path(path_remind, cfg_rem$results_folder, "renv.lock")) - } - - if (magpie_empty) { - # Find latest fulldata.gdx from automated model test (AMT) runs - amtRunDirs <- list.files("/p/projects/landuse/tests/magpie/output", - pattern = "default_\\d{4}-\\d{2}-\\d{2}_\\d{2}\\.\\d{2}.\\d{2}", - full.names = TRUE) - fullDataGdxs <- file.path(amtRunDirs, "fulldata.gdx") - latestFullData <- sort(fullDataGdxs[file.exists(fullDataGdxs)], decreasing = TRUE)[[1]] - cfg_mag <- configureEmptyModel(cfg_mag, latestFullData) # defined in start_functions.R - # also configure magpie to only run the reportings necessary for coupling - # the other reportings are pointless anyway with an empty model - cfg_mag$output <- c("extra/reportMAgPIE2REMIND") - } - - # Increase MAgPIE resolution n600_iterations before final iteration so that REMIND - # runs n600_iterations iterations using results from MAgPIE with higher resolution - if (i > (max_iterations - n600_iterations)) { - message("Current iteration: ", i, ". Setting MAgPIE to n600\n") - cfg_mag <- setScenario(cfg_mag, "n600", scenario_config = paste0("config/scenario_config.csv")) - } - - # Providing MAgPIE with gdx from last iteration's solution only for time steps >= cfg_rem$gms$cm_startyear - # For years prior to cfg_rem$gms$cm_startyear MAgPIE output has to be identical across iterations. - # Because gdxes might slightly lead to a different solution exclude gdxes for the fixing years. - if (i > 1) { - message("### COUPLING ### Copying gdx files from previous iteration") - gdxlist <- paste0("output/", runname, "-mag-", i-1, "/magpie_y", seq(cfg_rem$gms$cm_startyear,2150,5), ".gdx") - cfg_mag$files2export$start <- .setgdxcopy(".gdx",cfg_mag$files2export$start,gdxlist) - } - - message("### COUPLING ### MAgPIE will be started with\n Report = ", report, "\n Folder = ", cfg_mag$results_folder) - cfg_mag$path_to_report_bioenergy <- report - # if no different mif was set for GHG prices use the same as for bioenergy - if(! use_external_ghgprices) cfg_mag$path_to_report_ghgprices <- report - ########### START MAGPIE ############# - outfolder_mag <- start_run(cfg_mag, codeCheck=FALSE) - ###################################### - message("### COUPLING ### MAgPIE output was stored in ", outfolder_mag) - report_mag <- file.path(path_magpie, outfolder_mag, "report.mif") - report <- report_mag - - # Checking whether MAgPIE is optimal in all years - file_modstat <- file.path(outfolder_mag, "glo.magpie_modelstat.csv") - if (file.exists(file_modstat)) { - modstat_mag <- read.csv(file_modstat, stringsAsFactors = FALSE, row.names=1, na.strings="") - } else { - modstat_mag <- readGDX(file.path(outfolder_mag, "fulldata.gdx"), "p80_modelstat", "o_modelstat", format="first_found") - } - - if (!all((modstat_mag == 2) | (modstat_mag == 7))) - stop("Iteration stopped! MAgPIE modelstat is not 2 or 7 for all years.\n") - - } # End of coupling iteration loop - - message("### COUPLING ### Coupling iteration ", i, "/", max_iterations, " completed"); - message("### COUPLING ### Set working directory from ", getwd()); - setwd(mainwd) - message(" to ", getwd(), "\n") - - if (length(rownames(cfg_rem$RunsUsingTHISgdxAsInput)) > 0) { - # fulldatapath may be written into gdx paths of subsequent runs - fulldatapath <- file.path(path_remind, cfg_rem$results_folder, "fulldata.gdx") - - # Loop possible subsequent runs, saving path to fulldata.gdx of current run (== cfg_rem$title) to their cfg files - - for (run in rownames(cfg_rem$RunsUsingTHISgdxAsInput)) { - - message("\nPrepare subsequent run ", run, ":") - subseq.env <- new.env() - RData_file <- paste0(run, ".RData") - load(RData_file, envir = subseq.env) - - pathes_to_gdx <- intersect(possible_pathes_to_gdx, names(subseq.env$cfg_rem$files2export$start)) - - gdx_na <- is.na(subseq.env$cfg_rem$files2export$start[pathes_to_gdx]) - - needfulldatagdx <- names(subseq.env$cfg_rem$files2export$start[pathes_to_gdx][subseq.env$cfg_rem$files2export$start[pathes_to_gdx] == fullrunname & !gdx_na]) - message("In ", RData_file, ", use current fulldata.gdx path for ", paste(needfulldatagdx, collapse = ", "), ".") - subseq.env$cfg_rem$files2export$start[needfulldatagdx] <- fulldatapath - # let the subsequent run use the renv.lock of this run - message("In ", RData_file, ", use current renv.lock for subsequent run ", run, ".") - subseq.env$cfg_rem$UseThisRenvLock <- file.path(path_remind, cfg_rem$results_folder, "renv.lock") - - if (isTRUE(subseq.env$path_report == runname)) subseq.env$path_report <- report_mag - save(list = ls(subseq.env), file = RData_file, envir = subseq.env) - - # Subsequent runs will be started using submit.R, if all necessary gdx files were generated - gdx_exist <- grepl(".gdx", subseq.env$cfg_rem$files2export$start[pathes_to_gdx]) - - if (all(gdx_exist | gdx_na)) { - message("Starting subsequent run ", run) - logfile <- file.path("output", subseq.env$fullrunname, "log.txt") - if (! file.exists(dirname(logfile))) dir.create(dirname(logfile)) - if (isTRUE(subseq.env$qos == "auto")) { - sq <- system(paste0("squeue -u ", Sys.info()[["user"]], " -o '%q %j' | grep -v ", fullrunname), intern = TRUE) - subseq.env$qos <- if (is.null(attr(sq, "status")) && sum(grepl("^priority ", sq)) < 4) "priority" else "short" - } - slurmOptions <- combine_slurmConfig(paste0("--qos=", subseq.env$qos, - " --job-name=", subseq.env$fullrunname, " --output=", logfile, - " --open-mode=append --mail-type=END,FAIL --comment=REMIND-MAgPIE --tasks-per-node=", subseq.env$numberOfTasks, - if (subseq.env$numberOfTasks == 1) " --mem=8000"), subseq.env$sbatch) - subsequentcommand <- paste0("sbatch ", slurmOptions, " --wrap=\"Rscript start_coupled.R coupled_config=", RData_file, "\"") - message(subsequentcommand) - if (length(needfulldatagdx) > 0) { - exitCode <- system(subsequentcommand) - if (0 < exitCode) { - message("sbatch command failed, check logs") - errorsfound <- errorsfound + 1 - # if sbatch has the --wait argument, the user is likely interactively - # waiting for the result of the run (like in a test). In that case, - # fail immediately so that the user knows about the failure asap. - if(grepl("--wait", subsequentcommand)) { - stop("You seem to be waiting for ", subseq.env$fullrunname, " to finish but the sbatch command failed") - } - } - } else { - message(RData_file, " already contained a gdx for this run. To avoid runs to be started twice, I'm not starting it. You can start it by running the command directly above.") - } - } else { - message(run, " is still waiting for: ", - paste(unique(subseq.env$cfg_rem$files2export$start[pathes_to_gdx][!(gdx_exist | gdx_na)]), collapse = ", "), ".") - } - } # end of loop through possible subsequent runs - } - - message("\nEnd of starting subsequent runs\n") - - if (i == max_iterations) { - - # Read runtime of ALL coupled runs (not just the current scenario) and produce comparison pdf - remindpath <- file.path(path_remind, "output") - magpiepath <- file.path(path_magpie, "output") - - message("\n### COUPLING ### Preparing runtime.pdf"); - runs <- findCoupledruns(resultsfolder = remindpath) - ret <- findIterations(runs, modelpath = c(remindpath, magpiepath), latest = FALSE) - readRuntime(ret, plot=TRUE, coupled=TRUE) - unlink(c("runtime.log", "runtime.out", "runtime.rda")) - - if (max_iterations > 1 && ! grepl("TESTTHAT", runname)) { - # set required variables and execute script to create convergence plots - message("### COUPLING ### Preparing convergence pdf"); - source_include <- TRUE - runs <- runname - folder <- "./output" - pci <- try(source("scripts/output/comparison/plot_compare_iterations.R", local = TRUE)) - if (inherits(pci, "try-error")) errorsfound <- errorsfound + 1 - cs_runs <- findIterations(runname, modelpath = remindpath, latest = FALSE) - cs_name <- paste0("compScen-rem-1-", max_iterations, "_", runname) - cs_qos <- if (!isFALSE(run_compareScenarios)) run_compareScenarios else "short" - cs_command <- paste0("sbatch --qos=", cs_qos, " --job-name=", cs_name, " --output=", cs_name, ".out --error=", - cs_name, ".out --mail-type=END,FAIL --time=60 --mem=8000 --wrap='Rscript scripts/cs2/run_compareScenarios2.R outputDirs=", - paste(cs_runs, collapse=","), " profileName=REMIND-MAgPIE outFileName=", cs_name, - " regionList=World,LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA mainRegName=World'") - if (! isFALSE(run_compareScenarios)) { - message("### Coupling ### Start compareScenario ", cs_name) - message(cs_command) - system(cs_command) - } else { - message("### Coupling ### If you want a compareScenario with name ", cs_name, ", run:") - message(cs_command) - } - } - } - message("### start_coupled() finished. ###") - if (errorsfound > 0) stop(errorsfound, " errors found, check the logs.") -} - -################################################################## -################# E X E C U T E start_coupled ################### -################################################################## -require(lucode2) - -# Manual call: -# Rscript start_coupled.R coupled_config=runname.RData - -readArgs("coupled_config") -load(coupled_config) -# backwards compatibility -if (! exists("fullrunname")) fullrunname <- runname -if (! exists("prefix_runname")) prefix_runname <- "C_" -if (! exists("run_compareScenarios")) run_compareScenarios <- "short" -if (! exists("magpie_empty")) magpie_empty <- FALSE -start_coupled(path_remind, path_magpie, cfg_rem, cfg_mag, runname, max_iterations, start_iter, - n600_iterations, path_report, qos, fullrunname, prefix_runname, run_compareScenarios, - magpie_empty) - -message("### Print warnings ###") -warnings() -message("### End start_coupled.R ###") diff --git a/tests/testthat/test_01-checkFixCfg.R b/tests/testthat/test_01-checkFixCfg.R index 3770c36734..3e3fc37cf2 100644 --- a/tests/testthat/test_01-checkFixCfg.R +++ b/tests/testthat/test_01-checkFixCfg.R @@ -18,7 +18,6 @@ test_that("checkFixCfg works", { "c_macscen" = "-1", "cm_keep_presolve_gdxes" = "1.1", "cm_startyear" = "1985", - "cm_netZeroScen" = "NöööGFS_v4", "cm_rcp_scen" = "apocalypse", "c_testOneRegi_region" = "LOONG", "c_shGreenH2" = "1.5", diff --git a/tests/testthat/test_01-start.R b/tests/testthat/test_01-start.R index 5d97167ce6..25d9a8e5ba 100644 --- a/tests/testthat/test_01-start.R +++ b/tests/testthat/test_01-start.R @@ -38,7 +38,7 @@ test_that("start.R --test succeeds on all configs", { csvfiles <- Sys.glob(c(file.path("../../config/scenario_config*.csv"), file.path("../../config", "*", "scenario_config*.csv"))) } - csvfiles <- normalizePath(grep("scenario_config_coupled", csvfiles, invert = TRUE, value = TRUE)) + csvfiles <- normalizePath(grep("scenario_config_magpie", csvfiles, invert = TRUE, value = TRUE)) expect_true(length(csvfiles) > 0) testthat::with_mocked_bindings( for (csvfile in csvfiles) { diff --git a/tests/testthat/test_04-gamscompile.R b/tests/testthat/test_04-gamscompile.R index aad415dc1a..77ee35ba0e 100644 --- a/tests/testthat/test_04-gamscompile.R +++ b/tests/testthat/test_04-gamscompile.R @@ -29,7 +29,7 @@ test_that("start.R --gamscompile works on all configs and scenarios", { csvfiles <- Sys.glob(c(file.path("../../config/scenario_config*.csv"), file.path("../../config", "*", "scenario_config*.csv"))) } - csvfiles <- normalizePath(grep("scenario_config_coupled.*", csvfiles, invert = TRUE, value = TRUE)) + csvfiles <- normalizePath(grep("scenario_config_magpie.*", csvfiles, invert = TRUE, value = TRUE)) expect_true(length(csvfiles) > 0) testthat::with_mocked_bindings( for (csvfile in csvfiles) { diff --git a/tests/testthat/test_20-coupled.R b/tests/testthat/test_20-coupled.R deleted file mode 100644 index 1cc0bf6e09..0000000000 --- a/tests/testthat/test_20-coupled.R +++ /dev/null @@ -1,283 +0,0 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) -# | authors, and contributors see CITATION.cff file. This file is part -# | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of -# | AGPL-3.0, you are granted additional permissions described in the -# | REMIND License Exception, version 1.0 (see LICENSE file). -# | Contact: remind@pik-potsdam.de - -skipIfFast() -coupledConfig <- "config/tests/scenario_config_coupled_shortCascade.csv" -magpie_folder <- "../../magpie" -if (! dir.exists(magpie_folder)) magpie_folder <- paste0("../", magpie_folder) -config <- readCheckScenarioConfig(file.path("..", "..", coupledConfig), remindPath <- file.path("..", "..")) -max_iterations <- if ("max_iterations" %in% names(config)) max(config$max_iterations) else 5 -# for a fresh run, delete all left-overs from previous test -deleteallfiles <- paste0("C_TESTTHAT_startlog_", seq(6), ".txt") -Rprofile <- ".Rprofile" -for (scen in rownames(config)) { - deleteallfiles <- c(deleteallfiles, - paste0("../../output/C_", scen, "-rem-", seq(max_iterations)), - paste0("../../output/C_", scen, ".mif"), - paste0("../../C_", scen, "-rem-", seq(max_iterations), ".RData"), - paste0("../../output/gamscompile/main_", scen, ".gms"), - paste0("../../output/gamscompile/main_", scen, ".lst"), - file.path(magpie_folder, paste0("output/C_", scen, "-mag-", seq(max_iterations - 1))) - ) -} -expect_true(0 == unlink(deleteallfiles, recursive = TRUE, force = TRUE)) - -test_that("environment is suitable for coupled tests", { - skipIfPreviousFailed() - # magpie needs to be cloned by the user before running coupled tests - expect_true(dir.exists(magpie_folder)) - # coupled tests need slurm - expect_true(isSlurmAvailable()) -}) - -test_that("using start_bundle_coupled.R --gamscompile works", { - skipIfPreviousFailed() - # try compiling - output <- localSystem2("Rscript", c("start_bundle_coupled.R", "--gamscompile", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - expectSuccessStatus(output) - for (scen in rownames(config)[config$start == 1]) { - expect_true(any(grepl(paste0("Compiling C_", scen), output))) - expect_true(any(grepl(paste0(" OK .*", scen), output))) - expectedFiles <- c( - paste0("../../output/gamscompile/main_", scen, ".gms"), - paste0("../../output/gamscompile/main_", scen, ".lst") - ) - expect_true(all(file.exists(expectedFiles))) - } - expect_true(sum(grepl("REMIND and MAgPIE were never started", output)) == length(rownames(config)[config$start == 1])) -}) - -test_that("using start_bundle_coupled.R --test works", { - skipIfPreviousFailed() - # just test the settings and RData files are written - output <- localSystem2("Rscript", c("start_bundle_coupled.R", "--test", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - expectSuccessStatus(output) - expect_true(any(grepl("TEST or gamscompile mode", output))) - expect_true(any(grepl("NOT submitted", output))) - for (scen in rownames(config)[config$start == 1]) { - expect_true(any(grepl(paste0("starting with C_", scen, "-rem-1"), output))) - } -}) - -test_that("runs coupled to MAgPIE work", { - skipIfPreviousFailed() - # try running actual runs - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - expectSuccessStatus(output) - expect_true(xor("Copied REMIND .Rprofile to MAgPIE folder." %in% output, - any(grepl("^Finding R package dependencies.*Done.", output)))) - for (scen in rownames(config)[config$start == 1]) { - expectedFiles <- c( - paste0("../../output/C_", scen, "-rem-", seq(max_iterations)), - paste0("../../output/C_", scen, ".mif"), - paste0("../../C_", scen, "-rem-", seq(max_iterations), ".RData"), - file.path(magpie_folder, paste0("output/C_", scen, "-mag-", seq(max_iterations - 1))) - ) - expect_true(all(file.exists(expectedFiles))) - # check -rem-1 config file - configfile <- paste0("../../C_", scen, "-rem-1.RData") - envir <- new.env() - load(configfile, envir = envir) - expect_true(envir$runname == paste0("C_", scen)) - expect_true(envir$fullrunname == paste0("C_", scen, "-rem-1")) - expect_true(is.null(envir$path_report)) - expect_true(envir$max_iterations == max_iterations) - expect_true(envir$magpie_empty) - expect_true(envir$cfg_rem$RunsUsingTHISgdxAsInput[paste0("C_", scen, "-rem-2"), "path_gdx"] == envir$fullrunname) - expect_true(envir$cfg_rem$gms$cm_nash_autoconverge == 1) - # check config file for last rem iteration - configfile <- paste0("../../C_", scen, "-rem-", max_iterations, ".RData") - envir <- new.env() - load(configfile, envir = envir) - expect_true(envir$runname == paste0("C_", scen)) - expect_true(envir$fullrunname == paste0("C_", scen, "-rem-", max_iterations)) - expect_true(grepl(paste0("C_", scen), envir$path_report, fixed = TRUE)) - expect_true(envir$max_iterations == max_iterations) - expect_true(envir$magpie_empty) - if ("cm_nash_autoconverge_lastrun" %in% names(config)) { - expect_true(envir$cfg_rem$gms$cm_nash_autoconverge == config[scen, "cm_nash_autoconverge_lastrun"]) - } - # check path_mif_ghgprice_land - if ("path_mif_ghgprice_land" %in% names(config)[config$start == 1]) { - configfile <- paste0("../../C_", scen, "-rem-", (max_iterations - 1), ".RData") - envir <- new.env() - load(configfile, envir = envir) - bothna <- is.na(envir$cfg_mag$path_to_report_ghgprices) && is.na(config[scen, "path_mif_ghgprice_land"]) - containsotherrun <- grepl(paste0("REMIND_generic_C_", config[scen, "path_mif_ghgprice_land"], "-rem-", (max_iterations - 1), ".mif"), envir$cfg_mag$path_to_report_ghgprices, fixed = TRUE) - expect_true(bothna || containsotherrun) - magpie_config <- file.path(magpie_folder, "output", paste0("C_", scen, "-mag-", (max_iterations - 1)), "config.yml") - expect_true(file.exists(magpie_config)) - cfg_mag <- gms::loadConfig(magpie_config) - if (bothna) { - folder <- paste0("C_", scen, "-rem-", (max_iterations - 1)) - miffile <- normalizePath(file.path("../../output", folder, paste0("REMIND_generic_", folder, ".mif")), mustWork = FALSE) - expect_identical(miffile, cfg_mag$path_to_report_ghgprices) - } else { - expect_true(identical(cfg_mag$path_to_report_ghgprices, envir$cfg_mag$path_to_report_ghgprices)) - } - } - # check subfolder mifs - qscen <- quitte::as.quitte(paste0("../../output/C_", scen, "-rem-1/REMIND_generic_C_", scen, "-rem-1.mif")) - expect_true(any(grepl("^REMIND", levels(qscen$model)))) - expect_false(any(grepl("^MAgPIE", levels(qscen$model)))) - lengthwithoutmag <- nrow(qscen) - expect_true(lengthwithoutmag > 600000) - qscen <- quitte::as.quitte(paste0("../../output/C_", scen, "-rem-", max_iterations, "/REMIND_generic_C_", scen, "-rem-", max_iterations, ".mif")) - expect_true(any(grepl("^REMIND", levels(qscen$model)))) - expect_true(any(grepl("^MAgPIE", levels(qscen$model)))) - lengthwithmag <- nrow(qscen) - expect_true(lengthwithmag > lengthwithoutmag && lengthwithmag > 700000) - # check main mif - qscen <- quitte::as.quitte(paste0("../../output/C_", scen, ".mif")) - expect_no_warning(quitte::reportDuplicates(piamutils::deletePlus(qscen))) - expect_true(all(grepl("^REMIND-MAgPIE", levels(qscen$model)))) - expect_true(nrow(qscen) == lengthwithmag) - # here we could add checks which variables etc. must be in the mif file - } -}) - -test_that("don't run again if completed", { - skipIfPreviousFailed() - # do not delete anything to simulate re-running already completed run - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - writeLines(output, "C_TESTTHAT_startlog_1.txt") - expectSuccessStatus(output) - expect_true(sum(grepl("This scenario is already completed", output)) == sum(config$start == 1)) - expect_false(any(grepl("Starting REMIND run", output))) - expect_false(any(grepl("Starting MAgPIE run", output))) -}) - -test_that("delete last REMIND run to simulate re-starting aborted run", { - skipIfPreviousFailed() - scen <- rownames(config)[[2]] - filestodelete <- c( - paste0("../../output/C_", scen, "-rem-", max_iterations), - paste0("../../output/C_", scen, "-", max_iterations, ".pdf"), - paste0("../../output/C_", scen, ".mif") - ) - expect_true(0 == unlink(filestodelete, recursive = TRUE, force = TRUE)) - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - writeLines(output, "C_TESTTHAT_startlog_2.txt") - printIfFailed(output) - expectSuccessStatus(output) - expect_true(any(grepl(paste0("Starting REMIND run C_", scen, "-rem-", max_iterations), output))) - expect_false(any(grepl("Starting MAgPIE run", output))) - - # delete the last MAgPIE, but not the last REMIND scenario and expect fail - filestodelete <- file.path(magpie_folder, "output", paste0("C_", scen, "-mag-", (max_iterations - 1))) - expect_true(0 == unlink(filestodelete, recursive = TRUE, force = TRUE)) - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - writeLines(output, "C_TESTTHAT_startlog_3.txt") - expectFailStatus(output) - expect_true(any(grepl("Something is wrong", output))) - - - # also delete the last REMIND scenario so it must start with MAgPIE - filestodelete <- c( - paste0("../../output/C_", scen, "-rem-", max_iterations), - paste0("../../output/C_", scen, "-", max_iterations, ".pdf"), - paste0("../../output/C_", scen, ".mif") - ) - expect_true(0 == unlink(filestodelete, recursive = TRUE, force = TRUE)) - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - writeLines(output, "C_TESTTHAT_startlog_4.txt") - expectSuccessStatus(output) - - expect_false(any(grepl("Starting REMIND run", output))) - expect_true(any(grepl(paste0("Starting MAgPIE run C_", scen, "-mag-", (max_iterations - 1)), output))) - - # delete all REMIND, but not MAgPIE, and expect fail - # when adjusting this, be careful because it is used at the end to determine files that need to exist - filestodelete <- paste0("../../output/C_", scen, "-rem-", seq(max_iterations)) - expect_true(0 == unlink(filestodelete, recursive = TRUE, force = TRUE)) - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=1"), - env = paste0("R_PROFILE_USER=", Rprofile)) - writeLines(output, "C_TESTTHAT_startlog_5.txt") - expectFailStatus(output) - expect_true(any(grepl("Something is wrong", output))) -}) - -test_that("Check path_mif_ghgprice_land with file", { - # note: needs Base-rem-1 and -2 still present - skipIfPreviousFailed() - output <- localSystem2("Rscript", c("start_bundle_coupled.R --gamscompile", coupledConfig, "startgroup=2"), - env = paste0("R_PROFILE_USER=", Rprofile)) - printIfFailed(output) - expectSuccessStatus(output) - output <- localSystem2("Rscript", c("start_bundle_coupled.R", coupledConfig, "startgroup=2"), - env = paste0("R_PROFILE_USER=", Rprofile)) - writeLines(output, "C_TESTTHAT_startlog_6.txt") - expectSuccessStatus(output) - scen <- rownames(config)[config$start == 2][[1]] - if ("path_mif_ghgprice_land" %in% names(config)) { - configfile <- paste0("../../C_", scen, "-rem-", (max_iterations - 1), ".RData") - envir <- new.env() - load(configfile, envir = envir) - expect_true(envir$cfg_mag$path_to_report_ghgprices == normalizePath(file.path("../..", config[scen, "path_mif_ghgprice_land"]), mustWork = FALSE)) - magpie_config <- file.path(magpie_folder, "output", paste0("C_", scen, "-mag-", (max_iterations - 1)), "config.yml") - expect_true(file.exists(magpie_config)) - cfg_mag <- gms::loadConfig(magpie_config) - expect_true(identical(cfg_mag$path_to_report_ghgprices, envir$cfg_mag$path_to_report_ghgprices)) - } -}) - -csvfiles <- system("git ls-files ../../config/scenario_config_coupled*.csv ../../config/*/scenario_config_coupled*.csv", intern = TRUE) -if (length(csvfiles) == 0) { - csvfiles <- Sys.glob(c(file.path("../../config/scenario_config_coupled*.csv"), - file.path("../../config", "*", "scenario_config_coupled*.csv"))) -} -csvfiles <- normalizePath(csvfiles) -test_that("coupled csv files found", { - expect_true(length(csvfiles) > 0) -}) - -skipfiles <- c("scenario_config_coupled_shortCascade") # fails on missing mif file which is present while running other tests - -for (csvfile in csvfiles) { - test_that(paste("start_bundle_coupled.R --test succeeds on", basename(csvfile)), { - skipIfPreviousFailed() - skip_if(grepl(paste(skipfiles, collapse = "|"), csvfile), message = paste(csvfile, "skipped.")) - testthat::with_mocked_bindings( - { - output <- localSystem2("Rscript", - c("start_bundle_coupled.R", "--test", "startgroup=*", csvfile)) - printIfFailed(output) - expectSuccessStatus(output) - }, - getLine = function() stop("getLine should not called."), - .package = "gms" - ) - unlink("../../*TESTTHAT.RData", force = TRUE) - expect_no_warning(config <- readCheckScenarioConfig(csvfile, remindPath <- file.path("..", ".."))) - }) -} - -test_that("delete files to leave clean state", { - # leave clean state - skipIfPreviousFailed() - # Exclude NDC folders since they were deleted earlier to see if everything fails correctly if mag iteration is bigger than rem iteration. - missingfiles <- setdiff(deleteallfiles[! file.exists(deleteallfiles)], - paste0("../../output/C_TESTTHAT-SSP2-NDC-rem-", seq(2))) - if (length(missingfiles) > 0) { - warning("files do not exist: ", paste(gsub("../.", "", missingfiles, fixed = TRUE), collapse = ", ")) - skip("Not cleaning up coupled tests as not all required files exist.") - } else { - expect_true(0 == unlink(deleteallfiles, recursive = TRUE, force = TRUE)) - } -}) diff --git a/tutorials/04_RunningREMINDandMAgPIE.md b/tutorials/04_RunningREMINDandMAgPIE.md index 523d75ce84..171797e500 100644 --- a/tutorials/04_RunningREMINDandMAgPIE.md +++ b/tutorials/04_RunningREMINDandMAgPIE.md @@ -2,13 +2,55 @@ Running REMIND and MAgPIE in coupled mode ================ David Klein () +## Summary of new MAgPIE-Nash coupling + +The former sequential coupling approach—where REMIND and MAgPIE were run one after the other—has been replaced by a coupling in which MAgPIE runs are interleaved between Nash iterations. + +As part of this change: + +- The scripts `start_bundle_coupled.R` and `start_coupled.R` have been removed. +- Coupled runs are now started exclusively via `start.R`. + +### How to Run a Coupled Scenario + +To activate the REMIND–MAgPIE coupling, you now need: + +REMIND configuration + +- A `scenario_config*.csv` file defining your REMIND settings. + +MAgPIE configuration + +- A `scenario_config_magpie*.csv` file defining your MAgPIE settings. This file replaces the former `scenario_config_coupled.csv`. + +In both cases, `*` is a placeholder for your personalized scenario suffix and should be consistent across files. + +To start a coupled run, use: + +``` +Rscript start.R config/scenario_config_magpie*.csv +``` +The new coupling is mainly perforemd in `core/presolve.gms`, by calling the R script `scripts/input/magpie.R`, that transfers the data of the latest Nash solution to MAgPIE, runs MAgPIE, and transfers the MAgPIE data to a `magpieData.gdx`. Then REMIND GAMS continues, reads the `magpieData.gdx` and continues the Nash iterations. + +If you need to continue runs to yield a better convergence, paste the path to a previous REMIND or MAgPIE report into the column `continueFromHere` in the `scenario_config_magpie.csv` and start the respective scenario. + +Create convergence plots for individual runs with +``` +Rscript output.R -> single -> plotRemMagNash.R +``` +and for continued runs with +``` +Rscript output.R -> comparison -> plotRemMagNash.R +``` + +# Table of contents + - [Running REMIND and MAgPIE in coupled mode](#running-remind-and-magpie-in-coupled-mode) - [How to start coupled runs](#how-to-start-coupled-runs) + [Clone the models](#clone-the-models) + [Switch to relevant branchs](#switch-to-relevant-branchs) + [What happens during a single coupled run](#what-happens-during-a-single-coupled-run) + [What happens during a bundle of coupled runs](#what-happens-during-a-bundle-of-coupled-runs) - + [Configure start_bundle_coupled.R](#configure-start_bundle_coupledr) + [Configure the config files of your choice](#configure-the-config-files-of-your-choice) + [Perform test start before actually submitting runs](#perform-test-start-before-actually-submitting-runs) + [Start runs after checking that coupling scripts finds all gdxes and mifs](#start-runs-after-checking-that-coupling-scripts-finds-all-gdxes-and-mifs) @@ -42,6 +84,16 @@ For both models switch to the git branches you want to use for your runs, for ex git checkout develop ``` +### Start coupled runs + +Use `start.R` together with a `scenario_config_magpie*.csv` file (formerly known as `scenario_config_coupled.csv`) to activate the MAgPIE coupling, e.g. + +``` +Rscript start.R config/scenario_config_magpie.csv +``` + +The new coupling is mainly perforemd in `core/presolve.gms`, by calling an external R script, that transfers the data of the latest Nash solution to MAgPIE, runs MAgPIE, and transfers the MAgPIE data to a `magpieData.gdx`, which is then read by GAMS. + ### What happens during a single coupled run You can find a more technical explanation in the sections below, but the start script is essentially creating new runs of each model that use previous runs as input. These runs' names follow a specific pattern of suffixes and prefixes, and "communicate" through ".mif" reporting files. @@ -50,144 +102,86 @@ You can find a more technical explanation in the sections below, but the start s Here's an example of a simple case. If you start a new coupled run with the scenario name `Base`, which doesn't depend on any other run, the script will: - - Set up and start a normal REMIND run called `C_Base-rem-1`, based on the configurations in `scenario_config.csv` - - After that REMIND run finishes, set up a MAgPIE run, in the MAgPIE folder you defined in `path_magpie`, called `C_Base-mag-1`. This run will be configured to: - - Take the bioenergy demands and GHG prices from the previous REMIND run's reporting output, in `path_remind/output/C_SSP2EU-Base-rem-1/REMIND_generic_C_SSP2EU-Base-rem-1.mif` - - Take other MAgPIE configurations from the `magpie_scen` column in `scenario_config_coupled.csv`. - - After that MAgPIE run finishes, start another REMIND run with the name `C_Base-rem-2`, which will: - - Take initial conditions from the `fulldata.gdx` of the previous REMIND run, `C_Base-rem-1`. - - Take bioenergy prices and land-use GHG emissions from the previous MAgPIE run's reporting output, in `path_magpie/output/C_Base-mag-1/report.mif` + - Set up and start a normal REMIND run called `C_Base_timestamp`, based on the configurations in `scenario_config.csv` and `scenario_config_magpie.csv` + - Everytime the Nash loop reaches an iteration that is defined im `c_magpieIter`, set up a MAgPIE run, in the folder 'magpie' within the REMIND main folder, called `C_Base_timestamp-mag-1`. This run will be configured to: + - Take the bioenergy demands and GHG prices from the previous REMIND run's reporting output, in `path_remind/output/C_Base_timestamp/REMIND_rem2mag-1.mif.mif` + - Take other MAgPIE configurations from the `magpie_scen` column in `scenario_config_magpie.csv`. + - After that MAgPIE run finishes, continue REMIND with the next Nash iterations, which will: + - Take bioenergy prices and land-use GHG emissions from the previous MAgPIE run's reporting output, in `path_magpie/output/C_Base_timestamp-mag-1/report.mif` -This process will continue until for as many iterations as set in `max_iterations` in `start_bundle_coupled.R` (see Check the Convergence below). The last iteration will run REMIND only, so REMIND will have run `max_iterations` times and MAgPIE wil have run `max_iterations - 1` times. So, if `max_iterations` is 5, the last REMIND run in this case will be `C_Base-rem-5` and the last MAgPIE iteration will be `C_Base-mag-4`. +This process will continue until for as many MAgPIE iterations as set in `c_magpieIter` in `main.gms`, usually `20,24,28,32`, even if Nash would have converged earlier. This guarantees that all MAgPIE iterations are actually run. (see Check the Convergence below). -The output of both models can be analyzed normally from these two runs. The REMIND `.mif` file contains also the MAgPIE variables. Additionally, at the end of a successful coupled run the coupling script will automatically merge the reports of the last runs of both models in a `.mif` file located in the root of REMIND's output folder, using the joint model name "REMIND-MAgPIE". In our example, that file will be `path_remind/output/C_SSP-Base.mif`. +The output of both models can be analyzed normally from these two runs. The REMIND `.mif` file contains also the MAgPIE variables. So, in the end of the coupled run in this example, you should have a directory structure like: ``` |-- path_remind # the path to the REMIND model folder -| |-- output -| |-- C_Base-rem-1 -| |-- C_Base-rem-2 -| |-- C_Base-rem-3 -| |-- C_Base-rem-4 -| |-- C_Base-rem-5 -| |-- C_Base.mif - -|-- path_magpie # the path to the MAgPIE model folder set in start_bundle_coupled.R -| |-- output -| |-- C_Base-mag-1 -| |-- C_Base-mag-2 -| |-- C_Base-mag-3 -| |-- C_Base-mag-4 + |-- output + |-- C_Base_timestamp + |-- magpie # the path to the MAgPIE model folder + |-- output + |-- C_Base_timestamp-mag-1 + |-- C_Base_timestamp-mag-2 + |-- C_Base_timestamp-mag-3 + |-- C_Base_timestamp-mag-4 ``` ### What happens during a bundle of coupled runs -Make sure you have read and understood [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md). -After Base-rem-1 run is finished, the policy run (NDC-rem-1) is already started as well as Base-rem-2, etc. -So `NDC-rem-1` uses the `fulldata.gdx` from `Base-rem-1` as `path_gdx_ref`, while `NDC-rem-2` uses `Base-rem-2` and so on: - -``` -Base-rem-1 -> Base-rem-2 -> Base-rem-3 -> Base-rem-4 - ↳ NDC-rem-1 -↳ NDC-rem-2 -↳ NDC-rem-3 -↳ NDC-rem-4 - ↳ Policy-rem-1 -↳ Policy-rem-2 -↳ Policy-rem-3 -↳ Policy-rem-4 -``` -Each REMIND run has its own cluster job and should require around 4 to 10 hours. On the PIK cluster, this allows to use `priority` and `short` jobs. -Once `Policy-rem-1` is finished, you have a full set of preliminary data available, while the later rem-2 etc. are still running. - -### Configure start_bundle_coupled.R - -See comments in the head section of the file. Most importantly you need to provide the path to MAgPIE. +Regarding a cascade, the coupled runs behave exactly like standalone runs, except that MAgPIE runs in between the Nash iterations. Please see [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md). ### Configure the config files of your choice -Required as `path_settings_coupled` is a file from [`./config/`](../config) that starts with `scenario_config_coupled*.csv` and provides some extra information for coupled runs (e.g. which run should be started, specific MAgPIE configurations), with one scenario per row and settings on the columns. `path_settings_remind` is a normal `scenario_config` that defines all other REMIND settings, as explained in [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md). Every scenario to be run must be present in both files. +The coupled config file you passed along with `start.R` from [`./config/`](../config) starts with `scenario_config_magpie*.csv` and provides some extra information for coupled runs (e.g. which run should be started, specific MAgPIE configurations), with one scenario per row and settings on the columns. The REMIND settings will be taken from the corresponding normal `scenario_config*.csv`, as explained in [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md). Every scenario to be run must be present in both files. -All the columns must be present in the `scenario_config_coupled.csv` file, but most of them can be left blank. The required ones are: +All the columns must be present in the `scenario_config_magpie.csv` file, but most of them can be left blank. The required ones are: - `title`: The name of the scenario, must be unique and match the `title` column in REMIND's `scenario_config.csv` - - `start`: Defines if a scenario run should be started (1) or not (0). Overrides whatever is set in REMIND's `scenario_config*.csv`. If you have an unfinished coupled run, it will automatically try to continue from the last coupling iteration (i.e. REMIND or MAgPIE run), if it is not finished yet (i.e. reached `max_iterations`). - - `qos`: The SLURM qos the coupled runs should be submitted to, such as `priority`, `short`, `medium`, `long` or `standby` on the PIK cluster. If you use `auto`, the qos is set to `priority` if an empty slot exists, and `short` otherwise. This is also the default if no `qos` is set. Currently, there is no default support for running a coupled run locally. - - `magpie_scen`: A pipe (`|`) separated list of configurations to pass to MAgPIE. Each entry should correspond to a column in [MAgPIE's scenario_config](https://github.com/magpiemodel/magpie/blob/master/config/scenario_config.csv), each one of them setting the multiple configuration flags listed in that file. The configurations are applied in the order that they appear. For example, to configure MAgPIE with SSP2 settings and climate change impacts according to RCP45 set `magpie_scen` to `SSP2|cc|rcp4p5`. To select scenarios from a different `scenario_config*.csv` file replace `magpie_scen` by the path to that file relative to MAgPIE's main folder, for example: `config/projects/scenario_config_PROJECT.csv`. The filename *must contain* the string `scenario_config`. You can also specify more than one column directing to another `scenario_config_PROJECT2.csv` file. They will be evaluated in the order in which they appear in the `scenario_config_coupled.csv`. There is another option of addressing MAgPIE switches described at the end of the list of optional columns below. + - `start`: Defines if a scenario run should be started (1) or not (0). Overrides whatever is set in REMIND's `scenario_config*.csv`. + - `magpie_scen`: A pipe (`|`) separated list of configurations to pass to MAgPIE. Each entry should correspond to a column in [MAgPIE's scenario_config](https://github.com/magpiemodel/magpie/blob/master/config/scenario_config.csv), each one of them setting the multiple configuration flags listed in that file. The configurations are applied in the order that they appear. For example, to configure MAgPIE with SSP2 settings and climate change impacts according to RCP45 set `magpie_scen` to `SSP2|cc|rcp4p5`. To select scenarios from a different `scenario_config*.csv` file replace `magpie_scen` by the path to that file relative to MAgPIE's main folder, for example: `config/projects/scenario_config_PROJECT.csv`. The filename *must contain* the string `scenario_config`. You can also specify more than one column, directing to another `scenario_config_PROJECT2.csv` file. They will be evaluated in the order in which they appear in the `scenario_config_magpie.csv`. There is another option of addressing MAgPIE switches described at the end of the list of optional columns below. - `no_ghgprices_land_until`: Controls at which timestep in the MAgPIE runs GHG prices from REMIND will start to be applied. This essentially enables you to set whether or not (or when) GHG prices on land should be applied in MAgPIE. If you want MAgPIE to always apply the same GHG prices from REMIND, you should set this to a timestep corresponding to the start of your REMIND run, such as `y2020` to start in the 2020 timestep. If you want to disable GHG prices in MAgPIE, regardless of what REMIND finds, set this to the last timestep of the run (usually `y2150`). Values in between allow the simulation of policies where GHG prices are only applied in the land use sector after a certain year. Other, optional columns allow you to make a run start only after another has finished, set starting conditions, and give you finer control over which data is fed from REMIND to MAgPIE or from MAgPIE to REMIND. - - `path_gdx`, `path_gdx_ref`, `path_gdx_refpolicycost`, `path_gdx_carbonprice`, `path_gdx_bau`: If cell is non-empty, override these same settings in REMIND's `scenario_config`, see [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md) for a detailed explanation. Note that if the `path_gdx_refpolicycost` column is missing, it is *not* copied from `path_gdx_ref` as is the case for the normal config file. If you specify `path_gdx_ref`, always specify `path_gdx_refpolicycost`. - - You can set these switches either to the full path of a `fulldata.gdx` file or simply to the name of another scenario in the file (without the "C_"!). So if you want a certain scenario (say `NDC`) to use as starting point the results of a `Base` scenario, you can simply set `path_gdx` to `Base` and it will automatically locate the appropriate `fulldata.gdx` in `Base`, for example `path_remind/C_Base-rem-x/fulldata.gdx`. - - If you set any of these `path_gdx…` columns (or `path_mif_ghgprice_land`, below) with a scenario name such as `Base`, the coupling script will not start any runs that depend on an unfinished run, and automatically start them when that run finishes. So, in the example above, you can set `start` to `1` in both `Base` and `NDC`, `NDC` will only start *after* `Base` is finished. `NDC-rem-2` will start after `NDC-rem-1` and `Base-rem-2` are finished. - - If you set any of these settings with a scenario name, the script will automatically try to detect whether the required "parent" run including the reporting is already finished and uses the appropriate `fulldata.gdx` then. - - You can also set it to `C_Base-rem-3` if for some reason, you want the results of a specific iteration. - - `path_gdx`: if you provide a full path to a fulldata.gdx this will overwrite whatever might have been automatically found from former REMIND runs. + - `continueFromHere`: If the coupling has not yet converged and you want to continue iterations to improve the convergence, provide a path to a REMIND repoting or fulldata.gdx or a MAgPIE report here and start the run again. If provided REMIND will continue from there, meaning: + - if a REMIND output was provided, it will start a MAgPIE run before the first Nash iteration and use the REMIND output as input for it + - if a MAgPIE output was provied, it will start the Nash iterations as usual and use the MAgPIE output as input + - `magpieIter` Use this to specify the Nash iterations in which MAgPIE runs, overwriting what is defined in `c_magpieIter` in `main.gms`. - `path_mif_ghgprice_land`: This setting allows MAgPIE to be run using an exogenous, fixed GHG price path, regardless of the GHG price in the REMIND coupling. This can be useful if you want to simulate different GHG pricing policies in the land-use sector. Its timing is also controlled by `no_ghgprices_land_until`. - As with the `path_gdx*` settings, this can be set both to the full path of a REMIND `.mif` reporting file (*not* a `.gdx`) or to the name of another scenario. If set to the name of another scenario, it will also wait for that run to finish before starting the dependent run as described. - - `oldrun`: This setting can be used to continue a coupled run that had a different name and/or is in a different folder. It works in almost the same way as `path_gdx`, but it is used only if no REMIND run has been finished for this scenario. It will look in the path set in `start_bundle_coupled.R`'s `path_remind_oldruns`. This can be useful when continuing a previous experiment that was made in another REMIND copy, or after changing scenario names. - - `path_report: Provide a path to a MAgPIE report here if you want REMIND to start with it. It overwrites whatever might have been automatically found from former MAgPIE runs. - - `cm_nash_autoconverge_lastrun`: can be used to specify `cm_nash_autoconverge`, but only for the last REMIND run, for example to increase precision there by setting it to `2`. - - `cfg_mag$...`: If you don't want to select composed scenarios in MAgPIE to address switches, you can directly address individual MAgPIE switches in the `scenario_config_coupled.csv`. Add any number of columns to your `scenario_config_coupled.csv` that have the name of the MAgPIE switch as the column name. They need to start with `cfg_mag$`. For example: if you want to set `gms$s56_cprice_red_factor` to `3.14` for `SSP2-NPi`, add the column `cfg_mag$gms$s56_cprice_red_factor` to your `scenario_config_coupled.csv` and fill in `3.14` in the row that defines `SSP2-NPi`. - - `var_luc`: Controls, which variable to use in REMIND to represent land-use change (LUC) CO2 emissions from MAgPIE (`co2luc` in REMIND). By default, this switch is set to `smooth` such that the variable `Emissions|CO2|Land|+|Land-use Change` is used. This variable was i.a. obtained by applying a low-pass filter to the raw LUC emissions in order to smooth out spikes. Alternatively, this switch can be set to `raw`. Then the unfiltered variable `Emissions|CO2|Land RAW|+|Land-use Change` is used instead. - + - `cfg_mag$...`: If you don't want to select composed scenarios in MAgPIE to address switches, you can directly address individual MAgPIE switches in the `scenario_config_magpie.csv`. Add any number of columns to your `scenario_config_magpie.csv` that have the name of the MAgPIE switch as the column name. They need to start with `cfg_mag$`. For example: if you want to set `gms$s56_cprice_red_factor` to `3.14` for `SSP2-NPi`, add the column `cfg_mag$gms$s56_cprice_red_factor` to your `scenario_config_magpie.csv` and fill in `3.14` in the row that defines `SSP2-NPi`. + - `path_gdx`, `path_gdx_ref`, `path_gdx_refpolicycost`, `path_gdx_carbonprice`, `path_gdx_bau`: CURRENTLY NOT SUPPORTED. PLEASE USE THE RESPECTIVE COLUMNS IN `scenario_config.csv`! See [`03_RunningBundleOfRuns`](./03_RunningBundleOfRuns.md) for a detailed explanation. ### Perform test start before actually submitting runs -The `--test` (or `-t`) flag shows you if the scripts find all information that are crucial for starting the coupled runs, such as gdxes, mifs, model code. It also indicates if a run that crashed previously can be continued and where (which model, which iteration). +The `--test` (or `-t`) flag shows you if the scripts find all information that are crucial for starting the coupled runs, such as gdxes, mifs, model code. ```bash -Rscript start_bundle_coupled.R --test +Rscript start.R --test config/scenario_config_magpie.csv ``` If you want to check whether your REMIND settings compile, run ```bash -Rscript start_bundle_coupled.R --gamscompile +Rscript start.R --gamscompile config/scenario_config_magpie.csv ``` -A shortcut for these commands is `./start_bundle_coupled.R -t` and `./start_bundle_coupled.R -g`. - -If you provide a coupled config file as command line argument, it overwrites the settings in `start_bundle_coupled.R`: -```bash -Rscript start_bundle_coupled.R --test config/scenario_config_coupled_XYZ.csv -``` -This assumes that the REMIND settings can be found in `config/scenario_config_XYZ.csv` without the `_coupled`. +A shortcut for these commands is `-t` and `-g`. If you pass `--interactive` as a flag, the script asks you to choose the scenario to be started. -### Start runs after checking that coupling scripts finds all gdxes and mifs - -```bash -Rscript start_bundle_coupled.R [configfile] -``` - -You can use `Rscript start_bundle_coupled.R [configfile] | tee -a start_log.txt` (or a different filename) if you want to save the log of this procedure to a file, additionally to printing it to the screen. +You can use `Rscript start.R config/scenario_config_magpie.csv | tee -a start_log.txt` (or a different filename) if you want to save the log of this procedure to a file, additionally to printing it to the screen. # Check the convergence -There is no automatic abort criterion for the coupling iterations. The number of coupling iterations is given by the user (`max_iterations` in start_bundle_coupled.R) and will be performed regardless of the quality of convergence. The convergence can be checked, however, by tracking the changes of crucial coupling variables (such as bioenergy demand and prices, GHG emissions and prices) across coupling iterations. After `max_iterations` is reached, a pdf showing these changes is produced automatically that can be found in the common `output` folder of REMIND. If you want to create this pdf for one or more scenarios specifically please provide the names of these runs as follows: +There is no automatic abort criterion for the coupling iterations. The number of coupling iterations is given by the user (`c_magpieIter` in `main.gms`) and will be performed regardless of the quality of convergence. The convergence can be checked, however, by tracking the changes of crucial coupling variables (such as bioenergy demand and prices, GHG emissions and prices) across coupling iterations. After the run finished, a pdf showing these changes is produced automatically that can be found in the common `output` folder of REMIND. If you want to create this pdf for one or more scenarios specifically please provide the names of these runs as follows: ```bash Rscript output.R ``` -choosing a `comparison` and then `plot_compare_iterations`. -If the iterations you want to inspect are located in an output folder different from `output` please provide the path to this folder: - -```bash -Rscript scripts/output/comparison/plot_compare_iterations.R folder=another-output-folder -``` - -To compare the REMIND runs, a `compareScenario2` for each scenario is produced automatically in the main folder (look for `compScen_rem-1-5_Base.pdf` or similar). -You can switch that off by setting `run_compareScenario` to `FALSE` in `start_bundle_coupled.R`. - -# Compare scalars from all coupled runs - -By running something like -```bash -Rscript --vanilla scripts/utils/readcoupled.R cm_startyear,o_iterationNumber -Rscript --vanilla scripts/utils/readcoupled.R 'Price|Carbon,pm_taxCO2eqSum' EUR 2050 -``` -you can get a compact overview of scalars (such as `cm_startyear`, `o_iterationNumber`, `s45_actualbudgetco2` or `cm_peakBudgYr`), -parameters, variables or reporting variables for all coupled runs in your folder. Type 'Rscript scripts/utils/readcoupled.R --help' for help. -PIK cluster users can use `readcoupled vars [regi] [time]` as a shortcut. +- choose `single` and then `plotRemMagNash` to treat each run individually and produce one pdf per run +- or choose `comparison` and then `plotRemMagNash` if you want to plot all coupling iterations of a run and all runs that continued it into one single pdf. See `continueFromHere` above. # Technical concept @@ -196,7 +190,7 @@ There are two components of the REMIND-MAgPIE coupling: the prominent dynamic pa ### Dynamic part * bioenergy demand, GHG prices from REMIND to MAgPIE (technical: getReportData in [`startfunctions.R`](https://github.com/magpiemodel/magpie/blob/master/scripts/start_functions.R)) -* bioenergy prices, GHG emissions from MAgPIE to REMIND (technical: getReportData in [`getReportData.R`](https://github.com/remindmodel/remind/blob/develop/scripts/start/getReportData.R)) +* bioenergy prices, GHG emissions from MAgPIE to REMIND (technical: getMagpieData in [`magpie.R`](https://github.com/remindmodel/remind/blob/develop/scripts/input/magpie.R)) ### Static part @@ -217,19 +211,15 @@ Please find a detailed list of the REMIND input files and were they come from [i ### The coupling scripts -The meta scripts for coupled runs that configure the models, start the runs, and perform the iteration loop, are located in the REMIND main folder. - - +The scripts for coupled runs that configure the models, start the runs, and perform the iteration loop, are located in the REMIND main folder. -* `start_bundle_coupled.R` +* `start.R` * installs MAgPIE dependencies, ensures both REMIND and MAgPIE run in the same renv - * reads scenario_config_coupled.csv and scenario_config.csv files and updates model cfgs accordingly - * saves all settings (including cfgs) to individual `.RData` files in the REMIND main folder such as `C_Base-rem-x.RData` - * sends a job to the cluster for each scenario specified in the csvs. Each job executes `start_coupled.R`. -* `start_coupled.R` - * tries to detect runs that crashed and that can be continued - * reads the `.RData` file and starts REMIND and MAgPIE. - * saves the output of one model into the specific input folder of the other model - * the models read these inputs as part of their individual start scripts - * REMIND runs last - * after last coupling iteration generate combined reporting file by binding REMIND and MAgPIE mifs together, and create a `compareScenario2` for REMIND, and a `plot_compare_iterations` using results of both models. + * reads scenario_config_magpie.csv and scenario_config.csv files and updates model cfgs accordingly + * saves all settings (including cfgs) to individual `.RData` files in the REMIND main folder such as `C_Base.RData` + * sends a job to the cluster for each scenario specified in the csvs. +* `scripts/input/magpie.R` called from `core/presolve.gms` + * produces reduced reporting mif file from the latest Nash iteration only containing the variables relevant for MAgPIE + * reads the MAgPIE cfg from the `config.RData` file and starts MAgPIE. + * transfers the MAgPIE variables to a `magpieData.gdx` that is imported by REMIND GAMS in the next Nash iteration + * after last coupling iteration generate combined reporting file by binding REMIND and MAgPIE mifs together, and create a `plotRemMagNash` using `o_*(iteration,regi,t)` parameters from the REMIND `fulldata.gdx`. diff --git a/tutorials/12_Calibrating_CES_Parameters.md b/tutorials/12_Calibrating_CES_Parameters.md index 124462ea1f..6b1da20070 100644 --- a/tutorials/12_Calibrating_CES_Parameters.md +++ b/tutorials/12_Calibrating_CES_Parameters.md @@ -1,6 +1,7 @@ # Calibrating CES Parameters -## CES Production Function Basics +## Theory +### CES Production Function Basics REMIND uses a nested CES production function of the form @@ -27,7 +28,9 @@ Therefore, > **Anytime either the REMIND model or the input data change in a way that affects the results of a baseline scenario, that baseline scenario needs to be calibrated.** -## Iterative Calibration + + +### Iterative Calibration As it is not possible to calculate $n$ parameters $\alpha_i$ from a single equation, we use an iterative approach. The @@ -61,37 +64,34 @@ $\pi_i^{(j)} = \alpha_i^{(j)} {V_i^{(j)}}^{\rho_o - 1} {V_o^{(j)}}^{1 - \rho_o}$ $\alpha_i^{(j+1)} = \pi_i^{(j)} \left(\frac{V_i^\ast}{V_o^\ast}\right)^{1 - \rho_o}$ -## Requirements -For the calibration process to work, we need +## Practice +### Requirements and settings -1. trajectories for all primary production factors (`ppf`, final energy and - energy service demands, labour, capital) and the output (GDP), and -2. the previous iterations' `ppf` prices. +For the calibration process to work, we need both: -Trajectories under (1) come from the input files `./core/input/f_gdp.cs3r`, -`./core/input/f_pop.cs3r`, -`./modules/29_CES_parameters/calibrate/input/f29_capitalQuantity.cs4r`, and -`./core/input/f_fedemand.cs4r` which are generated automatically as part of the -input data generation and always present. +1. Trajectories for all primary production factors (`ppf`: final energy and energy service demands, + labour, capital) and the output (GDP). They come from input files that are automatically + generated as part of the input data generation: + - `./core/input/f_gdp.cs3r` + - `./core/input/f_pop.cs3r` + - `./modules/29_CES_parameters/calibrate/input/f29_capitalQuantity.cs4r` + - `./core/input/f_fedemand.cs4r` -Prices under (2) are calculated using the `input.gdx` provided to the -calibration run. User intervention is only required when prices cannot be -derived from the `.gdx` file in case of a change in the CES structure: -when nodes have been added or removed from the CES tree -(technically when the set `cesOut2cesIn` differs between `input.gdx` and the -current calibration run), or seldom in cases of convergence problems. +2. Prices of `ppf` at the previous iteration. They are calculated using the `input.gdx` provided to + the calibration run. User intervention is only required when prices cannot be derived from the `.gdx` + file in case of a change in the CES structure: when nodes have been added or removed from the CES tree + (technically when the set `cesOut2cesIn` differs between `input.gdx` and the current calibration run), + or seldom in cases of convergence problems. -## Settings - -To set up a CES calibration run, simply set module 29 `CES_parameters` to the -`calibration` realisation. All data relevant to the calibration is configured -according to the selected scenario configuration. Keep them identical to the -baseline scenario you want to calibrate. -If your calibration depends on new input data, you need to update the configuration. -Use the command `lastrev` to find the latest input data revisions on the cluster. -If your choice is _rev1.23abc_, update the following line of the configuration file +To set up a CES calibration run, simply set module 29 `CES_parameters` to the `calibrate` realisation. +All data relevant to the calibration is configured according to the selected scenario configuration; +keep them identical to the baseline scenario you want to calibrate. +If your calibration depends on new input data (for instance an update in `mrremind`), +you need to update the configuration. +Use the command `lastrev` to find the latest input data revisions on the cluster; +if your choice is _rev1.23abc_, update the following line of the configuration file `./config/default.cfg` (without _rev_ and always with quotation marks): ```R @@ -122,46 +122,50 @@ The calibration can further be adjusted using the following switches: Can help finding a suitable value for `cm_CES_calibration_default_price`. -## Results -The CES calibration outputs a `.gdx` file and an `.inc` file with all -the CES parameters. Their long name, for instance -`indu_subsectors-buil_simple-tran_edge_esm-GDPpop_SSP2-En_SSP2-Kap_debt_limit-Reg_62eff8f7` -indicates the CES configuration, the GDP/population scenarios, the capital market -module realisation and the [region configuration](17_Regions.md) -(_62eff8f7_ for H12, _2b1450bc_ for EU21). -You don't need to change these names, they are matched automatically using the -switch `cm_CES_configuration`. The parameter files also include a counter for +### Results + +The CES calibration outputs a `.gdx` file and an `.inc` file containing all the CES parameters. +The long name of these files indicates the CES configuration, the GDP/population scenarios, +the capital market module realisation, and the [region configuration](17_Regions.md) +(_62eff8f7_ for H12, _2b1450bc_ for EU21), for instance: +`indu_subsectors-buil_simple-tran_edge_esm-GDPpop_SSP2-En_SSP2-Kap_debt_limit-Reg_62eff8f7`. +Do not change these names, as they are matched automatically with the +switch `cm_CES_configuration`. The parameter files also include a counter for the calibration iteration they resulted from (e.g. `_ITERATION_10.inc`). -Calibration results can be included the PIK calibration repository (for use by -all REMIND users), or used in a local directory (e.g. for project work). +Calibration results can be included in the PIK calibration repository (for use by +all REMIND users) or used in a local directory (for project work): 1. Prepare the calibration directory: - To include calibration results in the PIK calibration repository, navigate to - `/p/projects/remind/inputdata/CESparametersAndGDX/`. - - For use in a local directory, go to your local REMIND folder and type - `make set-local-calibration`. Navigate to the newly created folder `calibration_results/`. -2. Use the `collect_calibration` script with one ore more paths to the completed - calibration run directories as a parameter, for instance: - ```sh - ./collect_calibration /p/tmp/username/Remind/output/SSP2-calibrate_2024-12-31_23.59.59/ - ``` - Note that an absolute or relative path may be used. - The script copies the necessary `.inc` and `.gdx` files to the repository - (adjusting the file names as needed), stages and commits them; you may review and - modify the commit message before committing (or abort with `:cq` in vim). - The script then generates a `.tgz` archive, which is what REMIND will be looking for - in order to run. Finally it displays the commit hash and offers to include it as the - `CESandGDXrevision` in the REMIND configuration. -3. If the specific calibration settings (`cm_CES_configuration`) have never been -calibrated and used in REMIND before, add the name of the `.gdx` file to `./config/gdx-files/files` -and add the name of the `.inc` file to `./modules/29_CES_parameters/load/input/files`, so that the -new calibration results are copied into these directories during run setup. - - - -## Diagnostic and validity + `/p/projects/remind/inputdata/CESparametersAndGDX/`. + - For use in a local directory, navigate to the folder `calibration_results/`. This folder + is automatically created during CES calibration runs, or you can set it up manually + with `make set-local-calibration`. + +2. Use the `collect_calibration` script with one or more paths to the completed + calibration run directories as a parameter. For instance: + ```sh + ./collect_calibration /p/tmp/username/Remind/output/SSP2-calibrate_2024-12-31_23.59.59/ + ``` + Note that both absolute and relative paths may be used. + The script copies the necessary `.inc` and `.gdx` files to `calibration_results/`, + adjusting the file names as needed, stages and commits them (you may review and + modify the commit message, then commit with `:wq` or abort with `:cq`). + The script then displays the commit hash and offers to include it as the + `CESandGDXrevision` in the REMIND configuration, so that the next REMIND runs are + able to find the `.tgz` archive containing the calibration files. + +3. New calibration files are automatically copied from the `.tgz` archive to the relevant directories + during the run setup. This requires the calibration name `cm_CES_configuration` to be listed in + the following files (which happens automatically if you ran the calibration yourself): + - `./config/gdx-files/files` (for the `.gdx` file) + - `./modules/29_CES_parameters/load/input/files` (for the `.inc` file) + + + +### Diagnostic and validity To diagnose the outputs, you may use the `full.log` and `full.lst` files for each calibration iteration (`full_01.log` …), the file `CES_calibration.csv` diff --git a/tutorials/figures/4-REMIND-MAgPIE-circle.png b/tutorials/figures/4-REMIND-MAgPIE-circle.png index f5e435f435..73cf69574a 100644 Binary files a/tutorials/figures/4-REMIND-MAgPIE-circle.png and b/tutorials/figures/4-REMIND-MAgPIE-circle.png differ diff --git a/tutorials/figures/coupling-scripts.png b/tutorials/figures/coupling-scripts.png deleted file mode 100644 index fdd275b1c1..0000000000 Binary files a/tutorials/figures/coupling-scripts.png and /dev/null differ