diff --git a/.Rprofile b/.Rprofile index 839dcab92..8811ff237 100644 --- a/.Rprofile +++ b/.Rprofile @@ -76,16 +76,12 @@ if (!dir.exists(".venv/") # REMIND_repos_dirs="C:\my\first\path;D:\my\second\path" remindReposDirs <- Sys.getenv("REMIND_repos_dirs") -# unless specified otherwise, use cluster defaults -use_cluster_defaults <- TRUE - # add local directories, if any if ("" != remindReposDirs) { directories <- unlist(strsplit(remindReposDirs, .Platform$path.sep, fixed = TRUE)) directoriesList <- rep(list(NULL), length(directories)) names(directoriesList) <- directories options(remind_repos = c(options("remind_repos")[[1]], directoriesList)) - use_cluster_defaults <- FALSE } # Include local calibration results, if they exist, from either the main diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 86f878fd2..0f501109c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: check-case-conflict - id: check-json diff --git a/.zenodo.json b/.zenodo.json deleted file mode 100644 index 10f45cbb5..000000000 --- a/.zenodo.json +++ /dev/null @@ -1,265 +0,0 @@ -{ - "title": "REMIND - REgional Model of INvestments and Development", - "version": "3.3.2", - "creators": [ - { - "name": "Luderer, Gunnar", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-9057-6155" - }, - { - "name": "Bauer, Nico", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-0211-4162" - }, - { - "name": "Baumstark, Lavinia", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-6979-6671" - }, - { - "name": "Bertram, Christoph", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-0933-4395" - }, - { - "name": "Leimbach, Marian", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Pietzcker, Robert", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-9403-6711" - }, - { - "name": "Strefler, Jessica", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-5279-4629" - }, - { - "name": "Aboumahboub, Tino" - }, - { - "name": "Abrahão, Gabriel", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-0336-6246" - }, - { - "name": "Auer, Cornelia", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Benke, Falk", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Bi, Stephen", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Dietrich, Jan Philipp", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-4309-6431" - }, - { - "name": "Dirnaichner, Alois", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-3240-2608" - }, - { - "name": "Fuchs, Sophie", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0009-0000-7258-1287" - }, - { - "name": "Führlich, Pascal", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-6856-8239" - }, - { - "name": "Giannousakis, Anastasis", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-4225-0011" - }, - { - "name": "Gong, Chen Chris", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-6406-6266" - }, - { - "name": "Haller, Markus" - }, - { - "name": "Hasse, Robin", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-1818-3186" - }, - { - "name": "Hilaire, Jerome", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-9879-6339" - }, - { - "name": "Hoppe, Johanna", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Klein, David", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0009-0001-7917-8041" - }, - { - "name": "Koch, Johannes", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-2920-8086" - }, - { - "name": "Köhler-Schindler, Laurin", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-4268-3084" - }, - { - "name": "Körner, Alexander" - }, - { - "name": "Kowalczyk, Katarzyna", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Kriegler, Elmar", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Levesque, Antoine", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Lorenz, Alexander" - }, - { - "name": "Ludig, Sylvie" - }, - { - "name": "Lüken, Michael" - }, - { - "name": "Malik, Aman", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-7310-8448" - }, - { - "name": "Mandaroux, Rahel", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0001-5596-2571" - }, - { - "name": "Manger, Susanne" - }, - { - "name": "Merfort, Anne", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-5929-7748" - }, - { - "name": "Merfort, Leon", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-1704-6892" - }, - { - "name": "Moreno-Leiva, Simón", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-9625-3955" - }, - { - "name": "Mouratiadou, Ioanna" - }, - { - "name": "Odenweller, Adrian", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-1123-8124" - }, - { - "name": "Pehl, Michaja", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-2349-6515" - }, - { - "name": "Pflüger, Mika", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-7814-8916" - }, - { - "name": "Piontek, Franziska", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Popin, Laura" - }, - { - "name": "Rauner, Sebastian", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Richters, Oliver", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0001-8253-4716" - }, - { - "name": "Rodrigues, Renato", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-5863-5514" - }, - { - "name": "Roming, Niklas" - }, - { - "name": "Rottoli, Marianna", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Rüter, Tonn", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Schmidt, Eva" - }, - { - "name": "Schötz, Christof", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-3528-4544" - }, - { - "name": "Schreyer, Felix", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-0376-2599" - }, - { - "name": "Schultes, Anselm", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Sörgel, Björn", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0002-2630-7081" - }, - { - "name": "Ueckerdt, Falko", - "affiliation": "Potsdam Institute for Climate Impact Research" - }, - { - "name": "Verpoort, Philipp", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0003-1319-5006" - }, - { - "name": "Weigmann, Pascal", - "affiliation": "Potsdam Institute for Climate Impact Research", - "orcid": "0000-0001-8801-173X" - } - ], - "keywords": ["energy", "economy", "modeling"], - "license": { - "id": "AGPL-3.0-or-later" - }, - "publication_date": "2024-07-04" -} diff --git a/CHANGELOG.md b/CHANGELOG.md index 072a04e3a..8cd9ee1e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,24 +8,41 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### input data/calibration - new input data rev6.84 [[#1757](https://github.com/remindmodel/remind/pull/1757)] +- new input data rev6.95 in US$2017[[#1812]] (https://github.com/remindmodel/remind/pull/1812) - CES parameter and gdx files calibrated with new default diffLin2Lin for NPi [[#1747](https://github.com/remindmodel/remind/pull/1747)] and [[#1757](https://github.com/remindmodel/remind/pull/1757)] - Update of NDC goals with cutoff data August 31, 2024 [[#1816](https://github.com/remindmodel/remind/pull/1816)] +- Prepare to make input data available for externals. Do not stop on missing validation data. + [[1828]][(https://github.com/remindmodel/remind/pull/1828)] ### changed +- shift base unit from US$2005 to US$2017 [[#1812]] (https://github.com/remindmodel/remind/pull/1812) - plastic waste by default does not lag plastics production by ten years anymore; can be re-activated using `cm_wastelag` - moved to edgeTransport 2.0 version [[#1749](https://github.com/remindmodel/remind/pull/1749)] - **scripts** in readCheckScenarioConfig(), do not automatically remove path_gdx_bau if allegedly 'not needed' [[#1809](https://github.com/remindmodel/remind/pull/1809)] +- **scripts** adjust MAgPIE coupling to US$2005 -> 2017 shift + [[#1851](https://github.com/remindmodel/remind/pull/1851)] +- **core** changed adjustment cost of geohe (central heat pumps), elh2 (electrolysis), MeOH (FT-Synthesis: H2-to-Liquids) + and h22ch4 (methanation: H2-to-Gas) to better reflect upscaling dynamics + [[#1823](https://github.com/remindmodel/remind/pull/1823)] ### added -- **50_damages**, **51_internalizeDamages** add KotzWenz realization based on Kotz & Wenz (2024) - [[#1601](https://github.com/remindmodel/remind/pull/1601)] +- **32_power** increase minimum required dispatchable back-up capacity for VRE integration + [[#1789](https://github.com/remindmodel/remind/pull/1789)] +- **33_CDR** added ocean alkalinity enhancement to the CDR portfolio (OAE is turned off by default) + [[#1777](https://github.com/remindmodel/remind/pull/1777)] - **45_carbonprice** added realizations diffExp2Lin and diffLin2Lin [[#1723](https://github.com/remindmodel/remind/pull/1723)] +-_**45_carbonprice** added realizations NPi2025_EUR55 and NPiexpo + [[#1851](https://github.com/remindmodel/remind/pull/1851)] +- **50_damages**, **51_internalizeDamages** add KotzWenz realization based on Kotz & Wenz (2024) + [[#1601](https://github.com/remindmodel/remind/pull/1601)] +- **config** add ELEVATE2p3 config + [[#1851](https://github.com/remindmodel/remind/pull/1851)] - **scripts** define defaults for script selections in output.R [[#1739](https://github.com/remindmodel/remind/pull/1739)] - **scripts** fail transparently on duplicated column names in `scenario_config*.csv` files @@ -40,17 +57,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **testthat** fail if manipulating main.gms with default cfg drops/changes switches and comments [[#1764](https://github.com/remindmodel/remind/pull/1764)] and [[#1767](https://github.com/remindmodel/remind/pull/1767)] -- **33_CDR** added ocean alkalinity enhancement to the CDR portfolio (OAE is turned off by default) - [[#1777](https://github.com/remindmodel/remind/pull/1777)] -- **32_power** increase minimum required dispatchable back-up capacity for VRE integration - [[#1789](https://github.com/remindmodel/remind/pull/1789)] - **scripts** integrate automated scenario validation via piamValidation as output script [[#1790](https://github.com/remindmodel/remind/pull/1790)] - **scripts** add interactive plotting script 'selectPlots' [[#1815](https://github.com/remindmodel/remind/pull/1815)] - **scripts** in readCheckScenarioConfig() while running tests, check if all scenarios stated in path_gdx* columns exist [[#1818](https://github.com/remindmodel/remind/pull/1818)] - +- **scripts** fail transparently if cm_startyear is earlier than that of path_gdx_ref + [[#1851](https://github.com/remindmodel/remind/pull/1851)] +- **testthat** ignore missing historical.mif in tests because it is an optional input file + [[#1857](https://github.com/remindmodel/remind/pull/1857)] + ### fixed - included CCS from plastic waste incineration in CCS mass flows so it is subject to injection constraints (but did not add CCS costs, see @@ -67,6 +84,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [[1783](https://github.com/remindmodel/remind/pull/1783)] ### removed +- **45_carbonprice** removed superseded realizations linear, exponential and diffCurvPhaseIn2Lin + [[#1858](https://github.com/remindmodel/remind/pull/1858)] ## [3.3.2] - 2024-07-04 diff --git a/CITATION.cff b/CITATION.cff index 9b359564e..d8fb64d17 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,4 +1,4 @@ -cff-version: 1.0.3 +cff-version: 1.2.0 message: If you use this model, please cite it as below. type: software authors: @@ -271,13 +271,14 @@ 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.3.2.dev592" -date-released: 2024-09-17 +version: "3.3.2.dev864" +date-released: 2024-10-21 repository-code: https://github.com/remindmodel/remind keywords: - energy - economy - modeling - model + - active-development license: AGPL-3.0-or-later url: https://www.pik-potsdam.de/research/transformation-pathways/models/remind diff --git a/DESCRIPTION b/DESCRIPTION index bf9455e60..a0114927a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,15 +17,15 @@ Imports: data.table, devtools, dplyr, - edgeTransport (>= 2.3.0), - reporttransport (>= 0.0.11), + edgeTransport (>= 2.7.0), + reporttransport (>= 0.5.0), flexdashboard, GDPuc, gdx (>= 1.53.0), gdxdt, gdxrrw, ggplot2, - gms (>= 0.32.1), + gms (>= 0.33.0), goxygen (>= 1.4.4), gridExtra, gtools, @@ -45,23 +45,26 @@ Imports: magpiesets, mip (>= 0.150.0), modelstats, - mrremind, + mrremind (>= 0.191.2), + mrcommons (>= 1.43.6), + mrdrivers (>= 3.0.0), + mrtransport (>= 0.7.1), mrvalidation, ncdf4, nleqslv, optparse, - piamenv (>= 0.4.0), - piamInterfaces (>= 0.27.2), + piamenv (>= 0.5.4), + piamInterfaces (>= 0.34.1), piamPlotComparison (>= 0.0.10), piamutils, plotly, purrr, - quitte (>= 0.3137.1), + quitte (>= 0.3137.2), R.utils, raster, readr, readxl, - remind2 (>= 1.147.2), + remind2 (>= 1.156.1), renv, reshape2, reticulate, diff --git a/Makefile b/Makefile index f81c560b6..78dc17ccb 100644 --- a/Makefile +++ b/Makefile @@ -79,6 +79,7 @@ test: ## Test if the model compiles and runs without running a full test-fix: ## First run codeCheck interactively, then test if the model compiles and runs without ## running a full scenario. Tests take about 15 minutes to run. $(info Tests take about 18 minutes to run, please be patient) + @./scripts/utils/SOFEOF @Rscript -e 'rlang::with_options(warn = 1, invisible(gms::codeCheck(strict = TRUE, interactive = TRUE))); testthat::test_dir("tests/testthat");' @echo "Do not forget to commit possible changes done by codeCheck to not_used.txt files" @git add -p modules/*/*/not_used.txt diff --git a/config/default.cfg b/config/default.cfg index 40d3103dd..f5bf1274b 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -28,10 +28,10 @@ cfg$regionmapping <- "config/regionmappingH12.csv" cfg$extramappings_historic <- "" #### Current input data revision (.) #### -cfg$inputRevision <- "6.92" +cfg$inputRevision <- "6.99" #### Current CES parameter and GDX revision (commit hash) #### -cfg$CESandGDXversion <- "d4c62a8f11e8a6827310519df09c98eb425a4070" +cfg$CESandGDXversion <- "26e9d6764caa46c1e1cdedbaae68ddfe122afd29" #### Force the model to download new input data #### cfg$force_download <- FALSE @@ -41,7 +41,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 <- getOption("remind_repos") +cfg$repositories <- append(list("https://rse.pik-potsdam.de/data/remind/public" = NULL), + getOption("remind_repos")) #### Folder run statistics should be submitted to cfg$runstatistics <- "/p/projects/rd3mod/models/statistics/remind" @@ -72,7 +73,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev592" +cfg$model_version <- "3.3.2.dev864" #### settings #### cfg$gms <- list() diff --git a/config/gdx-files/files b/config/gdx-files/files index 0e63251f8..8387b8679 100644 --- a/config/gdx-files/files +++ b/config/gdx-files/files @@ -1,9 +1,7 @@ indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2-Kap_debt_limit-Reg_62eff8f7.gdx indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2-Kap_debt_limit-Reg_2b1450bc.gdx indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP1-GDP_gdp_SSP1-En_gdp_SSP1-Kap_debt_limit-Reg_62eff8f7.gdx -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_MC-GDP_gdp_SDP_MC-En_gdp_SDP_MC-Kap_debt_limit-Reg_62eff8f7.gdx -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_RC-GDP_gdp_SDP_RC-En_gdp_SDP_RC-Kap_debt_limit-Reg_62eff8f7.gdx -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_EI-GDP_gdp_SDP_EI-En_gdp_SDP_EI-Kap_debt_limit-Reg_62eff8f7.gdx +indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP3-GDP_gdp_SSP3-En_gdp_SSP3-Kap_debt_limit-Reg_62eff8f7.gdx indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP5-GDP_gdp_SSP5-En_gdp_SSP5-Kap_debt_limit-Reg_62eff8f7.gdx indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2_lowEn-Kap_debt_limit-Reg_62eff8f7.gdx diff --git a/config/scenario_config.csv b/config/scenario_config.csv index dc58869c7..db03d2c2c 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -1,47 +1,41 @@ -title;start;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_bioenergy_SustTax;cm_maxProdBiolc;c_ccsinjecratescen;c_ccscapratescen;cm_subsec_model_steel;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_POPscen;cm_GDPscen;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 -# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NPi-calibrate;calibrate,AMT,compileInTests;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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,2;;;5;;;;;;0;;;;;;;off;;;;;;;;;;;;;;;;;;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NDC;1,AMT,2;;;5;;;rcp45;3;globallyOptimal;0;NDC;;;;9;;;;;;;;;;;;;;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;;;;;;;;;;3;;;;;;Mix2;2025;;SSP2-NPi;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,2;;;5;;;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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-PkBudg500;1,AMT,2;;;5;;;rcp20;9;globallyOptimal;500;diffLin2Lin;200;2045;;9;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2025;;SSP2-NPi;;SSP2-NPi;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;;;5;;;rcp20;9;globallyOptimal;650;diffLin2Lin;75;2055;;9;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2025;;SSP2-NPi;;SSP2-NPi;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-PkBudg1050;1,AMT,2;;;5;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;40;2100;;9;;;;;;;;;;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3ICEban;2025;;SSP2-NPi;;SSP2-NPi;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. -# EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-EU21-NPi-calibrate;calibrate;calibrate;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-EU21-Base;1,AMT,compileInTests,2;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;0;;;;;;;off;;;;;;;;;;;;;;;;;;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-EU21-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-EU21-NDC;1,AMT,2;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;globallyOptimal;0;NDC;;;;9;;;;;;;;;;;;;;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;;;;;;;;;;3;;;;;;Mix2;2025;;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-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-EU21-NPi;1,AMT,2;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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-PkBudg500;1,AMT,2;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;500;diffLin2Lin;200;2045;;9;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2025;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;75;2055;;9;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2025;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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-PkBudg1050;1,AMT,2;;;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;9;globallyOptimal;1050;diffLin2Lin;40;2100;;9;;;;;;;;;;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3ICEban;2025;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;2;1.025;1.75;;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SSP1;0.5;1;forcing_SSP1;SSP1;Mix1;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -SSP1-NDC;1,AMT,compileInTests;;;;;;rcp45;3;globallyOptimal;0;NDC;;;;9;;;2;1.025;1.75;;2;;;;;;;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;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SSP1;0.5;1;forcing_SSP1;SSP1;Mix2;2025;;SSP2-NPi;SSP1-NPi;SSP1-NPi;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. 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-NPi;1,AMT;;;;;;rcp45;3;;0;NPi;;;;9;;;2;1.025;1.75;;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SSP1;0.5;1;forcing_SSP1;SSP1;Mix1;2005;;;;;SSP1-NPi: 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;9;globallyOptimal;650;diffLin2Lin;75;2055;;9;;;2;1.025;1.75;;2;;;;;;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;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;;SSP1;0.5;1;forcing_SSP1;SSP1;Mix4ICEban;2025;;SSP2-NPi;;;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-PkBudg1050;1,AMT;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;40;2100;;9;;;2;1.025;1.75;;2;;;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;;SSP1;0.5;1;forcing_SSP1;SSP1;Mix3ICEban;2025;;SSP2-NPi;;;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 SSP5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP5-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;1;;1.75;;3;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix1;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. -SSP5-NDC;1,AMT;;;;;;rcp45;3;globallyOptimal;0;NDC;;;;9;;;1;;1.75;;3;2;;;;;;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;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix2;2025;;SSP2-NPi;SSP5-NPi;SSP5-NPi;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. 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-NPi;1,AMT;;;;;;rcp45;3;;0;NPi;;;;9;;;1;;1.75;;3;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix1;2005;;;;;SSP5-NPi: 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,AMT;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;75;2055;;9;;;1;;1.75;;3;2;;;;;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;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;;SSP5;0.5;1;forcing_SSP5;SSP5;Mix4ICEban;2025;;SSP2-NPi;;;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-PkBudg1050;1,AMT,compileInTests;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;40;2100;;9;;;1;;1.75;;3;2;;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;;SSP5;0.5;1;forcing_SSP5;SSP5;Mix3ICEban;2025;;SSP2-NPi;;;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 SDP_MC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SDP_MC-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;GLO 0.12, EUR_regi 0.15;;2;1.025;1.75;152;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;MFR;Mix4ICEban;2005;;;;;"SDP_MC-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions." -SDP_MC-NPi;1,AMT;;;;;;rcp45;3;;0;NPi;;;;9;GLO 0.12, EUR_regi 0.15;;2;1.025;1.75;152;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;MFR;Mix4ICEban;2005;;;;;"SDP_MC-NPi: This National Policies Implemented (NPi) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions. 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." -SDP_MC-PkBudg650;1,AMT,compileInTests;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;200;2045;;9;GLO 0.12, EUR_regi 0.15;;2;1.025;1.75;152;2;;;feelhpb 1.05, fehob 1.75, feheb 0.1;manual;feh2_otherInd 1.04, feelhth_otherInd 0.4, feh2_cement 2.0, feelhth_chemicals 1.3, feh2_chemicals 1.04;2050.GLO 0.9;NDCplus;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;;4;;SDP;0.5;1;forcing_SSP1;MFR;Mix4ICEban;2025;;SSP2-NPi;;;"SDP_MC-PkBudg650: This climate policy scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions. 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." -# H12 SDP_EI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SDP_EI-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;GLO 0.14, EUR_regi 0.15;;2;1.025;1.75;300;;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;SSP1;Mix4ICEban;2005;;;;;"SDP_EI-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth." -SDP_EI-NPi;0;;;;;;rcp45;3;;0;NPi;;;;9;GLO 0.14, EUR_regi 0.15;;2;1.025;1.75;300;;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;SSP1;Mix4ICEban;2005;;;;;"SDP_EI-NPi: This National Policies Implemented (NPi) scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth. 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." -SDP_EI-PkBudg650;0;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;200;2045;;9;GLO 0.14, EUR_regi 0.15;;2;1.025;1.75;300;;2;;feelhpb 1.05, fehob 1.75, feheb 0.35;manual;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05;2050.GLO 0.9;NDCplus;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;;4;;SDP;0.5;1;forcing_SSP1;SSP1;Mix4ICEban;2025;;SSP2-NPi;;;"SDP_EI-PkBudg650: This climate policy scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth. 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." -# H12 SDP_RC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SDP_RC-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;4;1.025;2;100;5;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;;4;3;SDP;;1;forcing_SSP1;SSP1;Mix3ICEban;2005;;;;;"SDP_RC-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven." -SDP_RC-NPi;0;;;;;;rcp45;3;;0;NPi;;;;9;;;4;1.025;2;100;5;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;;4;3;SDP;;1;forcing_SSP1;SSP1;Mix3ICEban;2005;;;;;"SDP_RC-NPi: This National Policies Implemented (NPi) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven. 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." -SDP_RC-PkBudg650;0;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;200;2045;2060;9;;;4;1.025;2;100;5;;;feelhpb 1.05, fehob 1.75, feheb 0.35;manual;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05;2050.GLO 0.9;NDCplus;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;;4;;SDP;;1;forcing_SSP1;SSP1;Mix3ICEban;2025;;SSP2-NPi;;;"SDP_RC-PkBudg650: This climate policy scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven. 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." -# H12 SSP2 lowEnergy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2_lowEn-NPi-calibrate;calibrate;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;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;;;;;;rcp45;3;globallyOptimal;0;NDC;;;;9;;;;;;;;;;;;;;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;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;Mix2;2025;;SSP2-NPi;SSP2_lowEn-NPi;SSP2_lowEn-NPi;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. 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-NPi;0;;;;;;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2_lowEn-NPi: 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;9;globallyOptimal;650;diffLin2Lin;75;2055;;9;;;;;;;;;;;;;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;;;gdp_SSP2_lowEn;;;;;;;;;;;;;Mix4ICEban;2025;;SSP2-NPi;;;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-PkBudg1050;0;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;40;2100;;9;;;;;;;;;;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;;;;;;;Mix3ICEban;2025;;SSP2-NPi;;;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. +title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_co2_tax_spread;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_eff;cm_33_OAE_scen;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;c_changeProdCost;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_POPscen;cm_GDPscen;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 +# H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-NPi-calibrate;calibrate,AMT,compileInTests;calibrate;14;;;rcp45;;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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;;;;;rcp45;3;globallyOptimal;0;NDC;;;;;9;;;;;;;;;;;;;;;;;;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;;;;;;;;;;3;;;;;;Mix2;2030;;SSP2-NPi;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,2;;;;;rcp45;3;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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-PkBudg500;1,AMT,2;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;200;2045;;;9;;;;;;;;;;;;;1;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2030;;SSP2-NPi;;SSP2-NPi;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;9;globallyOptimal;650;diffLin2Lin;75;2055;;;9;;;;;;;;;;;;;1;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2030;;SSP2-NPi;;SSP2-NPi;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;9;globallyOptimal;1000;diffLin2Lin;45;2080;;;9;;;;;;;;;;;;;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3ICEban;2030;;SSP2-NPi;;SSP2-NPi;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;5;globallyOptimal;400;diffExp2Lin;70;;20;2070;9;;;;;;1;1;0.9;0;0;;;1;;;;2060.GLO 0.9;NDC;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3ICEban;2035;;SSP2-NPi;;SSP2-NPi;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. +# EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP2-EU21-NPi-calibrate;calibrate;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-EU21-Base;1,AMT,compileInTests,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;0;;;;;;;;off;;;;;;;;;;;;;;;;;;;;;;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2-EU21-Base: This baseline calibration 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;rcp45;3;globallyOptimal;0;NDC;;;;;9;;;;;;;;;;;;;;;;;;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;;;;;;;;;;3;;;;;;Mix2;2030;;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-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-EU21-NPi;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;3;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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-PkBudg500;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;500;diffLin2Lin;200;2045;;;9;;;;;;;;;;;;;1;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2030;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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;9;globallyOptimal;650;diffLin2Lin;75;2055;;;9;;;;;;;;;;;;;1;;;;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;;;;;;;;;;;;;;;;Mix4ICEban;2030;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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;9;globallyOptimal;1000;diffLin2Lin;45;2080;;;9;;;;;;;;;;;;;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3ICEban;2030;;SSP2-EU21-NPi;;SSP2-EU21-NPi;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;;;rcp45;;;0;NPi;;;;;9;;;1;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP3;gdp_SSP3;gdp_SSP3;;;highCoal;;;0;3;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;0;;;;;rcp45;3;;0;NDC;;;;;9;;;1;;;;;;;;;;;;;;;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;pop_SSP3;gdp_SSP3;gdp_SSP3;;;highCoal;;;0;3;SSP3;1.5;;forcing_SSP3;;Mix2;2030;;SSP2-NPi;SSP3-NPi;SSP3-NPi;SSP3-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 3 called High. 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-NPi;0;;;;;rcp45;3;;0;NPi;;;;;9;;;1;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP3;gdp_SSP3;gdp_SSP3;;;highCoal;;;0;3;SSP3;1.5;;forcing_SSP3;;Mix1;2005;;;;;SSP3-NPi: 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;0;;;;;rcp26;9;;1000;diffLin2Lin;45;2080;;2100;9;;;1;;;;;;;;;;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SSP3;gdp_SSP3;gdp_SSP3;;;highCoal;;;0;;SSP3;1.5;;forcing_SSP3;;Mix3ICEban;2030;;SSP2-NPi;;;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;0;;;;;rcp45;9;;;NPiexpo;;;;;9;;;1;0.9;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP3;gdp_SSP3;gdp_SSP3;;;highCoal;;;0;;SSP3;1.5;;forcing_SSP3;;Mix1;2030;;SSP2-NPi;;; +# H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SSP1-NPi-calibrate;calibrate;calibrate;14;;;rcp45;;;0;NPi;;;;;9;GLO 0.12, EUR_regi 0.15;;2;1.025;1.75;;;;;;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;MFR;Mix1;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-NDC;1,AMT,compileInTests;;;;;rcp45;3;globallyOptimal;0;NDC;;;;;9;GLO 0.12, EUR_regi 0.16;;2;1.025;1.75;;;;;;2;;;;;;;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;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;MFR;Mix2;2030;;SSP2-NPi;SSP1-NPi;SSP1-NPi;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. 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-NPi;1,AMT;;;;;rcp45;3;;0;NPi;;;;;9;GLO 0.12, EUR_regi 0.15;;2;1.025;1.75;;;;;;2;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;3;SDP;0.5;1;forcing_SSP1;MFR;Mix1;2005;;;;;SSP1-NPi: 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;9;globallyOptimal;650;diffLin2Lin;75;2055;;;9;GLO 0.12, EUR_regi 0.16;;2;1.025;1.75;;;;;;2;;1;feelhpb 1.05, fehob 1.75, feheb 0.1;manual;feh2_otherInd 1.04, feelhth_otherInd 0.4, feh2_cement 2.0, feelhth_chemicals 1.3, feh2_chemicals 1.04;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;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;;SDP;0.5;1;forcing_SSP1;MFR;Mix4ICEban;2030;;SSP2-NPi;;;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;9;globallyOptimal;1000;diffLin2Lin;45;2080;;;9;GLO 0.12, EUR_regi 0.16;;2;1.025;1.75;;;;;;2;;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;;4;;SDP;0.5;1;forcing_SSP1;MFR;Mix3ICEban;2030;;SSP2-NPi;;;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;;;rcp45;;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;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;1,AMT;;;;;rcp45;3;globallyOptimal;0;NDC;;;;;9;;;;;;;;;;;;;;;;;;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;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;Mix2;2025;;SSP2-NPi;SSP2_lowEn-NPi;SSP2_lowEn-NPi;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. 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-NPi;1,AMT;;;;;rcp45;3;;0;NPi;;;;;9;;;;;;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2_lowEn-NPi: 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;1,AMT;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;75;2055;;;9;;;;;;;;;;;;;1;;;;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;;;gdp_SSP2_lowEn;;;;;;;;;;;;;Mix4ICEban;2030;;SSP2-NPi;;;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;1,AMT;;;;;rcp26;9;globallyOptimal;1000;diffLin2Lin;45;2080;;;9;;;;;;;;;;;;;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;gdp_SSP2_lowEn;;;;;;;;;;;;;Mix3ICEban;2030;;SSP2-NPi;;;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;;;rcp45;;;0;NPi;;;;;9;;;1;;1.75;;;;;;3;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix1;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-NDC;1;;;;;rcp45;3;globallyOptimal;0;NDC;;;;;9;;;1;;1.75;;;;;;3;2;;;;;;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;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix2;2030;;SSP2-NPi;SSP5-NPi;SSP5-NPi;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. 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-NPi;1;;;;;rcp45;3;;0;NPi;;;;;9;;;1;;1.75;;;;;;3;2;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;SSP5;0.5;1;forcing_SSP5;SSP5;Mix1;2005;;;;;SSP5-NPi: 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;9;globallyOptimal;650;diffLin2Lin;75;2055;;;9;;;1;;1.75;;;;;;3;2;1;;;;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;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;;SSP5;0.5;1;forcing_SSP5;SSP5;Mix4ICEban;2030;;SSP2-NPi;;;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;9;globallyOptimal;1000;diffLin2Lin;45;2080;;;9;;;1;;1.75;;;;;;3;2;1;;;;2050.GLO 0.5;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;;SSP5;0.5;1;forcing_SSP5;SSP5;Mix3ICEban;2030;;SSP2-NPi;;;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. diff --git a/config/scenario_config_21_EU11_ARIADNE.csv b/config/scenario_config_21_EU11_ARIADNE.csv index 6d18b2659..0353339df 100755 --- a/config/scenario_config_21_EU11_ARIADNE.csv +++ b/config/scenario_config_21_EU11_ARIADNE.csv @@ -1,4 +1,4 @@ -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_feedstockEmiUnknownFate;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;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;techpol;regipol;cm_regiExoPrice;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_NucRegiPol;cm_CoalRegiPol;cm_EDGEtr_scen;cm_emiscen;cm_multigasscen;cm_POPscen;cm_GDPscen;cm_demScen;cm_startyear;path_gdx;path_gdx_ref +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_feedstockEmiUnknownFate;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;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;techpol;regipol;cm_regiExoPrice;cm_emiMktTarget;cm_emiMktTarget_tolerance;cm_NucRegiPol;cm_CoalRegiPol;cm_EDGEtr_scen;cm_emiscen;cm_multigasscen;cm_POPscen;cm_GDPscen;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;;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp45;;;NPi;1;;;NPi2018;regiCarbonPrice;;;;on;on;Mix1;9;3;;;;2005;; NPi;0;Calib_EU_NPi;National Policies implemented;load;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -6,7 +6,7 @@ Calib_EU_Npi_lowDem;0;Calib_EU_NPi;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 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;;EUR_regi, NEU_regi;;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;diffCurvPhaseIn2Lin;100;2080;3;;regiCarbonPrice;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;0.003;on;on;Mix4;9;;;;;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;;EUR_regi, NEU_regi;;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;diffLin2Lin;100;2080;3;;regiCarbonPrice;;2020.2030.DEU.all.year.netGHG_noLULUCF_noBunkers 0.44, 2035.2045.DEU.all.year.netGHG_LULUCFGrassi 0.001;0.003;on;on;Mix4;9;;;;;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___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/config/scenario_config_21_EU11_ECEMF.csv b/config/scenario_config_21_EU11_ECEMF.csv index 9f5fe1354..4c9636ffc 100644 --- a/config/scenario_config_21_EU11_ECEMF.csv +++ b/config/scenario_config_21_EU11_ECEMF.csv @@ -1,4 +1,4 @@ -title;start;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;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_POPscen;cm_GDPscen;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 +title;start;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;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_POPscen;cm_GDPscen;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;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -6,7 +6,7 @@ xx_DIAG-C80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramappi xx_DIAG-C0to80-gr5;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;;;;;;;;; +xx_DIAG-NZero;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(2035,2040,2045,2050).GLO.tax.t.PE.biomass 3.17, (2035,2040,2045,2050).EUR_regi.tax.t.PE.biomass 0.22;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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);;;;; @@ -19,36 +19,36 @@ xx_DIAG-C400-lin-HighH2;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/ex xx_DIAG-C400-lin-ResidualFossil;0,DIAG;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;;globallyOptimal;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;0;NPi;;;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(2035,2040,2045,2050).EU27_regi.tax.t.PE.biomass 0.237825;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;heat;Mix4;2025;xx_DIAG-NPI;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;; +xx_WP1_Nzero;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;;on;;;;ENC,EWN,ECS,ESC,ECE,FRA,DEU,UKI,ESW;;;;;;;; +xx_WP1_NZero-LimBio;0,WP1;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NPi2018;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;0,WP5p3;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;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;on;on;EUR_regi, NEU_regi;;;;;;;;5;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35.43046358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -test_WP1_Nzero_DEU;0,WP1;;testOneRegi;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;heat;Mix4;2025;xx_WP1_Nzero;xx_DIAG-NPI;xx_DIAG-NPI;;same as xx_DIAG-Nzero;;;;;;;;;;;;;GLO 0.00008 +# _____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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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;diffLin2Lin;100;2080;;9;;;;;;;;;;;;2050.GLO 0.9;NDC;regiCarbonPrice;(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;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;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 22fa0f660..290b9ba63 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;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_CO2priceRegConvEndYr;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 +title;start;CES_parameters;optimization;slurmConfig;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;cm_VRE_supply_assumptions;cm_wasteIncinerationCCSshare;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_CO2priceRegConvEndYr;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;;;;0;;;;;;;;;;;;;;;;;;;;;;;;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;rcp45;;;0;;0;NPi;1;2100;;9;;;;NPi2018;regiCarbonPrice;on;on;3;;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;;;;0;;0;;;2100;;;off;;;;;;;;;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;rcp45;3;;0;;0;NPi;1;2100;;9;;;;NPi2018;regiCarbonPrice;on;on;3;;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;rcp45;3;globallyOptimal;0;;0;NDC;1;2100;;9;;;;NDC;regiCarbonPrice;on;on;3;;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;diffCurvPhaseIn2Lin;100;2080;;9;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;regiCarbonPrice;on;on;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;diffCurvPhaseIn2Lin;60;2100;;9;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;regiCarbonPrice;on;on;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. +SSP2-PkBudg500-DeepEl;1;;;1;rcp20;9;globallyOptimal;1;2050.GLO 0.9;500;diffLin2Lin;100;2080;;9;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;regiCarbonPrice;on;on;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;diffLin2Lin;60;2100;;9;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;regiCarbonPrice;on;on;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 9939bdaa2..9ba7f1c8d 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;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;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_POPscen;cm_GDPscen;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 +title;start;path_gdx_carbonprice;cm_bioenergy_SustTax;CES_parameters;optimization;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;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_POPscen;cm_GDPscen;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 SSP2EU-NPi-calibrate;calibrate,AMT,compileInTests;;1.5;calibrate;;14;;;rcp45;;;0;NPi;;;;9;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2EU-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2EU-Base;1,AMT;;1.5;;;;;;;;;0;;;;;;;off;;;;;;;;;;;;;;;;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix1;2005;;;;;SSP2EU-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2EU-NDC;1,AMT;;1.5;;;;;;rcp45;3;globallyOptimal;0;NDC;;;;9;;;;;;;;;;;;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;;;;;;;;;;3;;;;;;Mix2;2025;;SSP2EU-NPi;SSP2EU-NPi;;SSP2EU-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. SSP2EU-NPi;1,AMT,compileInTests;;1.5;;;;;;rcp45;3;;0;NPi;;;;9;;;;;;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;;;;;;;;;;3;;;;;;Mix1;2005;;;;;SSP2EU-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. -SSP2EU-noDSPkB500-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2EU-DSPkB500-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2EU-noDSPkB500-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2EU-DSPkB500-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 SSP2EU-noDSPkB500-DS_betax_DeepDive;1,AMT;SSP2EU-noDSPkB500-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB500-noDS_betax_DeepDive;1,AMT;SSP2EU-DSPkB500-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB650-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2EU-DSPkB650-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2EU-noDSPkB650-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2EU-DSPkB650-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 SSP2EU-noDSPkB650-DS_betax_DeepDive;1,AMT;SSP2EU-noDSPkB650-noDS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB650-noDS_betax_DeepDive;1,AMT;SSP2EU-DSPkB650-DS_betax_DeepDive;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB1050-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2EU-DSPkB1050-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +SSP2EU-noDSPkB1050-noDS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2EU-DSPkB1050-DS_betax_DeepDive;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 SSP2EU-noDSPkB1050-DS_betax_DeepDive;1,AMT;SSP2EU-noDSPkB1050-noDS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-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 SSP2EU-DSPkB1050-noDS_betax_DeepDive;1,AMT;SSP2EU-DSPkB1050-DS_betax_DeepDive;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-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 -SSP2EU-noDSPkB500-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2EU-DSPkB500-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2EU-noDSPkB500-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2EU-DSPkB500-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 SSP2EU-noDSPkB500-DS_betax_AgMIP;1,AMT;SSP2EU-noDSPkB500-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB500-noDS_betax_AgMIP;1,AMT;SSP2EU-DSPkB500-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB650-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2EU-DSPkB650-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2EU-noDSPkB650-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2EU-DSPkB650-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 SSP2EU-noDSPkB650-DS_betax_AgMIP;1,AMT;SSP2EU-noDSPkB650-noDS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB650-noDS_betax_AgMIP;1,AMT;SSP2EU-DSPkB650-DS_betax_AgMIP;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB1050-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2EU-DSPkB1050-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +SSP2EU-noDSPkB1050-noDS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2EU-DSPkB1050-DS_betax_AgMIP;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 SSP2EU-noDSPkB1050-DS_betax_AgMIP;1,AMT;SSP2EU-noDSPkB1050-noDS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-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 SSP2EU-DSPkB1050-noDS_betax_AgMIP;1,AMT;SSP2EU-DSPkB1050-DS_betax_AgMIP;1.5;;;;;;rcp26;9;globallyOptimal;1050;exogenous;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-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 -SSP2EU-noDSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 -SSP2EU-DSPkB500-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 +SSP2EU-noDSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 500 +SSP2EU-DSPkB500-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;500;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 500 SSP2EU-noDSPkB500-DS_betax_DeepDive_noNDC;1,AMT;SSP2EU-noDSPkB500-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB500-noDS_betax_DeepDive_noNDC;1,AMT;SSP2EU-DSPkB500-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;500;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 -SSP2EU-DSPkB650-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 +SSP2EU-noDSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 650 +SSP2EU-DSPkB650-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp20;9;globallyOptimal;650;diffLin2Lin;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 650 SSP2EU-noDSPkB650-DS_betax_DeepDive_noNDC;1,AMT;SSP2EU-noDSPkB650-noDS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 SSP2EU-DSPkB650-noDS_betax_DeepDive_noNDC;1,AMT;SSP2EU-DSPkB650-DS_betax_DeepDive_noNDC;1.5;;;;;;rcp20;9;globallyOptimal;650;exogenous;100;2080;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix4;2025;;SSP2EU-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 -SSP2EU-noDSPkB1050-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 -SSP2EU-DSPkB1050-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffCurvPhaseIn2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run with diet change and a mitigation budget of 1050 +SSP2EU-noDSPkB1050-noDS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-NPi;;;This is a ghg price determining run without diet change and a mitigation budget of 1050 +SSP2EU-DSPkB1050-DS_betax_DeepDive_noNDC;1,AMT;;1.5;;;;;;rcp26;9;globallyOptimal;1050;diffLin2Lin;60;2100;;9;;;;;;;;;;;;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;;;;;;;;;;;;;;;Mix3;2025;;SSP2EU-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 new file mode 100755 index 000000000..cd6225b43 --- /dev/null +++ b/config/scenario_config_ELEVATE2p3.csv @@ -0,0 +1,18 @@ +title;start;slurmConfig;cm_wasteIncinerationCCSshare;cm_EDGEtr_scen;cm_reducCostB;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;carbonpriceRegi;cm_netZeroScen;cm_co2_tax_startyear;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_emiscen;cm_co2_tax_growth;cm_maxProdBiolc;techpol;cm_multigasscen;cm_startyear;path_gdx_carbonprice;path_gdx;path_gdx_refpolicycost;path_gdx_bau;description +SSP2-Base;0;9;;Mix1;none;none;0;off;0;none;none;;-1;2100;3;1;1.05;off;none;2;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. +ELV_CurPol_T44;0;9;;Mix3;none;rcp45;3;off;0;NPi;none;;1;2100;3;9;1.05;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. In the default setting carbon prices converges after 2030 over all regions to $25 eoc. +ELV_NDC2030_T44;1;9;;Mix3;none;rcp45;3;globallyOptimal;0;NDC;none;;1;2100;3;9;1.05;100;NDC;3;2025;;;ELV-SSP2-CP-D1;ELV-SSP2-CP-D1;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-SSP2-NDC-D0;1;9;;Mix3;none;rcp45;3;globallyOptimal;0;NPiexpo;none;;1;2100;3;9;1;100;NDC;3;2035;;ELV_NDC2030_T44;ELV_NDC2030_T44;;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;;Mix3;none;rcp45;3;globallyOptimal;0;NPiexpo;none;;1;2100;3;9;1.01;100;NDC;3;2035;;ELV_NDC2030_T44;ELV_NDC2030_T44;;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;;Mix3;none;rcp45;3;globallyOptimal;0;NPiexpo;none;;1;2100;3;9;1.03;100;NDC;3;2035;;ELV_NDC2030_T44;ELV_NDC2030_T44;;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;Mix3;none;rcp26;3;globallyOptimal;0;NDC;netZero;ELEVATE2p3;1;2100;3;9;1.05;100;NDC;3;2025;;ELV-SSP2-CP-D1;ELV-SSP2-CP-D1;ELV-SSP2-CP-D1;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-SSP2-NDC-LTS;1;9;2050.GLO 0.5;Mix3;none;rcp26;3;globallyOptimal;0;exogenous;netZero;ELEVATE2p3;1;2100;3;9;1.05;100;NDC;3;2035;ELV_NDC2030_T44;ELV_NDC2030_T44;ELV_NDC2030_T44;ELV-SSP2-CP-D1;ELV-SSP2-NDC-LTS: The scenario reaches NDC pleages in 2030 and converges to the Glasgow mid-century pledges. +ELV-SSP2-1150;1;9;2050.GLO 0.5;Mix3;heatpumps;rcp26;7;globallyOptimal;1150;expoLinear;none;;163;2080;3;9;1.05;100;NDC;2;2030;;;ELV_NDC2030_T44;;ELV-SSP2-1150: net-zero budget Szenarien for 2 degree C global scenario without overshoot +ELV-SSP2-400Feoc;1;9;2050.GLO 0.9;Mix3;heatpumps;rcp20;5;globallyOptimal;400;expoLinear;none;;163;2080;3;9;1.05;100;NDC;2;2030;;ELV_NDC2030_T44;ELV_NDC2030_T44;;ELV-SSP2-400F: full century 1.5 degree C global scenario allowing for overshoot. +ELV-SSP2-CP-D0;1;9;;Mix3;none;rcp45;3;off;0;NPi2025_EUR55;none;;1;2100;3;9;1;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: 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;;Mix3;none;rcp45;3;off;0;NPi2025_EUR55;none;;1;2100;3;9;1.01;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: 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;;Mix3;none;rcp45;3;off;0;NPi2025_EUR55;none;;1;2100;3;9;1.03;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: 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-SSP2-CP-D1_Mix1;1;9;;Mix1ICEban;none;rcp45;3;off;0;NPi2025_EUR55;none;;1;2100;3;9;1.01;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: 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-D1_Mix2;1;9;;Mix2ICEban;none;rcp45;3;off;0;NPi2025_EUR55;none;;1;2100;3;9;1.01;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: 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_CurPol_T44_Mix1;1;9;;Mix1ICEban;none;rcp45;3;off;0;NPi;none;;1;2100;3;9;1.05;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. In the default setting carbon prices converges after 2030 over all regions to $25 eoc. +ELV_CurPol_T44_Mix2;1;9;;Mix2ICEban;none;rcp45;3;off;0;NPi;none;;1;2100;3;9;1.05;100;NPi2018;3;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. In the default setting carbon prices converges after 2030 over all regions to $25 eoc. diff --git a/config/scenario_config_ELEVATE4p4.csv b/config/scenario_config_ELEVATE4p4.csv index 05b6a862b..474e56d4c 100755 --- a/config/scenario_config_ELEVATE4p4.csv +++ b/config/scenario_config_ELEVATE4p4.csv @@ -1,4 +1,4 @@ -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;cm_DiscRateScen;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;c_budgetCO2from2020;carbonprice;carbonpriceRegi;cm_netZeroScen;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_maxProdBiolc;c_ccscapratescen;techpol;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_startyear;path_gdx_carbonprice;path_gdx;path_gdx_ref;path_gdx_bau;description +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;cm_DiscRateScen;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;c_budgetCO2from2020;carbonprice;carbonpriceRegi;cm_netZeroScen;cm_co2_tax_startyear;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_maxProdBiolc;c_ccscapratescen;techpol;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_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;;0;1;Mix1;none;0.01;1;off;1.5;none;0;off;1;0;none;none;;-1;2100;3;2050;1;;;3;1.05;off;1;none;1;2;1;2;SSP2;1;0;forcing_SSP2;SSP2;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;;0;1;Mix3;none;0.01;1;off;1.5;rcp45;3;off;0;0;NPi;none;;1;2100;3;2050;9;;;3;1.05;100;1;NPi2018;1;2;1;3;SSP2;1;0;forcing_SSP2;SSP2;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;;0;1;Mix3;none;0.01;1;off;1.5;rcp45;3;off;1;0;NPi;none;;1;2100;3;2050;9;;;3;1.05;100;1;NPi2018;1;2;1;3;SSP2;1;0;forcing_SSP2;SSP2;heat;2005;;;;;ELV_CurPol_T44: The Current Policies scenarios describe energy, climate and economic projections for the period until 2030. diff --git a/config/scenario_config_IKEA.csv b/config/scenario_config_IKEA.csv index 284a2e11f..6a30031fd 100644 --- a/config/scenario_config_IKEA.csv +++ b/config/scenario_config_IKEA.csv @@ -1,38 +1,38 @@ -title;start;CES_parameters;.comment;optimization;cm_iteration_max;cm_nash_autoconverge;cm_nash_mode;cm_calibration_string;c_testOneRegi_region;c_keep_iteration_gdxes;slurmConfig;c_changeProdCost;c_SlackMultiplier;cm_rcp_scen;cm_floorCostScen;cm_iterative_target_adj;cm_CO2priceRegConvEndYr;cm_flex_tax;cm_VRE_supply_assumptions;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_emiscen;cm_nucscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_tradecostBio;cm_bioenergy_SustTax;cm_maxProdBiolc;c_ccsinjecratescen;cm_CESMkup_build;cm_CESMkup_ind;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_multigasscen;cm_1stgen_phaseout;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +title;start;CES_parameters;.comment;optimization;cm_iteration_max;cm_nash_autoconverge;cm_nash_mode;cm_calibration_string;c_testOneRegi_region;c_keep_iteration_gdxes;slurmConfig;c_changeProdCost;c_SlackMultiplier;cm_rcp_scen;cm_floorCostScen;cm_iterative_target_adj;cm_CO2priceRegConvEndYr;cm_flex_tax;cm_VRE_supply_assumptions;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_startyear;cm_peakBudgYr;cm_emiscen;cm_nucscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_tradecostBio;cm_bioenergy_SustTax;cm_maxProdBiolc;c_ccsinjecratescen;cm_CESMkup_build;cm_CESMkup_ind;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;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_floor1;0;;default global floor cost;testOneRegi;;;;;CHA;0;8;;;;default;;;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. testOneRegi-Base_floor2;0;;floor cost preserves price structure;testOneRegi;;;;;CHA;0;8;;;;pricestruc;;;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. testOneRegi-Base_floor3;0;;floor cost simulates tech transfer;testOneRegi;;;;;CHA;0;8;;;;techtrans;;;0;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. -testOneRegi-Base_500_debug;0;;floor cost simulates tech transfer;testOneRegi;;;1;default;REF;0;8;;;rcp20;default;9;2100;0;0;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.04, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;5;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. +testOneRegi-Base_500_debug;0;;floor cost simulates tech transfer;testOneRegi;;;1;default;REF;0;8;;;rcp20;default;9;2100;0;0;globallyOptimal;500;diffLin2Lin;100;2080;9;2;GLO 0.04, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;5;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;testOneRegi-Base: This is a test scenario which only runs a single region, not to be used in production. # H12 SSP2EU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SSP2-NPi-calibrate;0;calibrate;;;;;;;;1;1;;;rcp45;default;;;0;0;;0;NPi;-1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;heat;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2-NPi-calibrate_floor2;0;calibrate;;;;;;;;1;1;;;rcp45;pricestruc;;;0;0;;0;NPi;-1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;heat;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2-NPi-calibrate_floor3;0;calibrate;;;;;;;;1;1;;;rcp45;techtrans;;;0;0;;0;NPi;-1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;heat;Mix1;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2-NPi;0;;floor cost default;;;;;default;;1;5;;;rcp45;default;3;;0;0;;0;NPi;1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;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;0;;floor cost default;;;;;default;;1;5;;;rcp45;default;3;;0;0;globallyOptimal;0;NDC;1;2100;9;2;GLO 0.05, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;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;3;;heat;Mix2;2030;;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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. -SSP2-PkBudg1150;0;;floor cost default;;;;;default;;1;5;;;rcp26;default;9;2100;1;1;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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 weel 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. -SSP2-PkBudg650;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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 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-PkBudg620;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;620;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg620: 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-PkBudg590;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;590;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg590: 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-PkBudg560;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;560;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg550: 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-PkBudg530;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;530;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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;0;;floor cost default;;;;;default;;1;5;;;rcp26;default;9;2100;1;1;globallyOptimal;1150;diffLin2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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 weel 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. +SSP2-PkBudg650;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;650;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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 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-PkBudg620;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;620;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg620: 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-PkBudg590;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;590;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg590: 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-PkBudg560;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;560;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;SSP2-PkBudg550: 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-PkBudg530;0;;floor cost default;;;2;;default;;1;5;;;rcp20;default;9;2100;1;1;globallyOptimal;530;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi;SSP2-NPi;;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-NPi_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp45;pricestruc;3;;0;0;;0;NPi;1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;heat;Mix1;2030;;;;;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_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp45;pricestruc;3;;0;0;globallyOptimal;0;NDC;1;2100;9;2;GLO 0.05, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;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;3;;heat;Mix2;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. -SSP2-PkBudg500_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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-PkBudg650_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 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_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp26;pricestruc;9;2100;0;0;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 weel 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. +SSP2-PkBudg500_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;500;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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-PkBudg650_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;650;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 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_floor2;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp26;pricestruc;9;2100;0;0;globallyOptimal;1150;diffLin2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 weel 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. SSP2-NPi_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp45;techtrans;3;;0;0;;0;NPi;1;2100;9;2;GLO 0.04, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;NPi2018;regiCarbonPrice;;;on;on;EUR_regi, NEU_regi;3;;heat;Mix1;2030;;;;;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_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp45;techtrans;3;;0;0;globallyOptimal;0;NDC;1;2100;9;2;GLO 0.05, EUR_regi 0.15;CHA_regi.pc 0.001, IND_regi.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, CHA_regi.coalchp 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;;;;;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;3;;heat;Mix2;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. -SSP2-PkBudg500_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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-PkBudg650_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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 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_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;1;;;rcp26;techtrans;9;2100;0;0;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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 weel 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. +SSP2-PkBudg500_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;500;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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-PkBudg650_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;650;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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 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_floor3;0;;floor cost simulates tech transfer;;;;;techtrans;;1;1;;;rcp26;techtrans;9;2100;0;0;globallyOptimal;1150;diffLin2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;;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 weel 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. # H12 SSP2EU budget scenarios;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-PkBudg600_cost_budget1_2030bionu;0;;south abate less, north abate more;;;2;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;600;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;2020.2060.EUR.all.budget.netCO2 23,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 130,2020.2050.CHA.all.year.netGHG 0.1,2020.2070.JPN.all.budget.netCO2 8.5,2020.2070.CAZ.all.budget.netCO2 4.5,2020.2070.NEU.all.budget.netCO2 7.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;; -SSP2-PkBudg600_cost_budget2_2030bionu;0;;south abate less, north abate more;;;2;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;600;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;2020.2060.EUR.all.budget.netCO2 23,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 130,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;; -SSP2-PkBudg600_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;600;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; -SSP2-PkBudg620_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;620;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; -SSP2-PkBudg650_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; -SSP2-PkBudg600_cost_year_2030;0;;north abate less, south abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;600;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.04, (IND_regi, SSA_regi, OAS_regi).coalchp 0.04;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2050.CHA.all.budget.netCO2 180, 2020.2050.EUR.all.year.netGHG_LULUCFGrassi 0.1, 2020.2050.USA.all.year.netGHG_LULUCFGrassi 0.1;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; -SSP2-PkBudg590_budget_year_2030;0;;north abate less, south abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;590;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.04, (IND_regi, SSA_regi, OAS_regi).coalchp 0.04;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 40,2020.2050.USA.all.budget.netCO2 57,2020.2050.CHA.all.budget.netCO2 180;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; +SSP2-PkBudg600_cost_budget1_2030bionu;0;;south abate less, north abate more;;;2;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;600;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;2020.2060.EUR.all.budget.netCO2 23,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 130,2020.2050.CHA.all.year.netGHG 0.1,2020.2070.JPN.all.budget.netCO2 8.5,2020.2070.CAZ.all.budget.netCO2 4.5,2020.2070.NEU.all.budget.netCO2 7.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;; +SSP2-PkBudg600_cost_budget2_2030bionu;0;;south abate less, north abate more;;;2;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;600;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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.pc 0.001, SSA_regi.pc 0.001, OAS_regi.pc 0.001, IND_regi.coalchp 0.001, SSA_regi.coalchp 0.001, OAS_regi.coalchp 0.001;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809, 2050.GLO.tax.t.CCS.biomass 2000;2020.2060.EUR.all.budget.netCO2 23,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 130,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;; +SSP2-PkBudg600_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;600;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; +SSP2-PkBudg620_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;620;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; +SSP2-PkBudg650_cost_budget5_2030bionu;0;;south abate less, north abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;650;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.001, (IND_regi, SSA_regi, OAS_regi).coalchp 0.001;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 25,2020.2050.USA.all.budget.netCO2 37,2020.2050.CHA.all.budget.netCO2 180,2020.2070.JPN.all.budget.netCO2 7,2020.2070.CAZ.all.budget.netCO2 3.5,2020.2070.NEU.all.budget.netCO2 8.5;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; +SSP2-PkBudg600_cost_year_2030;0;;north abate less, south abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;600;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.04, (IND_regi, SSA_regi, OAS_regi).coalchp 0.04;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2050.CHA.all.budget.netCO2 180, 2020.2050.EUR.all.year.netGHG_LULUCFGrassi 0.1, 2020.2050.USA.all.year.netGHG_LULUCFGrassi 0.1;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; +SSP2-PkBudg590_budget_year_2030;0;;north abate less, south abate more;;;2;;techtrans;;1;5;;;rcp20;techtrans;9;2100;0;0;globallyOptimal;590;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.25, CHA_regi.pc 0.04, (IND_regi, SSA_regi, OAS_regi).pc 0.04, (IND_regi, SSA_regi, OAS_regi).coalchp 0.04;;;;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2060.EUR.all.budget.netCO2 40,2020.2050.USA.all.budget.netCO2 57,2020.2050.CHA.all.budget.netCO2 180;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor3;SSP2-NPi_floor3;; # H12 SSP2 demand scenarios;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-PkBudg650_floor2_demInc;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;650;diffCurvPhaseIn2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 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_floor2_demInc;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp26;pricestruc;9;2100;0;0;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 weel 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. +SSP2-PkBudg650_floor2_demInc;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp20;pricestruc;9;2100;0;0;globallyOptimal;650;diffLin2Lin;100;2080;9;2;GLO 0.09, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 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_floor2_demInc;0;;floor cost preserves price structure;;;;;pricestruc;;1;5;;;rcp26;pricestruc;9;2100;0;0;globallyOptimal;1150;diffLin2Lin;60;2100;9;2;GLO 0.06, EUR_regi 0.15;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;;;75;2;feelhpb 1.05, fehob 1.75, feheb 0.35;feh2_otherInd 1.05, feelhth_otherInd 0.43, feh2_cement 2.2, feelhth_chemicals 1.4, feh2_chemicals 1.05, fehos_cement 2.2;NDC;regiCarbonPrice;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;on;on;EUR_regi, NEU_regi;;1;heat;Mix4;2030;;SSP2-NPi_floor2;SSP2-NPi_floor2;;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 weel 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_NGFS_v5.csv b/config/scenario_config_NGFS_v5.csv index 1bfc38c68..24b49edba 100644 --- a/config/scenario_config_NGFS_v5.csv +++ b/config/scenario_config_NGFS_v5.csv @@ -1,4 +1,4 @@ -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;cm_DiscRateScen;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;c_budgetCO2from2020;carbonprice;carbonpriceRegi;regipol;cm_implicitQttyTarget;cm_implicitQttyTarget_tolerance;cm_NDC_version;cm_netZeroScen;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_maxProdBiolc;c_ccscapratescen;techpol;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;fixOnRefAuto;cm_startyear;path_gdx;path_gdx_ref;path_gdx_refpolicycost;path_gdx_bau;description +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;cm_DiscRateScen;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;c_budgetCO2from2020;carbonprice;carbonpriceRegi;regipol;cm_implicitQttyTarget;cm_implicitQttyTarget_tolerance;cm_NDC_version;cm_netZeroScen;cm_co2_tax_startyear;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_maxProdBiolc;c_ccscapratescen;techpol;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;fixOnRefAuto;cm_startyear;path_gdx;path_gdx_ref;path_gdx_refpolicycost;path_gdx_bau;description # ___Calibration___;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;initial value;initial value;;;;;;;;;;;;;;;;;;;;;;;;;;; SSP2-Base_covidCalib;0;;;gdp_SSP2;;;;calibrate;14;off;off;uncalibrated;off;0;off;;OLDDEFAULT;off;;HowardNonCatastrophic;15;0;100;0;1;simple;edge_esm;subsectors;;0;1;Mix3;none;0.01;;1;;;;1.5;none;0;off;0;none;none;;;;;;-1;2100;3;2050;1;;;3;1.05;off;1;none;1;2;1;2;SSP2;1;0;forcing_SSP2;SSP2;heat;;2005;;;;; SSP2-lowDem_calib;0;SSP2-Base_covidCalib;;gdp_SSP2_lowEn;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -8,12 +8,12 @@ SSP2-Base;0;;;gdp_SSP2;medOil;medGas;medCoal;load;5;off;off;uncalibrated;off;0;o h_cpol_noUkr;NGFS;SSP2-Base;;;;;;;;;;;;;;;;;;;30;;;;;;;;;;;Mix2;none;;;;;0;0;1.5;rcp45;3;off;0;NPi;none;;;;;;1;2100;;2050;9;;;3;1.05;100;;NPi2018;1;2;1;3;SSP2;1;0;forcing_SSP2;SSP2;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;2050;;;;;;;;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;diffCurvPhaseIn2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 4300, 2080.GLO.tax.t.CCS.biomass 4300;0.1;;;200;2045;6;2050;;;;;;;;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;;gdp_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;diffCurvPhaseIn2Lin;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;diffCurvPhaseIn2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;NGFS_v4_20pc;100;2080;3;2050;;;;;;;;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;diffCurvPhaseIn2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;;100;2080;;2050;;;;;;;;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. +o_1p5c;NGFS;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;Mix4;heatpumps;;;1;;;;1.5;rcp20;9;globallyOptimal;560;diffLin2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 4300, 2080.GLO.tax.t.CCS.biomass 4300;0.1;;;150;2045;6;2050;;;;;;;;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;;gdp_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;diffLin2Lin;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;diffLin2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;NGFS_v4_20pc;100;2080;3;2050;;;;;;;;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;diffLin2Lin;netZero;regiCarbonPrice;2060.GLO.tax.t.CCS.biomass 2300, 2080.GLO.tax.t.CCS.biomass 2300;;;;100;2080;;2050;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;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;diffCurvPhaseIn2Lin;none;;;;;;200;2045;3;2050;;;;;;;;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. +d_rap;0;h_cpol;;;;;;;;;;;;;;;;;;;;;;;;;;;2050.GLO 0.9;;;Mix4;heatpumps;;GLO.trans 2, GLO.build 2;2;;;;1.5;rcp20;9;globallyOptimal;560;diffLin2Lin;none;;;;;;150;2045;3;2050;;;;;;;;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. diff --git a/config/scenario_config_coupled_ELEVATE2p3.csv b/config/scenario_config_coupled_ELEVATE2p3.csv new file mode 100755 index 000000000..b4ea7ab6e --- /dev/null +++ b/config/scenario_config_coupled_ELEVATE2p3.csv @@ -0,0 +1,18 @@ +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_bau +SSP2-Base;0;;;;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV_CurPol_T44;0;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV_NDC2030_T44;1;;;priority;SSP2|NDC|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-NDC-D0;1;;;;SSP2|NDC|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-NDC-D1;1;;;;SSP2|NDC|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-NDC-D3;1;;;;SSP2|NDC|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-LTS;1;;;;SSP2|NDC|nocc_hist|rcp2p6;y2150;2;;;; +ELV-SSP2-NDC-LTS;1;;;;SSP2|NDC|nocc_hist|rcp2p6;y2150;2;;;; +ELV-SSP2-1150;1;;;;SSP2|NDC|nocc_hist|rcp2p6;y2150;2;;;; +ELV-SSP2-400Feoc;1;;;;SSP2|NDC|nocc_hist|rcp1p9;y2150;2;;;; +ELV-SSP2-CP-D0;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-CP-D1;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-CP-D3;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-CP-D1_Mix1;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV-SSP2-CP-D1_Mix2;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV_CurPol_T44_Mix1;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; +ELV_CurPol_T44_Mix2;1;;;priority;SSP2|NPI|nocc_hist|rcp4p5;y2150;2;;;; diff --git a/config/tests/scenario_config_shortCascade.csv b/config/tests/scenario_config_shortCascade.csv index 31901ef3b..9e9c2fa8b 100644 --- a/config/tests/scenario_config_shortCascade.csv +++ b/config/tests/scenario_config_shortCascade.csv @@ -1,4 +1,4 @@ -title;start;c_empty_model;path_gdx_ref;output -TESTTHAT-SSP2-Base;1;on;;reportingREMIND2MAgPIE -TESTTHAT-SSP2-NDC;1;on;TESTTHAT-SSP2-Base;reportingREMIND2MAgPIE -TESTTHAT-SSP2-Policy;2;on;TESTTHAT-SSP2-Base;reportingREMIND2MAgPIE +title;start;c_empty_model;path_gdx_ref;output;cm_startyear;regipol +TESTTHAT-SSP2-Base;1;on;;reportingREMIND2MAgPIE;2005;regiCarbonPrice +TESTTHAT-SSP2-NDC;1;on;TESTTHAT-SSP2-Base;reportingREMIND2MAgPIE;2020;regiCarbonPrice +TESTTHAT-SSP2-Policy;2;on;TESTTHAT-SSP2-Base;reportingREMIND2MAgPIE;2025;regiCarbonPrice diff --git a/core/bounds.gms b/core/bounds.gms index 778373de7..bd7cb1686 100755 --- a/core/bounds.gms +++ b/core/bounds.gms @@ -25,8 +25,14 @@ vm_costTeCapital.fx(t,regi,teNoLearn) = pm_inco0_t(t,regi,teNoLearn); *' #### Model Bounds in Core *' Lower limit on all P2SE technologies capacities to 100 kW of all technologies and all time steps -loop(pe2se(enty,enty2,te)$((not sameas(te,"biotr")) AND (not sameas(te,"biodiesel")) AND (not sameas(te,"bioeths")) AND (not sameas(te,"gasftcrec")) AND (not sameas(te,"gasftrec")) -AND (not sameas(te,"tnrs"))), +loop(pe2se(enty,enty2,te) $ ( + (not sameas(te,"biotr")) AND + (not sameas(te,"biodiesel")) AND + (not sameas(te,"bioeths")) AND + (not sameas(te,"gasftcrec")) AND + (not sameas(te,"gasftrec")) AND + (not sameas(te,"tnrs")) + ), vm_cap.lo(t,regi,te,"1")$(t.val gt 2026 AND t.val le 2070) = 1e-7; if( (NOT teCCS(te)), vm_deltaCap.lo(t,regi,te,"1")$(t.val gt 2026 AND t.val le 2070) = 1e-8; @@ -58,17 +64,26 @@ v_capDistr.fx(t,regi,te,rlf)$(rlf.val gt 9) = 0; vm_cap.up("2010",regi,teStor,"1") = 0; *' completely switching off technologies that are not used in the current version of REMIND, although their parameters are declared: -vm_cap.fx(t,regi,"solhe",rlf) = 0; -vm_deltaCap.fx(t,regi,"solhe",rlf) = 0; - -vm_cap.fx(t,regi,"fnrs",rlf) = 0; -vm_deltaCap.fx(t,regi,"fnrs",rlf) = 0; - -vm_cap.fx(t,regi,"pcc",rlf) = 0; -vm_deltaCap.fx(t,regi,"pcc",rlf) = 0; +loop(all_te $ ( + sameas(all_te, "solhe") OR + sameas(all_te, "fnrs") OR + sameas(all_te, "pcc") OR + sameas(all_te, "pco") OR + sameas(all_te, "wind") OR + sameas(all_te, "storwind") OR + sameas(all_te, "gridwind") + ), + vm_cap.fx(t,regi,all_te,rlf) = 0; + vm_deltaCap.fx(t,regi,all_te,rlf) = 0; +); -vm_cap.fx(t,regi,"pco",rlf) = 0; -vm_deltaCap.fx(t,regi,"pco",rlf) = 0; +vm_demPe.fx(t,regi,"pecoal","seel","pcc") = 0; +vm_demPe.fx(t,regi,"pecoal","seel","pco") = 0; +vm_prodSe.fx(t,regi,"pecoal","seel","pcc") = 0; +vm_prodSe.fx(t,regi,"pecoal","seel","pco") = 0; +*** windoffshore-todo: to remove when removing wind from all_te +vm_demPe.fx(t,regi,"pewin","seel","wind") = 0; +vm_prodSe.fx(t,regi,"pewin","seel","wind") = 0; *' Switch off grey hydrogen investments in gash2 technology from 2025. Our current seh2 hydrogen represents only additional (clean) hydrogen use cases to current ones *' and there are no plans to expand grey hydrogen production for that. @@ -259,38 +274,13 @@ vm_emiMac.fx(t,regi,"oc") = 0; *** ------------------------------------------------------------------------- *** Exogenous values: *** ------------------------------------------------------------------------- -***---- -*RP* fix capacities for wind, spv and csp to real world 2010 and 2015 values: -*CG* adding 2020 values -***---- -loop(te$(sameas(te,"csp")), - vm_cap.lo("2015",regi,te,"1") = 0.95 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - vm_cap.up("2015",regi,te,"1") = 1.05 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); -); - - -$IFTHEN.WindOff %cm_wind_offshore% == "0" -loop(te$(sameas(te,"spv") OR sameas(te,"wind") ), - vm_cap.lo("2015",regi,te,"1") = 0.95 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - vm_cap.up("2015",regi,te,"1") = 1.05 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - vm_cap.lo("2020",regi,te,"1") = 0.95 * pm_histCap("2020",regi,te)$(pm_histCap("2020",regi,te) gt 1e-10); - vm_cap.up("2020",regi,te,"1") = 1.05 * pm_histCap("2020",regi,te)$(pm_histCap("2020",regi,te) gt 1e-10); - vm_cap.up("2025",regi,te,"1")$(pm_histCap("2025",regi,te) gt 1e-6) = 1.05 * pm_histCap("2025",regi,te)$(pm_histCap("2025",regi,te) gt 1e-6); !! only set a bound if values >1MW are in pm_histCap -); - -$ENDIF.WindOff - - -$IFTHEN.WindOff %cm_wind_offshore% == "1" -loop(te$(sameas(te,"spv") OR sameas(te,"wind") OR sameas(te,"windoff")), - vm_cap.lo("2015",regi,te,"1") = 0.95 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - vm_cap.up("2015",regi,te,"1") = 1.05 * pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - vm_cap.lo("2020",regi,te,"1") = 0.95 * pm_histCap("2020",regi,te)$(pm_histCap("2020",regi,te) gt 1e-10); - vm_cap.up("2020",regi,te,"1") = 1.05 * pm_histCap("2020",regi,te)$(pm_histCap("2020",regi,te) gt 1e-10); - vm_cap.up("2025",regi,te,"1")$(pm_histCap("2025",regi,te) gt 1e-6) = 1.05 * pm_histCap("2025",regi,te)$(pm_histCap("2025",regi,te) gt 1e-10); !! only set a bound if values >1MW are in pm_histCap -); -$ENDIF.WindOff +*** fix capacities for wind, spv and csp to real world historical values: +vm_cap.lo("2015",regi,teVRE,"1") = 0.95 * pm_histCap("2015",regi,teVRE)$(pm_histCap("2015",regi,teVRE) gt 1e-10); +vm_cap.up("2015",regi,teVRE,"1") = 1.05 * pm_histCap("2015",regi,teVRE)$(pm_histCap("2015",regi,teVRE) gt 1e-10); +vm_cap.lo("2020",regi,teVRE,"1") = 0.95 * pm_histCap("2020",regi,teVRE)$(pm_histCap("2020",regi,teVRE) gt 1e-10); +vm_cap.up("2020",regi,teVRE,"1") = 1.05 * pm_histCap("2020",regi,teVRE)$(pm_histCap("2020",regi,teVRE) gt 1e-10); +vm_cap.up("2025",regi,teVRE,"1")$(pm_histCap("2025",regi,teVRE) gt 1e-6) = 1.05 * pm_histCap("2025",regi,teVRE)$(pm_histCap("2025",regi,teVRE) gt 1e-10); !! only set a bound if values >1MW are in pm_histCap *** lower bound on capacities for ngcc and ngt and gaschp for regions defined at the pm_histCap file loop(te$(sameas(te,"ngcc") OR sameas(te,"ngt") OR sameas(te,"gaschp")), @@ -360,10 +350,10 @@ loop((ext_regi,te)$p_techEarlyRetiRate(ext_regi,te), ); $endif.tech_earlyreti -***restrict early retirement to the modeling time frame (to reduce runtime, the early retirement equations are phased out after 2110) +*** 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 lt 2009 or ttot.val gt 2111) = 0; -* lower bound of 0.01% to help the model to be aware of the early retirement option +*** 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) ge 1) and (t.val gt 2010) and (t.val le 2100)) = 1e-4; *cb 20120301 no early retirement for dot, they are used despite their economic non-competitiveness for various reasons. @@ -378,16 +368,13 @@ vm_deltaCap.up(t,regi,"dot","1")$( (t.val gt 2005) AND regi_group("EUR_regi",reg *' 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 -*LP* if c_ccsinjecratescen=0 --> no CCS at all and vm_co2CCS is fixed to 0 before, therefore the upper bound is only set if there should be CCS! +*** if c_ccsinjecratescen=0 --> no CCS at all and vm_co2CCS is fixed to 0 before, therefore the upper bound is only set if there should be CCS! *** ----------------------------------------------------------------------------- if ( c_ccsinjecratescen gt 0, - - loop(regi, -***vm_co2CCS.up(t,regi,"tco2","ico2","ccsinje","1") = pm_dataccs(regi,"quan","1")*pm_ccsinjecrate(regi) - vm_co2CCS.up(t,regi,"cco2","ico2","ccsinje","1") = pm_dataccs(regi,"quan","1") * pm_ccsinjecrate(regi); - ); - + loop(regi, + vm_co2CCS.up(t,regi,"cco2","ico2","ccsinje","1") = pm_dataccs(regi,"quan","1") * pm_ccsinjecrate(regi); + ); ); *' @stop @@ -402,16 +389,15 @@ if(cm_emiscen gt 1, ); $endif - *** ------------------------------------------------------------------------------------------------------------- -*AM* Lower limit for 2020-2030 is capacities of all projects that are operational (2020-2030) from project data base -*AM* Upper limit for 2025 and 2030 additionally includes all projects under construction and 30% -*AM* (default, or changed by c_fracRealfromAnnouncedCCScap2030) of announced/planned projects from project data base -*AM* See also corresponding code in input validation data preparation in mrremind/R/calcProjectPipeline.R. -*AM* In nash-mode regions cannot easily share ressources, therefore CCS potentials are redistributed in Europe in data preprocessing in mrremind: -*AM* Potential of EU27 regions is pooled and redistributed according to GDP (Only upper limit for 2030) -*AM* Norway and UK announced to store CO2 for EU27 countries. So 50% of Norway and UK potential in 2030 is attributed to EU27-Pool -*LP* if c_ccsinjecratescen=0 --> no CCS at all and vm_co2CCS is fixed to 0 before, therefore the upper bound is only set if there should be CCS! +*** 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% +*** (default, or changed by c_fracRealfromAnnouncedCCScap2030) of announced/planned projects from project data base +*** See also corresponding code in input validation data preparation in mrremind/R/calcProjectPipeline.R. +*** In nash-mode regions cannot easily share ressources, therefore CCS potentials are redistributed in Europe in data preprocessing in mrremind: +*** 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 c_ccsinjecratescen=0 --> no CCS at all and vm_co2CCS is fixed to 0 before, therefore the upper bound is only set if there should be CCS! *** ------------------------------------------------------------------------------------------------------------- if ( (c_ccsinjecratescen gt 0) AND (NOT cm_emiscen eq 1), @@ -419,8 +405,8 @@ if ( (c_ccsinjecratescen gt 0) AND (NOT cm_emiscen eq 1), vm_co2CCS.up(t,regi,"cco2","ico2","ccsinje","1")$(t.val le 2030) = (p_boundCapCCS(t,regi,"operational")$(t.val le 2030) + p_boundCapCCS(t,regi,"construction")$(t.val le 2030) + p_boundCapCCS(t,regi,"planned")$(t.val le 2030) * c_fracRealfromAnnouncedCCScap2030) * s_MtCO2_2_GtC; ); -*AM* Fix capacities of technologies with carbon capture to zero if there are no CCS projects in the pipeline in that region -*AM* This is only reasonable, as long as we also don't expect any CCU projects in the early years. +*** Fix capacities of technologies with carbon capture to zero if there are no CCS projects in the pipeline in that region +*** This is only reasonable, as long as we also don't expect any CCU projects in the early years. loop(regi, loop(t$(t.val le 2030), if( ((p_boundCapCCS(t,regi,"operational") + p_boundCapCCS(t,regi,"construction") + p_boundCapCCS(t,regi,"planned")) eq 0), @@ -432,31 +418,20 @@ loop(regi, loop(regi, if( (p_boundCapCCSindicator(regi) eq 0), vm_cap.fx("2025",regi,teCCS,rlf) = 0; - vm_cap.fx("2030",regi,teCCS,rlf) = 0; + vm_cap.fx("2030",regi,teCCS,rlf) = 0; ); ); *** ------------------------------------------------------------------------------------------------------------- -*AM* Limit REMINDs ability to vent captured CO2 to 1 MtCO2 per yr per region. This happens otherwise to a great extend in stringent climate -*AM* policy scenarios if CCS and CCU capacities are limited in early years, to lower overall adjustment costs of capture technologies. -*AM* In reality, people don't have perfect foresight and without storage or usage capacities, no capture facilities will be built. +*** 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; -*AL* fixing prodFE in 2005 to the value contained in pm_cesdata("2005",regi,in,"quantity"). This is done to ensure that the energy system will reproduce the 2005 calibration values. +*** fixing prodFE in 2005 to the value contained in pm_cesdata("2005",regi,in,"quantity"). This is done to ensure that the energy system will reproduce the 2005 calibration values. *** Fixing will produce clearly attributable errors (good for debugging) when using inconsistent data, as the GAMS accuracy when comparing fixed results is very high (< 1e-8). -***vm_prodFe.fx("2005",regi,se2fe(enty,enty2,te)) = sum(fe2ppfEn(enty2,in), pm_cesdata("2005",regi,in,"quantity") ); - -$ontext -*** ------------------------------------------------------------- -*** *RP* Chinese depoyment of coal power plants and coal use in industry was probably not only demand-driven, but also policy-driven (faster than demand). Therefore, we implement lower bounds on coal power plants and solid coal use: -*** ------------------------------------------------------------- -if (cm_startyear le 2015, -vm_cap.lo("2015","CHN","pc","1") = 0.75; !! WEO says 826GW in 2013, 980 in 2020 -vm_cap.lo("2010","CHN","coaltr","1") = 0.79; !! IEA says ~27EJ in 2010. In REMIND, a coaltr cap of 0.647 is equivalent to an FE solids coal level of 20.5 EJ, thus 25*0.647/20.5 = 0.79 -vm_cap.lo("2015","CHN","coaltr","1") = 0.88; !! IEA says ~29.7EJ in 2012. In REMIND, a coaltr cap of 0.647 is equivalent to an FE solids coal level of 20.5 EJ, thus 28*0.647/20.5 = 0.88 -); -$offtext +*** vm_prodFe.fx("2005",regi,se2fe(enty,enty2,te)) = sum(fe2ppfEn(enty2,in), pm_cesdata("2005",regi,in,"quantity") ); $if %c_SSP_forcing_adjust% == "forcing_SSP1" vm_deltaCap.up(t,regi,"coalgas",rlf)$(t.val gt 2010) = 0.00001; @@ -464,8 +439,8 @@ $if %c_SSP_forcing_adjust% == "forcing_SSP1" vm_deltaCap.up(t,regi,"coalgas" *** H2 Curtailment *** ------------------------------------------------------------- *** RLDC removal -***Fixing h2curt value to zero to avoid the model to generate SE out of nothing. -***Models that have additional se production channels should release this variable (eg. RLDC power module). +*** Fixing h2curt value to zero to avoid the model to generate SE out of nothing. +*** Models that have additional se production channels should release this variable (eg. RLDC power module). loop(prodSeOth2te(enty,te), v_prodSeOth.fx(t,regi,"seh2","h2curt") = 0; ); @@ -498,9 +473,9 @@ vm_emiFgas.fx(ttot,all_regi,all_enty) = f_emiFgas(ttot,all_regi,"%c_SSP_forcing_ display vm_emiFgas.L; -*AL* Bugfix. For some reason the model cannot reduce the production of district heating to 0 -*AL* where it should be 0. Not fixings can account for this -*AL* Fixing vm_prodSe to 0 avoids the problem +*** Bugfix. For some reason the model cannot reduce the production of district heating to 0 +*** where it should be 0. Not fixings can account for this +*** Fixing vm_prodSe to 0 avoids the problem loop ((in,in2) $ (sameAs(in,"feheb") and sameAs(in2,"fehei")), loop ((t, regi) $ ( (sameAs(t,"2010") OR sameAs(t,"2015")) AND @@ -545,8 +520,8 @@ v_shfe.lo(t,regi,entyFe,sector)$pm_shfe_lo(t,regi,entyFe,sector) = pm_shfe_lo(t, v_shGasLiq_fe.up(t,regi,sector)$pm_shGasLiq_fe_up(t,regi,sector) = pm_shGasLiq_fe_up(t,regi,sector); v_shGasLiq_fe.lo(t,regi,sector)$pm_shGasLiq_fe_lo(t,regi,sector) = pm_shGasLiq_fe_lo(t,regi,sector); -*** RH: Fix H2 in buildings to zero until given year (always zero by default) -vm_demFeSector.up(t,regi,"seh2","feh2s","build",emiMkt)$(t.val le c_H2InBuildOnlyAfter) = 0; +*** Set H2 upper bound in buildings for years defined at cm_H2InBuildOnlyAfter +vm_demFeSector.up(t,regi,"seh2","feh2s","build",emiMkt)$(t.val le cm_H2InBuildOnlyAfter) = 1e-6; ***---------------------------------------------------------------------------- *** Controlling if active, dampening factor to align edge-t non-energy transportation costs with historical GDP data diff --git a/core/datainput.gms b/core/datainput.gms index 469ed5597..65785bd47 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -6,14 +6,14 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./core/datainput.gms -*AJS* technical. initialize parameters so that they are read from gdx +*** technical. initialize parameters so that they are read from gdx vm_co2eq.l(ttot,regi) = 0; vm_emiAll.l(ttot,regi,enty) = 0; vm_emiCO2Sector.l(ttot,all_regi,emi_sectors) = 0; -*AJS* initialize parameter (avoid compilation errors) -* do this at the start of datainput to prevent accidental overwriting +*** initialize parameter (avoid compilation errors) +*** do this at the start of datainput to prevent accidental overwriting pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution pm_capCum0(ttot,regi,teLearn)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = 0; @@ -21,7 +21,7 @@ pm_globalMeanTemperature(tall) = 0; pm_globalMeanTemperatureZeroed1900(tall) = 0; pm_temperatureImpulseResponseCO2(tall,tall) = 0; -*AL* Initialise to avoid compilation errors in presolve if variable not in input.gdx +*** Initialise to avoid compilation errors in presolve if variable not in input.gdx vm_demFeForEs.L(t,regi,entyFe,esty,teEs) = 0; vm_demFeForEs.L(t,regi,fe2es(entyFe,esty,teEs)) = 0.1; @@ -41,14 +41,12 @@ pm_dt("1900") = 5; pm_dt(ttot)$(ttot.val > 1900) = ttot.val - pm_ttot_val(ttot-1); display pm_ts, pm_dt; - loop(ttot, loop(tall$((ttot.val le tall.val) AND (pm_ttot_val(ttot+1) ge tall.val)), pm_interpolWeight_ttot_tall(tall) = ( p_tall_val(tall) - pm_ttot_val(ttot) ) / ( pm_ttot_val(ttot+1) - pm_ttot_val(ttot) ); ); ); - pm_tall_2_ttot(tall, ttot)$((ttot.val lt tall.val) AND (pm_ttot_val(ttot+1) gt tall.val)) = Yes; pm_ttot_2_tall(ttot,tall)$((ttot.val = tall.val) ) = Yes; @@ -106,14 +104,12 @@ $offdelim ; p_developmentState(tall,all_regi) = f_developmentState(tall,all_regi,"%c_GDPpcScen%"); - *** Load information from BAU run Execute_Loadpoint 'input' vm_cesIO, vm_invMacro; pm_gdp_gdx(ttot,regi) = vm_cesIO.l(ttot,regi,"inco"); p_inv_gdx(ttot,regi) = vm_invMacro.l(ttot,regi,"kap"); - *------------------------------------------------------------------------------------ *------------------------------------------------------------------------------------ *** ESM @@ -133,10 +129,10 @@ pm_shGasLiq_fe_lo(ttot,regi,sector)=0; *------------------------------------------------------------------------------------ -*** Technology data input read-in and manipulation +*** Technology data input read-in and manipulation START *------------------------------------------------------------------------------------ -*** Note: future to be its own module perhaps -*** Note: in module 5 there are more cost manipulation after initial capacities are calculated, be aware those can overwrite your technology values for policy runs if you set them here in the core +*** In module 5 there are more cost manipulation after initial capacities are calculated, +*** be aware those can overwrite your technology values for policy runs if you set them here in the core ***--------------------------------------------------------------------------- *** Reading in and initializing global data ***--------------------------------------------------------------------------- @@ -146,8 +142,9 @@ $include "./core/input/generisdata_tech.prn" $include "./core/input/generisdata_trade.prn" ; -*** CG warning: some of the SSP1 and SSP5 costs are not consistent with the story line (e.g. under SSP1 blue H2 and some fossil fuel CCS technologies have lower costs than in SSP2). This is to be fixed in the future when new SSP storylines are implemented, unclear when (29-1-2024). In the future, SSP1 and SSP5 data should be implemented as switches to avoid errors -*JH* SSP energy technology scenario +*** CG warning: some of the SSP1 and SSP5 costs are not consistent with the story line (e.g. under SSP1 blue H2 and some fossil fuel CCS technologies have lower costs than in SSP2). +*** This is to be fixed in the future when new SSP storylines are implemented, unclear when (29-1-2024). +*** In the future, SSP1 and SSP5 data should be implemented as switches to avoid errors table f_dataglob_SSP1(char,all_te) "Techno-economic assumptions consistent with SSP1" $include "./core/input/generisdata_tech_SSP1.prn" $include "./core/input/generisdata_trade.prn" @@ -157,28 +154,6 @@ $include "./core/input/generisdata_tech_SSP5.prn" $include "./core/input/generisdata_trade.prn" ; -$ifthen.WindOff %cm_wind_offshore% == "1" -*CG* set wind offshore, storage and grid to be the same as wind onshore (later should be integrated into input data) -* main difference between onshore and offshore is the difference in f32_factorStorage -fm_dataglob(char,"storwindoff") = fm_dataglob(char,"storwind"); -fm_dataglob(char,"gridwindoff") = fm_dataglob(char,"gridwind"); -f_dataglob_SSP1(char,"storwindoff") = f_dataglob_SSP1(char,"storwind"); -f_dataglob_SSP1(char,"gridwindoff") = f_dataglob_SSP1(char,"gridwind"); -f_dataglob_SSP5(char,"storwindoff") = f_dataglob_SSP5(char,"storwind"); -f_dataglob_SSP5(char,"gridwindoff") = f_dataglob_SSP5(char,"gridwind"); -$endif.WindOff - -***--------------------------------------------------------------------------- -*** Reading in and initializing regional cost data -***--------------------------------------------------------------------------- -parameter p_inco0(ttot,all_regi,all_te) "regionalized technology costs Unit: USD$/KW" -/ -$ondelim -$include "./core/input/p_inco0.cs4r" -$offdelim -/ -; - *** initializing energy service capital pm_esCapCost(tall,all_regi,all_teEs) = 0; @@ -187,22 +162,21 @@ pm_esCapCost(tall,all_regi,all_teEs) = 0; ***--------------------------------------------------------------------------- *** Manipulating global or regional cost technology data - absolute value ***--------------------------------------------------------------------------- -!! Modify spv and storspv parameters for optimistic VRE supply assumptions -if (cm_VRE_supply_assumptions eq 1, +*** Modify spv and storspv parameters for optimistic VRE supply assumptions +if (cm_VRE_supply_assumptions eq 1, !! "optimistic" assumptions on VRE supply fm_dataglob("learn","spv") = 0.257; fm_dataglob("inco0","storspv") = 7000; fm_dataglob("incolearn","storspv") = 4240; fm_dataglob("learn","storspv") = 0.12; ); -if (cm_VRE_supply_assumptions eq 2, +if (cm_VRE_supply_assumptions eq 2, !! "sombre" assumptions on VRE supply fm_dataglob("incolearn","spv") = 5010; ); -if (cm_VRE_supply_assumptions eq 3, +if (cm_VRE_supply_assumptions eq 3, !! "bleak" assumptions on VRE supply fm_dataglob("incolearn","spv") = 4960; ); - -*JH* New nuclear assumption for SSP5 +*** New nuclear assumption for SSP5 if (cm_nucscen eq 6, f_dataglob_SSP5("inco0","tnrs") = 6270; !! increased from 4000 to 6270 with the update of technology costs in REMIND 1.7 to keep the percentage increase between SSP2 and SSP5 constant ); @@ -216,38 +190,51 @@ if (c_techAssumptScen eq 3, *RP* include global flexibility parameters $include "./core/input/generisdata_flexibility.prn" -$ifthen.WindOff %cm_wind_offshore% == "1" -fm_dataglob("flexibility","storwindoff") = 1.93; -fm_dataglob("flexibility","windoff") = -1; -$endif.WindOff display fm_dataglob; -*TD* ccsinje cost scenarios -* low estimate: ccsinje cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 +*** ccsinje cost scenarios +*** 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; -* high estimate: ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances +*** high estimate: ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances $if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinje") = 550; ***--------------------------------------------------------------------------- *** Manipulating global or regional cost technology data - relative value ***--------------------------------------------------------------------------- *** Overwrite default technology cost parameter values based on specific scenario configs -$if not "%cm_incolearn%" == "off" parameter p_new_incolearn(all_te) / %cm_incolearn% /; -$if not "%cm_incolearn%" == "off" fm_dataglob("incolearn",te)$p_new_incolearn(te)=p_new_incolearn(te); -$if not "%cm_inco0Factor%" == "off" parameter p_new_inco0Factor(all_te) / %cm_inco0Factor% /; -$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te)=p_new_inco0Factor(te)*fm_dataglob("inco0",te); -$if not "%cm_inco0RegiFactor%" == "off" parameter p_new_inco0RegiFactor(all_te) / %cm_inco0RegiFactor% /; -$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te)*p_inco0(ttot,regi,te); -$if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; -$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); +$if not "%cm_incolearn%" == "off" parameter p_new_incolearn(all_te) / %cm_incolearn% /; +$if not "%cm_incolearn%" == "off" fm_dataglob("incolearn",te)$p_new_incolearn(te) = p_new_incolearn(te); +$if not "%cm_inco0Factor%" == "off" parameter p_new_inco0Factor(all_te) / %cm_inco0Factor% /; +$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te) = p_new_inco0Factor(te) * fm_dataglob("inco0",te); +$if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; +$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te) = p_new_learnRate(te); + +*** generisdata_tech is in $2015. Needs to be converted to $2017 +fm_dataglob("inco0",te) = s_D2015_2_D2017 * fm_dataglob("inco0",te); +fm_dataglob("incolearn",te) = s_D2015_2_D2017 * fm_dataglob("incolearn",te); +fm_dataglob("omv",te) = s_D2015_2_D2017 * fm_dataglob("omv",te); -*RP* the new cost data in generisdata_tech is now in $2015. As long as the model runs in $2005, these values have first to be converted to D2005 by dividing by 1.2 downwards -fm_dataglob("inco0",te) = s_D2015_2_D2005 * fm_dataglob("inco0",te); -fm_dataglob("incolearn",te) = s_D2015_2_D2005 * fm_dataglob("incolearn",te); -fm_dataglob("omv",te) = s_D2015_2_D2005 * fm_dataglob("omv",te); -p_inco0(ttot,regi,te) = s_D2015_2_D2005 * p_inco0(ttot,regi,te); +***--------------------------------------------------------------------------- +*** Reading in and initializing regional cost data +***--------------------------------------------------------------------------- +parameter p_inco0(ttot,all_regi,all_te) "regionalized technology costs Unit: USD$/KW" +/ +$ondelim +$include "./core/input/p_inco0.cs4r" +$offdelim +/ +; + +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +p_inco0(ttot,all_regi,"windon") $ (p_inco0(ttot,all_regi,"windon") eq 0) = p_inco0(ttot,all_regi,"wind"); +p_inco0(ttot,all_regi,"wind") = 0; + + +$if not "%cm_inco0RegiFactor%" == "off" parameter p_new_inco0RegiFactor(all_te) / %cm_inco0RegiFactor% /; +$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te) * p_inco0(ttot,regi,te); *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) @@ -262,10 +249,9 @@ p_inco0(ttot,regi,te) = s_DpKW_2_TDpTW * p_inco0(ttot,regi,te); fm_dataglob("inco0","csp") = 0.7 * fm_dataglob("inco0","csp"); fm_dataglob("incolearn","csp") = 0.7 * fm_dataglob("incolearn","csp"); -*KK* adjust costs for oae from USD/GtCaO to USD/GtC +*** adjust costs for oae from USD/GtCaO to USD/GtC fm_dataglob("inco0", "oae_ng") = fm_dataglob("inco0", "oae_ng") / (cm_33_OAE_eff / sm_c_2_co2); fm_dataglob("inco0", "oae_el") = fm_dataglob("inco0", "oae_el") / (cm_33_OAE_eff / sm_c_2_co2); - *** -------------------------------------------------------------------------------- *** Regionalize technology investment cost data *** ------------------------------------------------------------------------------- @@ -302,7 +288,6 @@ $endif ) ); - *** nuclear sees 3% higher interest rates during construction time due to higher construction time risk, see "The economic future of nuclear power - A study conducted at The University of Chicago" (2004) loop(te$sameas(te,"tnrs"), p_tkpremused(regi,te) = 1/fm_dataglob("constrTme",te) @@ -317,7 +302,6 @@ $endif display p_tkpremused; *** modify regionalized cost data using cost premium during construction time - pm_data(regi,"inco0",te) = (1 + p_tkpremused(regi,te) ) * pm_data(regi,"inco0",te); pm_data(regi,"incolearn",te) = (1 + p_tkpremused(regi,te) ) * pm_data(regi,"incolearn",te); p_inco0(ttot,regi,teRegTechCosts) = (1 + p_tkpremused(regi,teRegTechCosts) ) * p_inco0(ttot,regi,teRegTechCosts); @@ -331,44 +315,42 @@ pm_data(regi,"floorcost",teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi, *** report old floor costs pre manipulation in non-default scenario $ifthen.floorscen NOT %cm_floorCostScen% == "default" -p_oldFloorCostdata(regi,teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi,"incolearn",te); + p_oldFloorCostdata(regi,teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi,"incolearn",te); $endif.floorscen - *** calculate floor costs for learning technologies if historical price structure prevails $ifthen.floorscen %cm_floorCostScen% == "pricestruc" -** compute maximum tech cost in 2015 for a given tech among regions -p_maxRegTechCost2015(teRegTechCosts) = SMax(regi, p_inco0("2015",regi,teRegTechCosts)); -*take the ratio of the tech cost in 2015 and the maximum cost, and multiply with the global floor to get new floorcost that preserves the price structure -pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); -* for newer data than 2015, use these -p_maxRegTechCost2020(teRegTechCosts) = SMax(regi, p_inco0("2020",regi,teRegTechCosts)); -pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); -* report the new floor cost data -p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); -p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); +*** compute maximum tech cost in 2015 for a given tech among regions + p_maxRegTechCost2015(teRegTechCosts) = SMax(regi, p_inco0("2015",regi,teRegTechCosts)); +*** take the ratio of the tech cost in 2015 and the maximum cost, and multiply with the global floor to get new floorcost that preserves the price structure + pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); +*** for newer data than 2015, use these + p_maxRegTechCost2020(teRegTechCosts) = SMax(regi, p_inco0("2020",regi,teRegTechCosts)); + pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); +*** report the new floor cost data + p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); + p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); $endif.floorscen *** calculate floor costs for learning technologies if there is technology transfer $ifthen.floorscen %cm_floorCostScen% == "techtrans" -** compute maximum income GDP PPP per capita among regions in 2050 -p_gdppcap2050_PPP(regi) = pm_gdp("2050",regi) / pm_shPPPMER(regi) / pm_pop("2050",regi); -p_maxPPP2050 = SMax(regi, p_gdppcap2050_PPP(regi)); -*take the ratio of the PPP income and the maximum income, and multiply with the global floor to get new floorcost that simulates tech transfer where costs are solely dependent on local wages, not on IP rent -pm_data(regi,"floorcost",teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; -p_newFloorCostdata(regi,teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; +*** compute maximum income GDP PPP per capita among regions in 2050 + p_gdppcap2050_PPP(regi) = pm_gdp("2050",regi) / pm_shPPPMER(regi) / pm_pop("2050",regi); + p_maxPPP2050 = SMax(regi, p_gdppcap2050_PPP(regi)); +*** take the ratio of the PPP income and the maximum income, and multiply with the global floor to get new floorcost that simulates tech transfer where costs are solely dependent on local wages, not on IP rent + pm_data(regi,"floorcost",teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; + p_newFloorCostdata(regi,teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; $endif.floorscen *** In case regionally differentiated investment costs should be used the corresponding entries are revised: $ifthen.REG_techcosts not "%cm_techcosts%" == "GLO" !! cm_techcosts is REG or REG2040 pm_data(regi,"inco0",teRegTechCosts) = p_inco0("2015",regi,teRegTechCosts); - loop(teRegTechCosts$(sameas(teRegTechCosts,"spv") ), - pm_data(regi,"inco0",teRegTechCosts) = p_inco0("2020",regi,teRegTechCosts); - ); - pm_data(regi,"incolearn",teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi,"floorcost",te) ; + pm_data(regi,"inco0","spv") = p_inco0("2020",regi,"spv"); + pm_data(regi,"incolearn",teLearn) = pm_data(regi,"inco0",teLearn) - pm_data(regi,"floorcost",teLearn) ; $endif.REG_techcosts +*** ------------------------------------------------------------------------------- *** Calculate learning parameters: - +*** ------------------------------------------------------------------------------- *** global exponent *** parameter calculation for global level, that regional values can gradually converge to fm_dataglob("learnExp_woFC",teLearn(te)) = log(1 - fm_dataglob("learn",te)) / log(2); @@ -403,8 +385,8 @@ $else pm_data(regi,"learnMult_wFC","spv") = pm_data(regi,"incolearn","spv") / (sum(regi2,p_capCum("2020",regi2,"spv")) ** pm_data(regi,"learnExp_wFC","spv")); $endif -*FS initialize learning curve for most advanced technologies as defined by tech_stat = 4 in generisdata_tech.prn (with very small real-world capacities in 2020) -* equally for all regions based on global cumulate capacity of ccap0 and incolearn (difference between initial investment cost and floor cost) +*FS* initialize learning curve for most advanced technologies as defined by tech_stat = 4 in generisdata_tech.prn (with very small real-world capacities in 2020) +*** equally for all regions based on global cumulate capacity of ccap0 and incolearn (difference between initial investment cost and floor cost) pm_data(regi,"learnMult_wFC",te)$( pm_data(regi,"tech_stat",te) eq 4 ) = pm_data(regi,"incolearn",te) / ( fm_dataglob("ccap0",te) @@ -413,17 +395,18 @@ pm_data(regi,"learnMult_wFC",te)$( pm_data(regi,"tech_stat",te) eq 4 ) display p_capCum; display pm_data; - +*** ------------------------------------------------------------------------------- *** end learning parameters +*** ------------------------------------------------------------------------------- -*RP* 2012-03-07: Markup for advanced technologies +*** Markup for advanced technologies table p_costMarkupAdvTech(s_statusTe,tall) "Multiplicative investment cost markup for early time periods (until 2030) on advanced technologies (CCS, Hydrogen) that are not modeled through endogenous learning" $include "./core/input/p_costMarkupAdvTech.prn" ; *** add mark-up cost for tech_stat 4 and 5 technologies as for tech_stat 3 technologies in first years -p_costMarkupAdvTech("4",ttot)=p_costMarkupAdvTech("3",ttot); -p_costMarkupAdvTech("5",ttot)=p_costMarkupAdvTech("3",ttot); +p_costMarkupAdvTech("4",ttot) = p_costMarkupAdvTech("3",ttot); +p_costMarkupAdvTech("5",ttot) = p_costMarkupAdvTech("3",ttot); loop (teNoLearn(te), pm_inco0_t(ttot,regi,te) = pm_data(regi,"inco0",te); @@ -437,7 +420,7 @@ loop (teNoLearn(te), ); display pm_inco0_t; -*FL* regional differentiation and convergence of non-learning technologies costs +*** regional differentiation and convergence of non-learning technologies costs $ifthen.REG2040_techcosts "%cm_techcosts%" == "REG2040" !! cm_techcosts REG2040 *** for 2015-2040, use differentiated costs when available for a specific non-learning technology loop(te$( teNoLearn(te) AND teRegTechCosts(te) ), @@ -482,17 +465,16 @@ $ifthen.REG_techcosts "%cm_techcosts%" == "REG" !! cm_techcosts REG ); $endif.REG_techcosts - *------------------------------------------------------------------------------------ -*** END of Technology cost data input read-in and manipulation in core +*** Technology data input read-in and manipulation END *------------------------------------------------------------------------------------ *** Note: in modules/05_initialCap/on/preloop.gms, there are additional adjustment to investment *** cost in the near term due to calibration of historical energy conversion efficiencies based on *** initial capacities *------------------------------------------------------------------------------------ -*JH* Determine CCS injection rates -*LP* for c_ccsinjecratescen =0 the storing variable vm_co2CCS will be fixed to 0 in bounds.gms, the sm_ccsinjecrate=0 will cause a division by 0 error in the 21_tax module +*** Determine CCS injection rates +*** for c_ccsinjecratescen =0 the storing variable vm_co2CCS will be fixed to 0 in bounds.gms, the sm_ccsinjecrate=0 will cause a division by 0 error in the 21_tax module s_ccsinjecrate = 0.005 if (c_ccsinjecratescen eq 2, s_ccsinjecrate = s_ccsinjecrate * 0.50 ); !! Lower estimate if (c_ccsinjecratescen eq 3, s_ccsinjecrate = s_ccsinjecrate * 1.50 ); !! Upper estimate @@ -514,7 +496,7 @@ table fm_dataemiglob(all_enty,all_enty,all_te,all_enty) "read-in of emissions f $include "./core/input/generisdata_emi.prn" ; -parameter pm_share_ind_fesos(tall,all_regi) "Share of coal solids (coaltr) used in the industry (rest is residential)" +parameter pm_share_ind_fesos(tall,all_regi) "Share of coal solids (coaltr) used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fesos.cs4r" @@ -522,7 +504,7 @@ $offdelim / ; -parameter pm_share_ind_fesos_bio(tall,all_regi) "Share of biomass solids (biotr) used in the industry (rest is residential)" +parameter pm_share_ind_fesos_bio(tall,all_regi) "Share of biomass solids (biotr) used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fesos_bio.cs4r" @@ -530,7 +512,7 @@ $offdelim / ; -parameter pm_share_ind_fehos(tall,all_regi) "Share of heating oil used in the industry (rest is residential)" +parameter pm_share_ind_fehos(tall,all_regi) "Share of heating oil used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fehos.cs4r" @@ -559,7 +541,30 @@ pm_share_trans("2130",regi) = 0.865; pm_share_trans("2150",regi) = 0.872; -*JH* CO2 capture rate of CCS technologies (new SSP5 assumptions) +$ifthen.tech_CO2capturerate not "%c_tech_CO2capturerate%" == "off" +p_PECarriers_CarbonContent(peFos)=pm_cintraw(peFos); +*** From conversation: 25 GtC/ZJ is the assumed carbon content of PE biomass (makes default bioh2c capture rate 90%) +*** Convert to GtC/TWa +p_PECarriers_CarbonContent("pebiolc")=25 / s_zj_2_twa; +loop(pe2se(entyPe,entySe,te)$(p_tech_co2capturerate(te)), + if(p_tech_co2capturerate(te) gt 0, + if(p_tech_co2capturerate(te) ge 1, + abort "Error: Inconsistent switch usage. A CO2 capture rate is greater than 1. Check c_tech_CO2capturerate."; + ); +*** Alter CO2 capture rate in fm_dataemiglob +*** fm_dataemiglob is given in GtC/ZJ + fm_dataemiglob(entyPe,entySe,te,"cco2") = p_tech_co2capturerate(te) * p_PECarriers_CarbonContent(entyPe) * s_zj_2_twa; + if(sameAs(entyPe,"pebiolc"), + fm_dataemiglob(entyPe,entySe,te,"co2") = -fm_dataemiglob(entyPe,entySe,te,"cco2") ; + else + fm_dataemiglob(entyPe,entySe,te,"co2") = p_PECarriers_CarbonContent(entyPe) - fm_dataemiglob(entyPe,entySe,te,"cco2") ; + ); + ); +); +display fm_dataemiglob; +$endif.tech_CO2capturerate + +*** CO2 capture rate of CCS technologies (new SSP5 assumptions) if (c_ccscapratescen eq 2, fm_dataemiglob("pecoal","seel","igccc","co2") = 0.2; fm_dataemiglob("pecoal","seel","igccc","cco2") = 25.9; @@ -576,9 +581,6 @@ $endif fm_dataemiglob(enty,enty2,te,"co2")$pe2se(enty,enty2,te) = 1/s_zj_2_twa * fm_dataemiglob(enty,enty2,te,"co2"); fm_dataemiglob(enty,enty2,te,"cco2") = 1/s_zj_2_twa * fm_dataemiglob(enty,enty2,te,"cco2"); -table f_datarenglob(char,rlf,*) "global nur and ren data" -$include "./core/input/generisdata_nur_ren.prn" -; table f_dataetaglob(tall,all_te) "global eta data" $include "./core/input/generisdata_varying_eta.prn" ; @@ -604,7 +606,7 @@ $offdelim *** Import and set regional data ***--------------------------------------------------------------------------- -*RP* 2012-07-24: CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se +*** CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se s_co2pipe_leakage = 0.01; loop(emi2te(enty,enty2,te,enty3)$teCCS(te), @@ -646,7 +648,7 @@ $offdelim ; pm_IO_trade(ttot,regi,enty,char) = f_IO_trade(ttot,regi,enty,char) * sm_EJ_2_TWa; -*LB* use scaled data for export to guarantee net trade = 0 for each traded good +*** use scaled data for export to guarantee net trade = 0 for each traded good loop(tradePe, loop(ttot, if(sum(regi2, pm_IO_trade(ttot,regi2,tradePe,"Xport")) ne 0, @@ -669,20 +671,8 @@ p_cint(regi,"co2","peoil","6")=0.1775748800; p_cint(regi,"co2","peoil","7")=0.2283105600; p_cint(regi,"co2","peoil","8")=0.4153983800; -$ifthen.WindOff %cm_wind_offshore% == "0" -** historical installed capacity -*** read-in of pm_histCap.cs3r -$Offlisting -table pm_histCap(tall,all_regi,all_te) "historical installed capacity" -$ondelim -$include "./core/input/pm_histCap.cs3r" -$offdelim -; -$Onlisting -$endif.WindOff - -$ifthen.WindOff %cm_wind_offshore% == "1" -*** read-in of pm_histCap_windoff.cs3r +*** historical installed capacity +*** read-in of pm_histCap_windoff.cs3r *** windoffshore-todo $Offlisting table pm_histCap(tall,all_regi,all_te) "historical installed capacity" $ondelim @@ -690,7 +680,12 @@ $include "./core/input/pm_histCap_windoff.cs3r" $offdelim ; $Onlisting -$endif.WindOff + +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +pm_histCap(tall,all_regi,"windon") $ (pm_histCap(tall,all_regi,"windon") eq 0) = pm_histCap(tall,all_regi,"wind"); +pm_histCap(tall,all_regi,"wind") = 0; + *** calculate historic capacity additions pm_delta_histCap(tall,regi,te) = pm_histCap(tall,regi,te) - pm_histCap(tall-1,regi,te); @@ -714,20 +709,25 @@ $offdelim $Onlisting -*CG* setting wind off capacity factor to be the same as onshore here (later adjusting it in vm_capFac) -$ifthen.WindOff %cm_wind_offshore% == "1" -f_cf(ttot,regi,"windoff") = f_cf(ttot,regi,"wind"); -$endif.WindOff +*CG* setting wind offshore capacity factor to be the same as onshore here (later adjusting it in vm_capFac) +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +f_cf(ttot,regi,"windon") $ (f_cf(ttot,regi,"windon") eq 0) = f_cf(ttot,regi,"wind"); +f_cf(ttot,regi,"storwindon") $ (f_cf(ttot,regi,"storwindon") eq 0) = f_cf(ttot,regi,"storwind"); +f_cf(ttot,regi,"gridwindon") $ (f_cf(ttot,regi,"gridwindon") eq 0) = f_cf(ttot,regi,"gridwind"); +f_cf(ttot,regi,"windoff") = f_cf(ttot,regi,"windon"); +f_cf(ttot,regi,"storwindoff") = f_cf(ttot,regi,"storwindon"); +f_cf(ttot,regi,"gridwindoff") = f_cf(ttot,regi,"gridwindon"); pm_cf(ttot,regi,te) = f_cf(ttot,regi,te); ***pm_cf(ttot,regi,"h2turbVRE") = 0.15; pm_cf(ttot,regi,"elh2VRE") = 0.6; -*short-term fix for new synfuel td technologies +*** short-term fix for new synfuel td technologies pm_cf(ttot,regi,"tdsyngas") = 0.65; pm_cf(ttot,regi,"tdsynhos") = 0.6; pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; -*JD eternal short-term fix for process-based industry +*** eternal short-term fix for process-based industry pm_cf(ttot,regi,"bf") = 0.8; pm_cf(ttot,regi,"bfcc") = 0.8; pm_cf(ttot,regi,"bof") = 0.8; @@ -751,11 +751,10 @@ pm_cf(ttot,regi,"tdh2i") = pm_cf(ttot,regi,"tdh2s"); *** Region- and tech-specific early retirement rates -***Regional* loop(ext_regi$pm_extRegiEarlyRetiRate(ext_regi), pm_regiEarlyRetiRate(t,regi,te)$(regi_group(ext_regi,regi)) = pm_extRegiEarlyRetiRate(ext_regi); ); -*Tech-specific* +***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 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 @@ -812,7 +811,7 @@ loop(regi, ); ); -*LB* calculate mapping tsu2opTimeYr +*** calculate mapping tsu2opTimeYr alias(ttot, tttot); tsu2opTimeYr(ttot,opTimeYr) = no; tsu2opTimeYr(ttot,"1") = yes; @@ -960,17 +959,21 @@ $offdelim $if %cm_LU_emi_scen% == "SSP1" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0047/sm_EJ_2_TWa; $if %cm_LU_emi_scen% == "SSP2" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0079/sm_EJ_2_TWa; +$if %cm_LU_emi_scen% == "SSP3" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0079/sm_EJ_2_TWa; $if %cm_LU_emi_scen% == "SSP5" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0066/sm_EJ_2_TWa; -*BS* added SDP, copied SSP1 number -$if %cm_LU_emi_scen% == "SDP" p_efFossilFuelExtr(regi,"pebiolc","n2obio") = 0.0047/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; -pm_dataren(regi,"nur",rlf,te) = f_datarenglob("nur",rlf,te); -pm_dataren(regi,"maxprod",rlf,te) = sm_EJ_2_TWa * f_datarenglob("maxprod",rlf,te); +*** capacity factors (nur) are 1 by default +pm_dataren(regi,"nur",rlf,te) = 1; + +*** geothermal heatpumps (geohe) do not get maxprod and nur from f_maxProdGradeRegi files +*** we set regional maxprod to 200EJ = 6.342TWa to represent unlimited potential +pm_dataren(regi,"maxprod","1","geohe") = 6.342; *RP* hydro, spv and csp get maxprod for all regions and grades from external file table f_maxProdGradeRegiHydro(all_regi,char,rlf) "input of regionalized maximum from hydro [EJ/a]" @@ -982,27 +985,30 @@ pm_dataren(all_regi,"maxprod",rlf,"hydro") = sm_EJ_2_TWa * f_maxProdGradeRegiHyd pm_dataren(all_regi,"nur",rlf,"hydro") = f_maxProdGradeRegiHydro(all_regi,"nur",rlf); *CG* separating input of wind onshore and offshore +*** windoffshore-todo table f_maxProdGradeRegiWindOn(all_regi,char,rlf) "input of regionalized maximum from wind onshore [EJ/a]" $ondelim $include "./core/input/f_maxProdGradeRegiWindOn.cs3r" $offdelim ; - -pm_dataren(all_regi,"maxprod",rlf,"wind") = sm_EJ_2_TWa * f_maxProdGradeRegiWindOn(all_regi,"maxprod",rlf); -pm_dataren(all_regi,"nur",rlf,"wind") = f_maxProdGradeRegiWindOn(all_regi,"nur",rlf); +pm_dataren(all_regi,"maxprod",rlf,"windon") = sm_EJ_2_TWa * f_maxProdGradeRegiWindOn(all_regi,"maxprod",rlf); +pm_dataren(all_regi,"nur",rlf,"windon") = f_maxProdGradeRegiWindOn(all_regi,"nur",rlf); -$ifthen.WindOff %cm_wind_offshore% == "1" table f_maxProdGradeRegiWindOff(all_regi,char,rlf) "input of regionalized maximum from wind offshore [EJ/a]" $ondelim $include "./core/input/f_maxProdGradeRegiWindOff.cs3r" $offdelim ; pm_dataren(all_regi,"maxprod",rlf,"windoff") = sm_EJ_2_TWa * f_maxProdGradeRegiWindOff(all_regi,"maxprod",rlf); -pm_dataren(all_regi,"nur",rlf,"windoff") = 1.25 * f_maxProdGradeRegiWindOff(all_regi,"nur",rlf); !! increase wind offshore capacity factors by 25% as the NREL values seem to underestimate offshore capacity factors compared to historic values +*** increase wind offshore capacity factors by 25% to account for very different real-world values +*** NREL values seem underestimated, potentially partially due to assuming low turbines +pm_dataren(all_regi,"nur",rlf,"windoff") = 1.25 * f_maxProdGradeRegiWindOff(all_regi,"nur",rlf); -pm_shareWindPotentialOff2On(all_regi) = sum(rlf,f_maxProdGradeRegiWindOff(all_regi,"maxprod",rlf)$(rlf.val le 8)) / - sum(rlf,f_maxProdGradeRegiWindOn(all_regi,"maxprod",rlf)$(rlf.val le 8)); +pm_shareWindPotentialOff2On(all_regi) = + sum(rlf $ (rlf.val le 8), f_maxProdGradeRegiWindOff(all_regi,"maxprod",rlf)) + / + sum(rlf $ (rlf.val le 8), f_maxProdGradeRegiWindOn( all_regi,"maxprod",rlf)); pm_shareWindOff("2010",regi) = 0.05; pm_shareWindOff("2015",regi) = 0.1; @@ -1014,20 +1020,24 @@ pm_shareWindOff("2040",regi) = 0.9; pm_shareWindOff("2045",regi) = 0.95; pm_shareWindOff(ttot,regi)$((ttot.val ge 2050)) = 1; -$endif.WindOff - table f_dataRegiSolar(all_regi,char,all_te,rlf) "input of regionalized data for solar" $ondelim $include "./core/input/f_dataRegiSolar.cs3r" $offdelim ; -pm_dataren(all_regi,"maxprod",rlf,"csp") = sm_EJ_2_TWa * f_dataRegiSolar(all_regi,"maxprod","csp",rlf); -pm_dataren(all_regi,"maxprod",rlf,"spv") = sm_EJ_2_TWa * f_dataRegiSolar(all_regi,"maxprod","spv",rlf); -pm_dataren(all_regi,"nur",rlf,"csp") = f_dataRegiSolar(all_regi,"nur","csp",rlf); -pm_dataren(all_regi,"nur",rlf,"spv") = f_dataRegiSolar(all_regi,"nur","spv",rlf); +pm_dataren(all_regi,"maxprod",rlf,"csp") = sm_EJ_2_TWa * f_dataRegiSolar(all_regi,"maxprod","csp",rlf); +pm_dataren(all_regi,"maxprod",rlf,"spv") = sm_EJ_2_TWa * f_dataRegiSolar(all_regi,"maxprod","spv",rlf); +pm_dataren(all_regi,"nur",rlf,"spv") = f_dataRegiSolar(all_regi,"nur","spv",rlf); p_datapot(all_regi,"limitGeopot",rlf,"pesol") = f_dataRegiSolar(all_regi,"limitGeopot","spv",rlf); -pm_data(all_regi,"luse","spv") = f_dataRegiSolar(all_regi,"luse","spv","1")/1000; +pm_data(all_regi,"luse","spv") = 0.001 * f_dataRegiSolar(all_regi,"luse","spv","1"); + +*** RP: rescale CSP capacity factors in REMIND +*** In the DLR resource data input files, the numbers are based on a SM3/12h setup, +*** while the cost data from IEA seems rather based on a SM2/6h setup (with 40% average CF). +*** Accordingly, decrease CF in REMIND to 2/3 of the DLR values (no need to correct maxprod, +*** as here no miscalculation of total energy yield takes place, in contrast to wind) +pm_dataren(all_regi,"nur",rlf,"csp") = 2/3 * f_dataRegiSolar(all_regi,"nur","csp",rlf); table f_maxProdGeothermal(all_regi,char) "input of regionalized maximum from geothermal [EJ/a]" @@ -1042,10 +1052,6 @@ pm_dataren(all_regi,"maxprod","1","geohdr")$f_maxProdGeothermal(all_regi,"maxpro *** FS: temporary fix: set minimum geothermal potential across all regions to 10 PJ (still negligible even in small regions) to get rid of infeasibilities pm_dataren(all_regi,"maxprod","1","geohdr")$(f_maxProdGeothermal(all_regi,"maxprod") <= 0.01) = sm_EJ_2_TWa * 0.01; - -*mh* set 'nur' for all non renewable technologies to '1': -pm_dataren(regi,"nur",rlf,teNoRe) = 1; - display p_datapot, pm_dataren; ***--------------------------------------------------------------------------- @@ -1053,36 +1059,35 @@ display p_datapot, pm_dataren; *** -------------------------------------------------------------------------- loop(regi, loop(teReNoBio(te), - p_aux_capToDistr(regi,te) = pm_histCap("2015",regi,te)$(pm_histCap("2015",regi,te) gt 1e-10); - s_aux_cap_remaining = p_aux_capToDistr(regi,te); -*RP* fill up the renewable grades to calculate the total capacity needed to produce the amount calculated in initialcap2, assuming the best grades are filled first (with 20% of each grade not yet used) + p_aux_capToDistr(regi,te) = pm_histCap("2015",regi,te) $ (pm_histCap("2015",regi,te) gt 1e-10); - loop(teRe2rlfDetail(te,rlf)$(pm_dataren(regi,"nur",rlf,te) > 0), +*** Knowing the historical capacity (pm_histCap) in 2015, let us estimate on which grades this capacity was distributed. +*** We assume that the best grades were filled first, but only up to 80% of their potential. + s_aux_cap_remaining = p_aux_capToDistr(regi,te); + loop(teRe2rlfDetail(te,rlf) $ (pm_dataren(regi,"nur",rlf,te) > 0), if(s_aux_cap_remaining > 0, - p_aux_capThisGrade(regi,te,rlf) = min(s_aux_cap_remaining, ( (pm_dataren(regi,"maxprod",rlf,te) * 0.8) / pm_dataren(regi,"nur",rlf,te) ) ); - s_aux_cap_remaining = s_aux_cap_remaining - p_aux_capThisGrade(regi,te,rlf); + p_aux_capThisGrade(regi,te,rlf) = min( + s_aux_cap_remaining, + 0.8 * pm_dataren(regi,"maxprod",rlf,te) / pm_dataren(regi,"nur",rlf,te)); !! installedCapacity = maxprod / capacityFactor + s_aux_cap_remaining = s_aux_cap_remaining - p_aux_capThisGrade(regi,te,rlf); ); ); !! teRe2rlfDetail - p_avCapFac2015(regi,te) = sum(teRe2rlfDetail(te,rlf), p_aux_capThisGrade(regi,te,rlf) * pm_dataren(regi,"nur",rlf,te) ) - / ( sum(teRe2rlfDetail(te,rlf), p_aux_capThisGrade(regi,te,rlf) ) + 1e-10) +*** With this estimated distribution of capacity across grades (p_aux_capThisGrade), +*** let us compute the average capacity factor of each technology in 2015 (p_avCapFac2015). + p_avCapFac2015(regi,te) = + sum(teRe2rlfDetail(te,rlf), + p_aux_capThisGrade(regi,te,rlf) * pm_dataren(regi,"nur",rlf,te)) + / + (sum(teRe2rlfDetail(te,rlf), p_aux_capThisGrade(regi,te,rlf)) + + 1e-10) ); !! teReNoBio ); !! regi display p_aux_capToDistr, s_aux_cap_remaining, p_aux_capThisGrade, p_avCapFac2015, p_inco0; -$ifthen.WindOff %cm_wind_offshore% == "0" -parameter p_histCapFac(tall,all_regi,all_te) "Capacity factor (fraction of the year that a plant is running) of installed capacity in 2015" -/ -$ondelim -$include "./core/input/p_histCapFac.cs4r" -$offdelim -/ -; -$endif.WindOff -$ifthen.WindOff %cm_wind_offshore% == "1" parameter p_histCapFac(tall,all_regi,all_te) "Capacity factor (fraction of the year that a plant is running) of installed capacity in 2015" / $ondelim @@ -1090,58 +1095,37 @@ $include "./core/input/p_histCapFac_windoff.cs4r" $offdelim / ; -$endif.WindOff - - -*** RP rescale wind capacity factors in REMIND to account for very different real-world CF (potentially partially due to assumed low-wind turbine set-ups in the NREL data) -*** Because of the lag effect (turbines in the 2000s were much smaller and thus yielded lower CFs), only implement half of the calculated ratio of historic to REMIND capFac as rescaling for the new CFs - realised as (x+1)/2 -*cb* CF calibration analogously for wind and spv: calibrate 2015, and assume gradual phase-in of grade-based CF (until 2045 for wind, until 2030 for spv) -p_aux_capacityFactorHistOverREMIND(regi,"wind")$p_avCapFac2015(regi,"wind") = p_histCapFac("2015",regi,"wind") / p_avCapFac2015(regi,"wind"); -$ifthen.WindOff %cm_wind_offshore% == "1" -p_aux_capacityFactorHistOverREMIND(regi,"windoff")$p_avCapFac2015(regi,"windoff") = p_histCapFac("2015",regi,"windoff") / p_avCapFac2015(regi,"windoff"); -$endif.WindOff - -$ifthen.WindOff %cm_wind_offshore% == "0" -loop(t$(t.val ge 2015 AND t.val le 2035 ), -pm_cf(t,regi,"wind") = -(2035 - pm_ttot_val(t)) / 20 * p_aux_capacityFactorHistOverREMIND(regi,"wind") *pm_cf(t,regi,"wind") -+ -(pm_ttot_val(t) - 2015) / 20 * pm_cf(t,regi,"wind") +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +p_histCapFac(tall,all_regi,"windon") $ (p_histCapFac(tall,all_regi,"windon") eq 0) = p_histCapFac(tall,all_regi,"wind"); +p_histCapFac(tall,all_regi,"wind") = 0; + + +*** 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 +*** 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 +*** 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), + 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) + + (pm_ttot_val(t) - 2015) + ) / (2030 - 2015) ); -$endif.WindOff - -$ifthen.WindOff %cm_wind_offshore% == "1" -loop(te$(sameas(te,"wind") OR sameas(te,"windoff")), -loop(t$(t.val ge 2015 AND t.val le 2035 ), -pm_cf(t,regi,te) = -(2035 - pm_ttot_val(t)) / 20 * p_aux_capacityFactorHistOverREMIND(regi,te) *pm_cf(t,regi,te) -+ -(pm_ttot_val(t) - 2015) / 20 * pm_cf(t,regi,te) -); -); -$endif.WindOff +*CG* set storage and grid of windoff to be the same as windon +pm_cf(t,regi,"storwindoff") = pm_cf(t,regi,"storwindon"); +pm_cf(t,regi,"gridwindoff") = pm_cf(t,regi,"gridwindon"); -*CG* set storage and grid of windoff to be the same as windon -$ifthen.WindOff %cm_wind_offshore% == "1" -pm_cf(t,regi,"storwindoff") = pm_cf(t,regi,"storwind"); -pm_cf(t,regi,"gridwindoff") = pm_cf(t,regi,"gridwind"); -$endif.WindOff - -p_aux_capacityFactorHistOverREMIND(regi,"spv")$p_avCapFac2015(regi,"spv") = p_histCapFac("2015",regi,"spv") / p_avCapFac2015(regi,"spv"); -pm_cf("2015",regi,"spv") = pm_cf("2015",regi,"spv") * p_aux_capacityFactorHistOverREMIND(regi,"spv"); -pm_cf("2020",regi,"spv") = pm_cf("2020",regi,"spv") * (p_aux_capacityFactorHistOverREMIND(regi,"spv")+1)/2; -pm_cf("2025",regi,"spv") = pm_cf("2025",regi,"spv") * (p_aux_capacityFactorHistOverREMIND(regi,"spv")+3)/4; - -*** RP rescale CSP capacity factors in REMIND - in the DLR resource data input files, the numbers are based on a SM3/12h setup, while the cost data from IEA seems rather based on a SM2/6h setup (with 40% average CF) -*** Accordingly, decrease CF in REMIND to 2/3 of the DLR values (no need to correct maxprod, as here no miscalculation of total energy yield takes place, in contrast to wind) -loop(te$sameas(te,"csp"), - pm_dataren(regi,"nur",rlf,te) = pm_dataren(regi,"nur",rlf,te) * 2/3 ; -); -display p_aux_capacityFactorHistOverREMIND, pm_dataren; +display p_aux_capacityFactorHistOverREMIND, pm_dataren, pm_cf; *** FS: sensitivity scenarios for renewable potentials @@ -1156,7 +1140,7 @@ $endif.VREPot_Factor pm_dataeta(tall,regi,te) = f_dataetaglob(tall,te); -*RP* 20100620 adjust which technologies have time-varying etas +*** adjust which technologies have time-varying etas display f_dataetaglob; display teEtaIncr; loop(te, @@ -1176,7 +1160,7 @@ $offdelim ***----------------------------------------------------------------------------- *** adjustment cost parameter ***----------------------------------------------------------------------------- -***RP 20100531 import regional offset for adjustment cost calculations +*** import regional offset for adjustment cost calculations parameter p_adj_deltacapoffset(tall,all_regi,all_te) "adjustment cost offset to prevent delay of capacity addition" / $ondelim @@ -1186,9 +1170,11 @@ $offdelim ; p_adj_deltacapoffset("2015",regi,"tnrs")= 1; -$ifthen.WindOff %cm_wind_offshore% == "1" -p_adj_deltacapoffset(t,regi,"windoff")= p_adj_deltacapoffset(t,regi,"wind"); -$endif.WindOff +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +p_adj_deltacapoffset(t,regi,"windon") $ (p_adj_deltacapoffset(t,regi,"windon") eq 0) = p_adj_deltacapoffset(t,regi,"wind"); +p_adj_deltacapoffset(t,regi,"windoff")= p_adj_deltacapoffset(t,regi,"windon"); +p_adj_deltacapoffset(t,regi,"wind") = 0; *** share of PE2SE capacities in 2005 depends on GDP-MER p_adj_seed_reg(t,regi) = pm_gdp(t,regi) * 1e-4; @@ -1201,6 +1187,7 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,"hydro") = 0.25; p_adj_seed_te(ttot,regi,"csp") = 0.25; p_adj_seed_te(ttot,regi,"spv") = 2.00; + p_adj_seed_te(ttot,regi,"windoff") = 0.5; p_adj_seed_te(ttot,regi,"gasftrec") = 0.25; p_adj_seed_te(ttot,regi,"gasftcrec") = 0.25; p_adj_seed_te(ttot,regi,"coalftrec") = 0.25; @@ -1209,15 +1196,13 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'dac') = 0.25; p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; - p_adj_seed_te(ttot,regi,'geohe') = 0.33; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; p_adj_seed_te(ttot,regi,"idrcc") = 0.05; $endif.cm_subsec_model_steel - -$ifthen.WindOff %cm_wind_offshore% == "1" - p_adj_seed_te(ttot,regi,"windoff") = 0.5; -$endif.WindOff + p_adj_seed_te(ttot,regi,"elh2") = 0.5; + p_adj_seed_te(ttot,regi,"MeOH") = 0.5; + p_adj_seed_te(ttot,regi,"h22ch4") = 0.5; *RP: for comparison of different technologies: *** pm_conv_cap_2_MioLDV <- 650 # The world has slightly below 800million cars in 2005 (IEA TECO2), so with a global vm_cap of 1.2, this gives ~650 @@ -1243,23 +1228,24 @@ $endif.WindOff p_adj_coeff(ttot,regi,teCCS) = 1.0; p_adj_coeff(ttot,regi,"ccsinje") = 1.0; p_adj_coeff(ttot,regi,"spv") = 0.15; - p_adj_coeff(ttot,regi,"wind") = 0.25; - p_adj_coeff(ttot,regi,"geohe") = 0.6; + p_adj_coeff(ttot,regi,"windon") = 0.25; + p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; p_adj_coeff(ttot,regi,"idrcc") = 1.0; $endif.cm_subsec_model_steel -$ifthen.WindOff %cm_wind_offshore% == "1" - - p_adj_coeff(ttot,regi,"windoff") = 0.35; -$endif.WindOff - p_adj_coeff(ttot,regi,"dac") = 0.8; p_adj_coeff(ttot,regi,'oae_ng') = 0.8; p_adj_coeff(ttot,regi,'oae_el') = 0.8; p_adj_coeff(ttot,regi,teGrid) = 0.3; p_adj_coeff(ttot,regi,teStor) = 0.05; + + p_adj_coeff(ttot,regi,"elh2") = 0.5; + p_adj_coeff(ttot,regi,"MeOH") = 0.5; + p_adj_coeff(ttot,regi,"h22ch4") = 0.5; + + ); ***Rescaling adj seed and coeff if adj cost multiplier switches are on @@ -1370,7 +1356,6 @@ if(c_macscen eq 2, if(c_macscen eq 1, pm_macSwitch(emiMacSector) = 1; ); -*pm_macCostSwitch(enty)=pm_macSwitch(enty); *** for NDC and NPi switch off landuse MACs $if %carbonprice% == "off" pm_macSwitch(emiMacMagpie) = 0; @@ -1379,15 +1364,14 @@ $if %carbonprice% == "NPi" pm_macSwitch(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 f_taxCO2eqHist(ttot,all_regi) "historic CO2 prices ($/tCO2)" +parameter fm_taxCO2eqHist(ttot,all_regi) "historic CO2 prices [$/tCO2]" / $ondelim $include "./core/input/pm_taxCO2eqHist.cs4r" $offdelim / ; -pm_taxCO2eq(ttot,regi)$(ttot.val le 2020) = f_taxCO2eqHist(ttot,regi) * sm_DptCO2_2_TDpGtC; - +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 @@ -1560,11 +1544,6 @@ table p_vintage_glob_in(opTimeYr,all_te) "read-in of global historical v $include "./core/input/generisdata_vintages.prn" ; -*CG* wind offshore has the same vintage structure as onshore -$ifthen.WindOff %cm_wind_offshore% == "1" -p_vintage_glob_in(opTimeYr,"windoff") = p_vintage_glob_in(opTimeYr,"wind"); -$endif.WindOff - pm_vintage_in(regi,opTimeYr,te) = p_vintage_glob_in(opTimeYr,te); *RP* 2015-12-09: make sure that all technologies have a pm_vintage_in value > 0 in 2005. If a technology should not be built, this is modeled by diff --git a/core/declarations.gms b/core/declarations.gms index c3b9610ae..0e9114780 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -83,9 +83,9 @@ pm_macCost(tall,all_regi,all_enty) "abatement costs for all em pm_macStep(tall,all_regi,all_enty) "step number of abatement level [integer]" pm_macSwitch(all_enty) "switch to include mac option in the code" pm_macCostSwitch(all_enty) "switch to include mac costs in the code (e.g. in coupled scenarios, we want to include the costs in REMIND, but MAC effects on emissions are calculated in MAgPIE)" -p_priceCO2(tall,all_regi) "carbon price [$/tC]" -pm_priceCO2forMAC(tall,all_regi,all_enty) "carbon price defined for MAC gases [$/tC]" -p_priceGas(tall,all_regi) "gas price in [$/tCeq] for ch4gas MAC" +p_priceCO2(tall,all_regi) "carbon price [$/tC]" +pm_priceCO2forMAC(tall,all_regi,all_enty) "carbon price defined for MAC gases [$/tC]" +p_priceGas(tall,all_regi) "gas price for ch4gas MAC [$/tCeq]" pm_ResidualCementDemand(tall,all_regi) "reduction in cemend demand (and thus process emissions) due to climate policy [0...1]" pm_CementAbatementPrice(ttot,all_regi) "CO2 price used during calculation of cement demand reduction [$/tCO2]" pm_CementDemandReductionCost(tall,all_regi) "cost of reducing cement demand [tn$2005]" @@ -119,6 +119,11 @@ p_gdppcap2050_PPP(all_regi) "regional GDP PPP per capita in p_maxPPP2050 "maximum income GDP PPP among regions in 2050" p_maxSpvCost "maximum spv investment cost among regions" +$ifthen.tech_CO2capturerate not "%c_tech_CO2capturerate%" == "off" +p_tech_co2capturerate(all_te) "Technology specific CO2 capture rate" / %c_tech_CO2capturerate% / +p_PECarriers_CarbonContent(all_enty) "Carbon content of PE carriers [GtC/TWa]" +$endif.tech_CO2capturerate + pm_EN_demand_from_initialcap2(all_regi,all_enty) "PE demand resulting from the initialcap routine. [EJ, Uranium: MT U3O8]" pm_budgetCO2eq(all_regi) "budget for regional energy-emissions in period 1" p_actualbudgetco2(tall) "actual level of cumulated emissions starting from 2020 [GtCO2]" @@ -139,17 +144,17 @@ p_ef_dem(all_regi,all_enty) "Demand side emissio pm_secBioShare(ttot,all_regi,all_enty,emi_sectors) "share of biomass per carrier for each sector" p_avCapFac2015(all_regi,all_te) "average capacity factor of non-bio renewables in 2015 in REMIND" -p_aux_capToDistr(all_regi,all_te) "aux. param. to calculate p_avCapFac2015; The historic capacity in 2015" -s_aux_cap_remaining "aux. param. to calculate p_avCapFac2015; countdown parameter" -p_aux_capThisGrade(all_regi,all_te,rlf) "aux. param. to calculate p_avCapFac2015; How the historic 2015 capacity is distributed among grades" -p_aux_capacityFactorHistOverREMIND(all_regi,all_te) "aux. param. to calculate capacity factors correction (wind and spv): the ratio of historic over REMIND CapFac in 2015" -p_aux_scaleEmiHistorical_n2o(all_regi) "aux. param. to rescale MAgPIE n2o emissions to historical values" -p_aux_scaleEmiHistorical_ch4(all_regi) "aux. param. to rescale MAgPIE ch4 emissions to historical values" - -$IFTHEN.WindOff %cm_wind_offshore% == "1" -pm_shareWindPotentialOff2On(all_regi) "ratio of technical potential of windoff to windon" -pm_shareWindOff(ttot,all_regi) "windoff rollout as a fraction of technical potential" -$ENDIF.WindOff +p_aux_capToDistr(all_regi,all_te) "auxiliary parameter to calculate p_avCapFac2015; The historic capacity in 2015" +s_aux_cap_remaining "auxiliary parameter to calculate p_avCapFac2015; countdown parameter" +p_aux_capThisGrade(all_regi,all_te,rlf) "auxiliary parameter to calculate p_avCapFac2015; How the historic 2015 capacity is distributed among grades" +p_aux_capacityFactorHistOverREMIND(all_regi,all_te) "auxiliary parameter to calculate capacity factors correction (wind and spv): the ratio of historic over REMIND CapFac in 2015" + +p_aux_scaleEmiHistorical_n2o(all_regi) "auxiliary parameter to rescale MAgPIE n2o emissions to historical values" +p_aux_scaleEmiHistorical_ch4(all_regi) "auxiliary parameter to rescale MAgPIE ch4 emissions to historical values" + +*** windoffshore-todo +pm_shareWindPotentialOff2On(all_regi) "ratio of technical potential of windoff to windon" +pm_shareWindOff(ttot,all_regi) "windoff rollout as a fraction of technical potential" pm_fe2es(tall,all_regi,all_teEs) "Conversion factor from final energies to energy services. Default is 1." @@ -247,29 +252,29 @@ p_co2CCSReference(ttot,all_regi,all_enty,all_enty,all_te,rlf) "Captured CO2 p_prodAllReference(ttot,all_regi,all_te) "Sum of the above in the reference run. As each te has only one type of output, the differing units should not be a problem" -* Energy carrier 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" -pm_SEPrice(ttot,all_regi,all_enty) "parameter to capture all SE prices (tr$2005/TWa)" -pm_PEPrice(ttot,all_regi,all_enty) "parameter to capture all PE prices (tr$2005/TWa)" - -p_FEPrice_by_SE_Sector_EmiMkt(ttot,all_regi,entySe,all_enty,sector,emiMkt) "parameter to save FE price per SE, sector and emission market (tr$2005/TWa)" -p_FEPrice_by_Sector_EmiMkt(ttot,all_regi,all_enty,sector,emiMkt) "parameter to save FE marginal price per sector and emission market (tr$2005/TWa)" -pm_FEPrice_by_SE_Sector(ttot,all_regi,entySe,all_enty,sector) "parameter to save FE marginal price per SE and sector (tr$2005/TWa)" -p_FEPrice_by_SE_EmiMkt(ttot,all_regi,entySe,all_enty,emiMkt) "parameter to save FE marginal price per SE and emission market (tr$2005/TWa)" -p_FEPrice_by_SE(ttot,all_regi,entySe,all_enty) "parameter to save FE marginal price per SE (tr$2005/TWa)" -p_FEPrice_by_Sector(ttot,all_regi,all_enty,sector) "parameter to save FE marginal price per sector (tr$2005/TWa)" -p_FEPrice_by_EmiMkt(ttot,all_regi,all_enty,emiMkt) "parameter to save FE marginal price per emission market (tr$2005/TWa)" -p_FEPrice_by_FE(ttot,all_regi,all_enty) "parameter to save FE marginal price (tr$2005/TWa)" - -p_FEPrice_by_SE_Sector_EmiMkt_iter(iteration,ttot,all_regi,entySe,all_enty,sector,emiMkt) "parameter to save iteration FE marginal price per SE, sector and emission market (tr$2005/TWa)" -p_FEPrice_by_Sector_EmiMkt_iter(iteration,ttot,all_regi,all_enty,sector,emiMkt) "parameter to save iteration FE marginal price per sector and emission market (tr$2005/TWa)" -p_FEPrice_by_SE_Sector_iter(iteration,ttot,all_regi,entySe,all_enty,sector) "parameter to save iteration FE marginal price per SE and sector (tr$2005/TWa)" -p_FEPrice_by_SE_EmiMkt_iter(iteration,ttot,all_regi,entySe,all_enty,emiMkt) "parameter to save iteration FE marginal price per SE and emission market (tr$2005/TWa)" -p_FEPrice_by_SE_iter(iteration,ttot,all_regi,entySe,all_enty) "parameter to save iteration FE marginal price per SE (tr$2005/TWa)" -p_FEPrice_by_Sector_iter(iteration,ttot,all_regi,all_enty,sector) "parameter to save iteration FE marginal price per sector (tr$2005/TWa)" -p_FEPrice_by_EmiMkt_iter(iteration,ttot,all_regi,all_enty,emiMkt) "parameter to save iteration FE marginal price per emission market (tr$2005/TWa)" -p_FEPrice_by_FE_iter(iteration,ttot,all_regi,all_enty) "parameter to save iteration FE marginal price (tr$2005/TWa)" +*** Energy carrier 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" +pm_SEPrice(ttot,all_regi,all_enty) "parameter to capture all SE prices [tr$2005/TWa]" +pm_PEPrice(ttot,all_regi,all_enty) "parameter to capture all PE prices [tr$2005/TWa]" + +p_FEPrice_by_SE_Sector_EmiMkt(ttot,all_regi,entySe,all_enty,sector,emiMkt) "parameter to save FE price per SE, sector and emission market [tr$2005/TWa]" +p_FEPrice_by_Sector_EmiMkt(ttot,all_regi,all_enty,sector,emiMkt) "parameter to save FE marginal price per sector and emission market [tr$2005/TWa]" +pm_FEPrice_by_SE_Sector(ttot,all_regi,entySe,all_enty,sector) "parameter to save FE marginal price per SE and sector [tr$2005/TWa]" +p_FEPrice_by_SE_EmiMkt(ttot,all_regi,entySe,all_enty,emiMkt) "parameter to save FE marginal price per SE and emission market [tr$2005/TWa]" +p_FEPrice_by_SE(ttot,all_regi,entySe,all_enty) "parameter to save FE marginal price per SE [tr$2005/TWa]" +p_FEPrice_by_Sector(ttot,all_regi,all_enty,sector) "parameter to save FE marginal price per sector [tr$2005/TWa]" +p_FEPrice_by_EmiMkt(ttot,all_regi,all_enty,emiMkt) "parameter to save FE marginal price per emission market [tr$2005/TWa]" +p_FEPrice_by_FE(ttot,all_regi,all_enty) "parameter to save FE marginal price [tr$2005/TWa]" + +p_FEPrice_by_SE_Sector_EmiMkt_iter(iteration,ttot,all_regi,entySe,all_enty,sector,emiMkt) "parameter to save iteration FE marginal price per SE, sector and emission market [tr$2005/TWa]" +p_FEPrice_by_Sector_EmiMkt_iter(iteration,ttot,all_regi,all_enty,sector,emiMkt) "parameter to save iteration FE marginal price per sector and emission market [tr$2005/TWa]" +p_FEPrice_by_SE_Sector_iter(iteration,ttot,all_regi,entySe,all_enty,sector) "parameter to save iteration FE marginal price per SE and sector [tr$2005/TWa]" +p_FEPrice_by_SE_EmiMkt_iter(iteration,ttot,all_regi,entySe,all_enty,emiMkt) "parameter to save iteration FE marginal price per SE and emission market [tr$2005/TWa]" +p_FEPrice_by_SE_iter(iteration,ttot,all_regi,entySe,all_enty) "parameter to save iteration FE marginal price per SE [tr$2005/TWa]" +p_FEPrice_by_Sector_iter(iteration,ttot,all_regi,all_enty,sector) "parameter to save iteration FE marginal price per sector [tr$2005/TWa]" +p_FEPrice_by_EmiMkt_iter(iteration,ttot,all_regi,all_enty,emiMkt) "parameter to save iteration FE marginal price per emission market [tr$2005/TWa]" +p_FEPrice_by_FE_iter(iteration,ttot,all_regi,all_enty) "parameter to save iteration FE marginal price [tr$2005/TWa]" *** climate related pm_globalMeanTemperature(tall) "global mean temperature anomaly" @@ -477,10 +482,9 @@ q_cap(tall,all_regi,all_te,rlf) "definition of available ca q_capDistr(tall,all_regi,all_te) "distribute available capacities across grades" q_capTotal(ttot,all_regi,all_enty,all_enty) "calculation of vm_capTotal as total capacity without technology differentation for technologies where there exists differentation" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** windoffshore-todo q_windoff_low(tall,all_regi) "semi-endogenous offshore wind power generation as a share of onshore wind energy, which is proportional to more than half of maxprod ratio" q_windoff_high(tall,all_regi) "semi-endogenous offshore wind power generation as a share of onshore wind energy, which is proportional to less than twice of maxprod ratio" -$ENDIF.WindOff q_limitCapSe(ttot,all_regi,all_enty,all_enty,all_te) "capacity constraint for se production" q_limitCapSe2se(ttot,all_regi,all_enty,all_enty,all_te) "capacity constraint for se to se transformation" @@ -519,7 +523,7 @@ qm_co2eqCum(all_regi) "cumulate regional emission q_budgetCO2eqGlob "global emission budget balance" q_emiTeDetailMkt(ttot,all_regi,all_enty,all_enty,all_te,all_enty,all_emiMkt) "detailed energy specific emissions per region and market" -q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per region and market" +q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per region and market" 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" @@ -586,9 +590,6 @@ $ifthen.minMaxSeFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "minMaxAvrgS q_minMaxPenSeFeSectorShareDev(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "min-max penalty balance for secondary energy share deviation in sectors" $endif.minMaxSeFeSectorShareDev -***---------------------------------------------------------------------------------------- -***----------------------------------------------trade module------------------------------ - ; ***---------------------------------------------------------------------------------------- *** SCALARS @@ -596,11 +597,6 @@ $endif.minMaxSeFeSectorShareDev scalars o_modelstat "critical solver status for solution" -***---------------------------------------------------------------------------------------- -***------------------------------------------------MACRO module---------------------------- - -***---------------------------------------------------------------------------------------- -***-----------------------------------------------ESM module------------------------------- pm_conv_TWa_EJ "conversion from TWa to EJ" /31.536/, sm_c_2_co2 "conversion from c to co2" /3.666666666667/, *** conversion factors of time units @@ -630,9 +626,12 @@ s_MtCO2_2_GtC "conversion factor from Mt 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/ -sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/ +s_D2015_2_D2017 "Convert US$2015 to US$2017" /1.0292/ +sm_D2005_2_D2017 "Convert US$2005 to US$2017" /1.231/ +sm_D2020_2_D2017 "Convert US$2020 to US$2017" /0.9469/ +sm_EURO2023_2_D2017 "Convert EURO 2023 to US$2017" /0.8915/ -s_D2015_2_D2005 "Convert $2015 to $2005 by dividing by 1.2: 1/1.2 = 0.8333" /0.8333/ +sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/ sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ s_co2pipe_leakage "Leakage rate of CO2 pipelines. [0..1]" @@ -655,16 +654,13 @@ sm_globalBudget_dev "actual level of global cu 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/ - -***---------------------------------------------------------------------------------------- -***----------------------------------------------trade module------------------------------ ; +sm_dmac = sm_D2005_2_D2017 * sm_dmac; sm_tgn_2_pgc = (44/28) * s_gwpN2O * (12/44) * 0.001; sm_tgch4_2_pgc = s_gwpCH4 * (12/44) * 0.001; -***---------------------------------------------------------------------------------------- -*----------------------------------------------carbon intensities of coal, oil, and gas +*** carbon intensities of coal, oil, and gas pm_cintraw("pecoal") = 26.1 / s_zj_2_twa; pm_cintraw("peoil") = 20.0 / s_zj_2_twa; pm_cintraw("pegas") = 15.0 / s_zj_2_twa; diff --git a/core/equations.gms b/core/equations.gms index 231d591ef..d9b76deef 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -343,22 +343,20 @@ q_capTotal(t,regi,entyPe,entySe)$( capTotal(entyPe,entySe)).. ***--------------------------------------------------------------------------- *' CG: implementing simple exogenous wind offshore energy production -*' +*** windoffshore-todo ***--------------------------------------------------------------------------- -$IFTHEN.WindOff %cm_wind_offshore% == "1" q_windoff_low(t,regi)$(t.val > 2020).. sum(rlf, vm_deltaCap(t,regi,"windoff",rlf)) =g= - pm_shareWindOff(t,regi) * pm_shareWindPotentialOff2On(regi) * 0.5 * sum(rlf, vm_deltaCap(t,regi,"wind",rlf)) + pm_shareWindOff(t,regi) * pm_shareWindPotentialOff2On(regi) * 0.5 * sum(rlf, vm_deltaCap(t,regi,"windon",rlf)) ; q_windoff_high(t,regi)$(t.val > 2020).. sum(rlf, vm_deltaCap(t,regi,"windoff",rlf)) =l= - pm_shareWindOff(t,regi) * pm_shareWindPotentialOff2On(regi) * 2 * sum(rlf, vm_deltaCap(t,regi,"wind",rlf)) + pm_shareWindOff(t,regi) * pm_shareWindPotentialOff2On(regi) * 2 * sum(rlf, vm_deltaCap(t,regi,"windon",rlf)) ; -$ENDIF.WindOff ***--------------------------------------------------------------------------- *' Technological change is an important driver of the evolution of energy systems. *' For mature technologies, such as coal-fired power plants, the evolution diff --git a/core/input/generisdata_flexibility.prn b/core/input/generisdata_flexibility.prn index a82d3262d..61439a478 100644 --- a/core/input/generisdata_flexibility.prn +++ b/core/input/generisdata_flexibility.prn @@ -1,32 +1,31 @@ *** SOF ./core/input/generisdata_flexibility.prn *** parameterization after simple algorithm -fm_dataglob("flexibility","ngcc") = 0.95; -fm_dataglob("flexibility","ngccc") = 0.85; -fm_dataglob("flexibility","ngt") = 16; -fm_dataglob("flexibility","h2turb") = 16; -fm_dataglob("flexibility","dot") = 6; -fm_dataglob("flexibility","igcc") = 0.85; -fm_dataglob("flexibility","igccc") = 0.7; -fm_dataglob("flexibility","pc") = 0.90; -fm_dataglob("flexibility","gaschp") = 0.85; -fm_dataglob("flexibility","coalchp") = 0.75; -fm_dataglob("flexibility","biochp") = 0.7; -fm_dataglob("flexibility","bioigcc") = 0.75; -fm_dataglob("flexibility","bioigccc") = 0.7; -fm_dataglob("flexibility","tnrs") = 0.6; -fm_dataglob("flexibility","fnrs") = 0.44; -fm_dataglob("flexibility","wind") = -1; -fm_dataglob("flexibility","csp") = -1; -fm_dataglob("flexibility","spv") = -1; -fm_dataglob("flexibility","storwind") = 1.89; -$IFTHEN.WindOff %cm_wind_offshore% == "1" -fm_dataglob("flexibility","storwind") = 1.86; -$ENDIF.WindOff -fm_dataglob("flexibility","storcsp") = 1.85; -fm_dataglob("flexibility","storspv") = 1.85; -fm_dataglob("flexibility","geohdr") = 0.8; -fm_dataglob("flexibility","hydro") = 1.2; -fm_dataglob("flexibility","h2turbVRE") = 16; +fm_dataglob("flexibility","ngcc") = 0.95; +fm_dataglob("flexibility","ngccc") = 0.85; +fm_dataglob("flexibility","ngt") = 16; +fm_dataglob("flexibility","h2turb") = 16; +fm_dataglob("flexibility","dot") = 6; +fm_dataglob("flexibility","igcc") = 0.85; +fm_dataglob("flexibility","igccc") = 0.7; +fm_dataglob("flexibility","pc") = 0.90; +fm_dataglob("flexibility","gaschp") = 0.85; +fm_dataglob("flexibility","coalchp") = 0.75; +fm_dataglob("flexibility","biochp") = 0.7; +fm_dataglob("flexibility","bioigcc") = 0.75; +fm_dataglob("flexibility","bioigccc") = 0.7; +fm_dataglob("flexibility","tnrs") = 0.6; +fm_dataglob("flexibility","fnrs") = 0.44; +fm_dataglob("flexibility","windon") = -1; +fm_dataglob("flexibility","windoff") = -1; +fm_dataglob("flexibility","csp") = -1; +fm_dataglob("flexibility","spv") = -1; +fm_dataglob("flexibility","storwindon") = 1.86; +fm_dataglob("flexibility","storwindoff")= 1.93; +fm_dataglob("flexibility","storcsp") = 1.85; +fm_dataglob("flexibility","storspv") = 1.85; +fm_dataglob("flexibility","geohdr") = 0.8; +fm_dataglob("flexibility","hydro") = 1.2; +fm_dataglob("flexibility","h2turbVRE") = 16; *** EOF ./core/input/generisdata_flexibility.prn diff --git a/core/input/generisdata_nur_ren.prn b/core/input/generisdata_nur_ren.prn deleted file mode 100644 index ed725b05c..000000000 --- a/core/input/generisdata_nur_ren.prn +++ /dev/null @@ -1,35 +0,0 @@ -*** SOF ./core/input/generisdata_nur_ren.prn -*TA: This file includes the capacity factors (nur) for different renewable energy sources and for different grades. -*TA: Max. annual global production (maxprod) is given in EJ/a for wind onshore, hydro, geohdr, geohe. -* The potential is categorized into different greades. - - - - wind spv hydro geohdr geohe csp storspv storwind storcsp gridspv gridwind gridcsp -nur.1 0.31 0.230 0.550 1.000 1.000 0.72 1 1 1 0.85 0.85 0.85 -nur.2 0.28 0.215 0.450 0.68 -nur.3 0.24 0.200 0.350 0.65 -nur.4 0.20 0.185 0.250 0.61 -nur.5 0.17 0.172 0.150 0.57 -nur.6 0.15 0.160 0.53 -nur.7 0.13 0.150 0.48 -nur.8 0.12 0.140 0.43 -nur.9 0.11 0.130 0.40 -nur.10 0.10 -nur.11 0.08 -nur.12 0.07 - - -maxprod.1 50 8 0.112 50.0 -maxprod.2 40 16 -maxprod.3 40 18 -maxprod.4 40 8 -maxprod.5 40 -maxprod.6 40 -maxprod.7 60 - - - - - -*** EOF ./core/input/generisdata_nur_ren.prn diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index f1f712a65..a236c1989 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms 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' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac/prc cc: $[2015] / (tC[captured]/a); for other indutry prc: $[2015]/(t[output]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs @@ -55,7 +54,7 @@ omv 30.11 25.00 31.50 50 lifetime 35 35 40 40 40 40 40 40 35 35 35 35 35 35 35 -+ geohdr geohe hydro wind windoff spv solhe csp ++ geohdr geohe hydro windon windoff spv solhe csp tech_stat 1 inco0 3600 1200 2700 2400 5000 5160 9999 10320 constrTme 4 1 5 1 4 1 1 3 @@ -138,22 +137,22 @@ omf 0.03 0.03 omv 36 76 lifetime 50 50 -+ storspv storwind storcsp -inco0 7720 2940 2520 -mix0 0.00 0.00 0.00 -eta 0.74 0.85 0.79 -omf 0.02 0.02 0.02 -lifetime 25 25 25 -incolearn 5440 2090 1800 -ccap0 0.00005 0.00005 0.00005 -learn 0.10 0.10 0.10 - -+ gridspv gridwind gridcsp -inco0 2400 720 3120 -mix0 0.00 0.00 0.00 -eta 1.00 1.00 1.00 -omf 0.02 0.02 0.02 -lifetime 45 45 45 ++ storspv storcsp storwindon storwindoff +inco0 7720 2520 2940 2940 +mix0 0.00 0.00 0.00 0.00 +eta 0.74 0.79 0.85 0.85 +omf 0.02 0.02 0.02 0.02 +lifetime 25 25 25 25 +incolearn 5440 1800 2090 2090 +ccap0 0.00005 0.00005 0.00005 0.00005 +learn 0.10 0.10 0.10 0.10 + ++ gridspv gridcsp gridwindon gridwindoff +inco0 2400 3120 720 720 +mix0 0.00 0.00 0.00 0.00 +eta 1.00 1.00 1.00 1.00 +omf 0.02 0.02 0.02 0.02 +lifetime 45 45 45 45 + weathering dac oae_ng oae_el tech_stat 4 diff --git a/core/input/generisdata_tech_SSP1.prn b/core/input/generisdata_tech_SSP1.prn index 8cee32202..aa5dddcfb 100644 --- a/core/input/generisdata_tech_SSP1.prn +++ b/core/input/generisdata_tech_SSP1.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech_SSP1.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms 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' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac: $[2015] / (tC[captured]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs @@ -55,7 +54,7 @@ omv 30.11 25.00 31.50 50 lifetime 35 35 40 40 40 40 40 40 35 35 35 35 35 35 35 -+ geohdr geohe hydro wind windoff spv solhe csp ++ geohdr geohe hydro windon windoff spv solhe csp tech_stat 1 inco0 3600 1200 2700 2400 5000 5160 9999 10320 constrTme 4 1 5 1 4 1 1 3 @@ -136,22 +135,23 @@ omf 0.03 0.03 omv 36 76 lifetime 50 50 -+ storspv storwind storcsp -inco0 8350 3250 2520 -mix0 0.00 0.00 0.00 -eta 0.78 0.89 0.83 -omf 0.02 0.02 0.02 -lifetime 25 25 25 -incolearn 7000 2430 1940 -ccap0 0.00005 0.00005 0.00005 -learn 0.10 0.10 0.10 - -+ gridspv gridwind gridcsp -inco0 2400 720 3120 -mix0 0.00 0.00 0.00 -eta 1.00 1.00 1.00 -omf 0.02 0.02 0.02 -lifetime 45 45 45 + ++ storspv storcsp storwindon storwindoff +inco0 8350 2520 3250 3250 +mix0 0.00 0.00 0.00 0.00 +eta 0.78 0.83 0.89 0.89 +omf 0.02 0.02 0.02 0.02 +lifetime 25 25 25 25 +incolearn 7000 1940 2430 2430 +ccap0 0.00005 0.00005 0.00005 0.00005 +learn 0.10 0.10 0.10 0.10 + ++ gridspv gridcsp gridwindon gridwindoff +inco0 2400 3120 720 720 +mix0 0.00 0.00 0.00 0.00 +eta 1.00 1.00 1.00 1.00 +omf 0.02 0.02 0.02 0.02 +lifetime 45 45 45 45 + weathering dac oae_ng oae_el tech_stat 4 diff --git a/core/input/generisdata_tech_SSP5.prn b/core/input/generisdata_tech_SSP5.prn index e91cfeb85..74f837c23 100644 --- a/core/input/generisdata_tech_SSP5.prn +++ b/core/input/generisdata_tech_SSP5.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech_SSP5.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms 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' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac: $[2015] / (tC[captured]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs @@ -54,7 +53,7 @@ omf 0.03 0.04 0.04 0.04 0 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 lifetime 35 35 40 40 40 40 40 40 35 35 35 20 20 35 35 -+ geohdr geohe hydro wind windoff spv solhe csp ++ geohdr geohe hydro windon windoff spv solhe csp tech_stat 1 inco0 3600 1200 2700 2400 5000 5160 9999 10320 constrTme 4 1 5 1 4 1 1 3 @@ -135,22 +134,23 @@ omf 0.03 0.03 omv 36 76 lifetime 50 50 -+ storspv storwind storcsp -inco0 18000 7500 5400 -mix0 0.00 0.00 0.00 -eta 0.67 0.78 0.72 -omf 0.02 0.02 0.02 -lifetime 25 25 25 -incolearn 12000 4800 3800 -ccap0 0.00005 0.00005 0.00005 -learn 0.10 0.10 0.10 - -+ gridspv gridwind gridcsp -inco0 2400 860 3120 -mix0 0.00 0.00 0.00 -eta 1.00 1.00 1.00 -omf 0.02 0.02 0.02 -lifetime 45 45 45 + ++ storspv storcsp storwindon storwindoff +inco0 18000 5400 7500 7500 +mix0 0.00 0.00 0.00 0.00 +eta 0.67 0.72 0.78 0.78 +omf 0.02 0.02 0.02 0.02 +lifetime 25 25 25 25 +incolearn 12000 3800 4800 4800 +ccap0 0.00005 0.00005 0.00005 0.00005 +learn 0.10 0.10 0.10 0.10 + ++ gridspv gridcsp gridwindon gridwindoff +inco0 2400 3120 860 860 +mix0 0.00 0.00 0.00 0.00 +eta 1.00 1.00 1.00 1.00 +omf 0.02 0.02 0.02 0.02 +lifetime 45 45 45 45 + weathering dac oae_ng oae_el tech_stat 4 diff --git a/core/input/generisdata_trade.prn b/core/input/generisdata_trade.prn index 764f484ef..e171649b9 100644 --- a/core/input/generisdata_trade.prn +++ b/core/input/generisdata_trade.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_trade.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms 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'. inco0 Initial investment costs given in $(2015)/kW(output) capacity. Independent of distance. inco0_d Initial investment costs given in $(2015)/kW(output) capacity. Per 1000km. diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index ead2b4fea..9b5ccb776 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -74,14 +74,14 @@ $offtext 36 1.0 41 1.0 -+ hydro wind spv solhe csp elh2 geohdr geohe h2turb h22ch4 MeOH -1 5.0 10.0 10.0 4.5 1.0 1.0 10.0 10.0 1 1.0 1.0 -6 5.0 5.0 5.0 2.8 0.0 5.0 5.0 -11 5.0 1.0 1.0 1.8 0.0 1.0 1.0 -16 5.0 1.1 1.0 -21 5.0 0.0 -26 5.0 0.0 -31 5.0 0.0 ++ hydro windon windoff spv solhe csp elh2 geohdr geohe h2turb h22ch4 MeOH +1 5.0 10.0 10.0 10.0 4.5 1.0 1.0 10.0 10.0 1 1.0 1.0 +6 5.0 5.0 5.0 5.0 2.8 0.0 5.0 5.0 +11 5.0 1.0 1.0 1.0 1.8 0.0 1.0 1.0 +16 5.0 1.1 1.0 +21 5.0 0.0 +26 5.0 0.0 +31 5.0 0.0 36 5.0 41 5.0 46 5.0 @@ -141,8 +141,8 @@ $offtext -+ storspv storwind storcsp gridspv gridwind gridcsp -1 1.0 1.0 1.0 1.0 1.0 1.0 ++ 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 diff --git a/core/postsolve.gms b/core/postsolve.gms index ad69844c8..12a35b130 100644 --- a/core/postsolve.gms +++ b/core/postsolve.gms @@ -825,13 +825,13 @@ p_FEPrice_by_SE_Sector_EmiMkt(t,regi,entySe,entyFe,sector,emiMkt)$(abs (qm_budge loop((t,regi,entySe,entyFe,sector,emiMkt)$(sefe(entySe,entyFe) AND sector2emiMkt(sector,emiMkt) AND entyFe2Sector(entyFe,sector)), *** initialize prices - p_FEPrice_by_Sector_EmiMkt(t,regi,entyFe,sector,emiMkt)=0; - pm_FEPrice_by_SE_Sector(t,regi,entySe,entyFe,sector)=0; - p_FEPrice_by_SE_EmiMkt(t,regi,entySe,entyFe,emiMkt)=0; - p_FEPrice_by_SE(t,regi,entySe,entyFe)=0; - p_FEPrice_by_Sector(t,regi,entyFe,sector)=0; - p_FEPrice_by_EmiMkt(t,regi,entyFe,emiMkt)=0; - p_FEPrice_by_FE(t,regi,entyFe)=0; + p_FEPrice_by_Sector_EmiMkt(t,regi,entyFe,sector,emiMkt) = 0; + pm_FEPrice_by_SE_Sector(t,regi,entySe,entyFe,sector) = 0; + p_FEPrice_by_SE_EmiMkt(t,regi,entySe,entyFe,emiMkt) = 0; + p_FEPrice_by_SE(t,regi,entySe,entyFe) = 0; + p_FEPrice_by_Sector(t,regi,entyFe,sector) = 0; + p_FEPrice_by_EmiMkt(t,regi,entyFe,emiMkt) = 0; + p_FEPrice_by_FE(t,regi,entyFe) = 0; *** lower level marginal price is equal to non-zero, non-eps minimal price at higher level loop(entySe2, diff --git a/core/presolve.gms b/core/presolve.gms index 6412b1acf..38954ad66 100644 --- a/core/presolve.gms +++ b/core/presolve.gms @@ -170,6 +170,7 @@ vm_macBase.fx(ttot,regi,"ch4wstl")$(ttot.val ge 2005) = p_emineg_econometric(reg vm_macBase.fx(ttot,regi,"n2owaste")$(ttot.val ge 2005) = p_emineg_econometric(regi,"n2owaste","p1") * pm_pop(ttot,regi) * (1000*pm_gdp(ttot,regi) / (pm_pop(ttot,regi)*pm_shPPPMER(regi)))**p_emineg_econometric(regi,"n2owaste","p2"); +vm_macBase.lo(ttot,regi,"co2cement_process")$( ttot.val ge 2005 ) = 0; $ifthen.fixed_shares "%industry%" == "fixed_shares" vm_macBase.fx(ttot,regi,"co2cement_process")$( ttot.val ge 2005 ) = ( pm_pop(ttot,regi) @@ -349,8 +350,8 @@ p_macLevFree(ttot,regi,enty)$( ttot.val gt 2005 ) $IFTHEN.scaleEmiHist %c_scaleEmiHistorical% == "on" -**p_macLevFree(ttot,regi,emiMacMagpie(enty))=0; -* Set minimum abatment levels based on historical emissions +*** p_macLevFree(ttot,regi,emiMacMagpie(enty))=0; +*** Set minimum abatment levels based on historical emissions p_macLevFree("2010",regi,enty)$(p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"ch4rice") OR sameas(enty,"ch4animals") OR sameas(enty,"ch4anmlwst"))) = max( 0, 1 - (p_histEmiSector("2010",regi,"ch4","agriculture","process")+p_histEmiSector("2010",regi,"ch4","lulucf","process"))/(p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process"))); p_macLevFree(ttot,regi,enty)$((ttot.val ge 2015) AND p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"ch4rice") OR sameas(enty,"ch4animals") OR sameas(enty,"ch4anmlwst"))) = max( 0, 1 - (p_histEmiSector("2015",regi,"ch4","agriculture","process")+p_histEmiSector("2015",regi,"ch4","lulucf","process"))/(p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process")) ); p_macLevFree("2010",regi,enty)$(p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"n2ofertin") OR sameas(enty,"n2ofertcr") OR sameas(enty,"n2oanwstc") OR sameas(enty,"n2oanwstm") OR sameas(enty,"n2oanwstp"))) = max( 0, 1 - (p_histEmiSector("2010",regi,"n2o","agriculture","process")+p_histEmiSector("2010",regi,"n2o","lulucf","process"))/(p_histEmiSector("2005",regi,"n2o","agriculture","process")+p_histEmiSector("2005",regi,"n2o","lulucf","process")) ); @@ -376,7 +377,7 @@ pm_macAbatLev(ttot,regi,enty)$( ttot.val gt 2015 ) pm_macAbat(ttot,regi,enty,steps) ), p_macLevFree(ttot,regi,enty) - ); + ); pm_macAbatLev("2015",regi,"co2luc") = 0; pm_macAbatLev("2020",regi,"co2luc") = 0; diff --git a/core/sets.gms b/core/sets.gms index 88995d976..22f210087 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -77,7 +77,8 @@ gdp_SSP2EU_NAV_all "NAVIGATE demand scenarios: All measures (ele + act + tec)" gdp_SSP2EU_CAMP_weak "CAMPAIGNers scenario with low ambition lifestyle change" gdp_SSP2EU_CAMP_strong "CAMPAIGNers scenario with high ambition lifestyle change" gdp_SSP2_demDiffer_IKEA "Demand reduction in Global North (CAZ,EUR,JPN,NEU,USA) and demand increase in Emerging regions (IND,LAM,OAS,SSA). Reduction follows the factor f of demRedStrong scenario, while increase uses factor 2-f." -gdp_SSP2EU_demRedStrong "edget internal demScen, might be removed soon" +gdp_SSP2_demRedStrong "edget internal demScen, might be removed soon" +gdp_SSP2_demRedWeak / all_GDPpcScen "all possible GDP per capita scenarios (GDP and Population from the same SSP-scenario" @@ -199,6 +200,7 @@ all_te "all energy technologies, including from modules" geohe "geothermal heat" hydro "hydro electric" wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" spv "solar photovoltaic" csp "concentrating solar power" @@ -251,21 +253,19 @@ all_te "all energy technologies, including from modules" tdhei "transmission and distribution for heat to industry" tdheb "transmission and distribution for heat to buildings" - ccsinje "injection of co2" + ccsinje "injection of co2" *RP* Storage technology: storspv "storage technology for photo voltaic (PV)" storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for concentrating solar power (CSP)" -*RP* grid technology +*RP* grid technology: gridspv "grid between areas with high pv production and the rest" gridcsp "grid between areas with high csp production and the rest" gridwind "grid between areas with high wind onshore production and the rest" -$IFTHEN.WindOff %cm_wind_offshore% == "1" + gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" -$ENDIF.WindOff weathering "enhanced weathering" dac "direct air capture" @@ -1061,57 +1061,69 @@ Sets ***----------------------------------------------------------------------------- ***----------------------------------------------------------------------------- +*** There are several temporal dimensions in REMIND, see the set descriptions below. +*** Be careful to select the smallest set possible to improve memory efficiency and reduce the overhead from GAMS and solver pre-processing. +*** Rules for the choice of set for parameters, variables, or equations: +*** For declaration, you can only use declared sets: tall (avoid) or ttot (preferable). +*** For assignment: +*** prefer using t to avoid overwriting values from path_gdx_ref for years before cm_startyear. +*** if it needs a vlue for all model years, use ttot together with $(ttot.val ge 2005). +*** avoid using tall unless absolutely necessary. + SETS -tall "time index" - / + +tall "time index, each year from 1900 to 3000" +*** This set includes all potential years that could be considered in the model, spanning from 1900 to 3000 (e.g., 1900, 1901, 1902, ..., 2998, 2999, 3000). +*** Usage warning: +*** Avoid using tall directly in parameter, equation, or variable declaration unless there is a specific requirement to compute something that depends on historical years rather than the periods used in REMIND. +*** Using tall can lead to excessive memory allocation due to the large number of years it covers. When necessary, ensure that you only define values for a relevant subset of years. +*** It is preferable to aggregate any year-dependent data to the REMIND periods defined in ttot (see below) during data preparation, rather than loading tall-based data directly into the model. +/ 1900*3000 - / +/ -*AJS* Defining ttot as sum of t and tsu will give errors from compiler, so do -*** it manually instead: -ttot(tall) "time index with spin up" -/ - 1900, 1905, 1910, 1915, 1920, 1925, - 1930, 1935, 1940, 1945, 1950, 1955, - 1960, 1965, 1970, 1975, 1980, 1985, - 1990, 1995, - 2000, 2005, 2010, - 2015, - 2020, - 2025, - 2030, - 2035, - 2040, - 2045, - 2050, - 2055, - 2060, - 2070, - 2080, - 2090, - 2100, +ttot(tall) "time index with spin-up, years between 1900 and 2150 with 5 to 20 years time steps" +*** This set represents the periods that can be used in REMIND model equations. ttot is a subset of tall and contains only elements defined in tall. +*** It includes both historical (1900-2000) and modeled years (2005-2150). Time steps are: +*** 5-year intervals from 1990 to 2060, +*** 10-year intervals from 2060 to 2110, +*** 20-year intervals from 2110 to 2150. +/ + 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, + 2005, 2010, 2015, 2020, 2025, 2030, 2035, 2040, 2045, 2050, 2055, + 2060, 2070, 2080, 2090, 2100, 2110, 2130, 2150 / -*cb the content of those subsets is defined 16 lines further down -t(ttot) "modeling time, usually starting in 2005, but later for fixed delay runs", + +t0(tall) "start of modelling time, not optimization" +/ + 2005 +/ + +t(ttot) "optimisation time, years between cm_startyear and 2150 with 5 to 20 years time steps", +*** This set includes only the active modeled years, which are the years from ttot greater than or equal to the model run year defined in cm_startyear. +*** t is a subset of ttot and contains only elements defined in ttot. +*** It is a dynamic set: +*** Values are calculated dynamically in GAMS, see a few lines below. +*** t may not be used in certain operations like declarations or equations including lag terms. + tsu(ttot) "spin up-time before 2005", +*** This set includes only the historical years of ttot: 1900, 1905, ..., 1995, 2000 -opTimeYr "actual life time of ??? in years" +opTimeYr "actual life time of ??? in years" / 1*100 / -opTime5(opTimeYr) "actual life time of ??? in years - 5 years time steps for the past to calculate vintages (???)" - +opTime5(opTimeYr) "actual life time of ??? in years - 5 years time steps for the past to calculate vintages (???)" / 1,6,11,16,21,26,31,36,41,46,51,56,61,66,71,76,81,86,91,96 / -t0(tall) "start of modelling time, not optimization" /2005/ ; -t(ttot)$(ttot.val ge cm_startyear)=Yes; -tsu(ttot)$(ttot.val lt 2005)=Yes; +t(ttot) $ (ttot.val ge cm_startyear) = Yes; +tsu(ttot) $ (ttot.val lt 2005) = Yes; display ttot; *** time sets used for MAGICC @@ -1178,10 +1190,9 @@ te(all_te) "energy technologies" geohdr "geothermal electric hot dry rock" geohe "geothermal heat" hydro "hydro electric" - wind "wind power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" solhe "solar thermal heat generation" @@ -1197,8 +1208,8 @@ $ENDIF.WindOff tdbiogas "transmission and distribution for gas from biomass origin to stationary users" tdfosgas "transmission and distribution for gas from fossil origin to stationary users" tdsyngas "transmission and distribution for gas from synthetic origin to stationary users" - tdbiogat "transmission and distribution for gas from synthetic origin to transportation" - tdfosgat "transmission and distribution for gas from biomass origin to transportation" + 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 stationary users" tdfoshos "transmission and distribution for heating oil from fossil origin to stationary users" @@ -1224,18 +1235,16 @@ $ENDIF.WindOff * ccsmoni "monitoring of co2, CCS related" storspv "storage technology for photo voltaic" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** storwind "storage technology for wind onshore" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for concentrating solar power" gridspv "grid between areas with high pv production and the rest" gridcsp "grid between areas with high csp production and the rest" - gridwind "grid between areas with high wind onshore production and the rest" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** gridwind "grid between areas with high wind onshore production and the rest" + gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" -$ENDIF.WindOff pipe_gas "Pipelines transporting natural gas" termX_lng "Export terminals for LNG (liquification)" termM_lng "Import terminals for LNG (regasification)" @@ -1291,10 +1300,9 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition geohdr "geothermal electric hot dry rock" geohe "geothermal heat" hydro "hydro electric" - wind "wind onshore power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind onshore power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" solhe "solar thermal heat generation" @@ -1309,20 +1317,18 @@ $ENDIF.WindOff *** ccsmoni "monitoring of co2, CCS related" storspv "storage technology for PV" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** storwind "storage technology for wind onshore" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for CSP" refliq "refinery oil to SE liquids" gridspv "grid between areas with high pv production and the rest" gridcsp "grid between areas with high csp production and the rest" - gridwind "grid between areas with high wind onshore production and the rest" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** gridwind "grid between areas with high wind onshore production and the rest" + gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" -$ENDIF.WindOff $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" idrcc "Direct reduction CCS" @@ -1336,17 +1342,15 @@ $endif.cm_subsec_model_steel *** 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)." / - wind "wind onshore power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind onshore power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" storspv "storage technology for spv" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** storwind "storage technology for wind onshore" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for csp" elh2 "hydrogen elecrolysis" / @@ -1424,7 +1428,9 @@ teRe(all_te) "renewable technologies including biomass" geohdr "geothermal electric hot dry rock" geohe "geothermal heat" hydro "hydro electric" - wind "wind power converters" +*** wind "wind power converters" + windon "wind onshore power converters" + windoff "wind offshore power converters" spv "solar photovoltaic" csp "concentrating solar power" solhe "solar thermal heat generation" @@ -1434,10 +1440,9 @@ teReNoBio(all_te) "renewable technologies except for biomass" geohdr "geothermal electric hot dry rock" geohe "geothermal heat" hydro "hydro electric" - wind "wind power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" *** solhe "solar thermal heat generation" @@ -1446,49 +1451,44 @@ teNoRe(all_te) "Non renewable energy technologies" teVRE(all_te) "technologies requiring storage" / - wind "wind power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" / teWind(all_te) "Onshore and offshore wind technologies" / - wind "wind power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff / teStor(all_te) "storage technologies" / storspv "storage technology for spv" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** storwind "storage technology for wind onshore" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for csp" / teLoc(all_te) "centralized technologies which require grid" / - wind "wind power converters" spv "solar photovoltaic" csp "concentrating solar power" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind "wind power converters" + windon "wind onshore power converters" windoff "wind offshore power converters" -$ENDIF.WindOff / teGrid(all_te) "grid between areas" / gridspv "grid between areas with high pv production and the rest" gridcsp "grid between areas with high csp production and the rest" - gridwind "grid between areas with high wind onshore production and the rest" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** gridwind "grid between areas with high wind onshore production and the rest" + gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" -$ENDIF.WindOff / teFosCCS(all_te) "fossil technologies with CCS" / @@ -1537,18 +1537,16 @@ teBioPebiolc(all_te) "biomass technologies using pebiolc" teNoTransform(all_te) "all technologies that do not transform energy but still have investment and O&M costs (like storage or grid)" / storspv "storage technology for photo voltaic (PV)" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** storwind "storage technology for wind onshore" + storwindon "storage technology for wind onshore" storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for concentrating solar power (CSP)" gridspv "grid between areas with high pv production and the rest" gridcsp "grid between areas with high csp production and the rest" - gridwind "grid between areas with high wind onshore production and the rest" -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** gridwind "grid between areas with high wind onshore production and the rest" + gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" -$ENDIF.WindOff / teRegTechCosts(all_te) "all technologies for which we differantiate tech costs" / @@ -1566,7 +1564,8 @@ teRegTechCosts(all_te) "all technologies for which we differantiate tech costs" hydro spv csp - wind +*** wind + windon / teFlex(all_te) "all technologies which can benefit from flexibility tax" @@ -2438,10 +2437,9 @@ pe2se(all_enty,all_enty,all_te) "map primary energy carriers to secondary" pegeo.seel.geohdr pegeo.sehe.geohe pehyd.seel.hydro - pewin.seel.wind -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** pewin.seel.wind + pewin.seel.windon pewin.seel.windoff -$ENDIF.WindOff pesol.seel.spv pesol.seel.csp pesol.sehe.solhe @@ -2484,10 +2482,9 @@ capTotal(all_enty,all_enty) "mapping of input to output carriers for calculat VRE2teStor(all_te,teStor) "mapping to know which technology uses which storage technology" / spv.storspv - wind.storwind -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind.storwind + windon.storwindon windoff.storwindoff -$ENDIF.WindOff csp.storcsp / @@ -2501,10 +2498,9 @@ VRE2teVRElinked(all_te,all_te) "mapping between the technologies requiring st VRE2teGrid(all_te,teGrid) "mapping to know which technology needs which grid technology (length/siting)" / spv.gridspv - wind.gridwind -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind.gridwind + windon.gridwindon windoff.gridwindoff -$ENDIF.WindOff csp.gridcsp / @@ -2512,10 +2508,10 @@ te2teLoclinked(teLoc,teLoc2) "mapping between the technologies requiring grids / spv.csp csp.spv -$IFTHEN.WindOff %cm_wind_offshore% == "1" - windoff.wind - wind.windoff -$ENDIF.WindOff +*** windoff.wind +*** wind.windoff + windoff.windon + windon.windoff / se2se(all_enty,all_enty,all_te) "map secondary energy to secondary energy using a technology" @@ -2831,11 +2827,8 @@ prodSeOth2te(all_enty,all_te) "map other se production not directly followi teSe2rlf(all_te,rlf) "mapping for techologies to grades. Currently, the information was shifted to teRe2rlfDetail. Thus, teSe2rlf now only has '1' for the rlf values" / - (wind -$IFTHEN.WindOff %cm_wind_offshore% == "1" - windoff -$ENDIF.WindOff - spv,csp,refliq,hydro,geohe,geohdr,solhe,ngcc,ngccc,ngt,gaschp,gashp,gash2,gash2c,gastr,gasftrec,gasftcrec,dot, +*** wind + (windon,windoff,spv,csp,refliq,hydro,geohe,geohdr,solhe,ngcc,ngccc,ngt,gaschp,gashp,gash2,gash2c,gastr,gasftrec,gasftcrec,dot, igcc,igccc,pc,coaltr,coalgas,coalh2,coalh2c,coalchp,coalhp,coalftrec,coalftcrec, biotr,biotrmod,biogas,biogasc,bioftrec,bioftcrec,bioh2,bioh2c,biohp,biochp,bioigcc,bioigccc, elh2,h2turb,elh2VRE,h2turbVRE,bioethl,bioeths,biodiesel,tnrs,fnrs @@ -2844,10 +2837,9 @@ $ENDIF.WindOff teRe2rlfDetail(all_te,rlf) "mapping for SE techologies to grades" / - wind.(1*9) -$IFTHEN.WindOff %cm_wind_offshore% == "1" +*** wind.(1*9) + windon.(1*9) windoff.(1*9) -$ENDIF.WindOff spv.(1*9) csp.(1*9) hydro.(1*5) @@ -2879,11 +2871,8 @@ teCCS2rlf(all_te,rlf) "mapping for CCS technologies to grades" teNoTransform2rlf(all_te,rlf) "mapping for no transformation technologies to grades" / - (storspv,storwind -$IFTHEN.WindOff %cm_wind_offshore% == "1" -storwindoff,gridwindoff -$ENDIF.WindOff - storcsp,gridspv,gridwind,gridcsp,h2curt) . 1 +*** storwind, gridwind + (storspv,storcsp,storwindon,storwindoff,gridwindon,gridwindoff,gridspv,gridcsp,h2curt) . 1 / diff --git a/main.gms b/main.gms index fef813ccc..d7c1b86dd 100755 --- a/main.gms +++ b/main.gms @@ -132,7 +132,7 @@ *' *' #### Sets *' -*' * Don't use set element names with three capital letters (like `ETS` or `ESR`), otherwise the maglcass R +*' * Don't use set element names with three capital letters (like `ETS` or `ESR`), otherwise the magclass R *' library might interpret this as a region name when reading in GDX data *' *' @@ -268,7 +268,7 @@ $setGlobal climate off !! def = off *'--------------------- 16_downscaleTemperature -------------------------- *' *' * (off) -*' * (CMIP5): downscale GMT to regional temperature based on CMIP5 data (between iterations, no runtime impact). [Requires climate = off, cm_rcp_scen = none, iterative_target_adj = 9] curved convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; developed countries have linear path from 0 in 2010 through cm_co2_tax_2020 in 2020; +*' * (CMIP5): downscale GMT to regional temperature based on CMIP5 data (between iterations, no runtime impact). [Requires climate = off, cm_rcp_scen = none, iterative_target_adj = 9] curved convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; developed countries have linear path through (cm_year_co2_tax_hist, cm_co2_tax_hist) and (cm_startyear, cm_co2_tax_startyear); $setGlobal downscaleTemperature off !! def = off *'--------------------- 20_growth ------------------------------------------ *' @@ -353,7 +353,7 @@ $setglobal CCU on !! def = on *' * (coalPhaseout): [works only with Negishi] global phase-out of new freely-emitting coal conversion, caps all coal routes with the exception of coaltr: coal solids can still expand *' * (coalPhaseoutRegional): [works only with Negishi] global phase-out of new freely-emitting coal conversion, caps all coal routes with the exception of coaltr: coal solids can still expand *' * (CombLowCandCoalPO): [works only with Negishi] combination of lowCarbonPush and coalPhaseout -*' * (NDC): Technology targets for 2030 for spv,wind,tnrs. +*' * (NDC): Technology targets for 2030 for spv,windon,tnrs. *' * (NPi): Reference technology targets, mostly already enacted (N)ational (P)olicies (i)mplemented, mostly for 2020 *' * (EVmandates): mandate for electric vehicles - used for UBA project $setglobal techpol none !! def = none @@ -371,17 +371,27 @@ $setglobal emicapregi none !! def = none *' *' This module defines the carbon price pm_taxCO2eq, with behaviour across regions governed by similar principles (e.g. global targets, or all following NDC or NPi policies). *' -*' * (none): no tax policy (combined with all emiscens except emiscen = 9) -*' * (exponential): [please use new diffExp2Lin with cm_co2_tax_spread = 1 and iterative_target_adj = 5 for exponential carbon pricing until end of century (without regional differentiation)] 4.5% exponential increase over time of the tax level in 2020 set via cm_co2_tax_2020 (combined with emiscen = 9 and cm_co2_tax_2020>0) -*' * (expoLinear): 4.5% exponential increase until c_expoLinear_yearStart, transitioning into linear increase thereafter +*' * (diffExp2Lin) and (diffLin2Lin): standard carbonprice realizations for ambitious climate policy scenarios [REMIND default for peak budget runs: diffLin2Lin in combination with iterative_target_adj = 9], +*' * three main design choices: +*' * [diff]: level of regional carbonprice differentiation in 2030 determined by cm_co2_tax_spread (default = 10); quadratic phase-in to reach globally uniform carbonprices in cm_CO2priceRegConvEndYr +*' * [Exp or Lin]: functional form of carbonprice path for developed regions: +*' * [Exp]: exponential increase with rate given by cm_co2_tax_growth, (initial) value in cm_startyear is given by cm_co2_tax_startyear +*' * [Lin]: linear increase starting at historical level given by cm_co2_tax_hist in year cm_year_co2_tax_hist, (initial) value in cm_startyear set by cm_co2_tax_startyear +*' * [2Lin]: post-peak behaviour depending on cm_iterative_target_adj +*' * [9]: after the (endogenously adjusted) peak year, carbonprice path increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant) +*' * [5]: no adaptation of carbonprice path after peak year +*' * [0]: after the (exogenously fixed) peak year, carbonprice path increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant); +*' * choose cm_peakBudgYr = 2110 for no adaptation of carbonprice path until end of century +*' * (expoLinear): 4.5% exponential increase until cm_expoLinear_yearStart, transitioning into linear increase thereafter *' * (exogenous): carbon price is specified using an external input file or using the switch cm_regiExoPrice. Requires cm_emiscen = 9 and cm_iterative_target_adj = 0 -*' * (linear): [please use new diffLin2Lin with cm_co2_tax_spread = 1 and iterative_target_adj = 5 for linear carbon pricing until end of century (without regional differentiation)] linear increase over time of the tax level in 2020 set via cm_co2_tax_2020 (combined with emiscen = 9 and cm_co2_tax_2020>0) -*' * (temperatureNotToExceed): [test and verify before using it!] Find the optimal carbon carbon tax (set cm_emiscen = 1, iterative_target_adj = 9] curved convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; developed countries have linear path from 0 in 2010 through cm_co2_tax_2020 in 2020; -*' * (diffCurvPhaseIn2Lin): [please use new diffLin2Lin] curved convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; developed countries have linear path from 0 in 2010 through cm_co2_tax_2020 in 2020; -*' * (diffExp2Lin): quadratic convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; starting level of differentiation in cm_startyear is given by cm_co2_tax_spread; developed countries have exponential path until peak year (with iterative_target_adj = 9) or until 2100 (with iterative_target_adj = 5); -*' * (diffLin2Lin): [default for peak budget runs, in combination with iterative_target_adj = 9, derived from diffCurvPhaseIn2Lin] quadratic convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; starting level of differentiation in cm_startyear is given by cm_co2_tax_spread; developed countries have linear path until peak year (with iterative_target_adj = 9) or until 2100 (with iterative_target_adj = 5); +*' * (temperatureNotToExceed): [test and verify before using it!] Find the optimal carbon carbon tax (set cm_emiscen = 1, iterative_target_adj = 9] curved convergence of CO2 prices between regions until cm_CO2priceRegConvEndYr; developed countries have linear path through (cm_year_co2_tax_hist, cm_co2_tax_hist) and (cm_startyear, cm_co2_tax_startyear); *' * (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) + +*** (exponential) is superseded by (diffExp2Lin): For a globally uniform, exponentially increasing carbonprice path until end of century [in combination with cm_iterative_target_adj = 0 or 5], set cm_co2_tax_spread = 1, set cm_peakBudgYr = 2110, and choose the initial carbonprice in cm_startyear via cm_co2_tax_startyear. +*** (linear) is superseded by (diffLin2Lin): For a globally uniform, linearly increasing carbonprice path until end of century [in combination with cm_iterative_target_adj = 0 or 5], set cm_co2_tax_spread = 1, set cm_peakBudgYr = 2110, and choose the initial carbonprice in cm_startyear via cm_co2_tax_startyear. [Adjust historical reference point (cm_year_co2_tax_hist, cm_co2_tax_hist) if needed.] + $setglobal carbonprice none !! def = none *'--------------------- 46_carbonpriceRegi --------------------------------- *' @@ -439,8 +449,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, -*' therefore use carbonprice|exponential, c_emiscen|9, and cm_co2_tax_2020|0. +*' * (on): test code performance: noumerous (30) succesive runs performed in a triangle, tax0, tax30, tax150, all growing exponentially. $setGlobal codePerformance off !! def = off ***----------------------------------------------------------------------------- @@ -498,17 +507,10 @@ parameter *' * (1): BAU *' * (4): emission time path *' * (6): budget -*' * (9): tax scenario (requires running module 21_tax "on"), tax level controlled by module 45_carbonprice and cm_co2_tax_2020, other GHG etc. controlled by cm_rcp_scen +*' * (9): tax scenario (requires running module 21_tax "on"), tax level controlled by module 45_carbonprice and cm_co2_tax_startyear, 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 *' -parameter - cm_co2_tax_2020 "level of co2 tax in year 2020 in $ per t CO2eq [emiscen = 9 and 45_carbonprice = exponential]" -; - cm_co2_tax_2020 = -1; !! def = -1 !! regexp = -1|is.nonnegative -*' * (-1): default setting equivalent to no carbon tax -*' * (any number >= 0): tax level in 2020, with 5% exponential increase over time -*' parameter cm_co2_tax_startyear "level of co2 tax in start year in $ per t CO2eq" ; @@ -903,6 +905,17 @@ parameter ; cm_LimRock = 1000; !! def = 1000 *' + +parameter + cm_33_EW_upScalingRateLimit "Annual growth rate limit on upscaling of mining & spreading rocks on fields" +; + cm_33_EW_upScalingRateLimit = 0.2; !! def = 20% !! regexp = is.nonnegative + +parameter + cm_33_EW_shortTermLimit "Limit on 2030 potential for enhanced weathering, defined as % of land on which EW is applied. Default 0.5% of land" +; + cm_33_EW_shortTermLimit = 0.005; !! def = 0.5% !! regexp = is.nonnegative + parameter cm_expoLinear_yearStart "time at which carbon price increases linearly instead of exponentially" ; @@ -1001,9 +1014,9 @@ parameter *' * (4) Energy Efficiency policy: higher discount rate until cm_startyear, decreasing to 25% value linearly until 2030. *' parameter - c_H2InBuildOnlyAfter "Switch to fix H2 in buildings to zero until given year" + cm_H2InBuildOnlyAfter "Switch to fix H2 in buildings to zero until given year" ; - c_H2InBuildOnlyAfter = 2150; !! def = 2150 (rule out H2 in buildings) + cm_H2InBuildOnlyAfter = 2150; !! def = 2150 (rule out H2 in buildings) *' For all years until the given year, FE demand for H2 in buildings is set to zero parameter cm_peakBudgYr "date of net-zero CO2 emissions for peak budget runs without overshoot" @@ -1022,13 +1035,13 @@ parameter cm_CO2priceRegConvEndYr = 2050; !! def = 2050 *' parameter - cm_co2_tax_spread "spread of carbon prices in 2025 given as a factor" + cm_co2_tax_spread "spread of carbon prices in 2030 given as a factor" ; cm_co2_tax_spread = 10; !! def = 10 !! regexp = 1|10|20 -*' Initial spread of carbon prices (in 2025) between the regions with highest respectively lowest GDP per capita (PPP) -*' * (1) Uniform carbon pricing, i.e. no differentiation -*' * (10) Spread of carbon prices in 2025 is equal to 10 -*' * (20) Spread of carbon prices in 2025 is equal to 20 +*' Initial spread of carbon prices (in 2030) between the regions with highest respectively lowest GDP per capita (PPP) +*' * (1 - uniform) Uniform carbon pricing, i.e. no differentiation +*' * (10 - medium) Spread of carbon prices in 2025 is equal to 10 +*' * (20 - strong) Spread of carbon prices in 2025 is equal to 20 parameter c_teNoLearngConvEndYr "Year at which regional costs of non-learning technologies converge" @@ -1208,10 +1221,10 @@ $setglobal cm_MAgPIE_coupling off !! def = "off" !! regexp = off|on *' * (none): no RCP scenario, standard setting *' * (rcp20): RCP2.0 *' * (rcp26): RCP2.6 -*' * (rcp37): RCP3.7 +*' * (rcp37): RCP3.7 [currently not operational: test and verify before using it!] *' * (rcp45): RCP4.5 -*' * (rcp60): RCP6.0 -*' * (rcp85): RCP8.5 +*' * (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 none !! def = "none" !! 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 @@ -1219,13 +1232,13 @@ $setglobal cm_rcp_scen none !! def = "none" !! regexp = none|rcp20|rcp *' * (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 2023_cond !! def = "2023_cond" !! regexp = 20(18|2[1-4])_(un)?cond +$setglobal cm_NDC_version 2024_cond !! def = "2024_cond" !! regexp = 20(18|2[1-4])_(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 -*' (ENGAGE4p5_GlP): settings used for ENGAGE 4.5 Glasgow+ scenario -$setglobal cm_netZeroScen NGFS_v4 !! def = "NGFS_v4" !! regexp = NGFS_v4|NGFS_v4_20pc|ENGAGE4p5_GlP +*' (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 @@ -1237,7 +1250,7 @@ $setglobal c_tech_earlyreti_rate GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.( *** (SSP2): emissions (from SSP2 scenario in MAgPIE) *** (SSP5): emissions (from SSP5 scenario in MAgPIE) *** (SDP): -$setglobal cm_LU_emi_scen SSP2 !! def = SSP2 !! regexp = SSP(1|2|5)|SDP +$setglobal cm_LU_emi_scen SSP2 !! def = SSP2 !! regexp = SSP(1|2|3|5)|SDP *** cm_regi_bioenergy_EFTax "region(s) in which bioenergy is charged with an emission-factor-based tax" *** This switch has only an effect if 21_tax is on and cm_bioenergy_EF_for_tax *** is not zero. It reads in the regions that are affected by the emission- @@ -1310,7 +1323,7 @@ $setglobal c_ccsinjecrateRegi off !! def = "off" *** ("forcing_SSP1") settings consistent with SSP 1 *** ("forcing_SSP2") settings consistent with SSP 2 *** ("forcing_SSP5") settings consistent with SSP 5 -$setglobal c_SSP_forcing_adjust forcing_SSP2 !! def = forcing_SSP2 !! regexp = forcing_SSP(1|2|5) +$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_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)" @@ -1403,6 +1416,14 @@ $setGlobal cm_VREminShare off !! def = off *** amount of Carbon Capture and Storage (including DACCS and BECCS) is limited to a maximum of 2GtCO2 per yr globally, and 250 Mt CO2 per yr in EU28. *** This switch only works for model native regions. If you want to apply it to a group region use cm_implicitQttyTarget instead. $setGlobal cm_CCSmaxBound off !! def = off +*** c_tech_CO2capturerate "changes CO2 capture rate of carbon capture technologies" +*** Example on how to use: +*** c_tech_CO2capturerate bioh2c 0.8, bioftcrec 0.4 +*** This sets the CO2 capture rate of the bioh2c technology to 80% and the capture of bioftcrec (Bio-based Fischer-Tropsch with carbon capture) +*** to 40%. The capture rate here is measured as carbon captured relative to the total carbon content of the input fuel (including carbon that is converted into the output fuel). +*** Note: The change in capture rate via this switch follows directly after reading in the generisdata_emi.prn file. Hence, the subsequent corrections of the capture rate +*** related to CO2 pipeline leakage still come on top of this. +$setGlobal c_tech_CO2capturerate off !! def = off *** c_CES_calibration_new_structure <- 0 switch to 1 if you want to calibrate a CES structure different from input gdx $setglobal c_CES_calibration_new_structure 0 !! def = 0 !! regexp = 0|1 *** c_CES_calibration_write_prices <- 0 switch to 1 if you want to generate price file, you can use this as new p29_cesdata_price.cs4r price input file @@ -1552,8 +1573,8 @@ $setglobal cm_eni off !! def = off $setglobal cm_enb off !! def = off *** cm_incolearn "change floor investment cost value" *** Example on how to use: -*** cm_incolearn "wind=1600,spv=5160,csp=9500" -*** floor investment costs from learning set to 17000 for EVs; and 1600, 5160 and 9500 for wind, solar pv and solar csp respectively. +*** cm_incolearn "windon=1600,spv=5160,csp=9500" +*** floor investment costs from learning set to 1600 for wind onshore, 5160 for solar photovoltaic and 9500 for concentrated solar power. $setglobal cm_incolearn off !! def = off *** cm_storageFactor "scale curtailment and storage requirements. [factor]" *** def <- "off" = no change for curtailment and storage requirements; @@ -1577,11 +1598,11 @@ $setglobal cm_adj_coeff off $setglobal cm_adj_coeff_cont off *** cm_adj_seed_multiplier "rescale adjustment cost seed value relative to default value. [factor]. Smaller means slower scale-up." *** def <- "off" = use default adj seed values. -*** or list of techs to change adj_seed value by a multiplication factor. (ex. "spv 0.5, storspv 0.5, wind 0.25") +*** or list of techs to change adj_seed value by a multiplication factor. (ex. "spv 0.5, storspv 0.5, windon 0.25") $setglobal cm_adj_seed_multiplier off *** cm_adj_coeff_multiplier "rescale adjustment cost coefficient value relative to default value. [factor]. Higher means higher adjustment cost." *** def <- "off" = use default adj coefficient values. -*** or list of techs to change adj_cost value by a multiplication factor. (ex. "spv 2, storspv 2, wind 4") +*** or list of techs to change adj_cost value by a multiplication factor. (ex. "spv 2, storspv 2, windon 4") *** A note on adjustment cost changes: A common practice of changing the adjustment cost parameterization is by using the same factor to *** increase the adjustment cost coefficent and to decrease the adjustment cost seed value at the same time. $setglobal cm_adj_coeff_multiplier off @@ -1592,7 +1613,7 @@ $setglobal cm_adj_coeff_multiplier off $setglobal cm_inco0Factor off !! def = off *** cm_inco0RegiFactor "change investment costs regionalized technology values. [factor]." *' * def <- "off" = use default p_inco0 values. -*' * or list of techs with respective factor to change p_inco0 value by a multiplication factor. (ex. "wind 0.33, spv 0.33" makes investment costs for wind and spv 3 times cheaper) +*' * or list of techs with respective factor to change p_inco0 value by a multiplication factor. (ex. "windon 0.33, spv 0.33" makes investment costs for windon and spv 3 times cheaper) *' * (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_inco0RegiFactor off !! def = off *** cm_CCS_markup "multiplicative factor for CSS cost markup" @@ -1714,11 +1735,9 @@ $setglobal cm_feedstockEmiUnknownFate off !! def = off *** cm_feShareLimits <- "off" # def <- "off", limit the electricity final energy share to be in line with the industry maximum electrification levels (60% by 2050 in the electric scenario), 10% lower (=50% in 2050) in an increased efficiency World, or 20% lower (40% in 2050) in an incumbents future (incumbents). The incumbents scenario also limits a minimal coverage of buildings heat provided by gas and liquids (25% by 2050). $setglobal cm_feShareLimits off !! def = off *** VRE potential switches -*** rescaling factor for sensitivity analysis on renewable potentials, this factor rescales all grades of a renewable technology which have not been used by 2020 (to avoid infeasiblities swith existing capacities) -*** (ex. "spv 0.5, wind 0.75" rescales solar and wind potential by the respective factors) *** rescaling factor for sensitivity analysis on renewable potentials. *** This factor rescales all grades of a renewable technology which have not been used by 2020 (to avoid infeasiblities with existing capacities) -*** (example: "spv 0.5, wind 0.75" rescales solar and wind potential by the respective factors) +*** (example: "spv 0.5, windon 0.75" rescales solar and wind potential by the respective factors) $setGlobal c_VREPot_Factor off !! def = off *** FE tax switches, allows scaling up or down FE taxes on all sectors, energy carriers flexibly *** cm_FEtax_trajectory_abs "switch for setting the aboslute FE tax level explicitly from a given year onwards, before tax levels increases or decreases linearly to that value" @@ -1738,10 +1757,6 @@ $setGlobal cm_FEtax_trajectory_rel off !! def = off *** then the values from the region group disaggregation will be overwritten by this region-specific value. *** For example: "DEU -0.2, EU27_regi -0.4". $setGLobal c_agricult_base_shift off !! def off -*** wind offshore switch -*** cm_wind_offshore 1, wind energy is represented by "wind" and "windoff", where "wind" means wind onshore. Later this will be the default and the name "wind" will be made to change to windon -*** cm_wind_offshore 0, means wind energy is only represented by "wind", which is a mixture of both wind onshore and wind offshore -$setglobal cm_wind_offshore 1 !! def = 1 *** cm_INCONV_PENALTY on !! def = on *** *RP* 2012-03-06 Flag to turn on inconvenience penalties, e.g. for air pollution $setglobal cm_INCONV_PENALTY on !! def = on !! regexp = off|on diff --git a/modules/02_welfare/ineqLognormal/datainput.gms b/modules/02_welfare/ineqLognormal/datainput.gms index 5f7460555..ba0effb47 100644 --- a/modules/02_welfare/ineqLognormal/datainput.gms +++ b/modules/02_welfare/ineqLognormal/datainput.gms @@ -11,15 +11,15 @@ $if %cm_less_TS% == "on" pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.9; !! +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. @@ -27,7 +27,7 @@ display p02_inconvpen_lap; $ENDIF.INCONV *BS* 2020-03-12: additional inputs for inequality -* To Do: rename file, then also in "files" and moinput::fullREMIND.R +*** To Do: rename file, then also in "files" and mrremind::fullREMIND.R parameter f02_ineqTheil(tall,all_regi,all_GDPscen) "Gini data" / $ondelim @@ -39,23 +39,19 @@ p02_ineqTheil(ttot,regi)$(ttot.val ge 2005) = f02_ineqTheil(ttot,regi,"%cm_GDPsc display p02_ineqTheil; -* for a policy run, we need to load values coming from the baseline for consumption, tax revenues and energy expenditures: +*** for a policy run, we need to load values coming from the baseline for consumption, tax revenues and energy expenditures: if ((cm_emiscen ne 1), Execute_Loadpoint 'input_ref' p02_taxrev_redistr0_ref=v02_taxrev_Add.l; Execute_Loadpoint 'input_ref' p02_cons_ref=vm_cons.l; Execute_Loadpoint 'input_ref' p02_energyExp_ref=v02_energyExp.l; Execute_Loadpoint 'input_ref' p02_damageFactor_ref=vm_damageFactor.l; - -* if energy system costs are used: -* Execute_Loadpoint 'input_ref' p02_energyExp_ref=vm_costEnergySys.l; - ); -* income elasticity of tax revenues redistribution. +*** income elasticity of tax revenues redistribution. p02_distrBeta(ttot,regi)$(ttot.val ge 2005) = cm_distrBeta; -* for a baseline we need the following variables to be 0: +*** for a baseline we need the following variables to be 0: p02_energyExp_ref(ttot,regi)$(cm_emiscen eq 1)=0; p02_taxrev_redistr0_ref(ttot,regi)$(cm_emiscen eq 1)=0; v02_taxrev_Add.l(ttot,regi)$(cm_emiscen eq 1)=0; @@ -63,13 +59,13 @@ v02_energyExp_Add.l(ttot,regi)$(cm_emiscen eq 1)=0; v02_energyexpShare.l(ttot,regi)$(cm_emiscen eq 1)=0; v02_revShare.l(ttot,regi)$(cm_emiscen eq 1)=0; -* For runs that are not baseline, we need to initialize: -* taxrev_Add, because they are used in the condition sign: +*** For runs that are not baseline, we need to initialize: +*** taxrev_Add, because they are used in the condition sign: v02_taxrev_Add.l(ttot,regi)$(cm_emiscen ne 1)=0; -* and v02_energyExp to the level in the baseline so the model can have a start value +*** and v02_energyExp to the level in the baseline so the model can have a start value v02_energyExp.l(ttot,regi)$(cm_emiscen eq 1)=p02_energyExp_ref(ttot,regi)$(cm_emiscen eq 1); -*parameters for translating output damage into consumption loss +*** parameters for translating output damage into consumption loss parameter f02_damConsFactor(all_regi,dam_factors) "for translating output to consumption losses from KW damage function" / $ondelim diff --git a/modules/02_welfare/utilitarian/datainput.gms b/modules/02_welfare/utilitarian/datainput.gms index 0aedb70f3..4579c365a 100644 --- a/modules/02_welfare/utilitarian/datainput.gms +++ b/modules/02_welfare/utilitarian/datainput.gms @@ -11,15 +11,15 @@ pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.9; !! +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. diff --git a/modules/04_PE_FE_parameters/iea2014/datainput.gms b/modules/04_PE_FE_parameters/iea2014/datainput.gms index d90c718c0..88ea098c6 100644 --- a/modules/04_PE_FE_parameters/iea2014/datainput.gms +++ b/modules/04_PE_FE_parameters/iea2014/datainput.gms @@ -6,7 +6,7 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/04_PE_FE_parameters/iea2014/datainput.gms -parameter f04_IO_input(tall,all_regi,all_enty,all_enty,all_te) "Energy input based on IEA data" +parameter f04_IO_input(tall,all_regi,all_enty,all_enty,all_te) "Energy input based on IEA data" / $ondelim $include "./modules/04_PE_FE_parameters/iea2014/input/f04_IO_input.cs4r" @@ -14,6 +14,13 @@ $offdelim / ; +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +f04_IO_input(tall,all_regi,"pewin","seel","windon") $ (f04_IO_input(tall,all_regi,"pewin","seel","windon") eq 0) = f04_IO_input(tall,all_regi,"pewin","seel","wind"); +f04_IO_input(tall,all_regi,"pewin","seel","wind") = 0; +*CG* setting historical production from wind offshore to 0 (due to the scarcity of offshore wind before 2015) +f04_IO_input(tall,all_regi,"pewin","seel","windoff") = 0; + if (smin((t,regi,pe2se(entyPe,entySe,te)), f04_IO_input(t,regi,entyPe,entySe,te)) lt 0, put_utility "msg" / "**""** input data problem: f04_IO_input has negative values that are overwritten"; put_utility "msg" / "**""** to still allow model solving. Check input data." /; @@ -28,12 +35,10 @@ if (smin((t,regi,pe2se(entyPe,entySe,te)), f04_IO_input(t,regi,entyPe,entySe,te) *' overwrite negative values with 0 to allow the model to solve. In the mid-term, the input data/mapping needs to be improved to prevent negative values f04_IO_input(tall,regi,entyPe,entySe,te)$(f04_IO_input(tall,regi,entyPe,entySe,te) lt 0) = 0; -*CG* setting historical production from wind offshore to 0 (due to the scarcity of offshore wind before 2015) -$IFTHEN.WindOff %cm_wind_offshore% == "1" -f04_IO_input(tall,all_regi,"pewin","seel","windoff") = 0; -$ENDIF.WindOff -parameter f04_IO_output(tall,all_regi,all_enty,all_enty,all_te) "Energy output based on IEA data" +*** RP 2019-02-19: From rev 8352 on, f04_IO_output contains gross generation for power plants. Power plant autoconsumption is contained in t&d losses. +*** This facilitates comparison with other sources which usually report gross electricity generation as well as gross capacity factors +parameter f04_IO_output(tall,all_regi,all_enty,all_enty,all_te) "Energy output based on IEA data" / $ondelim $include "./modules/04_PE_FE_parameters/iea2014/input/f04_IO_output.cs4r" @@ -41,6 +46,11 @@ $offdelim / ; +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +f04_IO_output(tall,all_regi,"pewin","seel","windon") $ (f04_IO_output(tall,all_regi,"pewin","seel","windon") eq 0) = f04_IO_output(tall,all_regi,"pewin","seel","wind"); +f04_IO_output(tall,all_regi,"pewin","seel","wind") = 0; + if (smin((t,regi,pe2se(entyPe,entySe,te)), f04_IO_output(t,regi,entyPe,entySe,te)) lt 0, put_utility "msg" / "**""** input data problem: f04_IO_output has negative values that are overwritten" / put_utility "msg" / "**""** to still allow model solving. Check input data." /; @@ -58,7 +68,6 @@ f04_IO_output(tall,regi,entyPe,entySe,te)$(f04_IO_output(tall,regi,entyPe,entySe - *** making sure f04_IO_output is compatible with pm_fedemand values in 2005 *** this will become irrelevant to the model once the input data routines can be fixed so that pm_fedemand is again the same as f04_IO_output *** these lines should be removed once this is fixed at mrremind side. @@ -245,12 +254,7 @@ loop(regi, ); ); -*RP 2019-02-19: This is now changed starting from rev 8352. Power plant output is from now on gross production instead of net, and power plant autoconsumption is shifted to t&d losses -*RP This was done to facilitate comparison with other sources which usually report gross electricity generation as well as gross capacity factors -***------------------ allocate own power consumption to electricity technologies ----------------------------- -***p04_IO_output(regi,enty,enty2,te)$(sameas(enty2,"seel") AND (NOT sameas(te,"wind")) AND (NOT sameas(te,"spv")) ) = p04_IO_output(regi,enty,enty2,te) -*** - ( p04_IO_output(regi,enty,enty2,te) / sum(pe2se(enty3,enty2,te2)$((NOT sameas(te2,"wind")) AND (NOT sameas(te2,"spv"))), p04_IO_output(regi,enty3,enty2,te2)) ) -*** * f04_IO_output("2005",regi,"seel","feel","o_feel"); + display pm_IO_input, p04_IO_output; *** ---------------------------------------------------------------------------------------------------------- diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms index 7a4852b23..ff782479a 100644 --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -506,24 +506,14 @@ loop(regi, ); display pm_EN_demand_from_initialcap2, p05_emi2005_from_initialcap2; -*** To be moved to new emiAccounting module -* Discounting se2fe emissions from pe2se emission factors -loop(entySe$(sameas(entySe,"segafos") OR sameas(entySe,"seliqfos") OR sameas(entySe,"sesofos")), - pm_emifac(ttot,regi,entyPe,entySe,te,"co2")$pm_emifac(ttot,regi,entyPe,entySe,te,"co2") = - pm_emifac(ttot,regi,entyPe,entySe,te,"co2") - - pm_eta_conv(ttot,regi,te) - *( sum(se2fe(entySe,entyFe2,te2)$pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2"), pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2")*pm_eta_conv(ttot,regi,te2))/sum(se2fe(entySe,entyFe2,te2)$pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2"),1) ); ); -display pm_emifac; -); *** if cm_startyear > 2005, load outputs of InitialCap from input_ref.gdx if (cm_startyear gt 2005, Execute_Loadpoint 'input_ref' pm_eta_conv = pm_eta_conv; Execute_Loadpoint 'input_ref' o_INI_DirProdSeTe = o_INI_DirProdSeTe; - Execute_Loadpoint 'input_ref' pm_emifac = pm_emifac; Execute_Loadpoint 'input_ref' pm_EN_demand_from_initialcap2 = pm_EN_demand_from_initialcap2; Execute_Loadpoint 'input_ref' pm_pedem_res = pm_pedem_res; Execute_Loadpoint 'input_ref' pm_dataeta = pm_dataeta; @@ -557,4 +547,15 @@ $ifThen %cm_techcosts% == "GLO" $endIf ); +*** To be moved to new emiAccounting module +* Discounting se2fe emissions from pe2se emission factors +loop(entySe$(sameas(entySe,"segafos") OR sameas(entySe,"seliqfos") OR sameas(entySe,"sesofos")), + pm_emifac(ttot,regi,entyPe,entySe,te,"co2")$pm_emifac(ttot,regi,entyPe,entySe,te,"co2") = + pm_emifac(ttot,regi,entyPe,entySe,te,"co2") + - pm_eta_conv(ttot,regi,te) + *( sum(se2fe(entySe,entyFe2,te2)$pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2"), pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2")*pm_eta_conv(ttot,regi,te2))/sum(se2fe(entySe,entyFe2,te2)$pm_emifac(ttot,regi,entySe,entyFe2,te2,"co2"),1) ); +); + +display pm_emifac; + *** EOF ./modules/05_initialCap/on/preloop.gms diff --git a/modules/11_aerosols/exoGAINS/input/mappingGAINSmixedtoREMIND17activities.csv b/modules/11_aerosols/exoGAINS/input/mappingGAINSmixedtoREMIND17activities.csv index 10414de26..b10a4b9dc 100644 --- a/modules/11_aerosols/exoGAINS/input/mappingGAINSmixedtoREMIND17activities.csv +++ b/modules/11_aerosols/exoGAINS/input/mappingGAINSmixedtoREMIND17activities.csv @@ -1,11 +1,11 @@ GAINS,REMIND,noef,elasticity -CEMENT,GDP|MER (billion US$2005/yr),0,0.4 -CHEM,GDP|MER (billion US$2005/yr),1,0.4 -CHEMBULK,GDP|MER (billion US$2005/yr),1,0.4 -CUSM,GDP|MER (billion US$2005/yr),1,0.4 -NACID,GDP|MER (billion US$2005/yr),0,0.4 -PAPER,GDP|MER (billion US$2005/yr),0,0.4 -STEEL,GDP|MER (billion US$2005/yr),0,0.4 +CEMENT,GDP|MER (billion US$2017/yr),0,0.4 +CHEM,GDP|MER (billion US$2017/yr),1,0.4 +CHEMBULK,GDP|MER (billion US$2017/yr),1,0.4 +CUSM,GDP|MER (billion US$2017/yr),1,0.4 +NACID,GDP|MER (billion US$2017/yr),0,0.4 +PAPER,GDP|MER (billion US$2017/yr),0,0.4 +STEEL,GDP|MER (billion US$2017/yr),0,0.4 End_Use_Industry_Bio_Trad,FE|Industry|Solids|Biomass|Traditional (EJ/yr),0,1 End_Use_Industry_Coal,FE|Industry|Solids|Coal (EJ/yr),0,1 End_Use_Industry_HLF,FE|Industry|Liquids (EJ/yr),0,1 @@ -35,7 +35,7 @@ Transformations_HLF,PE|Oil (EJ/yr),1,1 Transformations_HLF_Refinery,PE|Oil (EJ/yr),0,1 Transformations_LLF,PE|Oil (EJ/yr),0,1 Transformations_NatGas,PE|Gas (EJ/yr),1,1 -Waste_Solid_Industrial,GDP|MER (billion US$2005/yr),1,0.4 -Waste_Solid_Municipal,GDP|MER (billion US$2005/yr),1,0.4 -Waste_Water_Industrial,GDP|MER (billion US$2005/yr),1,0.4 -Waste_Water_Municipal,GDP|MER (billion US$2005/yr),1,0.4 +Waste_Solid_Industrial,GDP|MER (billion US$2017/yr),1,0.4 +Waste_Solid_Municipal,GDP|MER (billion US$2017/yr),1,0.4 +Waste_Water_Industrial,GDP|MER (billion US$2017/yr),1,0.4 +Waste_Water_Municipal,GDP|MER (billion US$2017/yr),1,0.4 diff --git a/modules/15_climate/magicc7_ar6/datainput.gms b/modules/15_climate/magicc7_ar6/datainput.gms index 47ed2ad6d..8499141e6 100644 --- a/modules/15_climate/magicc7_ar6/datainput.gms +++ b/modules/15_climate/magicc7_ar6/datainput.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/15_climate/magicc/datainput.gms +*** SOF ./modules/15_climate/magicc7_ar6/datainput.gms *** cluster rcp_scen into overshoot and not-to-exceed targets $if %cm_rcp_scen% == "none" s15_rcpCluster = 1; $if %cm_rcp_scen% == "rcp20" s15_rcpCluster = 1; @@ -81,4 +81,4 @@ display pm_emicapglob; pm_gmt_conv=1; p15_gmt0(tall)=1; -*** EOF ./modules/15_climate/magicc/datainput.gms +*** 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 62906e8b6..2236f2130 100644 --- a/modules/15_climate/magicc7_ar6/postsolve.gms +++ b/modules/15_climate/magicc7_ar6/postsolve.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/15_climate/magicc/postsolve.gms +*** SOF ./modules/15_climate/magicc7_ar6/postsolve.gms ***--------------------------------------------------------------------------- *' The MAGICC scenario generation is set in `./core/magicc.gms`, but runs here. @@ -106,4 +106,4 @@ if (cm_iterative_target_adj eq 2, !! otherwise adjustment happens in core/postso ); ); *' @stop -*** EOF ./modules/15_climate/magicc/postsolve.gms +*** EOF ./modules/15_climate/magicc7_ar6/postsolve.gms diff --git a/modules/15_climate/magicc7_ar6/realization.gms b/modules/15_climate/magicc7_ar6/realization.gms index 3e663d856..2331d2298 100644 --- a/modules/15_climate/magicc7_ar6/realization.gms +++ b/modules/15_climate/magicc7_ar6/realization.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/15_climate/magicc/realization.gms +*** SOF ./modules/15_climate/magicc7_ar6/realization.gms *' @description *' In this realization, concentration, forcing, and temperature values are calculated using a version of the @@ -35,4 +35,4 @@ $Ifi "%phase%" == "declarations" $include "./modules/15_climate/magicc7_ar6/decl $Ifi "%phase%" == "datainput" $include "./modules/15_climate/magicc7_ar6/datainput.gms" $Ifi "%phase%" == "postsolve" $include "./modules/15_climate/magicc7_ar6/postsolve.gms" *######################## R SECTION END (PHASES) ############################### -*** EOF ./modules/15_climate/magicc/realization.gms +*** EOF ./modules/15_climate/magicc7_ar6/realization.gms diff --git a/modules/15_climate/magicc7_ar6/sets.gms b/modules/15_climate/magicc7_ar6/sets.gms index a5f4201c2..66bf911d6 100644 --- a/modules/15_climate/magicc7_ar6/sets.gms +++ b/modules/15_climate/magicc7_ar6/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/15_climate/magicc/sets.gms +*** SOF ./modules/15_climate/magicc7_ar6/sets.gms $ontext TODO: Rename t_magiccttot MAGICC_ttot @@ -19,4 +19,4 @@ TODO: Rename $offtext -*** EOF ./modules/15_climate/magicc/sets.gms +*** EOF ./modules/15_climate/magicc7_ar6/sets.gms diff --git a/modules/21_tax/off/not_used.txt b/modules/21_tax/off/not_used.txt index 12e8c638e..d50474410 100644 --- a/modules/21_tax/off/not_used.txt +++ b/modules/21_tax/off/not_used.txt @@ -24,7 +24,6 @@ cm_fetaxscen, switch, ??? cm_gdximport_target, switch, ??? pm_pop,parameter,??? cm_so2tax_scen,switch,??? -sm_DpGJ_2_TDpTWa,switch,??? vm_cesIO,variable,??? vm_co2eq,variable,??? cm_emiscen,input,questionnaire @@ -72,3 +71,4 @@ pm_gdp,input,only needed if tax is on pm_cf,input,only needed if tax is on vm_shDemSeel,input,only needed if tax is on pm_teAnnuity,input,only needed if tax is on +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index 0f9b64208..781b768fc 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -77,33 +77,22 @@ if(cm_fetaxscen eq 0, *** -------------------------PE2SE Taxes--------------------------(Primary to secondary energy technology taxes, specified by technology) *** cb 20110923 load paths for technology taxes, subsidies and inconvenience costs p21_tau_pe2se_tax(tall,regi,te) = 0; -p21_tau_pe2se_inconv(tall,regi,te) = 0; p21_tau_pe2se_sub(tall,regi,te)= 0; *RP* FILE changed by hand after introduction of SO2 taxes and inconvenience penalties on 2012-03-08 -*GL* Values try to account for excessive water use, further pollution -*GL* Taxes are given in USD(2005) per GJ -p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = 0.25; -p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = 0.25; -p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.5; - -***JaS* Introduces inconvenience costs as taxes for the transformation of primary to secondary energy types -***JaS* Taxes are given in USD(2005) per GJ -*cb* to be exchanged for file with values if needed -p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005)=0.000000; -*** description: Taxes/subsidies are given in USD(2005) per GJ -*** unit: USD(2005) per GJ -p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005)=0.000000; - +*** Values try to account for excessive water use, further pollution +*** Taxes are given in USD(2005) and converted to USD(2017) per GJ +p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; ***cb20110923 rescaling of PE2SE parameters from $/GJ to trillion $ / TWa p21_tau_pe2se_tax(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_tax(ttot,regi,te) * 0.001 / sm_EJ_2_TWa; p21_tau_pe2se_sub(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_sub(ttot,regi,te) * 0.001 / sm_EJ_2_TWa; -p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_inconv(ttot,regi,te) * 0.001 / sm_EJ_2_TWa; *** SE electricity tax rate tech specific ramp up logistic function parameters p21_tau_SE_tax_rampup(t,regi,te,teSeTax_coeff) = 0; @@ -115,20 +104,7 @@ $ifThen.SEtaxRampUpParam not "%cm_SEtaxRampUpParam%" == "off" ); $endif.SEtaxRampUpParam -***cb 20110923 load paths for ressource export taxes -***cb* file for resource export taxes, not used in default settings -Parameter p21_tau_xpres_tax(tall,all_regi,all_enty) "tax path for ressource export" - / -$ondelim -$include "./modules/21_tax/on/input/p21_tau_xpres_tax.cs4r" -$offdelim - / ; -*** converted to T$/TWyr -p21_tau_xpres_tax(ttot,regi,"peoil")$(ttot.val ge 2005) = p21_tau_xpres_tax(ttot,regi,"peoil") * sm_DpGJ_2_TDpTWa; -*LB* use 0 for all regions as default -p21_tau_xpres_tax(ttot,regi,all_enty) = 0; - -*JeS for SO2 tax case: tax path in 10^12$/TgS (= 10^6 $/t S) @ GDP/cap of 1000$/cap (value gets scaled by GDP/cap) +***JeS for SO2 tax case: tax path in 10^12$/TgS (= 10^6 $/t S) @ GDP/cap of 1000$/cap (value gets scaled by GDP/cap) if((cm_so2tax_scen eq 0), s21_so2_tax_2010=0.0; elseif(cm_so2tax_scen eq 1), diff --git a/modules/21_tax/on/declarations.gms b/modules/21_tax/on/declarations.gms index 0da2ba55d..c26eac3bf 100644 --- a/modules/21_tax/on/declarations.gms +++ b/modules/21_tax/on/declarations.gms @@ -8,7 +8,6 @@ Parameters p21_tau_so2_tax(tall,all_regi) "so2 tax path" p21_tau_pe2se_tax(tall,all_regi,all_te) "tax path for primary energy technologies" -p21_tau_pe2se_inconv(tall,all_regi,all_te) "inconvenience cost path for primary energy technologies" p21_tau_pe2se_sub(tall,all_regi,all_te) "subsidy path for primary energy 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" @@ -32,7 +31,6 @@ p21_taxrevFE0(ttot,all_regi) "reference level va p21_taxrevCES0(ttot,all_regi,all_in) "reference level value of ces production tax" p21_taxrevResEx0(ttot,all_regi) "reference level value of resource extraction tax" p21_taxrevPE2SE0(ttot,all_regi) "reference level value of pe2se technologies tax" -p21_taxrevXport0(ttot,all_regi) "reference level value of exports tax" p21_taxrevSO20(ttot,all_regi) "reference level value of SO2 tax" p21_taxrevBio0(ttot,all_regi) "reference level value of bioenergy tax" p21_implicitDiscRate0(ttot,all_regi) "reference level value of implicit tax on energy efficient capital" @@ -50,7 +48,6 @@ p21_taxrevFE_iter(iteration,ttot,all_regi) "reference level valu p21_taxrevCES_iter(iteration,ttot,all_regi,all_in) "reference level value of ces production tax revenue" p21_taxrevResEx_iter(iteration,ttot,all_regi) "reference level value of resource extraction tax revenue" p21_taxrevPE2SE_iter(iteration,ttot,all_regi) "reference level value of pe2se technologies tax revenue" -p21_taxrevXport_iter(iteration,ttot,all_regi) "reference level value of exports tax revenue" p21_taxrevSO2_iter(iteration,ttot,all_regi) "reference level value of SO2 tax revenue" p21_taxrevBio_iter(iteration,ttot,all_regi) "reference level value of bioenergy tax revenue" p21_implicitDiscRate_iter(iteration,ttot,all_regi) "reference level value of implicit tax on energy efficient capital" @@ -117,7 +114,6 @@ v21_taxrevFE(ttot,all_regi) "tax on final energy (?)" v21_taxrevCES(ttot,all_regi,all_in) "tax on ces production function" v21_taxrevResEx(ttot,all_regi) "tax on resource extraction (?)" v21_taxrevPE2SE(ttot,all_regi) "tax on pe2se technologies (?)" -v21_taxrevXport(ttot,all_regi) "tax on exports (?)" v21_taxrevSO2(ttot,all_regi) "tax on SO2 (to reflect health impacts)" v21_taxrevBio(ttot,all_regi) "tax on bioenergy (to reflect sustainability constraints on bioenergy production)" v21_taxrevFlex(ttot,all_regi) "tax on technologies with flexible or inflexible electricity input" @@ -148,7 +144,6 @@ q21_taxrevFE(ttot,all_regi) "calculation of tax on final ene q21_taxrevCES(ttot,all_regi,all_in) "calculation of tax on ces production function" q21_taxrevResEx(ttot,all_regi) "calculation of tax on resource extraction" q21_taxrevPE2SE(ttot,all_regi) "calculation of tax on pe2se technologies" -q21_taxrevXport(ttot,all_regi) "calculation of tax on exports" q21_taxrevSO2(ttot,all_regi) "calculation of tax on SO2" q21_taxrevBio(ttot,all_regi) "calculation of tax on bioenergy" q21_taxrevFlex(ttot,all_regi) "tax on technologies with flexible or inflexible electricity input" diff --git a/modules/21_tax/on/equations.gms b/modules/21_tax/on/equations.gms index 463b2b781..c2198d7ec 100644 --- a/modules/21_tax/on/equations.gms +++ b/modules/21_tax/on/equations.gms @@ -43,7 +43,6 @@ q21_taxrev(t,regi)$(t.val ge max(2010,cm_startyear)).. + sum(in, v21_taxrevCES(t,regi,in)) + v21_taxrevResEx(t,regi) + v21_taxrevPE2SE(t,regi) - + v21_taxrevXport(t,regi) + v21_taxrevSO2(t,regi) + v21_taxrevBio(t,regi) - vm_costSubsidizeLearning(t,regi) @@ -187,18 +186,10 @@ v21_taxrevResEx(t,regi) =e= sum(pe2rlf(peEx(enty),rlf), p21_tau_fuEx_sub(t,regi q21_taxrevPE2SE(t,regi)$(t.val ge max(2010,cm_startyear)).. v21_taxrevPE2SE(t,regi) =e= SUM(pe2se(enty,enty2,te), - (p21_tau_pe2se_tax(t,regi,te) + p21_tau_pe2se_sub(t,regi,te) + p21_tau_pe2se_inconv(t,regi,te)) * vm_prodSe(t,regi,enty,enty2,te) + (p21_tau_pe2se_tax(t,regi,te) + p21_tau_pe2se_sub(t,regi,te)) * vm_prodSe(t,regi,enty,enty2,te) ) - p21_taxrevPE2SE0(t,regi); -***--------------------------------------------------------------------------- -*' Calculation of export taxes: tax rate times export volume -*' Documentation of overall tax approach is above at q21_taxrev. -***--------------------------------------------------------------------------- -q21_taxrevXport(t,regi)$(t.val ge max(2010,cm_startyear)).. -v21_taxrevXport(t,regi) =e= SUM(tradePe(enty), p21_tau_xpres_tax(t,regi,enty) * vm_Xport(t,regi,enty)) - - p21_taxrevXport0(t,regi); - ***--------------------------------------------------------------------------- *' Calculation of so2 tax: tax rate times emissions *' Documentation of overall tax approach is above at q21_taxrev. @@ -287,7 +278,7 @@ q21_taxrevFlex(t,regi)$( t.val ge max(2010, cm_startyear) ) .. !! vm_flexAdj is electricity price reduction/increases for flexible/ !! inflexible technologies change sign such that flexible technologies !! get subsidy - -vm_flexAdj(t,regi,te) + - vm_flexAdj(t,regi,te) * vm_demSe(t,regi,enty,enty2,te) ) - p21_taxrevFlex0(t,regi) diff --git a/modules/21_tax/on/input/files b/modules/21_tax/on/input/files index 14cf390f2..5bb4a6ad7 100644 --- a/modules/21_tax/on/input/files +++ b/modules/21_tax/on/input/files @@ -5,4 +5,4 @@ f21_prop_fe_sub.cs4r f21_tau_pe_sub.cs4r f21_max_pe_sub.cs4r f21_tax_convergence.cs4r -p21_tau_xpres_tax.cs4r + diff --git a/modules/21_tax/on/postsolve.gms b/modules/21_tax/on/postsolve.gms index ecc4f8855..72bcf0775 100644 --- a/modules/21_tax/on/postsolve.gms +++ b/modules/21_tax/on/postsolve.gms @@ -39,16 +39,15 @@ p21_taxrevResEx0(ttot,regi) = sum(pe2rlf(peEx(enty),rlf), p21_tau_fuEx_sub(ttot, p21_taxrevPE0(ttot,regi,entyPe) = pm_tau_pe_tax(ttot,regi,entyPe) * vm_prodPe.l(ttot,regi,entyPe); p21_taxrevCES0(ttot,regi,in) = pm_tau_ces_tax(ttot,regi,in) * vm_cesIO.l(ttot,regi,in); p21_taxrevPE2SE0(ttot,regi) = sum(pe2se(enty,enty2,te), - (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te) + p21_tau_pe2se_inconv(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) + (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) ); -p21_taxrevXport0(ttot,regi) = sum(tradePe(enty), p21_tau_xpres_tax(ttot,regi,enty) * vm_Xport.l(ttot,regi,enty)); p21_taxrevSO20(ttot,regi) = p21_tau_so2_tax(ttot,regi) * vm_emiTe.l(ttot,regi,"so2"); p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) * vm_fuExtr.l(ttot,regi,"pebiolc","1") + p21_bio_EF(ttot,regi) * pm_taxCO2eq(ttot,regi) * (vm_fuExtr.l(ttot,regi,"pebiolc","1") - (vm_Xport.l(ttot,regi,"pebiolc")-vm_Mport.l(ttot,regi,"pebiolc"))); p21_implicitDiscRate0(ttot,regi) = sum(ppfKap(in), p21_implicitDiscRateMarg(ttot,regi,in) * vm_cesIO.l(ttot,regi,in) ); p21_taxemiMkt0(ttot,regi,emiMkt) = pm_taxemiMkt(ttot,regi,emiMkt) * vm_co2eqMkt.l(ttot,regi,emiMkt); p21_taxrevFlex0(ttot,regi) = sum(en2en(enty,enty2,te)$(teFlexTax(te)), - -vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); + - vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); p21_taxrevImport0(ttot,regi,tradePe,tax_import_type_21) = p21_tau_Import(ttot,regi,tradePe,tax_import_type_21)$sameas(tax_import_type_21, "worldPricemarkup") * pm_pvp(ttot,tradePe) / pm_pvp(ttot,"good") * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "CO2taxmarkup") * pm_taxCO2eqSum(ttot,regi) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe)+ @@ -72,7 +71,6 @@ p21_taxrevResEx_iter(iteration+1,ttot,regi) = v21_taxrevResEx.l(ttot,regi); p21_taxrevPE_iter(iteration+1,ttot,regi,entyPe) = v21_taxrevPE.l(ttot,regi,entyPe); p21_taxrevCES_iter(iteration+1,ttot,regi,in) = v21_taxrevCES.l(ttot,regi,in); p21_taxrevPE2SE_iter(iteration+1,ttot,regi) = v21_taxrevPE2SE.l(ttot,regi); -p21_taxrevXport_iter(iteration+1,ttot,regi) = v21_taxrevXport.l(ttot,regi); p21_taxrevSO2_iter(iteration+1,ttot,regi) = v21_taxrevSO2.l(ttot,regi); p21_taxrevBio_iter(iteration+1,ttot,regi) = v21_taxrevBio.l(ttot,regi); p21_implicitDiscRate_iter(iteration+1,ttot,regi) = v21_implicitDiscRate.l(ttot,regi); diff --git a/modules/21_tax/on/presolve.gms b/modules/21_tax/on/presolve.gms index b8db92642..c89b0eca5 100644 --- a/modules/21_tax/on/presolve.gms +++ b/modules/21_tax/on/presolve.gms @@ -38,16 +38,15 @@ p21_taxrevResEx0(ttot,regi) = sum(pe2rlf(peEx(enty),rlf), p21_tau_fuEx_sub(ttot, p21_taxrevPE0(ttot,regi,entyPe) = pm_tau_pe_tax(ttot,regi,entyPe) * vm_prodPe.l(ttot,regi,entyPe); p21_taxrevCES0(ttot,regi,in) = pm_tau_ces_tax(ttot,regi,in) * vm_cesIO.l(ttot,regi,in); p21_taxrevPE2SE0(ttot,regi) = sum(pe2se(enty,enty2,te), - (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te) + p21_tau_pe2se_inconv(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) + (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) ); -p21_taxrevXport0(ttot,regi) = sum(tradePe(enty), p21_tau_xpres_tax(ttot,regi,enty) * vm_Xport.l(ttot,regi,enty)); p21_taxrevSO20(ttot,regi) = p21_tau_so2_tax(ttot,regi) * vm_emiTe.l(ttot,regi,"so2"); p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) * vm_fuExtr.l(ttot,regi,"pebiolc","1") + p21_bio_EF(ttot,regi) * pm_taxCO2eq(ttot,regi) * (vm_fuExtr.l(ttot,regi,"pebiolc","1") - (vm_Xport.l(ttot,regi,"pebiolc")-vm_Mport.l(ttot,regi,"pebiolc"))); p21_implicitDiscRate0(ttot,regi) = sum(ppfKap(in), p21_implicitDiscRateMarg(ttot,regi,in) * vm_cesIO.l(ttot,regi,in) ); p21_taxemiMkt0(ttot,regi,emiMkt) = pm_taxemiMkt(ttot,regi,emiMkt) * vm_co2eqMkt.l(ttot,regi,emiMkt); p21_taxrevFlex0(ttot,regi) = sum(en2en(enty,enty2,te)$(teFlexTax(te)), - -vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); + - vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); p21_taxrevImport0(ttot,regi,tradePe,tax_import_type_21) = p21_tau_Import(ttot,regi,tradePe,tax_import_type_21)$sameas(tax_import_type_21, "worldPricemarkup") * pm_pvp(ttot,tradePe) / pm_pvp(ttot,"good") * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "CO2taxmarkup") * pm_taxCO2eqSum(ttot,regi) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "avCO2taxmarkup") * max(pm_taxCO2eqSum(ttot,regi), sum(regi2, pm_taxCO2eqSum(ttot,regi2))/(card(regi2))) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe); diff --git a/modules/29_CES_parameters/calibrate/datainput.gms b/modules/29_CES_parameters/calibrate/datainput.gms index cbb008ad7..cd5ed171f 100644 --- a/modules/29_CES_parameters/calibrate/datainput.gms +++ b/modules/29_CES_parameters/calibrate/datainput.gms @@ -305,15 +305,18 @@ $ifthen.build_H2_offset "%buildings%" == "simple" *); *** RK: feh2b offset scaled from 1% in 2025 to 50% in 2050 of fegab quantity -loop ((t,regi), - pm_cesdata(t,regi,"feh2b","offset_quantity") - = - (0.05 + 0.45 * min(1, max(0, (t.val - 2025) / (2050 - 2025)))) - * pm_cesdata(t,regi,"fegab","quantity") - - pm_cesdata(t,regi,"feh2b","quantity"); - pm_cesdata(t,regi,"feh2b","quantity") - = (0.05 + 0.45 * min(1, max(0, (t.val - 2025) / (2050 - 2025)))) - * pm_cesdata(t,regi,"fegab","quantity"); -); +pm_cesdata(t,regi,"feh2b","offset_quantity")$(t.val gt cm_H2InBuildOnlyAfter) = + - (0.05 + 0.45 * min(1, max(0, (t.val - 2025) / (2050 - 2025)))) + * pm_cesdata(t,regi,"fegab","quantity") + - pm_cesdata(t,regi,"feh2b","quantity"); +pm_cesdata(t,regi,"feh2b","quantity")$(t.val gt cm_H2InBuildOnlyAfter) = + (0.05 + 0.45 * min(1, max(0, (t.val - 2025) / (2050 - 2025)))) + * pm_cesdata(t,regi,"fegab","quantity"); + +*** for the years that H2 buildings is fixed to zero, set offset to the exact value of the calibrated quantity to ignore it after calibration +pm_cesdata(t,regi,"feh2b","quantity")$(t.val le cm_H2InBuildOnlyAfter) = 1e-6; +pm_cesdata(t,regi,"feh2b","offset_quantity")$(t.val le cm_H2InBuildOnlyAfter) = - pm_cesdata(t,regi,"feh2b","quantity"); + $endif.build_H2_offset *** Add an epsilon to the values which are 0 so that they can fit in the CES diff --git a/modules/29_CES_parameters/load/input/files b/modules/29_CES_parameters/load/input/files index 157075de9..94c3772ad 100644 --- a/modules/29_CES_parameters/load/input/files +++ b/modules/29_CES_parameters/load/input/files @@ -1,9 +1,7 @@ indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2-Kap_debt_limit-Reg_62eff8f7.inc indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2-Kap_debt_limit-Reg_2b1450bc.inc indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP1-GDP_gdp_SSP1-En_gdp_SSP1-Kap_debt_limit-Reg_62eff8f7.inc -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_MC-GDP_gdp_SDP_MC-En_gdp_SDP_MC-Kap_debt_limit-Reg_62eff8f7.inc -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_RC-GDP_gdp_SDP_RC-En_gdp_SDP_RC-Kap_debt_limit-Reg_62eff8f7.inc -indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SDP_EI-GDP_gdp_SDP_EI-En_gdp_SDP_EI-Kap_debt_limit-Reg_62eff8f7.inc +indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP3-GDP_gdp_SSP3-En_gdp_SSP3-Kap_debt_limit-Reg_62eff8f7.inc indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP5-GDP_gdp_SSP5-En_gdp_SSP5-Kap_debt_limit-Reg_62eff8f7.inc indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2-GDP_gdp_SSP2-En_gdp_SSP2_lowEn-Kap_debt_limit-Reg_62eff8f7.inc diff --git a/modules/29_CES_parameters/load/not_used.txt b/modules/29_CES_parameters/load/not_used.txt index cd181cc66..4e462767a 100644 --- a/modules/29_CES_parameters/load/not_used.txt +++ b/modules/29_CES_parameters/load/not_used.txt @@ -22,3 +22,4 @@ pm_calibrate_eff_scale,parameter,not needed pm_fedemand,parameter,not needed pm_energy_limit,, sm_CES_calibration_iteration,scalar,only applicable during calibration +cm_H2InBuildOnlyAfter,parameter,??? diff --git a/modules/30_biomass/magpie_40/declarations.gms b/modules/30_biomass/magpie_40/declarations.gms index f5626d471..a4ea74d10 100644 --- a/modules/30_biomass/magpie_40/declarations.gms +++ b/modules/30_biomass/magpie_40/declarations.gms @@ -55,7 +55,7 @@ Positive variable v30_priceshift(ttot,all_regi) "Regional translation factor that shifts emulator prices to better fit actual MAgPIE prices [-]" v30_pricemult(ttot,all_regi) "Regional multiplication factor that scales emulator prices to better fit actual MAgPIE prices [-]" v30_multcost(ttot,all_regi) "Cost markup factor for deviations from demand of last coupling iteration [-]" -v30_BioPEProdTotal(ttot,all_regi) "total domestic PE biomass production [unit: TWyr]" +v30_BioPEProdTotal(ttot,all_regi) "total domestic PE biomass production [TWyr]" ***v30_pedem_BAU(tall,all_regi,all_enty,all_enty,all_te) "Primary energy demand imported from refernce gdx [TWa]" ***v30_seprod_BAU(tall,all_regi,all_enty,all_enty,all_te) "Secondary energy production imported from reference gdx [TWa]" diff --git a/modules/32_power/IntC/datainput.gms b/modules/32_power/IntC/datainput.gms index 19f7191fa..fad62cf0d 100644 --- a/modules/32_power/IntC/datainput.gms +++ b/modules/32_power/IntC/datainput.gms @@ -10,7 +10,7 @@ *** IntC specific data input *------------------------------------------------------------------------------------ -parameter f32_shCHP(ttot,all_regi) "upper boundary of chp electricity generation" +parameter f32_shCHP(ttot,all_regi) "upper boundary of chp electricity generation" / $ondelim $include "./modules/32_power/IntC/input/f32_shCHP.cs4r" @@ -21,8 +21,7 @@ p32_shCHP(ttot,all_regi) = f32_shCHP(ttot,all_regi) + 0.05; p32_shCHP(ttot,all_regi)$(ttot.val ge 2050) = min(p32_shCHP("2020",all_regi) + 0.15, 0.75); p32_shCHP(ttot,all_regi)$((ttot.val gt 2020) and (ttot.val lt 2050)) = p32_shCHP("2020",all_regi) + ((p32_shCHP("2050",all_regi) - p32_shCHP("2020",all_regi)) / 30 * (ttot.val - 2020)); -***parameter p32_grid_factor(all_regi) - multiplicative factor that scales total grid requirements down in comparatively small or homogeneous regions like Japan, Europe or India -parameter p32_grid_factor(all_regi) "multiplicative factor that scales total grid requirements down in comparatively small or homogeneous regions like Japan, Europe or India" +parameter p32_grid_factor(all_regi) "multiplicative factor that scales total grid requirements down in comparatively small or homogeneous regions like Japan, Europe or India" / $ondelim $include "./modules/32_power/IntC/input/p32_grid_factor.cs4r" @@ -30,8 +29,7 @@ $offdelim / ; -***parameter p32_factorStorage(all_regi,all_te) - multiplicative factor that scales total curtailment and storage requirements up or down in different regions for different technologies (e.g. down for PV in regions where high solar radiation coincides with high electricity demand) -parameter f32_factorStorage(all_regi,all_te) "multiplicative factor that scales total curtailment and storage requirements up or down in different regions for different technologies (e.g. down for PV in regions where high solar radiation coincides with high electricity demand)" +parameter f32_factorStorage(all_regi,all_te) "multiplicative factor that scales total curtailment and storage requirements up or down in different regions for different technologies (e.g. down for PV in regions where high solar radiation coincides with high electricity demand)" / $ondelim $include "./modules/32_power/IntC/input/f32_factorStorage.cs4r" @@ -39,37 +37,26 @@ $offdelim / ; -$IFTHEN.WindOff %cm_wind_offshore% == "1" -f32_factorStorage(all_regi,"windoff") = f32_factorStorage(all_regi,"wind"); -f32_factorStorage(all_regi,"wind") = 1.35 * f32_factorStorage(all_regi,"wind"); -$ENDIF.WindOff -p32_factorStorage(all_regi,all_te) = f32_factorStorage(all_regi,all_te); +*** windoffshore-todo +*** allow input data with either "wind" or "windon" until mrremind is updated +f32_factorStorage(all_regi,"windon") $ (f32_factorStorage(all_regi,"windon") eq 0) = f32_factorStorage(all_regi,"wind"); +f32_factorStorage(all_regi,"windoff") = f32_factorStorage(all_regi,"windon"); +f32_factorStorage(all_regi,"windon") = 1.35 * f32_factorStorage(all_regi,"windon"); + +p32_factorStorage(all_regi,teVRE) = f32_factorStorage(all_regi,teVRE); $if not "%cm_storageFactor%" == "off" p32_factorStorage(all_regi,all_te)=%cm_storageFactor%*p32_factorStorage(all_regi,all_te); ***parameter p32_storexp(all_regi,all_te) - exponent that determines how curtailment and storage requirements per kW increase with market share of wind and solar. 1 means specific marginal costs increase linearly -p32_storexp(regi,"spv") = 1; -p32_storexp(regi,"csp") = 1; -p32_storexp(regi,"wind") = 1; -$IFTHEN.WindOff %cm_wind_offshore% == "1" -p32_storexp(regi,"windoff") = 1; -$ENDIF.WindOff - - +p32_storexp(regi,teVRE) = 1; ***parameter p32_gridexp(all_regi,all_te) - exponent that determines how grid requirement per kW increases with market share of wind and solar. 1 means specific marginal costs increase linearly -p32_gridexp(regi,"spv") = 1; -p32_gridexp(regi,"csp") = 1; -p32_gridexp(regi,"wind") = 1; +p32_gridexp(regi,teVRE) = 1; -table f32_storageCap(char, all_te) "multiplicative factor between dummy seel<-->h2 technologies and storXXX technologies" +table f32_storageCap(char, all_te) "multiplicative factor between dummy seel<-->h2 technologies and storXXX technologies" $include "./modules/32_power/IntC/input/f32_storageCap.prn" ; -$IFTHEN.WindOff %cm_wind_offshore% == "1" -f32_storageCap(char,"windoff") = f32_storageCap(char,"wind"); -$ENDIF.WindOff - p32_storageCap(te,char) = f32_storageCap(char,te); display p32_storageCap; @@ -83,19 +70,6 @@ p32_shThresholdTotVREAddIntCost(t)$(t.val > 2045) = 95; p32_FactorAddIntCostTotVRE = 1.5; -$ontext -parameter p32_flex_maxdiscount(all_regi,all_te) "maximum electricity price discount for flexible technologies reached at high VRE shares" -/ -$ondelim -$include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" -$offdelim -/ -; -*** convert from USD2015/MWh to trUSD2005/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2005 * 1e-12; -display p32_flex_maxdiscount; -$offtext - *** Flexibility Tax Parameter *** Both flexibility tax parameters are based on a regression analysis with hourly dispatch data from high-VRE scenarios of the Langfristszenarien diff --git a/modules/32_power/IntC/equations.gms b/modules/32_power/IntC/equations.gms index be046fafc..22eb4cc4b 100644 --- a/modules/32_power/IntC/equations.gms +++ b/modules/32_power/IntC/equations.gms @@ -56,8 +56,9 @@ q32_usableSeTe(t,regi,entySe,te)$(sameas(entySe,"seel") AND teVRE(te)).. ***--------------------------------------------------------------------------- *' Definition of capacity constraints for storage: ***--------------------------------------------------------------------------- -*' This equation calculates the storage cpacity for each testor that needs to be installed based on the amount of v32_storloss that is calculated below in -*' q32_storloss. Multiplying v32_storloss with "eta/(1-eta)" yields the total output of a storage technology; this output has to be smaller than cap * capfac. +*' This equation calculates the storage capacity for each teStor that needs to be installed based on the amount of +*' v32_storloss that is calculated below in q32_storloss. Multiplying v32_storloss with "eta/(1-eta)" yields +*' the total output of a storage technology; this output has to be smaller than cap * capfac. q32_limitCapTeStor(t,regi,teStor)$( t.val ge 2020 ) .. ( 0.5$( cm_VRE_supply_assumptions eq 1 ) !! reduce storage investment needs by half for VRE_supply_assumptions = 1 + 1$( cm_VRE_supply_assumptions ne 1 ) @@ -68,23 +69,23 @@ q32_limitCapTeStor(t,regi,teStor)$( t.val ge 2020 ) .. =l= sum(te2rlf(teStor,rlf), vm_capFac(t,regi,teStor) - * pm_dataren(regi,"nur",rlf,teStor) * vm_cap(t,regi,teStor,rlf) ) ; -*** H2 storage implementation: Storage technologies (storspv, storwind etc.) also -*** represent H2 storage. This is implemented by scaling up capacities of -*** H2 turbines (h2turbVRE, seh2 -> seel) with VRE capacities which require storage (according to q32_limitCapTeStor). +*** H2 storage implementation: +*** Storage technologies (storspv, storwind etc.) also represent H2 storage. +*** This is implemented by scaling up capacities of H2 turbines (h2turbVRE, seh2 -> seel) +*** with VRE capacities which require storage (according to q32_limitCapTeStor). *** These H2 turbines (h2turbVRE) do not have capital cost. Their cost are already considered in storage technologies. -*** H2 turbines do not need be built if sufficient gas turbines (ngt) are available to provide flexibility. -*' Require a certain capacity of either hydrogen or gas turbines as peaking backup capacity. The driver is the testor capacity, which in turn is determined by v32_storloss +*** H2 turbines are not needed if sufficient gas turbines (ngt) are available to provide flexibility. +*' Require a certain capacity of either hydrogen or gas turbines as peaking backup capacity. The driver is the teStor capacity, which in turn is determined by v32_storloss q32_h2turbVREcapfromTestor(t,regi).. vm_cap(t,regi,"h2turbVRE","1") + vm_cap(t,regi,"ngt","1") =g= - sum(teStor, + sum(teStor, p32_storageCap(teStor,"h2turbVREcapratio") * vm_cap(t,regi,teStor,"1") ) ; @@ -92,15 +93,18 @@ q32_h2turbVREcapfromTestor(t,regi).. q32_h2turbVREcapfromTestorUp(t,regi).. vm_cap(t,regi,"h2turbVRE","1") =l= - sum(te$teStor(te), - p32_storageCap(te,"h2turbVREcapratio") * vm_cap(t,regi,te,"1") ) + sum(teStor, + p32_storageCap(teStor,"h2turbVREcapratio") * vm_cap(t,regi,teStor,"1") ) ; *** build additional electrolysis capacities with stored VRE electricity, phase-in from 2030 to 2040 q32_elh2VREcapfromTestor(t,regi).. vm_cap(t,regi,"elh2","1") =g= - sum(te$teStor(te), p32_storageCap(te,"elh2VREcapratio") * vm_cap(t,regi,te,"1") ) * p32_phaseInElh2VREcap(t) + sum(teStor, + p32_storageCap(teStor,"elh2VREcapratio") * vm_cap(t,regi,teStor,"1") + ) + * p32_phaseInElh2VREcap(t) ; @@ -119,15 +123,13 @@ q32_limitCapTeChp(t,regi).. ***--------------------------------------------------------------------------- *' Additional grid expansion to integrate VRE are driven linearly by VRE output q32_limitCapTeGrid(t,regi)$( t.val ge 2020 ) .. - vm_cap(t,regi,"gridwind",'1') !! Technology is now parameterized to yield marginal costs of ~3.5$/MWh VRE electricity + vm_cap(t,regi,"gridwindon",'1') !! Technology is now parameterized to yield marginal costs of ~3.5$/MWh VRE electricity / p32_grid_factor(regi) !! It is assumed that large regions require higher grid investment =g= vm_prodSe(t,regi,"pesol","seel","spv") + vm_prodSe(t,regi,"pesol","seel","csp") - + 1.5 * vm_prodSe(t,regi,"pewin","seel","wind") !! wind has larger variations accross space, so adding grid is more important for wind (result of REMIX runs for ADVANCE project) -$IFTHEN.WindOff %cm_wind_offshore% == "1" - + 3 * vm_prodSe(t,regi,"pewin","seel","windoff") !! Getting offshore wind connected has even higher grid costs -$ENDIF.WindOff + + 1.5 * vm_prodSe(t,regi,"pewin","seel","windon") !! wind has larger variations accross space, so adding grid is more important for wind (result of REMIX runs for ADVANCE project) + + 3 * vm_prodSe(t,regi,"pewin","seel","windoff") !! Getting offshore wind connected has even higher grid costs ; ***--------------------------------------------------------------------------- @@ -165,7 +167,7 @@ q32_shStor(t,regi,teVRE)$(t.val ge 2015).. *' as it drives storage investments and thus the additional costs seen by VRE. It depends linearly on the usableSE output from this VRE, and linearly on the *' SPECIFIC integration challenges, which in turn are mainly the adjusted share of the technology itself (v32_shSTor), but also increase when the total VRE share *' increases beyond a (time-dependent) threshold. -*' The term "(1-eta)/eta" is equal to the ratio "losses of a testor" to "output of a testor". +*' The term "(1-eta)/eta" is equal to the ratio "losses of a teStor" to "output of a teStor". *' An example: If the specific integration challenges (v32_shStor + p32_Fact * v32_shAddInt) of eg. PV would reach 100%, then ALL the usable output of PV *' would have to be "stabilized" by going through storsp, so the total storage losses & curtailment would exactly represent the (1-eta) values of storspv. When *' the specific integration challenge term () is below 100%, the required storage and resulting losses are scaled down accordingly. @@ -187,7 +189,7 @@ q32_TotVREshare(t,regi).. ) ; -*' Calculate additional integration costs if total VRE share is above a certain threshold. (A system with only 40% VRE will be less challenged to handle 30% PV than +*' Calculate additional integration costs if total VRE share is above a certain threshold. A system with only 40% VRE will be less challenged to handle 30% PV than *' a system with 70% VRE, because you have less thermal plants that can act as backup and provide inertia. This threshold increases over time to represent that *' network operators learn about managing high-VRE systems, and that technologies such as grid-stabilizing VRE and batteries become widespread. q32_shAddIntCostTotVRE(t,regi).. @@ -195,9 +197,7 @@ q32_shAddIntCostTotVRE(t,regi).. =g= v32_TotVREshare(t,regi) - p32_shThresholdTotVREAddIntCost(t) -$IFTHEN.WindOff %cm_wind_offshore% == "1" - 0.5 * vm_shSeEl(t,regi,"windoff") !! for offshore wind, the correlation with other VRE is much smaller, reducing the additional integration challenge -$ENDIF.WindOff ; ***--------------------------------------------------------------------------- diff --git a/modules/32_power/IntC/input/f32_storageCap.prn b/modules/32_power/IntC/input/f32_storageCap.prn index 98424de5b..b6ce64840 100644 --- a/modules/32_power/IntC/input/f32_storageCap.prn +++ b/modules/32_power/IntC/input/f32_storageCap.prn @@ -1,7 +1,7 @@ *** SOF ./modules/32_power/IntC/input/storageCap.prn - storspv storwind storcsp -elh2VREcapratio 0.16 0.12 0.12 -h2turbVREcapratio 1.2 0.90 0.90 -batteryVREcapRatio 3 1.1 0 + storspv storcsp storwindon storwindoff +elh2VREcapratio 0.16 0.12 0.12 0.12 +h2turbVREcapratio 1.2 0.9 0.9 0.9 +batteryVREcapRatio 3 0 1.1 1.1 *** EOF ./modules/32_power/IntC/input/storageCap.prn diff --git a/modules/33_CDR/portfolio/datainput.gms b/modules/33_CDR/portfolio/datainput.gms index 51bbf0cdd..a3ce3230c 100644 --- a/modules/33_CDR/portfolio/datainput.gms +++ b/modules/33_CDR/portfolio/datainput.gms @@ -50,6 +50,12 @@ p33_fedem("weathering", "fedie") = 0.3; *' Factor distributing the global rock limit across regions according to population p33_LimRock(regi) = pm_pop("2005",regi) / sum(regi2,pm_pop("2005",regi2)); +*' Annual growth rate limit on upscaling of mining & spreading rocks on fields +p33_EW_upScalingLimit(ttot) = cm_33_EW_upScalingRateLimit; + +*' Calculation of short term limit on rocks spread on field in terms of Gt rocks that can be spread. +p33_EW_shortTermEW_Limit(regi) = cm_33_EW_shortTermLimit * sum(rlf, f33_maxProdGradeRegiWeathering(regi, rlf)); + *** ocean alkalinity enhancement input data (Kowalczyk et al., 2024) !! An assumption; generally the efficiency might vary between 0.9-1.4 tCO2/tCaO (1.2-1.8 molCO2/molCaO), diff --git a/modules/33_CDR/portfolio/declarations.gms b/modules/33_CDR/portfolio/declarations.gms index 81d08f9bd..21e363236 100644 --- a/modules/33_CDR/portfolio/declarations.gms +++ b/modules/33_CDR/portfolio/declarations.gms @@ -23,6 +23,8 @@ parameters p33_fedem(all_te,all_enty) "final energy demand of each technology [EJ/GtC] (for EW the unit is [EJ/Gt stone])" p33_LimRock(all_regi) "regional share of EW limit [fraction], calculated ex ante for a maximal annual amount of 8 Gt rock in D:\projects\CEMICS\paper_technical\supply_curve_transport_remind_regions.m" p33_co2_rem_rate(rlf) "carbon removal rate [fraction of annual reduction of total carbon removal potential], multiplied with grade factor" +p33_EW_upScalingLimit(ttot) "Annual growth rate limit on upscaling of mining & spreading rocks on fields" +p33_EW_shortTermEW_Limit(all_regi) "Limit on 2030 potential for enhanced weathering, defined in Gt rocks, based on % of land on which EW is applied" ; positive variables @@ -55,6 +57,8 @@ q33_EW_FEdemand(ttot,all_regi,all_enty) "calculates final energy demand from en q33_EW_potential(ttot,all_regi,rlf) "limits the total potential of EW per region and grade" q33_EW_emi(ttot,all_regi) "calculates amount of carbon captured by EW" q33_EW_LimEmi(ttot,all_regi) "limits EW to a maximal annual amount of ground rock of cm_LimRock" +q33_EW_upscaling_rate(ttot, all_regi) "limits spreading of rock to a steep but credible upscaling rate" +q33_EW_ShortTermBound(ttot,all_regi) "Limits short term potential for enhanced weathering" q33_OAE_FEdemand(ttot,all_regi,all_enty,all_te) "calculates final energy demand for ocean alkalinity enhancement" q33_OAE_co2emi_non_atm_calcination(ttot,all_regi,all_te) "calculates the CO2 that comes from calcination (limestone decomposition)" diff --git a/modules/33_CDR/portfolio/equations.gms b/modules/33_CDR/portfolio/equations.gms index f9e80630b..9ba53b310 100644 --- a/modules/33_CDR/portfolio/equations.gms +++ b/modules/33_CDR/portfolio/equations.gms @@ -189,7 +189,27 @@ q33_EW_LimEmi(t,regi).. =l= cm_LimRock * p33_LimRock(regi) ; - + +***--------------------------------------------------------------------------- +*' Short term bound on spreading of rock +***--------------------------------------------------------------------------- + +q33_EW_ShortTermBound(t, regi)$(t.val eq 2030).. + sum((rlf_cz33, rlf), v33_EW_onfield(t,regi,rlf_cz33,rlf)) + =l= + p33_EW_shortTermEW_Limit(regi) + ; + +***--------------------------------------------------------------------------- +*' Limits on the upscaling rate of mining and spreading of rocks. +*' Current cost parameters do not include cost of additional mining being developed, +*' thus adjustment cost are not effective. +***--------------------------------------------------------------------------- +q33_EW_upscaling_rate(ttot,regi)$(ord(ttot) lt card(ttot) AND pm_ttot_val(ttot) gt 2030).. + sum((rlf_cz33, rlf), v33_EW_onfield(ttot,regi,rlf_cz33,rlf)) + =l= + (1+p33_EW_upScalingLimit(ttot))**pm_dt(ttot) * sum((rlf_cz33, rlf), v33_EW_onfield(ttot-1,regi,rlf_cz33,rlf)) +; ***--------------------------------------------------------------------------- *' #### OAE equations diff --git a/modules/35_transport/edge_esm/presolve.gms b/modules/35_transport/edge_esm/presolve.gms index ca297ab5a..6e16e1050 100644 --- a/modules/35_transport/edge_esm/presolve.gms +++ b/modules/35_transport/edge_esm/presolve.gms @@ -13,7 +13,7 @@ if( (ord(iteration) le 25 and ord(iteration) ge cm_startIter_EDGET and (mod(ord( Execute "Rscript -e 'edgeTransport::iterativeEdgeTransport()'"; Execute_Loadpoint 'p35_esCapCost' p35_esCapCost; - pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val ge cm_startyear AND t.val le 2100) = p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); + pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val le 2100) = p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); !! load FE-to-ES results from EDGE-Transport into auxilliary parameter Execute_Loadpoint "p35_fe2es", p35_fe2es_aux = p35_fe2es; diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index a092646ac..95b38a4e6 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -120,10 +120,10 @@ p36_CESMkup(ttot,regi,in) = 0; *' mark-up cost on heat pumps and district heating are incurred as actual cost to the budget (see option (a) above) *' place markup cost on heat pumps electricity of 200 USD/MWh(el) to represent demand-side cost of electrification *' and reach higher efficiency during calibration to model higher energy efficiency of heat pumps -p36_CESMkup(ttot,regi,"feelhpb") = 200 * sm_TWa_2_MWh * 1e-12; +p36_CESMkup(ttot,regi,"feelhpb") = 200 * sm_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; *' place markup cost on district heating of 25 USD/MWh(heat) to represent additional t&d cost of expanding district heating networks for buildings *' which makes district heating in buildings more expensive than in industry -p36_CESMkup(ttot,regi,"feheb") = 25 * sm_TWa_2_MWh * 1e-12; +p36_CESMkup(ttot,regi,"feheb") = 25 * sm_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; *' overwrite or extent CES markup cost if specified by switch $ifThen.CESMkup not "%cm_CESMkup_build%" == "standard" diff --git a/modules/36_buildings/simple/equations.gms b/modules/36_buildings/simple/equations.gms index bea5febef..c2c640915 100644 --- a/modules/36_buildings/simple/equations.gms +++ b/modules/36_buildings/simple/equations.gms @@ -65,7 +65,7 @@ q36_auxCostAddTeInv(t,regi).. *' Hydrogen fe share in buildings gases use (natural gas + hydrogen) -q36_H2Share(t,regi).. +q36_H2Share(t,regi)$(t.val ge 2020).. v36_H2share(t,regi) * sum(se2fe(entySe,entyFe,te)$(SAMEAS(entyFe,"feh2s") OR SAMEAS(entyFe,"fegas")), diff --git a/modules/37_industry/fixed_shares/datainput.gms b/modules/37_industry/fixed_shares/datainput.gms index 3cda8fe57..a40f175c5 100644 --- a/modules/37_industry/fixed_shares/datainput.gms +++ b/modules/37_industry/fixed_shares/datainput.gms @@ -61,7 +61,7 @@ $offdelim $include "./modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms"; $IFTHEN.Industry_CCS_markup not "%cm_Industry_CCS_markup%" == "off" - pm_abatparam_Ind(ttot,regi,all_enty,steps)$pm_abatparam_Ind(ttot,regi,all_enty,steps) = (1/%cm_Industry_CCS_markup%)*pm_abatparam_Ind(ttot,regi,all_enty,steps); + pm_abatparam_Ind(ttot,regi,all_enty,steps)$pm_abatparam_Ind(ttot,regi,all_enty,steps) = (1/%cm_Industry_CCS_markup%)*pm_abatparam_Ind(ttot,regi,all_enty,steps); $ENDIF.Industry_CCS_markup *** fill in share of other industry sector diff --git a/modules/37_industry/fixed_shares/declarations.gms b/modules/37_industry/fixed_shares/declarations.gms index ab2f7981e..af6204096 100644 --- a/modules/37_industry/fixed_shares/declarations.gms +++ b/modules/37_industry/fixed_shares/declarations.gms @@ -14,7 +14,7 @@ scalars ; Parameters - pm_abatparam_Ind(ttot,all_regi,all_enty,steps) "industry CCS MAC curves [ratio @ US$2005]" + pm_abatparam_Ind(ttot,all_regi,all_enty,steps) "industry CCS MAC curves [ratio @ US$2017]" pm_ue_eff_target(all_in) "energy efficiency target trajectories [% p.a.]" @@ -31,7 +31,7 @@ Parameters o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector, FE carrier, SE carrier, emissions market" !! empty parameters from subsectors - pm_energy_limit(all_in) "" / / + pm_energy_limit(all_in) "empty parameter" / / p37_CESMkup_input(all_in) "markup cost parameter read in from config for CES levels in industry to influence demand-side cost and efficiencies in CES tree [trUSD/CES input]" / diff --git a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms index df9d96b89..5d2110b44 100644 --- a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms +++ b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms @@ -17,15 +17,15 @@ $endif !! short-term (until 2025) if (ttot.val le 2025, - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 95 ) = 0.63; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 95 ) = 0.63; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 *133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 78 ) = 0.121; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *78 ) = 0.121; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 59 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 82 ) = 0.234; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *59 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *82 ) = 0.234; $endif.cm_subsec_model_steel !! long-term (from 2030 on) @@ -43,16 +43,16 @@ $endif.cm_subsec_model_steel = max(0, min(0.95, 0.2159 + 0.1365 * log(sm_tmp))); else - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 54 ) = 0.702; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 54 ) = 0.702; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 46 ) = 0.363; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 78 ) = 0.484; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 * 46 ) = 0.363; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 * 78 ) = 0.484; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 48 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 62 ) = 0.275; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *48 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *62 ) = 0.275; $endif.cm_subsec_model_steel ); ); diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index a73aa7d40..3082cb3c0 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -34,3 +34,5 @@ vm_incinerationCCS, variable, does not want to play vm_incinerationEmi, variable, not needed vm_nonIncineratedPlastics, variable, not needed vm_outflowPrc, variable, not needed +sm_D2020_2_D2017,input,no conversion needed +sm_EURO2023_2_D2017,input,no conversion needed diff --git a/modules/37_industry/fixed_shares/sets.gms b/modules/37_industry/fixed_shares/sets.gms index 024c00074..f13fda08e 100644 --- a/modules/37_industry/fixed_shares/sets.gms +++ b/modules/37_industry/fixed_shares/sets.gms @@ -142,11 +142,11 @@ Sets / !! empty sets for subsectors compatibility - industry_ue_calibration_target_dyn37(all_in) "" / / - ppfKap_industry_dyn37(all_in) "" / / - ue_industry_dyn37(all_in) "" / / - ces_eff_target_dyn37(all_in,all_in) "" / / - pf_industry_relaxed_bounds_dyn37(all_in) "" / / + industry_ue_calibration_target_dyn37(all_in) "empty set" / / + ppfKap_industry_dyn37(all_in) "empty set" / / + ue_industry_dyn37(all_in) "empty set" / / + ces_eff_target_dyn37(all_in,all_in) "empty set" / / + pf_industry_relaxed_bounds_dyn37(all_in) "empty set" / / ; *** add module specific sets and mappings to the global sets and mappings diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 97e6c03ee..13a3f08bd 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -693,13 +693,13 @@ $endif.cm_subsec_model_steel p37_priceMat(all_enty) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! IEA STeel Roadmap Fig 1.3 Caption: Scrap price 200-300 $/t -!! => take 250 $/t, inflation 2005 --> 2020 / 1.33 -p37_priceMat("eafscrap") = 0.188; -p37_priceMat("bofscrap") = 0.188; -!! Agora KSV-Rechner: 114 €/tSteel / (1.4 2005$/2023€) / (tn$ /bn t) -p37_priceMat("ironore") = 0.081; -!! Agora KSV-Rechner: 154 €/tSteel / (1.4 2005$/2023€) / (tn$ /bn t) -p37_priceMat("dripell") = 0.110; +!! => take 250 $/t, unit 2020$US +p37_priceMat("eafscrap") = sm_D2020_2_D2017 * 0.250 ; +p37_priceMat("bofscrap") = sm_D2020_2_D2017 * 0.250; +!! Agora KSV-Rechner: 114 €2023/tSteel / (tn$ /bn t) +p37_priceMat("ironore") = sm_EURO2023_2_D2017 * 0.114; +!! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) +p37_priceMat("dripell") = sm_EURO2023_2_D2017 * 0.154; $endif.cm_subsec_model_steel *** -------------------------------- diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 827d4cace..5e462bd73 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -13,7 +13,7 @@ Scalar ; Parameters - pm_abatparam_Ind(ttot,all_regi,all_enty,steps) "industry CCS MAC curves [ratio @ US$2005]" + pm_abatparam_Ind(ttot,all_regi,all_enty,steps) "industry CCS MAC curves [ratio @ US$2017]" pm_energy_limit(all_in) "thermodynamic/technical limits of subsector energy use [GJ/t product]" p37_energy_limit_slope(tall,all_regi,all_in) "limit for subsector specific energy demand that converges towards the thermodynamic/technical limit [GJ/t product]" p37_clinker_cement_ratio(ttot,all_regi) "clinker content per unit cement used" @@ -38,7 +38,7 @@ Parameters p37_teMatShareHist(all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" p37_selfCaptureRate(all_te) "Share of emissions from fossil fuels used for a CCS process which are captured by the CCS process itself" - p37_priceMat(all_enty) "Prices of external material input [2005$/kg = trn2005$/Gt]" + p37_priceMat(all_enty) "Prices of external material input [US$/kg] = [trn$US/Gt]" p37_chemicals_feedstock_share(ttot,all_regi) "minimum share of feso/feli/fega in total chemicals FE input [0-1]" p37_FeedstockCarbonContent(ttot,all_regi,all_enty) "carbon content of feedstocks [GtC/TWa]" @@ -97,7 +97,7 @@ Positive Variables v37_matFlow(tall,all_regi,all_enty) "Production of materials [Gt/a]" v37_emiPrc(tall,all_regi,all_enty,all_te,opmoPrc) "Emissions per process and operation mode [GtC/a]" v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" - vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2005/a]" + vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" ; Equations @@ -115,7 +115,6 @@ $endif.no_calibration q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" - q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" q37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics [GtC]" q37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastic waste [GtC]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index ae83992fc..e6011ce34 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -81,8 +81,10 @@ $endif.exogDem_scen *' energy mix, as that is what can be captured); vm_emiIndBase itself is not used for emission *' accounting, just as a CCS baseline. ***------------------------------------------------------ -q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) - OR sameas(enty,"co2cement_process") ) .. +q37_emiIndBase(t,regi,enty,secInd37)$( + entyFeCC37(enty) + OR ( sameas(enty,"co2cement_process") + AND cm_CCS_cement eq 1 ) ) .. vm_emiIndBase(t,regi,enty,secInd37) =e= sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)),fe2ppfEn(entyFeCC37(enty),in)), @@ -348,18 +350,6 @@ $else.cm_feedstockEmiUnknownFate $endIf.cm_feedstockEmiUnknownFate ; -*' in baseline runs, all industrial feedstocks should come from fossil energy -*' carriers, no biofuels or synfuels -q37_FossilFeedstock_Base(t,regi,entyFe,emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) - AND cm_emiscen eq 1 ) .. - sum(entySe, vm_demFENonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt)) - =e= - sum(entySeFos, - vm_demFENonEnergySector(t,regi,entySeFos,entyFe,"indst",emiMkt) - ) -; - *** --------------------------------------------------------------------------- *** 2. Process-Based *** --------------------------------------------------------------------------- diff --git a/modules/37_industry/subsectors/not_used.txt b/modules/37_industry/subsectors/not_used.txt index 2b2763d7f..eb33d72e1 100644 --- a/modules/37_industry/subsectors/not_used.txt +++ b/modules/37_industry/subsectors/not_used.txt @@ -24,3 +24,4 @@ pm_shfe_up,parameter,not needed sm_trillion_2_non,input,questionnaire sm_TWa_2_kWh,input,questionnaire vm_macBase,input,questionnaire +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index f0abe2819..26f615ca1 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -381,6 +381,15 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / + teCCPrc(tePrc) "Technologies used in process-based model (only CCS)" + / + $$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bfcc + idrcc + $$endif.cm_subsec_model_steel + / + + mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -634,7 +643,7 @@ pf_quan_target_dyn29(pf_quan_target_dyn37) = YES; $endif.calibrate teMat2rlf(tePrc,"1") = YES; -alias(tePrc,teCCPrc,tePrc1,tePrc2); +alias(tePrc,tePrc1,tePrc2); alias(opmoPrc,opmoCCPrc,opmoPrc1,opmoPrc2); alias(route,route2); alias(entyFeCC37,entyFeCC37_2); diff --git a/modules/39_CCU/off/declarations.gms b/modules/39_CCU/off/declarations.gms index b606ec5c9..210be4784 100644 --- a/modules/39_CCU/off/declarations.gms +++ b/modules/39_CCU/off/declarations.gms @@ -13,7 +13,7 @@ *-----------------------------------------------ESM module------------------------ positive variables -vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" +vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years [GtC/a]" ; *** EOF ./modules/39_CCU/off/declarations.gms diff --git a/modules/39_CCU/on/declarations.gms b/modules/39_CCU/on/declarations.gms index 46a6e8bf6..743489c12 100644 --- a/modules/39_CCU/on/declarations.gms +++ b/modules/39_CCU/on/declarations.gms @@ -7,13 +7,13 @@ *** SOF ./modules/39_CCU/on/declarations.gms parameters -p39_co2_dem(ttot,all_regi,all_enty,all_enty,all_te) "CO2 demand of CCU technologies, unit: tC/TWa(output)" +p39_co2_dem(ttot,all_regi,all_enty,all_enty,all_te) "CO2 demand of CCU technologies [tC/TWa (output)]" ; positive variables -vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years. Unit GtC/a" -v39_shSynLiq(ttot,all_regi) "Share of synthetic liquids in all SE liquids. Value between 0 and 1." -v39_shSynGas(ttot,all_regi) "Share of synthetic gas in all SE gases. Value between 0 and 1." +vm_co2CCUshort(ttot,all_regi,all_enty,all_enty,all_te,rlf) "CO2 captured in CCU te that have a persistence for co2 storage shorter than 5 years [GtC/a]" +v39_shSynLiq(ttot,all_regi) "Share of synthetic liquids in all SE liquids [0..1]" +v39_shSynGas(ttot,all_regi) "Share of synthetic gas in all SE gases [0..1]" ; equations diff --git a/modules/39_CCU/on/sets.gms b/modules/39_CCU/on/sets.gms index 42b2a6816..73f11d67c 100644 --- a/modules/39_CCU/on/sets.gms +++ b/modules/39_CCU/on/sets.gms @@ -71,6 +71,7 @@ enty(enty_ccu39) = YES; te(te_ccu39) = YES; se2se(se2se_ccu39) = YES; teSe2rlf(teCCU2rlf) = YES; +teAdj(te_ccu39) = YES; *** EOF ./modules/39_CCU/on/sets.gms diff --git a/modules/40_techpol/CombLowCandCoalPO/datainput.gms b/modules/40_techpol/CombLowCandCoalPO/datainput.gms index 1ce3c18b7..f7248eb30 100644 --- a/modules/40_techpol/CombLowCandCoalPO/datainput.gms +++ b/modules/40_techpol/CombLowCandCoalPO/datainput.gms @@ -9,16 +9,16 @@ *cb targets for renewable upscaling: CSP and SPV from plausible extrapolation of current trends, Wind taken from Optimal immediate policy run (slightly optimistic at beginning) p40_NewRenBound("2015","csp")=2.267; p40_NewRenBound("2015","spv")=180; -p40_NewRenBound("2015","wind")=506.022; +p40_NewRenBound("2015","windon")=506.022; p40_NewRenBound("2020","csp")=4.5; p40_NewRenBound("2020","spv")=400; -p40_NewRenBound("2020","wind")=826.341; +p40_NewRenBound("2020","windon")=826.341; p40_NewRenBound("2025","csp")=8.5; p40_NewRenBound("2025","spv")=610; -p40_NewRenBound("2025","wind")=1208.034; +p40_NewRenBound("2025","windon")=1208.034; p40_NewRenBound("2030","csp")=18.5; p40_NewRenBound("2030","spv")=900; -p40_NewRenBound("2030","wind")=1646.939; +p40_NewRenBound("2030","windon")=1646.939; *cb plausible, quite conservative upscaling (much lower than in optimal immediate) p40_NewRenBound("2020","bioftcrec")=2.4; diff --git a/modules/40_techpol/CombLowCandCoalPO/equations.gms b/modules/40_techpol/CombLowCandCoalPO/equations.gms index 0894f2c93..ef5f65e29 100644 --- a/modules/40_techpol/CombLowCandCoalPO/equations.gms +++ b/modules/40_techpol/CombLowCandCoalPO/equations.gms @@ -5,7 +5,7 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de *** SOF ./modules/40_techpol/CombLowCandCoalPO/equations.gms -q40_NewRenBound(t,te)$(t.val gt 2010 AND t.val lt 2031 AND (sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"bioftcrec") OR sameas(te,"ngccc") )).. +q40_NewRenBound(t,te)$(t.val gt 2010 AND t.val lt 2031 AND (sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"bioftcrec") OR sameas(te,"ngccc") )).. *** attention: sum(regi will not work with Nash, therefore please reformulate with the usual iterative update mechanism sum(regi, sum(te2rlf(te,rlf), vm_cap(t,regi,te,rlf)) diff --git a/modules/40_techpol/NDC/bounds.gms b/modules/40_techpol/NDC/bounds.gms index 3a4a50594..4d62220e3 100755 --- a/modules/40_techpol/NDC/bounds.gms +++ b/modules/40_techpol/NDC/bounds.gms @@ -12,6 +12,8 @@ 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,"hydro","1")$(t.val ge 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; *** FS: if cm_H2Targets on: include capacity targets for electrolysis following national Hydrogen Strategies diff --git a/modules/40_techpol/NDC/datainput.gms b/modules/40_techpol/NDC/datainput.gms index 5a6bf2e66..49d4541fc 100644 --- a/modules/40_techpol/NDC/datainput.gms +++ b/modules/40_techpol/NDC/datainput.gms @@ -14,7 +14,9 @@ $offdelim $onlisting ; -p40_TechBound(ttot,all_regi,all_te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",all_te); +p40_TechBound(ttot,all_regi,te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",te); +*** windoffshore-todo: separate NDC targets for windon and windoff +p40_TechBound(ttot,all_regi,"wind") = f40_TechBound(ttot,all_regi,"%cm_NDC_version%","wind"); p40_ElecBioBound("2030",regi) = p40_TechBound("2030",regi,"bioigcc"); @@ -50,8 +52,8 @@ $offdelim p40_FE_RenShare(tall,regi) = f40_FE_RenShare(tall,regi); !! rescale unit from [million people] to [billion] people *** Chinese PE targets are defined with substitution accounting method -p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% -p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% *** lower bound on gas share in PE p40_PEgasBound("2020","CHN") = 0.08; p40_PEgasBound(t,"CHN")$(t.val gt 2020) = min(0.08 + (t.val -2020) * 0.004 ,0.1 - (t.val - 2030) * 0.005 ); !! rising to 10% in 2025 and 2030 and then declining to zero around 2050 diff --git a/modules/40_techpol/NDC/declarations.gms b/modules/40_techpol/NDC/declarations.gms index 0ebc425e8..3a5d4c2d9 100644 --- a/modules/40_techpol/NDC/declarations.gms +++ b/modules/40_techpol/NDC/declarations.gms @@ -24,7 +24,7 @@ Equation q40_FE_RenShare "Lower bound on renewable Equation q40_El_RenShare "Lower bound on low carbon share in electricity"; Equation q40_CoalBound "Restricting new coal power plants in regions with regulation"; Equation q40_ElCap_RenShare "Lower bound on low carbon share in total installed capacity"; -Equation q40_windBound "lower bound on combined wind onshore and offshore"; +Equation q40_windBound "lower bound on combined wind onshore and offshore"; *** EOF ./modules/40_techpol/NDC/declarations.gms diff --git a/modules/40_techpol/NDC/equations.gms b/modules/40_techpol/NDC/equations.gms index 301fa6cf4..4ff337c82 100644 --- a/modules/40_techpol/NDC/equations.gms +++ b/modules/40_techpol/NDC/equations.gms @@ -8,15 +8,17 @@ *' @equations -q40_ElecBioBound(t,regi)$(t.val gt 2015).. + ***am minimum targets for certain technologies +q40_ElecBioBound(t,regi)$(t.val gt 2015).. sum(te2rlf(te,rlf)$(sameas(te,"biochp") OR sameas(te,"bioigcc") OR sameas(te,"bioigccc")), vm_cap(t,regi,te,rlf)) - * 1000 =g= p40_ElecBioBound(t,regi); + =g= p40_ElecBioBound(t,regi) * 0.001 +; -q40_windBound(t,regi)$(t.val gt 2025).. -***making target apply to both wind onshore and offshore, when offshore switch is on -sum(teWind(te), vm_cap(t,regi,te,"1")) - =g= p40_TechBound(t,regi,"wind")*0.001 +*** windoffshore-todo: as long as there is a "wind" target, it is for the sum windon+windoff +q40_windBound(t,regi)$(t.val gt 2025 AND p40_TechBound(t,regi,"wind") gt 0).. + sum(teWind, vm_cap(t,regi,teWind,"1")) + =g= p40_TechBound(t,regi,"wind") * 0.001 ; q40_PEgasBound(t,regi)$(t.val gt 2015 AND (sameas(regi,"CHN") OR sameas(regi,"CHA"))).. diff --git a/modules/40_techpol/NDCplus/bounds.gms b/modules/40_techpol/NDCplus/bounds.gms index 9c88c7063..13a1fd983 100644 --- a/modules/40_techpol/NDCplus/bounds.gms +++ b/modules/40_techpol/NDCplus/bounds.gms @@ -11,6 +11,8 @@ vm_cap.lo(t,regi,"spv","1")$(t.val lt 2031 AND t.val gt 2024) = p40_TechBound(t, 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,"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; display vm_cap.lo; diff --git a/modules/40_techpol/NDCplus/datainput.gms b/modules/40_techpol/NDCplus/datainput.gms index a2bddd21d..c6eab4771 100644 --- a/modules/40_techpol/NDCplus/datainput.gms +++ b/modules/40_techpol/NDCplus/datainput.gms @@ -14,7 +14,9 @@ $offdelim $onlisting ; -p40_TechBound(ttot,all_regi,all_te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",all_te); +p40_TechBound(ttot,all_regi,te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",te); +*** windoffshore-todo: separate NDC targets for windon and windoff +p40_TechBound(ttot,all_regi,"wind") = f40_TechBound(ttot,all_regi,"%cm_NDC_version%","wind"); p40_ElecBioBound("2030",regi) = p40_TechBound("2030",regi,"bioigcc"); @@ -44,8 +46,8 @@ $offdelim p40_FE_RenShare(tall,regi) = f40_FE_RenShare(tall,regi); !! rescale unit from [million people] to [billion] people *** Chinese PE targets are defined with substitution accounting method -p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% -p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% *** lower bound on gas share in PE p40_PEgasBound("2020","CHN") = 0.08; p40_PEgasBound(t,"CHN")$(t.val gt 2020) = min(0.08 + (t.val -2020) * 0.004 ,0.1 - (t.val - 2030) * 0.005 ); !! rising to 10% in 2025 and 2030 and then declining to zero around 2050 diff --git a/modules/40_techpol/NDCplus/declarations.gms b/modules/40_techpol/NDCplus/declarations.gms index 08bedaec8..1bb65451f 100644 --- a/modules/40_techpol/NDCplus/declarations.gms +++ b/modules/40_techpol/NDCplus/declarations.gms @@ -24,7 +24,7 @@ Equation q40_FE_RenShare "Lower bound on renewable Equation q40_El_RenShare "Lower bound on low carbon share in electricity"; Equation q40_CoalBound "Restricting new coal power plants in regions with regulation"; Equation q40_ElCap_RenShare "Lower bound on low carbon share in total installed capacity"; -Equation q40_windBound "lower bound on combined wind onshore and offshore"; +Equation q40_windBound "lower bound on combined wind onshore and offshore"; *** EOF ./modules/40_techpol/NDCplus/declarations.gms diff --git a/modules/40_techpol/NDCplus/equations.gms b/modules/40_techpol/NDCplus/equations.gms index 46ade5806..a9bb2382a 100644 --- a/modules/40_techpol/NDCplus/equations.gms +++ b/modules/40_techpol/NDCplus/equations.gms @@ -8,15 +8,17 @@ *' @equations -q40_ElecBioBound(t,regi)$(t.val gt 2015).. + ***am minimum targets for certain technologies +q40_ElecBioBound(t,regi)$(t.val gt 2015).. sum(te2rlf(te,rlf)$(sameas(te,"biochp") OR sameas(te,"bioigcc") OR sameas(te,"bioigccc")), vm_cap(t,regi,te,rlf)) - * 1000 =g= p40_ElecBioBound(t,regi); + =g= p40_ElecBioBound(t,regi) * 0.001 +; -q40_windBound(t,regi)$(t.val gt 2025).. -***making target apply to both wind onshore and offshore, when offshore switch is on -sum(teWind(te), vm_cap(t,regi,te,"1")) - =g= p40_TechBound(t,regi,"wind")*0.001 +*** windoffshore-todo: as long as there is a "wind" target, it is for the sum windon+windoff +q40_windBound(t,regi)$(t.val gt 2025 AND p40_TechBound(t,regi,"wind") gt 0).. + sum(teWind, vm_cap(t,regi,teWind,"1")) + =g= p40_TechBound(t,regi,"wind") * 0.001 ; q40_PEgasBound(t,regi)$(t.val gt 2015 AND (sameas(regi,"CHN") OR sameas(regi,"CHA"))).. diff --git a/modules/40_techpol/NPi2018/bounds.gms b/modules/40_techpol/NPi2018/bounds.gms index 2188a52f0..e25911649 100644 --- a/modules/40_techpol/NPi2018/bounds.gms +++ b/modules/40_techpol/NPi2018/bounds.gms @@ -12,6 +12,8 @@ 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,"hydro","1")$(t.val gt 2020) = 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; display vm_cap.lo; diff --git a/modules/40_techpol/NPi2018/datainput.gms b/modules/40_techpol/NPi2018/datainput.gms index 9243046f8..d3725bcb5 100644 --- a/modules/40_techpol/NPi2018/datainput.gms +++ b/modules/40_techpol/NPi2018/datainput.gms @@ -14,7 +14,9 @@ $offdelim $onlisting ; -p40_TechBound(ttot,all_regi,all_te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",all_te); +p40_TechBound(ttot,all_regi,te) = f40_TechBound(ttot,all_regi,"%cm_NDC_version%",te); +*** windoffshore-todo: separate NDC targets for windon and windoff +p40_TechBound(ttot,all_regi,"wind") = f40_TechBound(ttot,all_regi,"%cm_NDC_version%","wind"); p40_ElecBioBound("2030",regi) = p40_TechBound("2030",regi,"bioigcc"); @@ -28,15 +30,15 @@ if (cm_phaseoutBiolc eq 1, *** 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% -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; +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; *** Chinese PE targets are defined with substitution accounting method -p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% -p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHN",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% +p40_noncombust_acc_eff(t,"CHA",te)$(sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"windoff") OR sameas(te,"tnrs") OR sameas(te,"spv") OR sameas(te,"geohdr") OR sameas(te,"hydro")) = 0.38; !! substitution accounting for low-carbon electricity generation at coal efficiency of 38% *** lower bound on gas share in PE p40_PEgasBound("2020","CHN") = 0.08; p40_PEgasBound(t,"CHN")$(t.val gt 2020) = min(0.08 ,0.08 - (t.val - 2030) * 0.005 ); !! 8% until 2030 and then declining again diff --git a/modules/40_techpol/NPi2018/declarations.gms b/modules/40_techpol/NPi2018/declarations.gms index d32a0baf8..ca3011ec8 100644 --- a/modules/40_techpol/NPi2018/declarations.gms +++ b/modules/40_techpol/NPi2018/declarations.gms @@ -21,7 +21,7 @@ Equation q40_ElecBioBound "equation low-carbon push Equation q40_PEgasBound "Mandating minimum PE gas share"; Equation q40_PElowcarbonBound "Lower bound on low carbon share"; Equation q40_FE_RenShare "Lower bound on renewable share"; -Equation q40_windBound "lower bound on combined wind onshore and offshore"; +Equation q40_windBound "lower bound on combined wind onshore and offshore"; *** EOF ./modules/40_techpol/NPi2018/declarations.gms diff --git a/modules/40_techpol/NPi2018/equations.gms b/modules/40_techpol/NPi2018/equations.gms index 3c5110b89..35349b8bf 100644 --- a/modules/40_techpol/NPi2018/equations.gms +++ b/modules/40_techpol/NPi2018/equations.gms @@ -8,15 +8,17 @@ *' @equations -q40_ElecBioBound(t,regi)$(t.val gt 2015).. + ***am minimum targets for certain technologies +q40_ElecBioBound(t,regi)$(t.val gt 2015).. sum(te2rlf(te,rlf)$(sameas(te,"biochp") OR sameas(te,"bioigcc") OR sameas(te,"bioigccc")), vm_cap(t,regi,te,rlf)) - * 1000 =g= p40_ElecBioBound(t,regi); + =g= p40_ElecBioBound(t,regi) * 0.001 +; -q40_windBound(t,regi)$(t.val gt 2025).. -***making target apply to both wind onshore and offshore, when offshore switch is on -sum(teWind(te), vm_cap(t,regi,te,"1")) - =g= p40_TechBound(t,regi,"wind")*0.001 +*** windoffshore-todo: as long as there is a "wind" target, it is for the sum windon+windoff +q40_windBound(t,regi)$(t.val gt 2025 AND p40_TechBound(t,regi,"wind") gt 0).. + sum(teWind, vm_cap(t,regi,teWind,"1")) + =g= p40_TechBound(t,regi,"wind") * 0.001 ; q40_PEgasBound(t,regi)$(t.val gt 2015 AND (sameas(regi,"CHN") OR sameas(regi,"CHA"))).. diff --git a/modules/40_techpol/lowCarbonPush/datainput.gms b/modules/40_techpol/lowCarbonPush/datainput.gms index d8f5baf87..2b42c281c 100644 --- a/modules/40_techpol/lowCarbonPush/datainput.gms +++ b/modules/40_techpol/lowCarbonPush/datainput.gms @@ -9,16 +9,16 @@ *cb targets for renewable upscaling: CSP and SPV from plausible extrapolation of current trends, Wind taken from Optimal immediate policy run (slightly optimistic at beginning) p40_NewRenBound("2015","csp")=2.267; p40_NewRenBound("2015","spv")=180; -p40_NewRenBound("2015","wind")=506.022; +p40_NewRenBound("2015","windon")=506.022; p40_NewRenBound("2020","csp")=4.5; p40_NewRenBound("2020","spv")=400; -p40_NewRenBound("2020","wind")=826.341; +p40_NewRenBound("2020","windon")=826.341; p40_NewRenBound("2025","csp")=8.5; p40_NewRenBound("2025","spv")=610; -p40_NewRenBound("2025","wind")=1208.034; +p40_NewRenBound("2025","windon")=1208.034; p40_NewRenBound("2030","csp")=18.5; p40_NewRenBound("2030","spv")=900; -p40_NewRenBound("2030","wind")=1646.939; +p40_NewRenBound("2030","windon")=1646.939; *cb plausible, quite conservative upscaling (much lower than in optimal immediate) p40_NewRenBound("2020","bioftcrec")=2.4; diff --git a/modules/40_techpol/lowCarbonPush/equations.gms b/modules/40_techpol/lowCarbonPush/equations.gms index 346049ea7..052196a2c 100644 --- a/modules/40_techpol/lowCarbonPush/equations.gms +++ b/modules/40_techpol/lowCarbonPush/equations.gms @@ -5,7 +5,7 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de *** SOF ./modules/40_techpol/lowCarbonPush/equations.gms -q40_NewRenBound(t,te)$(t.val gt 2010 AND t.val lt 2031 AND (sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"wind") OR sameas(te,"bioftcrec") OR sameas(te,"ngccc") )).. +q40_NewRenBound(t,te)$(t.val gt 2010 AND t.val lt 2031 AND (sameas(te,"spv") OR sameas(te,"csp") OR sameas(te,"windon") OR sameas(te,"bioftcrec") OR sameas(te,"ngccc") )).. *** attention: sum(regi will not work with Nash, therefore please reformulate with the usual iterative update mechanism sum(regi, sum(te2rlf(te,rlf), vm_cap(t,regi,te,rlf)) diff --git a/modules/45_carbonprice/NDC/datainput.gms b/modules/45_carbonprice/NDC/datainput.gms index 4e1cb9347..2f97731b1 100644 --- a/modules/45_carbonprice/NDC/datainput.gms +++ b/modules/45_carbonprice/NDC/datainput.gms @@ -12,11 +12,11 @@ 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 (unit TDpGtC) of global CO2eq taxes towards which countries converge"; -p45_taxCO2eqGlobal2030 = 30 * sm_DptCO2_2_TDpGtC; -Scalar p45_taxCO2eqYearlyIncrease "yearly multiplicative increase of co2 tax, write 3% as 1.03" /1.0125/; +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" /2100/; +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; @@ -27,7 +27,7 @@ elseif cm_NDC_divergentScenario = 2, ); *** load NDC data -Table f45_factorTargetyear(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region" +Table f45_factorTargetyear(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]" $offlisting $ondelim $include "./modules/45_carbonprice/NDC/input/fm_factorTargetyear.cs3r" @@ -35,12 +35,12 @@ $offdelim $onlisting ; -Parameter p45_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region"; +Parameter p45_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]"; p45_factorTargetyear(t,all_regi) = f45_factorTargetyear(t,all_regi,"%cm_NDC_version%","%cm_GDPscen%"); display p45_factorTargetyear; -Table f45_2005shareTarget(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with 2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years" +Table f45_2005shareTarget(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with 2005 GHG emission 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_2005shareTarget.cs3r" @@ -48,12 +48,12 @@ $offdelim $onlisting ; -Parameter p45_2005shareTarget(ttot,all_regi) "2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years"; +Parameter p45_2005shareTarget(ttot,all_regi) "2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]"; p45_2005shareTarget(t,all_regi) = f45_2005shareTarget(t,all_regi,"%cm_NDC_version%","%cm_GDPscen%"); display p45_2005shareTarget; -Table f45_histShare(tall,all_regi,NDC_version) "Table for all NDC versions with GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record" +Table f45_histShare(tall,all_regi,NDC_version) "Table for all NDC versions with GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record [0..1]" $offlisting $ondelim $include "./modules/45_carbonprice/NDC/input/fm_histShare.cs3r" @@ -61,12 +61,12 @@ $offdelim $onlisting ; -Parameter p45_histShare(tall,all_regi) "GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record"; +Parameter p45_histShare(tall,all_regi) "GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record [0..1]"; p45_histShare(tall,all_regi) = f45_histShare(tall,all_regi,"%cm_NDC_version%"); display p45_histShare; -Parameter p45_BAU_reg_emi_wo_LU_bunkers(ttot,all_regi) "regional GHG emissions (without LU and bunkers) in BAU scenario" +Parameter p45_BAU_reg_emi_wo_LU_bunkers(ttot,all_regi) "regional GHG emissions (without LU and bunkers) in BAU scenario [MtCO2eq/yr]" / $ondelim $ifthen exist "./modules/45_carbonprice/NDC/input/pm_BAU_reg_emi_wo_LU_bunkers.cs4r" @@ -76,16 +76,16 @@ $offdelim / ; *** parameters for selecting NDC years -Scalar p45_ignoreNDCbefore "NDC targets before this years are ignored, for example to exclude 2030 targets" /2024/; +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" /2030/; -Scalar p45_minRatioOfCoverageToMax "only targets whose coverage is this times p45_bestNDCcoverage are considered. Use 1 for only best." /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)" /2030.4/; +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"; -Parameter p45_distanceToOptyear(ttot,all_regi) "distance to p45_useSingleYearCloseTo to favor years in case of multiple equally good targets"; -Parameter p45_minDistanceToOptyear(all_regi) "minimal distance to p45_useSingleYearCloseTo per region"; +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_2005shareTarget(t,regi)); display p45_bestNDCcoverage; @@ -99,9 +99,9 @@ if(p45_useSingleYearCloseTo > 0, ); *** first and last NDC year as a number -Parameter p45_firstNDCyear(all_regi) "last year with NDC coverage within region"; +Parameter p45_firstNDCyear(all_regi) "last year with NDC coverage within region [year]"; p45_firstNDCyear(regi) = smin( p45_NDCyearSet(t, regi), t.val ); -Parameter p45_lastNDCyear(all_regi) "last year with NDC coverage within region"; +Parameter p45_lastNDCyear(all_regi) "last year with NDC coverage within region [year]"; p45_lastNDCyear(regi) = smax( p45_NDCyearSet(t, regi), t.val ); display p45_NDCyearSet,p45_firstNDCyear,p45_lastNDCyear; diff --git a/modules/45_carbonprice/NDC/declarations.gms b/modules/45_carbonprice/NDC/declarations.gms index bace597ad..047578e39 100644 --- a/modules/45_carbonprice/NDC/declarations.gms +++ b/modules/45_carbonprice/NDC/declarations.gms @@ -7,20 +7,20 @@ *** SOF ./modules/45_carbonprice/NDC/declarations.gms Parameter -p45_CO2eqwoLU_actual(ttot,all_regi) "actual level of regional GHG emissions after previous iteration" -p45_CO2eqwoLU_goal(ttot,all_regi) "regional NDC target level of GHG emissions" -p45_factorRescaleCO2Tax(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets" -p45_factorRescaleCO2TaxLtd(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets limited to not-so-fast adaption" -p45_factorRescaleCO2Tax_iter(iteration,ttot,all_regi) "Track the changes of p45_factorRescaleCO2Tax over the iterations" -p45_factorRescaleCO2TaxLtd_iter(iteration,ttot,all_regi) "Track the changes of p45_factorRescaleCO2TaxLimited over the iterations" -p45_taxCO2eqFirstNDCyear(all_regi) "CO2eq tax in p45_firstNDCyear" -p45_taxCO2eqLastNDCyear(all_regi) "CO2eq tax in p45_lastNDCyear" -p45_CO2eqwoLU_actual_iter(iteration,ttot,all_regi) "actual level of regional GHG emissions p45_CO2eqwoLU_actual tracked over iterations" -p45_taxCO2eq_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations" -p45_taxCO2eq_bau(ttot,all_regi) "level of CO2 taxes in business as usual run" +p45_CO2eqwoLU_actual(ttot,all_regi) "actual level of regional GHG emissions after previous iteration [MtCO2eq/yr]" +p45_CO2eqwoLU_goal(ttot,all_regi) "regional NDC target level of GHG emissions [MtCO2eq/yr]" +p45_CO2eqwoLU_actual_iter(iteration,ttot,all_regi) "actual level of regional GHG emissions p45_CO2eqwoLU_actual tracked over iterations [MtCO2eq/yr]" +p45_factorRescaleCO2Tax(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets [1]" +p45_factorRescaleCO2TaxLtd(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets limited to not-so-fast adaption [1]" +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_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations [T$/GtC]" +p45_taxCO2eq_bau(ttot,all_regi) "level of CO2 taxes in business as usual run [T$/GtC]" ; -Scalar p45_adjustExponent "exponent in tax adjustment process"; +Scalar p45_adjustExponent "exponent in tax adjustment process [1]"; *** EOF ./modules/45_carbonprice/NDC/declarations.gms diff --git a/modules/45_carbonprice/NDC/not_used.txt b/modules/45_carbonprice/NDC/not_used.txt index 65d442e6a..fc180917b 100644 --- a/modules/45_carbonprice/NDC/not_used.txt +++ b/modules/45_carbonprice/NDC/not_used.txt @@ -6,7 +6,6 @@ # | Contact: remind@pik-potsdam.de name,type,reason cm_emiscen, switch, ??? -cm_co2_tax_2020, switch, ??? pm_ttot_val,parameter,??? cm_co2_tax_growth,switch,??? cm_expoLinear_yearStart,switch,??? @@ -25,3 +24,4 @@ cm_co2_tax_spread,switch,no carbon price differentiation in this realization cm_co2_tax_startyear,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/NDC/postsolve.gms b/modules/45_carbonprice/NDC/postsolve.gms index 632746316..356c5def0 100644 --- a/modules/45_carbonprice/NDC/postsolve.gms +++ b/modules/45_carbonprice/NDC/postsolve.gms @@ -76,7 +76,7 @@ pm_taxCO2eq(t,regi)$(t.val gt 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 gt 2030) = max( +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) diff --git a/modules/45_carbonprice/NPi/datainput.gms b/modules/45_carbonprice/NPi/datainput.gms index e522bd2c4..c74a2fbfd 100644 --- a/modules/45_carbonprice/NPi/datainput.gms +++ b/modules/45_carbonprice/NPi/datainput.gms @@ -12,7 +12,7 @@ pm_taxCO2eq(ttot,regi)$( (ttot.val ge 2025) AND (ttot.val le 2100)) = pm_taxCO2eq("2020",regi) + ( - ( 25 * sm_DptCO2_2_TDpGtC - pm_taxCO2eq("2020",regi) ) + ( 25 * sm_D2005_2_D2017 * sm_DptCO2_2_TDpGtC - pm_taxCO2eq("2020",regi) ) * ( (ttot.val - 2020) / (2100 - 2020) ) ** 2 diff --git a/modules/45_carbonprice/NPi/not_used.txt b/modules/45_carbonprice/NPi/not_used.txt index 0b50895fc..8a85cb636 100644 --- a/modules/45_carbonprice/NPi/not_used.txt +++ b/modules/45_carbonprice/NPi/not_used.txt @@ -6,7 +6,6 @@ # | Contact: remind@pik-potsdam.de name,type,reason cm_emiscen, switch, ??? -cm_co2_tax_2020, switch, ??? pm_ttot_val,parameter,??? cm_co2_tax_growth,switch,??? cm_expoLinear_yearStart,switch,??? @@ -33,3 +32,4 @@ cm_co2_tax_spread,input,no carbon price differentiation in this realization cm_co2_tax_startyear,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/NPi/realization.gms b/modules/45_carbonprice/NPi/realization.gms index 399090376..39b9d82a1 100644 --- a/modules/45_carbonprice/NPi/realization.gms +++ b/modules/45_carbonprice/NPi/realization.gms @@ -6,6 +6,10 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/NPi/realization.gms +*' @description This realization takes the carbon prices until 2020 from the input data +*' and implements as convergence scheme post 2020: parabolic convergence up to 25 US$2005/t CO2 +*' in the convergence year (here chosen as 2100) and then constant + *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/NPi/datainput.gms" *######################## R SECTION END (PHASES) ############################### diff --git a/modules/45_carbonprice/NPi2025_EUR55/datainput.gms b/modules/45_carbonprice/NPi2025_EUR55/datainput.gms new file mode 100755 index 000000000..531c7ec75 --- /dev/null +++ b/modules/45_carbonprice/NPi2025_EUR55/datainput.gms @@ -0,0 +1,23 @@ +*** | (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/NPi2025_EUR55/datainput.gms + +***---------------------------- +*** CO2 Tax level growing exponentially from 2025 value taken from input data +***---------------------------- + +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)) * cm_co2_tax_growth**(t.val - 2025); + +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) * sm_DptCO2_2_TDpGtC * cm_co2_tax_growth**(t.val - 2030); +); + +pm_taxCO2eq(t,regi)$(t.val gt 2110) = pm_taxCO2eq("2110",regi); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value + +*** EOF ./modules/45_carbonprice/NPi2025_EUR55/datainput.gms diff --git a/modules/45_carbonprice/linear/not_used.txt b/modules/45_carbonprice/NPi2025_EUR55/not_used.txt old mode 100644 new mode 100755 similarity index 77% rename from modules/45_carbonprice/linear/not_used.txt rename to modules/45_carbonprice/NPi2025_EUR55/not_used.txt index d8ed2f5f0..57c09d7f0 --- a/modules/45_carbonprice/linear/not_used.txt +++ b/modules/45_carbonprice/NPi2025_EUR55/not_used.txt @@ -1,4 +1,4 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +# | (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 @@ -8,7 +8,7 @@ name,type,reason cm_emiscen, switch, ??? sm_c_2_co2,switch, ??? pm_ttot_val,parameter,??? -cm_co2_tax_growth,switch,??? +cm_startyear,switch,??? cm_iterative_target_adj,switch,??? cm_expoLinear_yearStart,switch,??? vm_co2eq,variable,??? @@ -27,7 +27,8 @@ cm_CO2priceRegConvEndYr,input,questionnaire cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire -cm_co2_tax_spread,switch,no carbon price differentiation in this realization -cm_co2_tax_startyear,input,added by codeCheck -cm_peakBudgYr,input,added by codeCheck -cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +cm_co2_tax_spread,input,not needed +cm_peakBudgYr,input,not needed +cm_co2_tax_startyear,input,not needed +cm_taxCO2inc_after_peakBudgYr,input,not needed +sm_D2005_2_D2017,input,not needed diff --git a/modules/45_carbonprice/exponential/realization.gms b/modules/45_carbonprice/NPi2025_EUR55/realization.gms old mode 100644 new mode 100755 similarity index 59% rename from modules/45_carbonprice/exponential/realization.gms rename to modules/45_carbonprice/NPi2025_EUR55/realization.gms index 7f953ad96..988f2b07a --- a/modules/45_carbonprice/exponential/realization.gms +++ b/modules/45_carbonprice/NPi2025_EUR55/realization.gms @@ -1,14 +1,15 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | (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/exponential/realization.gms +*** SOF ./modules/45_carbonprice/NPi2025_EUR55/realization.gms -*#' @description: This realization imeplents an exponential increase in carbon price from the predefined 2020 level. +*' @description: This realization takes the carbon prices until 2025 from the input data (for EUR until 2030) and implements an exponentially growing path afterwards *####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/exponential/datainput.gms" +$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/NPi2025_EUR55/datainput.gms" *######################## R SECTION END (PHASES) ############################### -*** EOF ./modules/45_carbonprice/exponential/realization.gms + +*** EOF ./modules/45_carbonprice/NPi2025_EUR55/realization.gms diff --git a/modules/45_carbonprice/NPiexpo/datainput.gms b/modules/45_carbonprice/NPiexpo/datainput.gms new file mode 100644 index 000000000..108cac05b --- /dev/null +++ b/modules/45_carbonprice/NPiexpo/datainput.gms @@ -0,0 +1,21 @@ +*** | (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/NPiexpo/datainput.gms +***---------------------------- +*** CO2 Tax level +***---------------------------- + +*** CO2 tax level is calculated at an exponential increase from the tax level before cm_startyear + +Execute_Loadpoint "input_ref" pm_taxCO2eq = pm_taxCO2eq; + +*** calculate pm_taxCO2eq for year before startyear +pm_taxCO2eq(t,regi) = sum(ttot, pm_taxCO2eq(ttot,regi)$(ttot.val eq smax(ttot2$( ttot2.val lt cm_startyear ), ttot2.val))) * cm_co2_tax_growth**(t.val-smax(ttot2$( ttot2.val lt cm_startyear ), ttot2.val)); +pm_taxCO2eq(t,regi)$(t.val gt 2110) = pm_taxCO2eq("2110",regi); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value + + +*** EOF ./modules/45_carbonprice/NPiexpo/datainput.gms diff --git a/modules/45_carbonprice/exponential/not_used.txt b/modules/45_carbonprice/NPiexpo/not_used.txt similarity index 81% rename from modules/45_carbonprice/exponential/not_used.txt rename to modules/45_carbonprice/NPiexpo/not_used.txt index d5488de47..a8a0fa0a3 100644 --- a/modules/45_carbonprice/exponential/not_used.txt +++ b/modules/45_carbonprice/NPiexpo/not_used.txt @@ -1,4 +1,4 @@ -# | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +# | (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 @@ -8,7 +8,6 @@ name,type,reason cm_emiscen, switch, ??? sm_c_2_co2,switch, ??? pm_ttot_val,parameter,??? -cm_startyear,switch,??? cm_iterative_target_adj,switch,??? cm_expoLinear_yearStart,switch,??? vm_co2eq,variable,??? @@ -27,7 +26,10 @@ cm_CO2priceRegConvEndYr,input,questionnaire cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire -cm_co2_tax_spread,input,No carbon price differentiation in this realization -cm_co2_tax_startyear,input,added by codeCheck +sm_DptCO2_2_TDpGtC,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck -cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +cm_co2_tax_startyear,input,added by codeCheck +fm_taxCO2eqHist,input,not needed +sm_D2005_2_D2017,input,not needed +cm_taxCO2inc_after_peakBudgYr,input,not needed +cm_co2_tax_spread,input,not needed diff --git a/modules/45_carbonprice/linear/realization.gms b/modules/45_carbonprice/NPiexpo/realization.gms similarity index 63% rename from modules/45_carbonprice/linear/realization.gms rename to modules/45_carbonprice/NPiexpo/realization.gms index 6f066c23b..87acb1022 100644 --- a/modules/45_carbonprice/linear/realization.gms +++ b/modules/45_carbonprice/NPiexpo/realization.gms @@ -1,14 +1,14 @@ -*** | (C) 2006-2024 Potsdam Institute for Climate Impact Research (PIK) +*** | (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/linear/realization.gms +*** SOF ./modules/45_carbonprice/NPiexpo/realization.gms -*#' @description: This realization imeplents an linear increase in carbon price from the predefined 2020 level. +*' @description: This realization implements an exponential increase in carbon price from the tax level before cm_startyear. *####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/linear/datainput.gms" +$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/NPiexpo/datainput.gms" *######################## R SECTION END (PHASES) ############################### -*** EOF ./modules/45_carbonprice/linear/realization.gms +*** EOF ./modules/45_carbonprice/NPiexpo/realization.gms diff --git a/modules/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms b/modules/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms deleted file mode 100644 index c241b0b8e..000000000 --- a/modules/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms +++ /dev/null @@ -1,68 +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/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms -***------------------------------------------------------------------------------------------------------------------------ -*** linear convergence with starting points differentiated by GDP/capita, global price from 2050 -***----------------------------------------------------------------------------------------------------------------------- - - -*** convergence to global CO2 price depends on GDP per capita (in 1e3 $ PPP 2005). -p45_gdppcap2015_PPP(regi) = pm_gdp("2015",regi)/pm_shPPPMER(regi) / pm_pop("2015",regi); -display p45_gdppcap2015_PPP; - -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) le 3) = 0.1; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 3 and p45_gdppcap2015_PPP(regi) le 5) = 0.2; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 5 and p45_gdppcap2015_PPP(regi) le 8) = 0.3; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 8 and p45_gdppcap2015_PPP(regi) le 11) = 0.5; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 11 and p45_gdppcap2015_PPP(regi) le 14) = 0.65; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 14 and p45_gdppcap2015_PPP(regi) le 19) = 0.8; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 19 and p45_gdppcap2015_PPP(regi) le 24) = 0.9; -p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 24) = 1; -display p45_phasein_2025ratio; - - -*** for the current implementation, use the following trajectory for rich countries: -*** global price is linear from 2010 until the pkBudgYr, then increases with cm_taxCO2inc_after_peakBudgYr -if(cm_co2_tax_2020 lt 0, - abort "please choose a valid cm_co2_tax_2020" -elseif cm_co2_tax_2020 ge 0, -*** convert tax value from $/t CO2eq to T$/GtC - p45_CO2priceTrajDeveloped("2040") = 3 * cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC; -*** shifted to 2040 to make sure that even in delay scenarios the fixpoint of the linear price path is inside the "t" range, otherwise the CO2 prices from reference run may be overwritten -*** The factor 3 comes from shifting the 2020 value 20 years into the future at linear increase of 10% of 2020 value per year. -); - - - -p45_CO2priceTrajDeveloped(t)$(t.val gt 2005) = p45_CO2priceTrajDeveloped("2040")*( 1 + 0.1/3 * (t.val-2040)); !! no CO2 price in 2005 and only change CO2 prices afterwards -*** annual increase by (10/3)% of the 2040 value is the same as a 10% increase of the 2020 value is the same as a linear increase from 0 in 2010 to the 2020/2040 value - - -*** Then create regional phase-in: -loop(t$(t.val le cm_CO2priceRegConvEndYr), - p45_regCO2priceFactor(t,regi) = - min(1, - max(0, - p45_phasein_2025ratio(regi) + (1 - p45_phasein_2025ratio(regi)) - * Power( - ( (t.val - 2025) + (cm_CO2priceRegConvEndYr - 2025) * 0.1 ) - / ( (cm_CO2priceRegConvEndYr - 2025) * 1.1 ) - , 2 - ) !! use Power instead of ** to allow ttot be smaller than 2025, and thus the base to be negative - ) - ); -); -p45_regCO2priceFactor(t,regi)$(t.val ge cm_CO2priceRegConvEndYr) = 1; - - -*** transition to global price - starting point depends on GDP/cap -pm_taxCO2eq(t,regi) = p45_regCO2priceFactor(t,regi) * p45_CO2priceTrajDeveloped(t); - - -display p45_regCO2priceFactor, p45_CO2priceTrajDeveloped, pm_taxCO2eq; - -*** EOF ./modules/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms diff --git a/modules/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms b/modules/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms deleted file mode 100644 index 52d8ba31e..000000000 --- a/modules/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms +++ /dev/null @@ -1,22 +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/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms -***------------------------------------------------------------------------------------------------------------------------ -*** *BS* 20190930 linear convergence with starting points differentiated by GDP/capita, global price from 2040 -***----------------------------------------------------------------------------------------------------------------------- - -parameters -p45_tauCO2_ref(ttot, all_regi) "CO2 tax path of reference policy (NDC)" -p45_gdppcap2015_PPP(all_regi) "2015 GDP per capita (k $ PPP 2005)" -p45_phasein_2025ratio(all_regi) "ratio of CO2 price to that of developed region in 2025" - -p45_regCO2priceFactor(ttot,all_regi) "regional multiplicative factor to the CO2 price of the developed countries" -p45_CO2priceTrajDeveloped(ttot) "CO2 price trajectory for developed/rich countries" -; - - -*** EOF ./modules/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms diff --git a/modules/45_carbonprice/diffCurvPhaseIn2Lin/not_used.txt b/modules/45_carbonprice/diffCurvPhaseIn2Lin/not_used.txt deleted file mode 100644 index ee46cce97..000000000 --- a/modules/45_carbonprice/diffCurvPhaseIn2Lin/not_used.txt +++ /dev/null @@ -1,30 +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 -name,type,reason -sm_c_2_co2,input,questionnaire -vm_co2eq,input,questionnaire -vm_emiFgas,input,questionnaire -pm_globalMeanTemperature,input,questionnaire -pm_temperatureImpulseResponseCO2,input,questionnaire -pm_GDPGross,input,questionnaire -pm_ttot_val,input,questionnaire -pm_ttot_2_tall,input,questionnaire -cm_emiscen,input,questionnaire -cm_co2_tax_growth,input,questionnaire -cm_iterative_target_adj,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 -pm_emifac,input,questionnaire -cm_co2_tax_spread,input,added by codeCheck -cm_co2_tax_startyear,input,added by codeCheck -cm_peakBudgYr,input,added by codeCheck -cm_startyear,input,added by codeCheck -cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck diff --git a/modules/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.gms b/modules/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.gms deleted file mode 100644 index e8227f3bb..000000000 --- a/modules/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.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/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.gms -***------------------------------------------------------------------------------------------------------------------------ -*** *BS* 20190930 linear convergence with starting points differentiated by GDP/capita, global price from 2040 -***----------------------------------------------------------------------------------------------------------------------- - -*** *** updated constant global price as scalar (regional prices are the same anyway) -*** s45_constantCO2price = sum((ttot,regi)$(ttot.val eq s45_stageend), pm_taxCO2eq(ttot,regi))/card(regi) ; -*** *** entire path has been shifted in update, so have to set these again -*** pm_taxCO2eq(ttot,regi)$(ttot.val le s45_stagestart) = p45_tauCO2_ref(ttot, regi); -*** pm_taxCO2eq(ttot,regi)$(ttot.val gt s45_stagestart and ttot.val lt s45_stageend) -*** = s45_constantCO2price * (ttot.val - p45_phasein_zeroyear(regi))/(s45_stageend - p45_phasein_zeroyear(regi)); -*** *** price trajectory should be constant anyway but let's be explicit here -*** pm_taxCO2eq(ttot,regi)$(ttot.val ge s45_stageend) = s45_constantCO2price; - - -*** re-create the regional differentation, use path from developed countries as the basis. -*** This doesn't need to be a loop, but it will be correct for any cycle of the loop, so also for the last cycle. -loop(regi$(p45_gdppcap2015_PPP(regi) gt 30), - p45_CO2priceTrajDeveloped(t) = pm_taxCO2eq(t,regi); -); - -*** linear transition to global price - starting point depends on GDP/cap -pm_taxCO2eq(t,regi) = p45_regCO2priceFactor(t,regi) * p45_CO2priceTrajDeveloped(t); - -display pm_taxCO2eq; -*** EOF ./modules/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.gms diff --git a/modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms b/modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms deleted file mode 100644 index c646f22f8..000000000 --- a/modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms +++ /dev/null @@ -1,15 +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/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms - -*####################### R SECTION START (PHASES) ############################## -$Ifi "%phase%" == "declarations" $include "./modules/45_carbonprice/diffCurvPhaseIn2Lin/declarations.gms" -$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/diffCurvPhaseIn2Lin/datainput.gms" -$Ifi "%phase%" == "postsolve" $include "./modules/45_carbonprice/diffCurvPhaseIn2Lin/postsolve.gms" -*######################## R SECTION END (PHASES) ############################### - -*** EOF ./modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms diff --git a/modules/45_carbonprice/diffExp2Lin/declarations.gms b/modules/45_carbonprice/diffExp2Lin/declarations.gms index b3e187559..14caa13ea 100644 --- a/modules/45_carbonprice/diffExp2Lin/declarations.gms +++ b/modules/45_carbonprice/diffExp2Lin/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/45_carbonprice/diffExp2Lin/datainput.gms +*** SOF ./modules/45_carbonprice/diffExp2Lin/declarations.gms ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** diff: regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in until cm_CO2priceRegConvEndYr (default = 2050), globally uniform price thereafter, *** level of regional carbon price differentiation (uniform, medium, strong) can be chosen via cm_co2_tax_spread diff --git a/modules/45_carbonprice/diffExp2Lin/not_used.txt b/modules/45_carbonprice/diffExp2Lin/not_used.txt index 23121ad97..d347aa06e 100644 --- a/modules/45_carbonprice/diffExp2Lin/not_used.txt +++ b/modules/45_carbonprice/diffExp2Lin/not_used.txt @@ -8,7 +8,6 @@ name,type,reason cm_emiscen, switch, ??? sm_c_2_co2,switch, ??? pm_ttot_val,parameter,??? -cm_co2_tax_2020,input,replaced by cm_co2_tax_startyear in this realization cm_expoLinear_yearStart,switch,??? vm_co2eq,variable,??? vm_emiFgas,input,questionnaire @@ -22,3 +21,5 @@ pm_ttot_2_tall,input,questionnaire cm_NDC_divergentScenario,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/diffExp2Lin/realization.gms b/modules/45_carbonprice/diffExp2Lin/realization.gms index f9e99fa49..877ddbc4c 100644 --- a/modules/45_carbonprice/diffExp2Lin/realization.gms +++ b/modules/45_carbonprice/diffExp2Lin/realization.gms @@ -6,18 +6,18 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/diffExp2Lin/realization.gms -*#' @description: This realization implements exponentially increasing carbon price - either until 2100 or until peak year (constant or linear thereafter). Optional carbon price differentiation and quadratic phase-in can be activated via switch cm_co2_tax_spread. +*' @description: This realization implements exponentially increasing carbon price - either until end of century or until peak year (constant or linear thereafter). Optional carbon price differentiation and quadratic phase-in can be activated via switch cm_co2_tax_spread. ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** diff: regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in until cm_CO2priceRegConvEndYr (default = 2050), globally uniform price thereafter, *** level of regional carbon price differentiation (uniform, medium, strong) can be chosen via cm_co2_tax_spread *** Exp: carbon price of developed regions increases exponentially with rate given by cm_co2_tax_growth (default = 4.5 percent), *** initial value in cm_startyear is given by cm_co2_tax_startyear (if iterative_target_adj != 0, this value will be adjusted to meet prescribed CO2 budget) -*** 2Lin: (with iterative_target_adj = 9): after the peak year (initial value given by cm_peakBudgYr, will be adjusted by algorithm in core/postsolve.gms), +*** 2Lin: (with iterative_target_adj = 9): after the peak year (initial value given by cm_peakBudgYr, will be adjusted by algorithm in core/postsolve.gms), *** carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant) -*** (with iterative_target_adj = 5): carbon price of developed countries keeps increasing exponentially until end of century, i.e. no change after peak year +*** (with iterative_target_adj = 5): carbon price of developed countries keeps increasing exponentially until end of century, i.e. no change after peak year *** (with iterative_target_adj = 0): after year given by cm_peakBudgYr (default = 2050), carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant), -*** for exponentially increasing carbon price until end of century, set cm_peakBudgYr = 2110 +*** for exponentially increasing carbon price until end of century, set cm_peakBudgYr = 2110 ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *####################### R SECTION START (PHASES) ############################## diff --git a/modules/45_carbonprice/diffLin2Lin/datainput.gms b/modules/45_carbonprice/diffLin2Lin/datainput.gms index 5fe0056b4..a2d7cb26b 100644 --- a/modules/45_carbonprice/diffLin2Lin/datainput.gms +++ b/modules/45_carbonprice/diffLin2Lin/datainput.gms @@ -14,7 +14,7 @@ *** carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant) *** (with iterative_target_adj = 5): carbon price of developed countries keeps increasing linearly (with same slope) until end of century, i.e. no change after peak year *** (with iterative_target_adj = 0): after year given by cm_peakBudgYr (default = 2050), carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant), -*** for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2100 +*** for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2110 ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** Step 1: Define regional multiplicative factors between regional CO2 price and CO2 price of the developed countries @@ -111,7 +111,7 @@ else abort "please initialize cm_co2_tax_startyear by setting it to a positive value" ); *** make sure that the initial CO2 price trajectory is increasing -if(s45_co2_tax_startyear le s45_co2_tax_hist, +if(s45_co2_tax_startyear lt s45_co2_tax_hist, abort "please choose a value for cm_co2_tax_startyear that is larger than the value provided by cm_co2_tax_hist" ); display s45_co2_tax_startyear; @@ -122,14 +122,14 @@ p45_CO2priceTrajDeveloped(t) = s45_co2_tax_hist + (s45_co2_tax_startyear - s45_co2_tax_hist) / (cm_startyear - s45_year_co2_tax_hist) !! Yearly increase of CO2 price * (t.val - s45_year_co2_tax_hist) ; *** for peak budget runs (if cm_iterative_target_adj = 6|7|9), the adjustment of the CO2 price trajectory after the peak year is made in core/postsolve.gms -*** for runs without iterative carbon price adjustment (if cm_iterative_target_adj = 0), price increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr after year given by cm_peakBudgYr (for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2100) +*** for runs without iterative carbon price adjustment (if cm_iterative_target_adj = 0), price increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr after year given by cm_peakBudgYr (for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2110) if((cm_iterative_target_adj eq 0), p45_CO2priceTrajDeveloped(t)$(t.val gt cm_peakBudgYr) = sum(t2$(t2.val eq cm_peakBudgYr), p45_CO2priceTrajDeveloped(t2)) + (t.val - cm_peakBudgYr) * cm_taxCO2inc_after_peakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year ); -*** set taxes after 2100 equal to 2100 value -p45_CO2priceTrajDeveloped(t)$(t.val gt 2100) = p45_CO2priceTrajDeveloped("2100"); +*** set taxes after 2110 equal to 2110 value +p45_CO2priceTrajDeveloped(t)$(t.val gt 2110) = p45_CO2priceTrajDeveloped("2110"); display p45_CO2priceTrajDeveloped; *** Step 3: Create regional CO2 price trajectories using 1) regional multiplicative CO2 price factors and 2) CO2 price trajectory for developed countries diff --git a/modules/45_carbonprice/diffLin2Lin/not_used.txt b/modules/45_carbonprice/diffLin2Lin/not_used.txt index 9e1d86d3f..a9cf44fe2 100644 --- a/modules/45_carbonprice/diffLin2Lin/not_used.txt +++ b/modules/45_carbonprice/diffLin2Lin/not_used.txt @@ -22,4 +22,5 @@ pm_consPC,input,questionnaire pm_prtp,input,questionnaire vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire -cm_co2_tax_2020,input,replaced by cm_co2_tax_startyear in this realization +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/diffLin2Lin/postsolve.gms b/modules/45_carbonprice/diffLin2Lin/postsolve.gms index 7aceefb6b..0e7835767 100644 --- a/modules/45_carbonprice/diffLin2Lin/postsolve.gms +++ b/modules/45_carbonprice/diffLin2Lin/postsolve.gms @@ -21,7 +21,7 @@ if((cm_iterative_target_adj ne 0), *** re-create the linear carbon price trajectory for developed countries to ensure that it *** starts at historical level given by cm_co2_tax_hist in year cm_year_co2_tax_hist, and -*** ends at the endogenously adjusted tax level in the peak year (with iterative_target_adj = 6|7|9) or in 2100 (otherwise) +*** ends at the endogenously adjusted tax level in the peak year (with iterative_target_adj = 6|7|9) or in 2110 (otherwise) if((cm_iterative_target_adj eq 6) or (cm_iterative_target_adj eq 7) or (cm_iterative_target_adj eq 9), loop(regi$(p45_gdppcap2015_PPP(regi) gt 20), !! This doesn't need to be a loop, but it will be correct for any cycle of the loop, so also for the last cycle. p45_CO2priceTrajDeveloped(t)$(t.val le cm_peakBudgYr) @@ -32,11 +32,11 @@ if((cm_iterative_target_adj eq 6) or (cm_iterative_target_adj eq 7) or (cm_itera ); else loop(regi$(p45_gdppcap2015_PPP(regi) gt 20), !! This doesn't need to be a loop, but it will be correct for any cycle of the loop, so also for the last cycle. - p45_CO2priceTrajDeveloped(t)$(t.val le 2100) + p45_CO2priceTrajDeveloped(t)$(t.val le 2110) = s45_co2_tax_hist - + (pm_taxCO2eq("2100",regi) - s45_co2_tax_hist) / (2100 - s45_year_co2_tax_hist) !! Yearly increase of CO2 price that interpolates between s45_co2_tax_hist in s45_year_co2_tax_hist and pm_taxCO2eq in 2100 + + (pm_taxCO2eq("2110",regi) - s45_co2_tax_hist) / (2110 - s45_year_co2_tax_hist) !! Yearly increase of CO2 price that interpolates between s45_co2_tax_hist in s45_year_co2_tax_hist and pm_taxCO2eq in 2110 * (t.val - s45_year_co2_tax_hist) ; - p45_CO2priceTrajDeveloped(t)$(t.val gt 2100) = pm_taxCO2eq(t,regi); + p45_CO2priceTrajDeveloped(t)$(t.val gt 2110) = pm_taxCO2eq(t,regi); ); ); diff --git a/modules/45_carbonprice/diffLin2Lin/realization.gms b/modules/45_carbonprice/diffLin2Lin/realization.gms index fcd21cbaf..24a9ba102 100644 --- a/modules/45_carbonprice/diffLin2Lin/realization.gms +++ b/modules/45_carbonprice/diffLin2Lin/realization.gms @@ -6,18 +6,18 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/diffLin2Lin/realization.gms -*#' @description: This realization implements linearly increasing carbon price - either until 2100 or until peak year (constant or linear thereafter). Optional carbon price differentiation and quadratic phase-in can be activated via switch cm_co2_tax_spread. +*' @description: This realization implements linearly increasing carbon price - either until end of century or until peak year (constant or linear thereafter). Optional carbon price differentiation and quadratic phase-in can be activated via switch cm_co2_tax_spread. ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** diff: regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in until cm_CO2priceRegConvEndYr (default = 2050), globally uniform price thereafter, *** level of regional carbon price differentiation (uniform, medium, strong) can be chosen via cm_co2_tax_spread *** Lin: carbon price of developed regions increases linearly starting at historical level given by cm_co2_tax_hist in year cm_year_co2_tax_hist *** initial value in cm_startyear is given by cm_co2_tax_startyear (if iterative_target_adj != 0, this value will be adjusted to meet prescribed CO2 budget) -*** 2Lin: (with iterative_target_adj = 9): after the peak year (initial value given by cm_peakBudgYr, will be adjusted by algorithm in core/postsolve.gms), +*** 2Lin: (with iterative_target_adj = 9): after the peak year (initial value given by cm_peakBudgYr, will be adjusted by algorithm in core/postsolve.gms), *** carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant) -*** (with iterative_target_adj = 5): carbon price of developed countries keeps increasing linearly (with same slope) until end of century, i.e. no change after peak year +*** (with iterative_target_adj = 5): carbon price of developed countries keeps increasing linearly (with same slope) until end of century, i.e. no change after peak year *** (with iterative_target_adj = 0): after year given by cm_peakBudgYr (default = 2050), carbon price of developed countries increases linearly with fixed annual increase given by cm_taxCO2inc_after_peakBudgYr (default = 0, i.e. constant), -*** for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2110 +*** for linearly increasing carbon price (with same slope) until end of century, set cm_peakBudgYr = 2110 ***-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- *####################### R SECTION START (PHASES) ############################## diff --git a/modules/45_carbonprice/exogenous/declarations.gms b/modules/45_carbonprice/exogenous/declarations.gms index f5a90e6f4..216448fbf 100644 --- a/modules/45_carbonprice/exogenous/declarations.gms +++ b/modules/45_carbonprice/exogenous/declarations.gms @@ -6,7 +6,7 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/exogenous/declarations.gms parameters - p45_tau_co2_tax(ttot,all_regi) "Exogenous CO2 tax level" + p45_tau_co2_tax(ttot,all_regi) "Exogenous CO2 tax level [T$/GtC]" ; *** EOF ./modules/45_carbonprice/exogenous/declarations.gms diff --git a/modules/45_carbonprice/exogenous/not_used.txt b/modules/45_carbonprice/exogenous/not_used.txt index 8575250b1..b23d8b978 100644 --- a/modules/45_carbonprice/exogenous/not_used.txt +++ b/modules/45_carbonprice/exogenous/not_used.txt @@ -5,7 +5,6 @@ # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de name,type,reason -cm_co2_tax_2020, switch, ??? sm_c_2_co2,switch, ??? pm_ttot_val,parameter,??? cm_co2_tax_growth,switch,??? @@ -32,3 +31,5 @@ cm_co2_tax_spread,switch,no carbon price differentiation in this realization cm_co2_tax_startyear,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/exogenous/realization.gms b/modules/45_carbonprice/exogenous/realization.gms index 7065d37e5..c1fd09538 100644 --- a/modules/45_carbonprice/exogenous/realization.gms +++ b/modules/45_carbonprice/exogenous/realization.gms @@ -6,9 +6,9 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/exogenous/realization.gms -*#' @description This realization implements carbon price trajectories from an exogenous file (p45_tau_co2_tax.inc). -*#' Alternatively, specify in 'path_gdx_carbonprice' the run to be used -*#' Requires cm_emiscen = 9 and cm_iterative_target_adj = 0 +*' @description This realization implements carbon price trajectories from an exogenous file (p45_tau_co2_tax.inc). +*' Alternatively, specify in 'path_gdx_carbonprice' the run to be used +*' Requires cm_emiscen = 9 and cm_iterative_target_adj = 0 *####################### R SECTION START (PHASES) ############################## diff --git a/modules/45_carbonprice/expoLinear/declarations.gms b/modules/45_carbonprice/expoLinear/declarations.gms index 4e3552dd1..6f149acf7 100644 --- a/modules/45_carbonprice/expoLinear/declarations.gms +++ b/modules/45_carbonprice/expoLinear/declarations.gms @@ -7,10 +7,10 @@ *** SOF ./modules/45_carbonprice/expoLinear/declarations.gms scalar -s45_co2_tax_startyear "level of CO2 tax in start year in T$/GtC" +s45_co2_tax_startyear "level of CO2 tax in start year [T$/GtC]" ; parameter -p45_tau_co2_tax_inc(all_regi) "Linear annual increase in carbon price T$/GtC/yr" +p45_tau_co2_tax_inc(all_regi) "Linear annual increase in carbon price [T$/GtC/yr]" ; *** EOF ./modules/45_carbonprice/expoLinear/declarations.gms diff --git a/modules/45_carbonprice/expoLinear/not_used.txt b/modules/45_carbonprice/expoLinear/not_used.txt index 7140d84f5..e399a95dd 100644 --- a/modules/45_carbonprice/expoLinear/not_used.txt +++ b/modules/45_carbonprice/expoLinear/not_used.txt @@ -26,5 +26,6 @@ vm_demFeSector,input,questionnaire pm_emifac,input,questionnaire cm_co2_tax_spread,input,No carbon price differentiation in this realization cm_peakBudgYr,input,added by codeCheck -cm_co2_tax_2020,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/expoLinear/realization.gms b/modules/45_carbonprice/expoLinear/realization.gms index 4e845a5b2..dd65eb081 100644 --- a/modules/45_carbonprice/expoLinear/realization.gms +++ b/modules/45_carbonprice/expoLinear/realization.gms @@ -6,14 +6,14 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/expoLinear/realization.gms -*' @description The exponential price path goes back to the “Hotelling rule”: -*' a price path that rises exponentially with the discount rate is economically optimal for extracting a finite resource, -*' in our case the finite remaining carbon budget. However, once CDR is introduced to the portfolio of mitigation options, -*' the remaining admissible amount of cumulative gross CO2 emissions is no longer finite, and the Hotelling rule no longer represents an economically optimal solution. -*' A carbon price path following the Hotelling rule leads to rather low emission prices and therefore low emission reductions early in the century, -*' and to very high emission prices and massive CDR deployment towards the end of the century. -*' A Hotelling price path can only be considered optimal until the time of net-zero emissions. -*' Afterwards, a moderate carbon price increase is sufficient to avoid a return of fossil fuels. +*' @description The exponential price path goes back to the “Hotelling rule”: +*' a price path that rises exponentially with the discount rate is economically optimal for extracting a finite resource, +*' in our case the finite remaining carbon budget. However, once CDR is introduced to the portfolio of mitigation options, +*' the remaining admissible amount of cumulative gross CO2 emissions is no longer finite, and the Hotelling rule no longer represents an economically optimal solution. +*' A carbon price path following the Hotelling rule leads to rather low emission prices and therefore low emission reductions early in the century, +*' and to very high emission prices and massive CDR deployment towards the end of the century. +*' A Hotelling price path can only be considered optimal until the time of net-zero emissions. +*' Afterwards, a moderate carbon price increase is sufficient to avoid a return of fossil fuels. *' Therefore, we choose an exponentially increasing carbon price until the expected time of net-zero emissions and a linear increase at the rate of 2050 or 2060 afterwards. *####################### R SECTION START (PHASES) ############################## diff --git a/modules/45_carbonprice/exponential/datainput.gms b/modules/45_carbonprice/exponential/datainput.gms deleted file mode 100644 index 952c27e5c..000000000 --- a/modules/45_carbonprice/exponential/datainput.gms +++ /dev/null @@ -1,28 +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/45_carbonprice/exponential/datainput.gms -***---------------------------- -*** CO2 Tax level -***---------------------------- - -*** CO2 tax level is calculated at a 5% exponential increase from the 2020 tax level exogenously defined - -*GL: tax path in 10^12$/GtC = 1000 $/tC -*** according to Asian Modeling Excercise tax case setup, 30$/t CO2eq in 2020 = 0.110 k$/tC - -if(cm_co2_tax_2020 lt 0, -abort "please choose a valid cm_co2_tax_2020" -elseif cm_co2_tax_2020 ge 0, -*** cocnvert tax value from $/t CO2eq to T$/GtC -pm_taxCO2eq("2020",regi)= cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC; -); - -pm_taxCO2eq(ttot,regi)$(ttot.val ge 2005) = pm_taxCO2eq("2020",regi)*cm_co2_tax_growth**(ttot.val-2020); -pm_taxCO2eq(ttot,regi)$(ttot.val gt 2110) = pm_taxCO2eq("2110",regi); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value - - -*** EOF ./modules/45_carbonprice/exponential/datainput.gms diff --git a/modules/45_carbonprice/linear/datainput.gms b/modules/45_carbonprice/linear/datainput.gms deleted file mode 100644 index 56b2da3aa..000000000 --- a/modules/45_carbonprice/linear/datainput.gms +++ /dev/null @@ -1,31 +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/45_carbonprice/linear/datainput.gms -***---------------------------- -*** CO2 Tax level -***---------------------------- - -*** CO2 tax level is calculated at a linear increase from the 2020 tax level exogenously defined - -*GL: tax path in 10^12$/GtC = 1000 $/tC -*** according to Asian Modeling Excercise tax case setup, 30$/t CO2eq in 2020 = 0.110 k$/tC - -if(cm_co2_tax_2020 lt 0, - abort "please choose a valid cm_co2_tax_2020" -elseif cm_co2_tax_2020 ge 0, -*** convert tax value from $/t CO2eq to T$/GtC - pm_taxCO2eq("2040",regi)= 3 * cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC; !! shifted to 2040 to make sure that even in delay scenarios the fixpoint of the linear price path is inside the "t" range, otherwise the CO2 prices from reference run may be overwritten -*** The factor 3 comes from shifting the 2020 value 20 years into the future at linear increase of 10% of 2020 value per year. -); - -pm_taxCO2eq(ttot,regi)$((ttot.val gt 2005) AND (ttot.val ge cm_startyear)) = pm_taxCO2eq("2040",regi)*( 1 + 0.1/3 * (ttot.val-2040)); !! no CO2 price in 2005 and only change CO2 prices after ; -*** annual increase by (10/3)% of the 2040 value is the same as a 10% increase of the 2020 value is the same as a linear increase from 0 in 2010 to the 2020/2040 value - -pm_taxCO2eq(ttot,regi)$(ttot.val gt 2110) = pm_taxCO2eq("2110",regi); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value -display pm_taxCO2eq; - -*** EOF ./modules/45_carbonprice/linear/datainput.gms diff --git a/modules/45_carbonprice/module.gms b/modules/45_carbonprice/module.gms index 1c948d611..dd45e9903 100644 --- a/modules/45_carbonprice/module.gms +++ b/modules/45_carbonprice/module.gms @@ -9,7 +9,7 @@ *' @title Carbonprice *' *' @description -*' The carbonprice module sets (exogenously given price path or predefined 2020 level and linear/exponential increase afterwards) +*' The carbonprice module sets (exogenously given price path or predefined level in start year and linear/exponential increase afterwards) *' or adjusts carbon price trajectories between iterations s.t. the desired climate policy targets are met. The carbon price is the main indicator *' to reflect the increase in climate policy ambition over time. @@ -23,13 +23,12 @@ *###################### R SECTION START (MODULETYPES) ########################## $Ifi "%carbonprice%" == "NDC" $include "./modules/45_carbonprice/NDC/realization.gms" $Ifi "%carbonprice%" == "NPi" $include "./modules/45_carbonprice/NPi/realization.gms" -$Ifi "%carbonprice%" == "diffCurvPhaseIn2Lin" $include "./modules/45_carbonprice/diffCurvPhaseIn2Lin/realization.gms" +$Ifi "%carbonprice%" == "NPi2025_EUR55" $include "./modules/45_carbonprice/NPi2025_EUR55/realization.gms" +$Ifi "%carbonprice%" == "NPiexpo" $include "./modules/45_carbonprice/NPiexpo/realization.gms" $Ifi "%carbonprice%" == "diffExp2Lin" $include "./modules/45_carbonprice/diffExp2Lin/realization.gms" $Ifi "%carbonprice%" == "diffLin2Lin" $include "./modules/45_carbonprice/diffLin2Lin/realization.gms" $Ifi "%carbonprice%" == "exogenous" $include "./modules/45_carbonprice/exogenous/realization.gms" $Ifi "%carbonprice%" == "expoLinear" $include "./modules/45_carbonprice/expoLinear/realization.gms" -$Ifi "%carbonprice%" == "exponential" $include "./modules/45_carbonprice/exponential/realization.gms" -$Ifi "%carbonprice%" == "linear" $include "./modules/45_carbonprice/linear/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 62d6c911a..78701ac4b 100644 --- a/modules/45_carbonprice/none/not_used.txt +++ b/modules/45_carbonprice/none/not_used.txt @@ -6,7 +6,6 @@ # | Contact: remind@pik-potsdam.de name,type,reason cm_emiscen, switch, ??? -cm_co2_tax_2020, switch, ??? sm_c_2_co2,switch, ??? pm_ttot_val,parameter,??? cm_co2_tax_growth,switch,??? @@ -34,3 +33,5 @@ cm_co2_tax_spread,input,no carbon price differentiation in this realization cm_co2_tax_startyear,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/none/realization.gms b/modules/45_carbonprice/none/realization.gms index 1f72cc0da..5ad8dd6bf 100644 --- a/modules/45_carbonprice/none/realization.gms +++ b/modules/45_carbonprice/none/realization.gms @@ -7,7 +7,7 @@ *** SOF ./modules/45_carbonprice/none/realization.gms -*#' @description: This realization is for runs without carbon prices (BAU). +*' @description: This realization is for runs without carbon prices. *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/none/datainput.gms" diff --git a/modules/45_carbonprice/temperatureNotToExceed/not_used.txt b/modules/45_carbonprice/temperatureNotToExceed/not_used.txt index 3f2491e46..5e5f48dba 100644 --- a/modules/45_carbonprice/temperatureNotToExceed/not_used.txt +++ b/modules/45_carbonprice/temperatureNotToExceed/not_used.txt @@ -10,7 +10,6 @@ sm_DptCO2_2_TDpGtC,input,questionnaire vm_co2eq,input,questionnaire vm_emiFgas,input,questionnaire pm_ttot_val,input,questionnaire -cm_co2_tax_2020,input,questionnaire cm_co2_tax_growth,input,questionnaire cm_startyear,input,questionnaire cm_iterative_target_adj,input,questionnaire @@ -26,3 +25,5 @@ cm_co2_tax_spread,input,no carbon price differentiation in this realization cm_co2_tax_startyear,input,added by codeCheck cm_peakBudgYr,input,added by codeCheck cm_taxCO2inc_after_peakBudgYr,input,added by codeCheck +sm_D2005_2_D2017,input,not needed +fm_taxCO2eqHist,input,not needed diff --git a/modules/45_carbonprice/temperatureNotToExceed/realization.gms b/modules/45_carbonprice/temperatureNotToExceed/realization.gms index 30cd30eff..2ef11e50f 100644 --- a/modules/45_carbonprice/temperatureNotToExceed/realization.gms +++ b/modules/45_carbonprice/temperatureNotToExceed/realization.gms @@ -6,8 +6,8 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./modules/45_carbonprice/temperatureNotToExceed/realization.gms -*#' @description This realization chooses a carbon price trajectory consistent with a (non-overshoot) temperature target -*#' by staying within a peak budget of cumulative CO2 emissions. +*' @description This realization chooses a carbon price trajectory consistent with a (non-overshoot) temperature target +*' by staying within a peak budget of cumulative CO2 emissions. *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "declarations" $include "./modules/45_carbonprice/temperatureNotToExceed/declarations.gms" diff --git a/modules/46_carbonpriceRegi/NDC/datainput.gms b/modules/46_carbonpriceRegi/NDC/datainput.gms index 23c82526b..009e81200 100644 --- a/modules/46_carbonpriceRegi/NDC/datainput.gms +++ b/modules/46_carbonpriceRegi/NDC/datainput.gms @@ -13,7 +13,7 @@ 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_GDPscen) "Table for all NDC versions with multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region" +Table f46_factorTargetyear(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with multiplier for target year emissions vs 2005 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" @@ -21,12 +21,12 @@ $offdelim $onlisting ; -Parameter p46_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2005 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region"; +Parameter p46_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2005 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_GDPscen%"); display p46_factorTargetyear; -Table f46_2005shareTarget(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with 2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years" +Table f46_2005shareTarget(tall,all_regi,NDC_version,all_GDPscen) "Table for all NDC versions with 2005 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_2005shareTarget.cs3r" @@ -34,12 +34,12 @@ $offdelim $onlisting ; -Parameter p46_2005shareTarget(ttot,all_regi) "2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years"; +Parameter p46_2005shareTarget(ttot,all_regi) "2005 GHG emission share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [1]"; p46_2005shareTarget(t,all_regi) = f46_2005shareTarget(t,all_regi,"%cm_NDC_version%","%cm_GDPscen%"); display p46_2005shareTarget; -Table f46_histShare(tall,all_regi,NDC_version) "Table for all NDC versions with GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record" +Table f46_histShare(tall,all_regi,NDC_version) "Table for all NDC versions with GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record [0..1]" $offlisting $ondelim $include "./modules/46_carbonpriceRegi/NDC/input/fm_histShare.cs3r" @@ -47,12 +47,12 @@ $offdelim $onlisting ; -Parameter p46_histShare(tall,all_regi) "GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record"; +Parameter p46_histShare(tall,all_regi) "GHG emissions share of countries with quantifyable 2030 target, time dimension specifies historic record [0..1]"; p46_histShare(tall,all_regi) = f46_histShare(tall,all_regi,"%cm_NDC_version%"); display p46_histShare; -Parameter p46_BAU_reg_emi_wo_LU_bunkers(ttot,all_regi) "regional GHG emissions (without LU and bunkers) in BAU scenario" +Parameter p46_BAU_reg_emi_wo_LU_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_bunkers.cs4r" @@ -99,16 +99,16 @@ $endif.p46_netZero *** parameters for selecting NDC years -Scalar p46_ignoreNDCbefore "NDC targets before this years are ignored, for example to exclude 2030 targets" /2028/; +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" /2100/; -Scalar p46_minRatioOfCoverageToMax "only targets whose coverage is this times p46_bestNDCcoverage are considered. Use 1 for only best." /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)" /0/; +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"; -Parameter p46_distanceToOptyear(ttot,all_regi) "distance to p46_useSingleYearCloseTo to favor years in case of multiple equally good targets"; -Parameter p46_minDistanceToOptyear(all_regi) "minimal distance to p46_useSingleYearCloseTo per region"; +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_2005shareTarget(t,regi)); display p46_bestNDCcoverage; @@ -122,9 +122,9 @@ if(p46_useSingleYearCloseTo > 0, ); *** first and last NDC year as a number -Parameter p46_firstNDCyear(all_regi) "last year with NDC coverage within region"; +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"; +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; diff --git a/modules/46_carbonpriceRegi/NDC/declarations.gms b/modules/46_carbonpriceRegi/NDC/declarations.gms index a7fdc378a..1740a83dc 100644 --- a/modules/46_carbonpriceRegi/NDC/declarations.gms +++ b/modules/46_carbonpriceRegi/NDC/declarations.gms @@ -7,24 +7,24 @@ *** SOF ./modules/46_carbonpriceRegi/NDC/declarations.gms Parameter -p46_CO2eqwoLU_actual(ttot,all_regi) "actual level of regional GHG emissions in previous iteration" -p46_CO2eqwoLU_goal(ttot,all_regi) "regional NDC target level of GHG" -p46_factorRescaleCO2Tax(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets" -p46_factorRescaleCO2TaxLtd(ttot,all_regi) "multiplicative factor to rescale CO2 taxes to achieve the climate targets limited to not-so-fast adaption" -p46_factorRescaleCO2Tax_iter(iteration,ttot,all_regi) "Track the changes of p46_factorRescaleCO2Tax over the iterations" -p46_factorRescaleCO2TaxLtd_iter(iteration,ttot,all_regi) "Track the changes of p46_factorRescaleCO2TaxLimited over the iterations" -p46_vm_co2eq_iter(iteration,ttot,all_regi) "Track the changes of vm_co2eq over the iterations" -p46_taxCO2eqFirstNDCyear(all_regi) "CO2eq tax in p46_firstNDCyear" -p46_taxCO2eqLastNDCyear(all_regi) "CO2eq tax in p46_lastNDCyear" -p46_vm_CO2eq_2020(all_regi) "2020 reference emissions value for normalization of deviation from zero" -p46_taxCO2eq_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations" -p46_taxCO2eqRegi_iter(iteration,ttot,all_regi) "CO2eq tax regi tracked over iterations" -p46_taxCO2eqLast(tall,all_regi) "general carbon price in last iteration" +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(tall,all_regi) "general carbon price in last iteration [T$/GtC]" ; -Scalar p46_adjustExponent "exponent in tax adjustment process"; -Scalar p46_startInIteration "first iteration to start adapting pm_taxCO2eqRegi" / 5 /; -Scalar p46_previousYearInLoop "previous year in loop, required for linear interpolation in postsolve"; -Scalar p46_taxPreviousYearInLoop "tax of previous year in loop, required for linear interpolation in postsolve"; +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/netZero/datainput.gms b/modules/46_carbonpriceRegi/netZero/datainput.gms index 3118a5e2a..20192257e 100644 --- a/modules/46_carbonpriceRegi/netZero/datainput.gms +++ b/modules/46_carbonpriceRegi/netZero/datainput.gms @@ -7,7 +7,7 @@ *** SOF ./modules/46_carbonpriceRegi/netZero/datainput.gms p46_zeroYear = 2100; -$ifthen.p46_zeroYear "%cm_netZeroScen%" == "ENGAGE4p5_GlP" +$ifthen.p46_zeroYear "%cm_netZeroScen%" == "ELEVATE2p3" p46_zeroYear = 2200; $endif.p46_zeroYear diff --git a/modules/46_carbonpriceRegi/netZero/declarations.gms b/modules/46_carbonpriceRegi/netZero/declarations.gms index 1b4680a0e..a6db94057 100644 --- a/modules/46_carbonpriceRegi/netZero/declarations.gms +++ b/modules/46_carbonpriceRegi/netZero/declarations.gms @@ -7,21 +7,22 @@ *** SOF ./modules/46_carbonpriceRegi/netZero/declarations.gms Parameter -p46_emi_actual(all_regi) "greenhouse gas or CO2 emissions in target year" -p46_emi_2020(all_regi) "2020 reference emissions value for normalization of deviation from zero" -p46_factorRescaleCO2TaxRegi(all_regi) "factor of change for additional carbon price" -p46_taxCO2eqRegiLast(tall,all_regi) "additional carbon price to reach net-zero target in last iteration" -p46_taxCO2eqLast(tall,all_regi) "general carbon price in last iteration" -p46_factorRescaleCO2Tax(all_regi) "required change of overall tax rate to assure net-zero emission" -p46_taxCO2eq_iter(iteration,ttot,all_regi) "CO2eq tax non-regi tracked over iterations" -p46_taxCO2eqRegi_iter(iteration,ttot,all_regi) "CO2eq tax regi tracked over iterations" -p46_factorRescaleCO2TaxLtd_iter(iteration,all_regi) "Track the changes of p46_factorRescaleCO2TaxLimited over the iterations" -p46_emi_actual_iter(iteration,ttot,all_regi) "Track the changes of p46_emi_actual over the iterations" -p46_offset(all_regi) "allowed emissions in netZero year" +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(tall,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" ; -Scalar p46_zeroYear "between the netZero goal and this scalar, pm_taxCO2eqRegi linearly drops to zero" -Scalar p46_startInIteration "first iteration to start adapting pm_taxCO2eqRegi" / 10 /; +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 /; *** EOF ./modules/46_carbonpriceRegi/netZero/declarations.gms diff --git a/modules/46_carbonpriceRegi/netZero/postsolve.gms b/modules/46_carbonpriceRegi/netZero/postsolve.gms index 800301daa..e909b760a 100644 --- a/modules/46_carbonpriceRegi/netZero/postsolve.gms +++ b/modules/46_carbonpriceRegi/netZero/postsolve.gms @@ -14,8 +14,21 @@ 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%" == "ENGAGE4p5_GlP" +$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; diff --git a/modules/46_carbonpriceRegi/netZero/sets.gms b/modules/46_carbonpriceRegi/netZero/sets.gms index 3ac39df09..f200f099b 100644 --- a/modules/46_carbonpriceRegi/netZero/sets.gms +++ b/modules/46_carbonpriceRegi/netZero/sets.gms @@ -15,14 +15,14 @@ SETS 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%" == "ENGAGE4p5_GlP" +$elseif.scen "%cm_netZeroScen%" == "ELEVATE2p3" SETS - nz_reg2050(all_regi) "regions with net-zero 2050 target" / "CAZ","EUR","JPN","USA" / - nz_reg2055(all_regi) "regions with net-zero 2055 target" / "LAM","MEA","NEU","OAS" / + 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" / "SSA" / - nz_reg_CO2(all_regi) "regions with CO2, not GHG target" / "IND","OAS","NEU","SSA" / + 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' diff --git a/modules/47_regipol/none/bounds.gms b/modules/47_regipol/none/bounds.gms index 99fef8e71..32ba639b5 100644 --- a/modules/47_regipol/none/bounds.gms +++ b/modules/47_regipol/none/bounds.gms @@ -15,7 +15,7 @@ *** upper bound on capacity additions for 2025 based on near-term trends *** for now only REMIND-EU/Germany, upper bound is double the historic maximum capacity addition in 2011-2020 loop(regi$(sameAs(regi,"DEU")), - vm_deltaCap.up("2025",regi,"wind","1")=2*smax(tall$(tall.val ge 2011 and tall.val le 2020), pm_delta_histCap(tall,regi,"wind")); + 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")); ); diff --git a/modules/47_regipol/none/datainput.gms b/modules/47_regipol/none/datainput.gms index 4691e7e60..a223d565e 100644 --- a/modules/47_regipol/none/datainput.gms +++ b/modules/47_regipol/none/datainput.gms @@ -23,7 +23,7 @@ loop(ext_regi$altFeEmiFac_regi(ext_regi), $endif.altFeEmiFac *** VRE capacity factor adjustments for Germany in line with results from detailed models in ARIADNE project - loop(te$sameas(te,"wind"), + 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); diff --git a/modules/47_regipol/none/not_used.txt b/modules/47_regipol/none/not_used.txt index b352534d9..254d6d59e 100644 --- a/modules/47_regipol/none/not_used.txt +++ b/modules/47_regipol/none/not_used.txt @@ -80,3 +80,4 @@ vm_prodSe,input,not needed pm_cesdata,input,not needed pm_prodCouple,input,not needed vm_emiIndCCS,input,not needed +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/47_regipol/regiCarbonPrice/bounds.gms b/modules/47_regipol/regiCarbonPrice/bounds.gms index 7eb31a7d8..ca213fc38 100644 --- a/modules/47_regipol/regiCarbonPrice/bounds.gms +++ b/modules/47_regipol/regiCarbonPrice/bounds.gms @@ -25,7 +25,7 @@ $ifThen.tech_bounds_2025 "%cm_tech_bounds_2025%" == "on" *' 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,"wind","1")=2*smax(tall$(tall.val ge 2011 and tall.val le 2020), pm_delta_histCap(tall,regi,"wind")); + 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; ); diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index 2670a6309..1bedcd258 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -82,7 +82,7 @@ p47_taxemiMkt_init(ttot,regi,emiMkt)$(p47_taxCO2eq_ref(ttot,regi) and (NOT(p47_t loop((ttot,ttot2,ext_regi,emiMktExt,target_type_47,emi_type_47)$pm_emiMktTarget(ttot,ttot2,ext_regi,emiMktExt,target_type_47,emi_type_47), loop(regi$regi_groupExt(ext_regi,regi), loop(emiMkt$emiMktGroup(emiMktExt,emiMkt), - p47_taxemiMkt_init(t,regi,emiMkt)$(t.val gt 2020) = (20*sm_DptCO2_2_TDpGtC) + (1*sm_DptCO2_2_TDpGtC)*(t.val-2020); + p47_taxemiMkt_init(t,regi,emiMkt)$(t.val gt 2020) = (20*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC) + (1*sm_DptCO2_2_TDpGtC)*(t.val-2020); ); ); ); @@ -93,23 +93,23 @@ p47_taxemiMkt_init(ttot,regi,emiMkt)$(p47_taxCO2eq_ref(ttot,regi) and (NOT(p47_t loop(regi$(regi_groupExt(ext_regi,regi) and regi_groupExt("EUR_regi",regi)), !!second condition is necessary to support also country targets if((cm_startyear le 2010), p47_taxemiMkt_init("2010",regi,emiMkt) = 0; - p47_taxemiMkt_init("2010",regi,"ETS") = 15*sm_DptCO2_2_TDpGtC; + p47_taxemiMkt_init("2010",regi,"ETS") = 15*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC; ); if((cm_startyear le 2015), p47_taxemiMkt_init("2015",regi,emiMkt) = 0; - p47_taxemiMkt_init("2015",regi,"ETS") = 8*sm_DptCO2_2_TDpGtC; + p47_taxemiMkt_init("2015",regi,"ETS") = 8*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC; ); if((cm_startyear le 2020), p47_taxemiMkt_init("2020",regi,emiMkt) = 0; *** p47_taxemiMkt_init("2020",regi,"ETS") = 41.28*sm_DptCO2_2_TDpGtC; !! 2018 = 16.5€/tCO2, 2019 = 25€/tCO2, 2020 = 25€/tCO2, 2021 = 53.65€/tCO2, 2022 = 80€/tCO2 -> average 2020 = 40€/tCO2 -> 40*1.032 $/tCO2 = 41.28 $/t CO2 - p47_taxemiMkt_init("2020",regi,"ETS") = 30*sm_DptCO2_2_TDpGtC; + p47_taxemiMkt_init("2020",regi,"ETS") = 30*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC; *** p47_taxemiMkt_init("2020",regi,"ES") = 30*sm_DptCO2_2_TDpGtC; *** p47_taxemiMkt_init("2020",regi,"other")= 30*sm_DptCO2_2_TDpGtC; ); *** intialize EUR price trajectory after 2020 with an yearly increase of 1$/tCO2 from a base value of 30$/tCO2 when no price is available. *** p47_taxemiMkt_init(t,regi,emiMkt)$(not(p47_taxemiMkt_init(t,regi,emiMkt)) and (t.val gt 2020)) = (30*sm_DptCO2_2_TDpGtC) + (1*sm_DptCO2_2_TDpGtC)*(t.val-2020); *** intialize EUR price trajectory after 2020 with a yearly increase of 1$/tCO2 from a base value of 30$/tCO2 - p47_taxemiMkt_init(t,regi,emiMkt)$(t.val gt 2020) = (30*sm_DptCO2_2_TDpGtC) + (1*sm_DptCO2_2_TDpGtC)*(t.val-2020); + p47_taxemiMkt_init(t,regi,emiMkt)$(t.val gt 2020) = (30*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC) + (1*sm_D2005_2_D2017*sm_DptCO2_2_TDpGtC)*(t.val-2020); ); ); @@ -176,7 +176,8 @@ $offdelim loop((t,ext_regi,entyFe,entySe,sector)$f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t), loop(regi$regi_groupExt(ext_regi,regi), - pm_implicitPriceTarget(t,regi,entyFe,entySe,sector)=f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; + !! convert data from US$2005 to US$2017 + pm_implicitPriceTarget(t,regi,entyFe,entySe,sector) = sm_D2005_2_D2017 * f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; ); ); @@ -210,7 +211,8 @@ $offdelim loop((t,ext_regi,entyPe)$f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t), loop(regi$regi_groupExt(ext_regi,regi), - pm_implicitPePriceTarget(t,regi,entyPe)=f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; + !! convert data from US$2005 to US$2017 + pm_implicitPePriceTarget(t,regi,entyPe) = sm_D2005_2_D2017 * f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; ); ); @@ -251,7 +253,7 @@ loop(ext_regi$altFeEmiFac_regi(ext_regi), $endif.altFeEmiFac *** VRE capacity factor adjustments for Germany in line with results from detailed models in ARIADNE project - loop(te$sameas(te,"wind"), + 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); @@ -302,32 +304,32 @@ p47_LULUCFEmi_GrassiShift(t,regi)$(p47_EmiLULUCFCountryAcc("2020",regi)) = *PW* charge tax on PE gas,oil,coal in energy security scenario for Germany (in trUSD/TWa) to hit Ariadne energy security price trajectories $ifThen.cm_EnSecScen_price "%cm_EnSecScen_price%" == "on" - pm_tau_pe_tax("2025",regi,"pegas")$(sameAs(regi,"DEU")) = 0.32; - pm_tau_pe_tax("2030",regi,"pegas")$(sameAs(regi,"DEU")) = 0.24; - pm_tau_pe_tax("2035",regi,"pegas")$(sameAs(regi,"DEU")) = 0.2; - pm_tau_pe_tax("2040",regi,"pegas")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2045",regi,"pegas")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2050",regi,"pegas")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2055",regi,"pegas")$(sameAs(regi,"DEU")) = 0.12; - pm_tau_pe_tax("2060",regi,"pegas")$(sameAs(regi,"DEU")) = 0.08; - - pm_tau_pe_tax("2025",regi,"peoil")$(sameAs(regi,"DEU")) = 0.08; - pm_tau_pe_tax("2030",regi,"peoil")$(sameAs(regi,"DEU")) = 0.08; - pm_tau_pe_tax("2035",regi,"peoil")$(sameAs(regi,"DEU")) = 0.12; - pm_tau_pe_tax("2040",regi,"peoil")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2045",regi,"peoil")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2050",regi,"peoil")$(sameAs(regi,"DEU")) = 0.16; - pm_tau_pe_tax("2055",regi,"peoil")$(sameAs(regi,"DEU")) = 0.12; - pm_tau_pe_tax("2060",regi,"peoil")$(sameAs(regi,"DEU")) = 0.08; - - pm_tau_pe_tax("2025",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.024; - pm_tau_pe_tax("2030",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.016; - pm_tau_pe_tax("2035",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.016; - pm_tau_pe_tax("2040",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.016; - pm_tau_pe_tax("2045",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.016; - pm_tau_pe_tax("2050",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.016; - pm_tau_pe_tax("2055",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.008; - pm_tau_pe_tax("2060",regi,"pecoal")$(sameAs(regi,"DEU")) = 0.008; + pm_tau_pe_tax("2025",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.32; + pm_tau_pe_tax("2030",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.24; + pm_tau_pe_tax("2035",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.2; + pm_tau_pe_tax("2040",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2045",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2050",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2055",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2060",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + + pm_tau_pe_tax("2025",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + pm_tau_pe_tax("2030",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + pm_tau_pe_tax("2035",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2040",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2045",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2050",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2055",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2060",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + + pm_tau_pe_tax("2025",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.024; + pm_tau_pe_tax("2030",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2035",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2040",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2045",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2050",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2055",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.008; + pm_tau_pe_tax("2060",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.008; $endIf.cm_EnSecScen_price *** adapt parameters that determine the ratio of wind onshore and wind offshore installation for Germany diff --git a/modules/47_regipol/regiCarbonPrice/declarations.gms b/modules/47_regipol/regiCarbonPrice/declarations.gms index 133e131d8..730c19f73 100644 --- a/modules/47_regipol/regiCarbonPrice/declarations.gms +++ b/modules/47_regipol/regiCarbonPrice/declarations.gms @@ -62,7 +62,7 @@ $endif.emiMktTargetType pm_factorRescaleemiMktCO2Tax(ttot,ttot2,ext_regi,emiMktExt) "multiplicative tax rescale factor that rescales emiMkt carbon price from iteration to iteration to reach regipol targets [%]" p47_factorRescaleemiMktCO2Tax_iter(iteration,ttot,ttot2,ext_regi,emiMktExt) "parameter to save rescale factor across iterations for debugging purposes [%]" p47_clampedRescaleSlope_iter(iteration,ttot,ttot2,ext_regi,emiMktExt) "auxiliary parameter to save the slope value before clamping. Useful for debugging purposes [#]" - p47_dampedFactorRescaleemiMktCO2Tax_iter(iteration,ttot,ttot2,ext_regi,emiMktExt) "auxiliary parameter to save the rescale factor value before dampening. Useful for debugging purposes [#]" + p47_dampedFactorRescaleemiMktCO2Tax_iter(iteration,ttot,ttot2,ext_regi,emiMktExt) "auxiliary parameter to save the rescale factor value before dampening. Useful for debugging purposes [#]" *** Parameters necessary to define the CO2 tax curve shape p47_targetConverged(ttot,ext_regi) "boolean to store if emission target has converged [0 or 1]" diff --git a/modules/50_damages/BurkeLike/declarations.gms b/modules/50_damages/BurkeLike/declarations.gms index 2bfd91c3d..a58dd53cc 100644 --- a/modules/50_damages/BurkeLike/declarations.gms +++ b/modules/50_damages/BurkeLike/declarations.gms @@ -9,8 +9,8 @@ parameters pm_damage(tall,all_regi) "damage factor (reduces GDP)" pm_damageGrowthRate(tall,all_regi) "damage function for growth rate of GDP" pm_damageMarginal(tall,all_regi) "damage function derivative" -p50_damageFuncCoef1 "coef1 of damamge function", -p50_damageFuncCoef2 "coef2 of damamge function" +p50_damageFuncCoef1 "coef1 of damage function", +p50_damageFuncCoef2 "coef2 of damage function" ; positive variable diff --git a/modules/50_damages/KWLike/declarations.gms b/modules/50_damages/KWLike/declarations.gms index c917c5c15..956fcfdfc 100644 --- a/modules/50_damages/KWLike/declarations.gms +++ b/modules/50_damages/KWLike/declarations.gms @@ -12,10 +12,10 @@ pm_damageGrowthRate(tall,all_regi) "damage function for growth pm_damageMarginalT(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm1(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm2(tall,all_regi) "damage function derivative for KW" -p50_damageFuncCoefa1 "coef1 of damamge function", -p50_damageFuncCoefa2 "coef2 of damamge function" -p50_damageFuncCoefb1 "coef1 of damamge function", -p50_damageFuncCoefb2 "coef2 of damamge function" +p50_damageFuncCoefa1 "coef1 of damage function", +p50_damageFuncCoefa2 "coef2 of damage function" +p50_damageFuncCoefb1 "coef1 of damage function", +p50_damageFuncCoefb2 "coef2 of damage function" ; positive variable diff --git a/modules/50_damages/KWTCint/datainput.gms b/modules/50_damages/KWTCint/datainput.gms index 15f433a1d..3fd7e4ecf 100755 --- a/modules/50_damages/KWTCint/datainput.gms +++ b/modules/50_damages/KWTCint/datainput.gms @@ -52,7 +52,7 @@ pm_damageMarginalT(tall,regi) = 0; pm_damageMarginalTm1(tall,regi) = 0; pm_damageMarginalTm2(tall,regi) = 0; -*read in GDP to calculate fraction of countries in a region +*** read in GDP to calculate fraction of countries in a region table f50_countryGDP(tall,iso,all_GDPscen) "ratio country to regional GDP" $ondelim $include "./modules/50_damages/KWTCint/input/f50_gdp.cs3r" diff --git a/modules/50_damages/KWTCint/declarations.gms b/modules/50_damages/KWTCint/declarations.gms index ee2d2cd91..0b606f00c 100755 --- a/modules/50_damages/KWTCint/declarations.gms +++ b/modules/50_damages/KWTCint/declarations.gms @@ -12,10 +12,10 @@ pm_damageGrowthRate(tall,all_regi) "damage function for growth pm_damageMarginalT(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm1(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm2(tall,all_regi) "damage function derivative for KW" -p50_damageFuncCoefa1 "coef1 of damamge function", -p50_damageFuncCoefa2 "coef2 of damamge function" -p50_damageFuncCoefb1 "coef1 of damamge function", -p50_damageFuncCoefb2 "coef2 of damamge function" +p50_damageFuncCoefa1 "coef1 of damage function", +p50_damageFuncCoefa2 "coef2 of damage function" +p50_damageFuncCoefb1 "coef1 of damage function", +p50_damageFuncCoefb2 "coef2 of damage function" p50_damageFuncCoefTC0(iso) "coef0 for tropical cyclone damage function" p50_damageFuncCoefTC1(iso) "coef1 for tropical cyclone damage function" pm_damageProd(tall,all_regi) "damage from aggregate damage function" diff --git a/modules/50_damages/KW_SE/declarations.gms b/modules/50_damages/KW_SE/declarations.gms index ad04b70d7..92183ff68 100755 --- a/modules/50_damages/KW_SE/declarations.gms +++ b/modules/50_damages/KW_SE/declarations.gms @@ -16,10 +16,10 @@ pm_damageGrowthRate(tall,all_regi) "damage function for growth pm_damageMarginalT(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm1(tall,all_regi) "damage function derivative for KW" pm_damageMarginalTm2(tall,all_regi) "damage function derivative for KW" -p50_damageFuncCoefa1 "coef1 of damamge function", -p50_damageFuncCoefa2 "coef2 of damamge function" -p50_damageFuncCoefb1 "coef1 of damamge function", -p50_damageFuncCoefb2 "coef2 of damamge function" +p50_damageFuncCoefa1 "coef1 of damage function", +p50_damageFuncCoefa2 "coef2 of damage function" +p50_damageFuncCoefb1 "coef1 of damage function", +p50_damageFuncCoefb2 "coef2 of damage function" p50_se(tall,all_regi) "standard error for damages" p50_var_a1 "variance of coef1" p50_var_a2 "variance of coef2" diff --git a/modules/50_damages/KotzWenz/datainput.gms b/modules/50_damages/KotzWenz/datainput.gms index 8db5c68d5..368a741d2 100644 --- a/modules/50_damages/KotzWenz/datainput.gms +++ b/modules/50_damages/KotzWenz/datainput.gms @@ -1,4 +1,4 @@ - +*** SOF ./modules/50_damages/KotzWenz/datainput.gms table f50_countryGDP(tall,iso,all_GDPscen) "country level GDP from SSPs" $ondelim $include "./modules/50_damages/KotzWenz/input/f50_gdp.cs3r" @@ -21,3 +21,4 @@ display pm_GDPfrac; pm_GDPfrac(tall,iso)$(tall.val ge 2150) = pm_GDPfrac("2150",iso); +*** EOF ./modules/50_damages/KotzWenz/datainput.gms diff --git a/modules/50_damages/KotzWenz/declarations.gms b/modules/50_damages/KotzWenz/declarations.gms index f0d75e172..5dd033582 100644 --- a/modules/50_damages/KotzWenz/declarations.gms +++ b/modules/50_damages/KotzWenz/declarations.gms @@ -1,3 +1,4 @@ +*** SOF ./modules/50_damages/KotzWenz/declarations.gms Parameters pm_GDPfrac(tall,iso) "GDP fraction of a country in its region" p50_damageIsoPerc(tall,iso,percentile) "damage factor for country and bootstrapping" @@ -10,3 +11,4 @@ positive variable vm_damageFactor(ttot,all_regi) "damage factor reducing GDP" vm_damageProdFactor(ttot,all_regi,all_in) "damage factor reducing production factors" ; +*** EOF ./modules/50_damages/KotzWenz/declarations.gms diff --git a/modules/50_damages/KotzWenz/postsolve.gms b/modules/50_damages/KotzWenz/postsolve.gms index c371c96f7..21c8dd90d 100644 --- a/modules/50_damages/KotzWenz/postsolve.gms +++ b/modules/50_damages/KotzWenz/postsolve.gms @@ -1,4 +1,4 @@ - +*** SOF ./modules/50_damages/KotzWenz/postsolve.gms execute "Rscript run_KotzWenz_damages.R" execute_loadpoint 'pm_KotzWenz_damageIso' p50_damageIsoPerc=pm_damageIso; execute_loadpoint 'pm_KotzWenz_damageMarginalIso' p50_damageMarginalIsoPerc=pm_damageMarginalIso; @@ -13,4 +13,4 @@ pm_damage(tall,regi)$(tall.val gt 2020 and tall.val le 2300) = ; display pm_damage,pm_damageMarginal; - +*** EOF ./modules/50_damages/KotzWenz/postsolve.gms diff --git a/modules/50_damages/KotzWenz/sets.gms b/modules/50_damages/KotzWenz/sets.gms index daa7834a1..12b45ef39 100644 --- a/modules/50_damages/KotzWenz/sets.gms +++ b/modules/50_damages/KotzWenz/sets.gms @@ -1,3 +1,4 @@ +*** SOF ./modules/50_damages/KotzWenz/sets.gms SETS nboot "boot strapping realisations of damage function parameters" / @@ -9,3 +10,4 @@ percentile "possible percentiles of damage function as coded in the R script" / ; +*** EOF ./modules/50_damages/KotzWenz/sets.gms diff --git a/modules/50_damages/TC/datainput.gms b/modules/50_damages/TC/datainput.gms index 092ba1214..a4a5878f9 100755 --- a/modules/50_damages/TC/datainput.gms +++ b/modules/50_damages/TC/datainput.gms @@ -33,18 +33,17 @@ p50_damageFuncCoefTC1(iso) = f50_TCtasK(iso,"%cm_TCspec%"); display p50_damageFuncCoefTC0; -*initialize +*** initialize pm_damage(tall,regi) = 1; -*read in GDP to calculate GDP fraction of countries in a region and convert to MER +*** read in GDP to calculate GDP fraction of countries in a region and convert to MER table f50_countryGDP(tall,iso,all_GDPscen) "ratio of country to regional GDP" $ondelim $include "./modules/50_damages/TC/input/f50_gdp.cs3r" $offdelim ; - -*calculate and interpolate country GDP fraction of regional GDP for SSP2 scenario, country GDP is in PPP, regional GDP in trl MER! +*** calculate and interpolate country GDP fraction of regional GDP for SSP2 scenario, country GDP is in PPP, regional GDP in trl MER! pm_GDPfrac(tall,iso)=f50_countryGDP(tall,iso,"gdp_SSP2")/1000000/sum(regi2iso(regi,iso),pm_gdp(tall,regi)/pm_shPPPMER(regi)); loop(ttot$(ttot.val ge 2005), diff --git a/modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms b/modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms index 89a7ccaf7..5f967cc47 100644 --- a/modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms +++ b/modules/51_internalizeDamages/KotzWenzCPreg/datainput.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/51_internalizeDamages/KotzWenzItr/datainput.gms +*** SOF ./modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms * satisfy dependencies $ifi not %damages% == 'KotzWenz' abort "module internalizeDamages=KotzWenzItr requires module damages=KotzWenz"; @@ -17,4 +17,4 @@ p51_scc(tall,regi)$(tall.val ge 2025 and tall.val le 2150) = p51_scc("2025",regi pm_taxCO2eqSCC(ttot,regi)$(ttot.val ge 2010) = p51_scc(ttot,regi) * sm_c_2_co2/1000; -*** EOF ./modules/51_internalizeDamages/KotzWenzItr/datainput.gms +*** EOF ./modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms diff --git a/modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms b/modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms index 05778c596..cd453f902 100644 --- a/modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms +++ b/modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms @@ -5,7 +5,7 @@ *** | REMIND License Exception, version 1.0 (see LICENSE file). *** | Contact: remind@pik-potsdam.de -*** SOF ./modules/51_internalizeDamages/KotzWenzItr/postsolve.gms +*** SOF ./modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms p51_sccLastItr(tall,regi) = p51_scc(tall,regi); @@ -44,6 +44,6 @@ pm_sccConvergenceMaxDeviation=0; pm_sccConvergenceMaxDeviation = 100 * smax(regi,smax(tall$(tall.val ge cm_startyear and tall.val lt 2150),abs(p51_scc(tall,regi)/max(p51_sccLastItr(tall,regi),1e-8) - 1) )); display pm_sccConvergenceMaxDeviation; -*** EOF ./modules/51_internalizeDamages/KotzWenzItr/postsolve.gms +*** EOF ./modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms diff --git a/modules/51_internalizeDamages/KotzWenzCPreg/realization.gms b/modules/51_internalizeDamages/KotzWenzCPreg/realization.gms index 40a633bd4..9af9ede41 100644 --- a/modules/51_internalizeDamages/KotzWenzCPreg/realization.gms +++ b/modules/51_internalizeDamages/KotzWenzCPreg/realization.gms @@ -1,6 +1,9 @@ +*** SOF ./modules/51_internalizeDamages/KotzWenzCPreg/realization.gms *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "declarations" $include "./modules/51_internalizeDamages/KotzWenzCPreg/declarations.gms" $Ifi "%phase%" == "datainput" $include "./modules/51_internalizeDamages/KotzWenzCPreg/datainput.gms" $Ifi "%phase%" == "postsolve" $include "./modules/51_internalizeDamages/KotzWenzCPreg/postsolve.gms" *######################## R SECTION END (PHASES) ############################### + +*** EOF ./modules/51_internalizeDamages/KotzWenzCPreg/realization.gms diff --git a/modules/70_water/heat/output.gms b/modules/70_water/heat/output.gms index 93e6419dc..9c04e3a4a 100644 --- a/modules/70_water/heat/output.gms +++ b/modules/70_water/heat/output.gms @@ -234,7 +234,7 @@ p70_water_output(ttot,regi,"Water Consumption|Electricity|Solar; km3/yr;") = ; p70_water_output(ttot,regi,"Water Consumption|Electricity|Wind; km3/yr;") = - sum(te_elcool70$(sameas(te_elcool70,"wind")), + sum(te_elcool70$(sameas(te_elcool70,"windon")), o70_water_consumption(ttot,regi,te_elcool70)) ; @@ -426,7 +426,7 @@ p70_water_output(ttot,regi,"Water Withdrawal|Electricity|Solar; km3/yr;") = ; p70_water_output(ttot,regi,"Water Withdrawal|Electricity|Wind; km3/yr;") = - sum(te_elcool70$(sameas(te_elcool70,"wind")), + sum(te_elcool70$(sameas(te_elcool70,"windon")), o70_water_withdrawal(ttot,regi,te_elcool70)) ; diff --git a/modules/80_optimization/nash/declarations.gms b/modules/80_optimization/nash/declarations.gms index af3f809e0..5562dba7f 100644 --- a/modules/80_optimization/nash/declarations.gms +++ b/modules/80_optimization/nash/declarations.gms @@ -12,27 +12,27 @@ p80_etaXp(all_enty) "Parameter governing price anticipat *LB* parameters for ajustments between different iterations -p80_etaLT(all_enty) "long term price ajustment elasticity " -p80_etaST(all_enty) "short term price ajustment elasticity" +p80_etaLT(all_enty) "long term price ajustment elasticity " +p80_etaST(all_enty) "short term price ajustment elasticity" *AJS* adjustment costs between iterations p80_etaAdj(all_enty) "Adjustment costs for changes of trade pattern between iterations" ***prices -p80_pvp_itr(ttot,all_enty,iteration) "Price on commodity markets per iteration", +p80_pvp_itr(ttot,all_enty,iteration) "Price on commodity markets per iteration", p80_pvpFallback(ttot,all_enty) "Helper parameter. Price path from input/prices_NASH.inc. Only used if reading prices from gdx fails.", -p80_normalizeLT(all_enty) "Aggregated intertemporal market volume", +p80_normalizeLT(all_enty) "Aggregated intertemporal market volume", p80_normalize0(ttot,all_regi,all_enty) "Normalization parameter for market volume" ***parameter containing the respective level values from last iteration (the first set of values taken from gdx in the first iteration, respectively) p80_Mport0(tall,all_regi,all_enty) "Imports in last iteration" -p80_surplus(tall,all_enty,iteration) "Surplus on commodity market", -p80_defic_trade(all_enty) "Surplus in monetary terms over all times on commodity markets [trillion US$2005]", -p80_defic_sum(iteration) "Surplus in monetary terms over all times on all commodity markets combined [trillion US$2005] (NOTE: to compare this number with the Negishi defic_sum, divide by around 100)", +p80_surplus(tall,all_enty,iteration) "Surplus on commodity market", +p80_defic_trade(all_enty) "Surplus in monetary terms over all times on commodity markets [trillion US$2017]", +p80_defic_sum(iteration) "Surplus in monetary terms over all times on all commodity markets combined [trillion US$2017] (NOTE: to compare this number with the Negishi defic_sum, divide by around 100)", p80_defic_sum_rel(iteration) "Surplus monetary value over all times on all commodity markets combined, normalized to consumption [%]", -*LB* diagnostic parameters +*LB* diagnostic parameters p80_etaLT_correct(all_enty,iteration) "long term price correction factor in percent" p80_etaST_correct(tall,all_enty,iteration) "short term price correction factor in percent" @@ -42,12 +42,12 @@ o80_trackSurplusSign(ttot,all_enty,iteration) "auxiliary parameter t o80_SurplusOverTolerance(ttot,all_enty,iteration) "auxiliary parameter to track in which iterations which item surpassed the tolerance (positive/negative)" -p80_surplusMax_iter(all_enty,iteration,tall) "Diagnostics for Nash: Worst residual market surplus until given year, absolute value. [Units: TWa, trillion Dollar, GtC]" -p80_surplusMax2100(all_enty) "Worst residual market surplus until 2100, absolute value. [Units: TWa, trillion Dollar, GtC]" +p80_surplusMax_iter(all_enty,iteration,tall) "Diagnostics for Nash: Worst residual market surplus until given year, absolute value. [TWa, trillion Dollar, GtC]" +p80_surplusMax2100(all_enty) "Worst residual market surplus until 2100, absolute value. [TWa, trillion Dollar, GtC]" p80_surplusMaxRel(all_enty,iteration,tall) "Diagnostics for Nash: Worst residual market surplus until given year, in per cent." p80_surplusMaxTolerance(all_enty) "maximum tolerable residual value of absolute market surplus in 2100." -p80_taxrev0(tall,all_regi) "vm_taxrev from last iteration" +p80_taxrev0(tall,all_regi) "vm_taxrev from last iteration" p80_taxrev_agg(tall,iteration) "vm_taxrev globally from last iteration" @@ -65,23 +65,23 @@ p80_curracc(ttot,all_regi) "current account" pm_cumEff(tall,all_regi,all_in) "parameter for spillover externality (aggregated productivity level)" -p80_PriceChangePriceAnticipReg(ttot,all_enty,all_regi) "Price change of a trade good due to the price anticipation effect. [Unit: Percent]" -o80_PriceChangePriceAnticipReg(ttot,all_enty,all_regi) "only for display: Price change of a trade good due to price anticipation. If nothing is displayed, all values are <0.1%. [Unit: Percent, rounded to 0.1%]" -o80_PriceChangePriceAnticipRegMaxIter(ttot,iteration) "only for display: Largest absolute value of o80_PriceChangePriceAnticipReg until 2100/2150, tracked over iteration. [Unit: Percent, rounded to 0.1%]" -p80_DevPriceAnticipReg(ttot,all_enty,all_regi) "Deviation of the yearly monetary export/import expenditure due to price change anticipation effect. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlob(ttot,all_enty) "Global sum of p80_DevPriceAnticipReg. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlobIter(ttot,all_enty,iteration) "Track p80_DevPriceAnticipGlob over iterations. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlobAll(ttot) "p80_DevPriceAnticipGlob summed over all trade goods. [Units: trillion Dollar]" -p80_DevPriceAnticipGlobMax(ttot,all_enty) "Max of p80_DevPriceAnticipGlob until the given year. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlobAllMax(ttot) "Max of p80_DevPriceAnticipGlobAll until the given year. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlobMax2100Iter(all_enty,iteration) "Track the 2100 value of p80_DevPriceAnticipGlobMax over iterations. [Unit: trillion Dollar]" -p80_DevPriceAnticipGlobAllMax2100Iter(iteration) "Track the 2100 value of p80_DevPriceAnticipGlobAllMax over iterations. [Unit: trillion Dollar]" +p80_PriceChangePriceAnticipReg(ttot,all_enty,all_regi) "Price change of a trade good due to the price anticipation effect. [Percent]" +o80_PriceChangePriceAnticipReg(ttot,all_enty,all_regi) "only for display: Price change of a trade good due to price anticipation. If nothing is displayed, all values are <0.1%. [Percent, rounded to 0.1%]" +o80_PriceChangePriceAnticipRegMaxIter(ttot,iteration) "only for display: Largest absolute value of o80_PriceChangePriceAnticipReg until 2100/2150, tracked over iteration. [Percent, rounded to 0.1%]" +p80_DevPriceAnticipReg(ttot,all_enty,all_regi) "Deviation of the yearly monetary export/import expenditure due to price change anticipation effect. [trillion Dollar]" +p80_DevPriceAnticipGlob(ttot,all_enty) "Global sum of p80_DevPriceAnticipReg. [trillion Dollar]" +p80_DevPriceAnticipGlobIter(ttot,all_enty,iteration) "Track p80_DevPriceAnticipGlob over iterations. [trillion Dollar]" +p80_DevPriceAnticipGlobAll(ttot) "p80_DevPriceAnticipGlob summed over all trade goods. [trillion Dollar]" +p80_DevPriceAnticipGlobMax(ttot,all_enty) "Max of p80_DevPriceAnticipGlob until the given year. [trillion Dollar]" +p80_DevPriceAnticipGlobAllMax(ttot) "Max of p80_DevPriceAnticipGlobAll until the given year. [trillion Dollar]" +p80_DevPriceAnticipGlobMax2100Iter(all_enty,iteration) "Track the 2100 value of p80_DevPriceAnticipGlobMax over iterations. [trillion Dollar]" +p80_DevPriceAnticipGlobAllMax2100Iter(iteration) "Track the 2100 value of p80_DevPriceAnticipGlobAllMax over iterations. [trillion Dollar]" *EMIOPT relevant p80_eoMargPermBudg(all_regi) "marginal of permit budget restriction" -p80_eoMargEmiCum(all_regi) "marginal of cumulative emissions" +p80_eoMargEmiCum(all_regi) "marginal of cumulative emissions" -p80_eoMargAverage "global average of marginals from nash budget equation" +p80_eoMargAverage "global average of marginals from nash budget equation" p80_eoMargDiff(all_regi) "scaled deviation of regional marginals from global average" p80_eoDeltaEmibudget "total change in permit budget" p80_eoEmiMarg(all_regi) "weighted marginal utility of emissions" @@ -97,20 +97,20 @@ p80_SolNonOpt(all_regi) "solve status" pm_fuExtrForeign(ttot,all_regi,all_enty,rlf) "foreign fuel extraction" -p80_convNashTaxrev_iter(iteration,ttot,all_regi) "deviation of tax revenue relative to GDP per iteration, thus 0.01 means 1 percent" +p80_convNashTaxrev_iter(iteration,ttot,all_regi) "deviation of tax revenue relative to GDP per iteration, thus 0.01 means 1 percent [1]" p80_convNashObjVal_iter(iteration,all_regi) "deviation of objective value to objective value from last iteration per iteration" p80_fadeoutPriceAnticip_iter(iteration) "Helper parameter, describes fadeout of price anticipation during iterations per iteration" $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_dev_iter(iteration) "actual level of global cumulated emissions budget divided by target budget per iteration" -p80_sccConvergenceMaxDeviation_iter(iteration) "max deviation of SCC from last iteration [percent] per iteration" +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" -; +; positive variable *AJS* Adjustment costs for Nash trade algorithm. Only non-zero in the Nash_test realization of 80_optimization module. -vm_costAdjNash(ttot,all_regi) "Adjustment costs for deviation from the trade structure of the last iteration." +vm_costAdjNash(ttot,all_regi) "Adjustment costs for deviation from the trade structure of the last iteration." ; equations @@ -119,7 +119,7 @@ q80_costAdjNash(ttot,all_regi) "calculate Nash adjustment costs (of q80_budgetPermRestr(all_regi) "constraints regional permit budget to given regional emission budget"; scalars -***convergence criteria. if met, the optimization is stopped. Feel free to adjust these to your needs. Denote maximum tolerable deviation from market clearance.(the one for goods is given in million US$2005/yr, the resources in EJ/yr) +***convergence criteria. if met, the optimization is stopped. Feel free to adjust these to your needs. Denote maximum tolerable deviation from market clearance.(the one for goods is given in million US$2017/yr, the resources in EJ/yr) sm_fadeoutPriceAnticip "Helper parameter, describes fadeout of price anticipation during iterations" s80_fadeoutPriceAnticipStartingPeriod "Helper parameter, denotes iteration in which price anticipation fadeout starts" s80_dummy "dummy scalar" diff --git a/modules/80_optimization/nash/sets.gms b/modules/80_optimization/nash/sets.gms index e03b0a77a..797318379 100644 --- a/modules/80_optimization/nash/sets.gms +++ b/modules/80_optimization/nash/sets.gms @@ -9,18 +9,14 @@ sets learnte_dyn80(all_te) "learnte for nash" / - wind "wind onshore power converters" -$IFTHEN.WindOff %cm_wind_offshore% == "1" - windoff "wind offshore power converters" -$ENDIF.WindOff spv "solar photovoltaic" csp "concentrating solar power" + windon "wind onshore power converters" + windoff "wind offshore power converters" storspv "storage technology for spv" - storwind "storage technology for wind onshore" -$IFTHEN.WindOff %cm_wind_offshore% == "1" - storwindoff "storage technology for wind offshore" -$ENDIF.WindOff storcsp "storage technology for csp" + storwindon "storage technology for wind onshore" + storwindoff "storage technology for wind offshore" /, solveinfo80 "Nash solution stats" diff --git a/modules/80_optimization/negishi/declarations.gms b/modules/80_optimization/negishi/declarations.gms index 28b510b9e..fa2171061 100644 --- a/modules/80_optimization/negishi/declarations.gms +++ b/modules/80_optimization/negishi/declarations.gms @@ -25,7 +25,7 @@ pm_fuExtrForeign(ttot,all_regi,all_enty,rlf) "foreign fuel extraction" positive variable *AJS* Adjustment costs for Nash trade algorithm. Only non-zero in the Nash_test realization of 80_optimization module. -vm_costAdjNash(ttot,all_regi) "Adjustment costs for deviation from the trade structure of the last iteration." +vm_costAdjNash(ttot,all_regi) "Adjustment costs for deviation from the trade structure of the last iteration." ; equations diff --git a/modules/81_codePerformance/module.gms b/modules/81_codePerformance/module.gms index 101913730..c91c11f37 100644 --- a/modules/81_codePerformance/module.gms +++ b/modules/81_codePerformance/module.gms @@ -9,7 +9,7 @@ *' @title Codeperformance *' *' @description The realization codeperformance can be used to test the performance of the model. test code performance: noumerous (30) succesive runs -*' performed in a triangle, tax0, tax30, tax150, all growing exponentially, therefore use carbonprice|exponential, c_emiscen|9, and cm_co2_tax_2020|0. +*' performed in a triangle, tax0, tax30, tax150, all growing exponentially. *' *' @authors Anastasis Giannousakis, Robert Pietzcker diff --git a/modules/81_codePerformance/on/presolve.gms b/modules/81_codePerformance/on/presolve.gms index 932d348ce..1efeb9895 100644 --- a/modules/81_codePerformance/on/presolve.gms +++ b/modules/81_codePerformance/on/presolve.gms @@ -9,26 +9,15 @@ LOOP(run $(ord(run)<(c81_runs+1)), IF(MOD(ord(run)+2,3) EQ 0, -cm_co2_tax_2020 = 0; +cm_co2_tax_startyear = 0; ELSEIF MOD(ord(run)+2,3) EQ 1, -cm_co2_tax_2020 = 30; +cm_co2_tax_startyear = 30; ELSEIF MOD(ord(run)+2,3) EQ 2, -cm_co2_tax_2020 = 150; +cm_co2_tax_startyear = 150; ); -*** CO2 tax level is calculated at a 5% exponential increase from the 2020 tax level exogenously defined - -*GL: tax path in 10^12$/GtC = 1000 $/tC -*** according to Asian Modeling Excercise tax case setup, 30$/t CO2eq in 2020 = 0.110 k$/tC - -if(cm_co2_tax_2020 lt 0, -abort "please choose a valid cm_co2_tax_2020" -elseif cm_co2_tax_2020 ge 0, -*** cocnvert tax value from $/t CO2eq to T$/GtC -pm_taxCO2eq("2020",regi)= cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC; -); - -pm_taxCO2eq(ttot,regi)$(ttot.val ge 2005) = pm_taxCO2eq("2020",regi)*cm_co2_tax_growth**(ttot.val-2020); +*** Globally uniform, exponentially increasing carbonprice starting from the tax level (exogenously defined above) in the start year +pm_taxCO2eq(t,regi) = cm_co2_tax_startyear * sm_DptCO2_2_TDpGtC * cm_co2_tax_growth**(t.val-cm_startyear); pm_taxCO2eq("2005",regi)=0; display pm_taxCO2eq; diff --git a/modules/81_codePerformance/on/realization.gms b/modules/81_codePerformance/on/realization.gms index af53d3263..ddc9aac29 100644 --- a/modules/81_codePerformance/on/realization.gms +++ b/modules/81_codePerformance/on/realization.gms @@ -8,7 +8,6 @@ *' @description BAU, tax30, and tax150 runs are set in a loop of 30 runs in total. -*' The realization needs the realization "exogenous" of the 45_carbonprice module *####################### R SECTION START (PHASES) ############################## $Ifi "%phase%" == "sets" $include "./modules/81_codePerformance/on/sets.gms" diff --git a/scripts/input/create_input_for_45_carbonprice_exogenous.R b/scripts/input/create_input_for_45_carbonprice_exogenous.R index 30a97ce83..21b97acde 100644 --- a/scripts/input/create_input_for_45_carbonprice_exogenous.R +++ b/scripts/input/create_input_for_45_carbonprice_exogenous.R @@ -26,7 +26,7 @@ create_input_for_45_carbonprice_exogenous<-function(gdx){ # ---- Convert data ---- #select right temporal/variable scope - pr <- pr[,,c( "Price|Carbon (US$2005/t CO2)")] + pr <- pr[,,c( "Price|Carbon (US$2017/t CO2)")] # convert from $/tCO2 to $/kgC (or T$/GtC) pr <- pr / 1000 * 44/12 # remove GLO region if it exists @@ -46,7 +46,7 @@ create_input_for_45_carbonprice_exogenous<-function(gdx){ cat("*= generated with: =*\n", file = p_fpath, append = TRUE) cat("*= scripts/input/create_input_for_45_carbonprice_exogenous.R =*\n", file = p_fpath, append = TRUE) cat(paste0("*= from file: ", normalizePath(gdx), " =*\n"), file = p_fpath, append = TRUE) - cat("*= unit: 10^12 US$(2005)/GtC =*\n", file = p_fpath, append = TRUE) + cat("*= unit: 10^12 US$(2017)/GtC =*\n", file = p_fpath, append = TRUE) cat("*=============================================================*\n", file = p_fpath, append = TRUE) cat("\n", file = p_fpath, append = TRUE) diff --git a/scripts/output/comparison/bioenergy_SSP.R b/scripts/output/comparison/bioenergy_SSP.R index 0f92ad969..f4dd0c10d 100644 --- a/scripts/output/comparison/bioenergy_SSP.R +++ b/scripts/output/comparison/bioenergy_SSP.R @@ -363,7 +363,7 @@ if(length(fulldim(dyntax)[[2]][[3]])>1) dyntax <- collapseNames(dyntax) # only i title=paste0("Demand-dependent bioenergy tax")) ############### READ DATA: PEBIOLC MARGINAL ################################ - marginal <- read_all(outputdirs,read.reportEntry,entry="Price|Biomass|Primary Level (US$2005/GJ)",as.list=FALSE) + marginal <- read_all(outputdirs,read.reportEntry,entry="Price|Biomass|Primary Level (US$2017/GJ)",as.list=FALSE) marginal <- collapseNames(marginal,collapsedim=2) if(length(fulldim(marginal)[[2]][[3]])>1) marginal <- collapseNames(marginal) # only if there is more than one scenario, otherwise keep single scenarioname @@ -396,7 +396,7 @@ if(length(fulldim(dyntax)[[2]][[3]])>1) dyntax <- collapseNames(dyntax) # only i text=element_text(size=txtsiz),axis.text.x=element_text(size=txtsiz)) ############### READ DATA: STATIC BIOENERGY TAX ################################ -ptax <- read_all(outputdirs,read.reportEntry,entry="Price|Biomass|Bioenergy tax (US$2005/GJ)",as.list=FALSE) +ptax <- read_all(outputdirs,read.reportEntry,entry="Price|Biomass|Bioenergy tax (US$2017/GJ)",as.list=FALSE) ptax <- collapseNames(ptax,collapsedim=2) if(length(fulldim(ptax)[[2]][[3]])>1) ptax <- collapseNames(ptax) # only if there is more than one scenario, otherwise keep single scenarioname @@ -405,7 +405,7 @@ if(length(fulldim(ptax)[[2]][[3]])>1) ptax <- collapseNames(ptax) # only if ther y_limreg <- c(0,max(ptax[,y,]["GLO",,,invert=TRUE])) p4t <- magpie2ggplot2(ptax_all[r,y,],geom='line',group=NULL, - ylab='US$2005/GJ',color='Data2',linetype="Data1", + ylab='US$2017/GJ',color='Data2',linetype="Data1", scales='fixed',show_grid=TRUE,ncol=4,text_size=txtsiz,ylim=y_limreg, title=paste0("Purpose grown bioenergy price: tax only")) # Price|Biomass|Primary Level diff --git a/scripts/output/comparison/plot_compare_iterations.R b/scripts/output/comparison/plot_compare_iterations.R index 151dcd953..c4220f1f2 100644 --- a/scripts/output/comparison/plot_compare_iterations.R +++ b/scripts/output/comparison/plot_compare_iterations.R @@ -68,7 +68,7 @@ plot_iterations <- function(runname) { message("Reading ", length(report_path), " REMIND reports.") reports <- NULL for (rep in report_path) { - reports <- mbind(reports, read.report(rep, as.list=FALSE)) #[,,"Price|Carbon (US$2005/t CO2)"]) + reports <- mbind(reports, read.report(rep, as.list=FALSE)) #[,,"Price|Carbon (US$2017/t CO2)"]) } # ---- Settings ---- @@ -83,7 +83,7 @@ plot_iterations <- function(runname) { # ---- Plot: MAgPIE prices for purpose grown bioenergy ---- - var <- "Internal|Price|Biomass|MAgPIE (US$2005/GJ)" + var <- "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" p_price_mag <- myplot(reports[r, years, var], ylab = "$/GJ", title = paste(runname, var, sep = "\n")) @@ -91,7 +91,7 @@ plot_iterations <- function(runname) { # ---- Plot: MAgPIE co2luc ---- # core/datainput.gms - # $if %cm_MAgPIE_coupling% == "on" pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2005) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpie); + # $if %cm_MAgPIE_coupling% == "on" pm_macBaseMagpie(ttot,regi,emiMacMagpie(enty))$(ttot.val ge 2017) = f_macBaseMagpie_coupling(ttot,regi,emiMacMagpie); # core/presolve.gms # vm_macBase.fx(ttot,regi,"co2luc") = pm_macBaseMagpie(ttot,regi,"co2luc")-p_macPolCO2luc(ttot,regi); # core/equations.gms @@ -153,7 +153,7 @@ plot_iterations <- function(runname) { # ---- Plot: REMIND co2 price ---- - var <- "Price|Carbon (US$2005/t CO2)" + var <- "Price|Carbon (US$2017/t CO2)" title <- paste(runname, var, sep = "\n") p_price_carbon <- myplot(reports[r, years, var], ylab = "$/tCO2", title = title) diff --git a/scripts/output/comparison/policyCosts.R b/scripts/output/comparison/policyCosts.R index ec5f39fdc..f82861b77 100644 --- a/scripts/output/comparison/policyCosts.R +++ b/scripts/output/comparison/policyCosts.R @@ -140,28 +140,28 @@ report_transfers <- function(pol_mif, ref_mif) { message("Adding ", crayon::green("transfers"), " to mif file") # Get gdploss - gdploss <- pol_run[[1]][["REMIND"]][, , "Policy Cost|GDP Loss (billion US$2005/yr)"] + gdploss <- pol_run[[1]][["REMIND"]][, , "Policy Cost|GDP Loss (billion US$2017/yr)"] # Add rel gdploss (not in percent) gdploss_rel <- magclass::setNames(pol_run[[1]][["REMIND"]][, , "Policy Cost|GDP Loss|Relative to Reference GDP (%)"] / 100, "Policy Cost|GDP Loss|Relative to Reference GDP") # Get gdp - gdp_ref <- ref_run[[1]][["REMIND"]][ , , "GDP|MER (billion US$2005/yr)"] - gdp_policy <- pol_run[[1]][["REMIND"]][, , "GDP|MER (billion US$2005/yr)"] + gdp_ref <- ref_run[[1]][["REMIND"]][ , , "GDP|MER (billion US$2017/yr)"] + gdp_policy <- pol_run[[1]][["REMIND"]][, , "GDP|MER (billion US$2017/yr)"] # Calculate difference to global rel gdploss delta_gdploss <- gdploss_rel[, , ] - gdploss_rel["GLO", , ] # Calculate transfer required to equalize rel gdploss across regions delta_transfer <- magclass::setNames(delta_gdploss * gdp_ref, - "Policy Cost|Transfers equal effort (billion US$2005/yr)") + "Policy Cost|Transfers equal effort (billion US$2017/yr)") delta_transfer_rel <- 100 * magclass::setNames(delta_transfer / gdp_ref, "Policy Cost|Transfers equal effort|Relative to Reference GDP (%)") # Calculate new gdp variables gdp_withtransfers <- magclass::setNames(gdp_policy + delta_transfer, - "GDP|MER|w/ transfers equal effort (billion US$2005/yr)") + "GDP|MER|w/ transfers equal effort (billion US$2017/yr)") gdploss_withtransfers <- magclass::setNames(gdp_ref - gdp_withtransfers, - "Policy Cost|GDP Loss|w/ transfers equal effort (billion US$2005/yr)") + "Policy Cost|GDP Loss|w/ transfers equal effort (billion US$2017/yr)") gdploss_withtransfers_rel <- 100 * magclass::setNames(gdploss_withtransfers/gdp_ref, "Policy Cost|GDP Loss|w/ transfers equal effort|Relative to Reference GDP (%)") diff --git a/scripts/output/export/xlsx_IIASA.R b/scripts/output/export/xlsx_IIASA.R index 772c4d17f..265b9f610 100644 --- a/scripts/output/export/xlsx_IIASA.R +++ b/scripts/output/export/xlsx_IIASA.R @@ -34,7 +34,11 @@ lucode2::readArgs("project") projects <- list( ELEVATE = list(mapping = c("NAVIGATE", "ELEVATE"), - iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx"), + iiasatemplate = "https://files.ece.iiasa.ac.at/elevate/elevate-template.xlsx", + removeFromScen = "C_|eoc"), + ELEVATE_coupled = list(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"), @@ -134,17 +138,19 @@ withCallingHandlers({ # piping messages to logFile for (mif in mif_path) { thismifdata <- read.quitte(mif, factors = FALSE) # remove -rem-xx and mag-xx from scenario names - thismifdata$scenario <- gsub("-(rem|mag)-[0-9]{1,2}", "", thismifdata$scenario) + thismifdata$scenario <- gsub("^C_|-(rem|mag)-[0-9]{1,2}$", "", thismifdata$scenario) mifdata <- rbind(mifdata, thismifdata) } - mifdata$scenario <- gsub("^C_", "", mifdata$scenario) - message("Old names: ", paste(sort(unique(mifdata$scenario)), collapse = ", ")) - for (i in names(renameScen)) { - message("Rename scenario: ", i, " -> ", renameScen[[i]]) - mifdata$scenario[i == mifdata$scenario] <- renameScen[[i]] + # rename scenarios + if (! is.null(renameScen)) { + message("Old names: ", paste(sort(unique(mifdata$scenario)), collapse = ", ")) + for (i in names(renameScen)) { + message("Rename scenario: ", i, " -> ", renameScen[[i]]) + mifdata$scenario[i == mifdata$scenario] <- renameScen[[i]] + } + message("New names: ", paste(sort(unique(mifdata$scenario)), collapse = ", ")) } - message("New names: ", paste(sort(unique(mifdata$scenario)), collapse = ", ")) message("# ", length(temporarydelete), " variables are in the list to be temporarily deleted, ", length(unique(mifdata$variable[mifdata$variable %in% temporarydelete])), " were deleted.") diff --git a/scripts/output/single/checkProjectSummations.R b/scripts/output/single/checkProjectSummations.R index d2ff53bd1..7a71ccd2f 100644 --- a/scripts/output/single/checkProjectSummations.R +++ b/scripts/output/single/checkProjectSummations.R @@ -28,56 +28,57 @@ options(width = 160) absDiff <- 0.00001 relDiff <- 0.01 -# emi variables where bunkers are added only to the World level -gases <- c("BC", "CO", "CO2", "Kyoto Gases", "NOx", "OC", "Sulfur", "VOC") -vars <- c("", "|Energy", "|Energy Demand|Transportation", "|Energy and Industrial Processes", - "|Energy|Demand", "|Energy|Demand|Transportation") -gasvars <- expand.grid(gases, vars, stringsAsFactors = FALSE) -bunkervars <- unique(sort(c("Gross Emissions|CO2", paste0("Emissions|", gasvars$Var1, gasvars$Var2)))) +sources <- paste0("RT", if (any(grepl("^MAgPIE", levels(mifdata$model)))) "M") +message("\n### Check existence of variables in mappings.") +missingVariables <- checkMissingVars(mifdata, TRUE, sources) +if (length(missingVariables) > 0) message("Check piamInterfaces::variableInfo('variablename') etc.") -for (mapping in c("AR6", "NAVIGATE")) { - message("\n### Check project summations for ", mapping) - mappingVariables <- mapping %>% - getMappingVariables(paste0("RT", if (any(grepl("^MAgPIE", levels(mifdata$model)))) "M")) %>% - unique() %>% - deletePlus() - computedVariables <- unique(paste0(deletePlus(mifdata$variable), " (", gsub("^$", "unitless", mifdata$unit), ")")) - missingVariables <- sort(setdiff(mappingVariables, computedVariables)) - if (length(missingVariables) > 0) { - message("# The following ", length(missingVariables), " variables are expected in the piamInterfaces package ", - "for mapping ", mapping, ", but cannot be found in the reporting:\n- ", - paste(missingVariables, collapse = ",\n- "), "\n") +checkMappings <- list( # list(mappings, summationsFile, skipBunkers) + list(c("NAVIGATE", "ELEVATE"), "NAVIGATE", FALSE), + list("ScenarioMIP", NULL, FALSE) +) + +for (i in seq_along(checkMappings)) { + mapping <- checkMappings[[i]][[1]] + message("\n### Check project summations for ", paste(mapping, collapse = ", ")) + # checkMissingVars + checkMissingVars(mifdata, mapping, sources) + + # generate IIASASubmission + d <- generateIIASASubmission(mifdata, outputDirectory = NULL, outputFilename = NULL, logFile = NULL, + mapping = mapping, checkSummation = FALSE, generatePlots = FALSE) + # Check variable summation, but using only the first mapping + failvars <- data.frame() + if (length(checkMappings[[i]][[2]]) > 0) { + failvars <- d %>% + checkSummations(template = mapping[[1]], summationsFile = checkMappings[[i]][[2]], logFile = NULL, + dataDumpFile = NULL, absDiff = absDiff, relDiff = relDiff) %>% + filter(abs(diff) >= absDiff, abs(reldiff) >= relDiff) %>% + df_variation() %>% + droplevels() } - d <- generateIIASASubmission(mifdata, outputDirectory = NULL, logFile = NULL, - mapping = mapping, checkSummation = FALSE) - failvars <- d %>% - checkSummations(template = mapping, summationsFile = mapping, logFile = NULL, dataDumpFile = NULL, - absDiff = absDiff, relDiff = relDiff) %>% - filter(abs(diff) >= absDiff, abs(reldiff) >= relDiff) %>% - df_variation() %>% - droplevels() - csregi <- d %>% filter(.data$region %in% unique(c("GLO", "World", read.csv2(envi$cfg$regionmapping)$RegionCode))) %>% - checkSummationsRegional(intensiveUnits = TRUE) %>% + checkSummationsRegional(intensiveUnits = TRUE, skipBunkers = isTRUE(checkMappings[[i]][[3]])) %>% rename(World = "total") %>% droplevels() checkyear <- 2050 failregi <- csregi %>% filter(abs(.data$reldiff) > 0.5, abs(.data$diff) > 0.00015, period == checkyear) %>% - filter(! .data$variable %in% bunkervars) %>% select(-"model", -"scenario") if (nrow(failregi) > 0) { - message("For those ", mapping, " variables, the sum of regional values does not match the World value in 2050:") + message("For those variables from ", paste(mapping, collapse = ", "), + ", the sum of regional values does not match the World value in 2050:") failregi %>% piamInterfaces::niceround() %>% print(n = 1000) } else { message("Regional summation checks are fine.") } - if (nrow(failvars) > 0 || nrow(failregi) > 0 || length(missingVariables) > 0) stopmessage <- c(stopmessage, mapping) + if (nrow(failvars) > 0 || nrow(failregi) > 0 || length(missingVariables) > 0) stopmessage <- c(stopmessage, paste(mapping, collapse = "+")) } -if (length(stopmessage) > 0) { - stop("Failing summation checks for ", paste(stopmessage, collapse = ", "), ", see above.") +if (length(stopmessage) > 0 || length(missingVariables) > 0) { + stop("Project-related issues found checks for ", paste(stopmessage, collapse = ", "), " and ", + length(missingVariables), " missing variables found, see above.") } diff --git a/scripts/output/single/emulator.R b/scripts/output/single/emulator.R index 189489a41..af5032130 100644 --- a/scripts/output/single/emulator.R +++ b/scripts/output/single/emulator.R @@ -121,10 +121,10 @@ for (y in years) { swlatex(pdf,"\\section{Bioenergy demand and prices}") var_price_shapes = c( - "Internal|Price|Biomass|MAgPIE (US$2005/GJ)" = 0, - "Internal|Price|Biomass|Emulator presolve (US$2005/GJ)" = 1, - "Internal|Price|Biomass|Emulator presolve shifted (US$2005/GJ)" = 2, - "Internal|Price|Biomass|Emulator shifted (US$2005/GJ)" = 4 + "Internal|Price|Biomass|MAgPIE (US$2017/GJ)" = 0, + "Internal|Price|Biomass|Emulator presolve (US$2017/GJ)" = 1, + "Internal|Price|Biomass|Emulator presolve shifted (US$2017/GJ)" = 2, + "Internal|Price|Biomass|Emulator shifted (US$2017/GJ)" = 4 ) # bring GLO to front @@ -149,10 +149,10 @@ for (r in regions){ plot.title<-paste0("\\subsection{Bioenergy prices (",r,")}") swlatex(pdf,plot.title) var_price = c( - "Internal|Price|Biomass|MAgPIE (US$2005/GJ)", - "Internal|Price|Biomass|Emulator presolve (US$2005/GJ)", - "Internal|Price|Biomass|Emulator presolve shifted (US$2005/GJ)", - "Internal|Price|Biomass|Emulator shifted (US$2005/GJ)" + "Internal|Price|Biomass|MAgPIE (US$2017/GJ)", + "Internal|Price|Biomass|Emulator presolve (US$2017/GJ)", + "Internal|Price|Biomass|Emulator presolve shifted (US$2017/GJ)", + "Internal|Price|Biomass|Emulator shifted (US$2017/GJ)" ) dat<-as.ggplot(csv[r,years,var_price]) @@ -178,9 +178,9 @@ for (r in regions){ swlatex(pdf,"\\section{Bioenergy costs}") -var_pe = c("Costs|Biomass|MAgPIE (billion US$2005/yr)", - "Costs|Biomass|Price integral presolve (billion US$2005/yr)", - "Costs|Biomass|Price integral (billion US$2005/yr)") +var_pe = c("Costs|Biomass|MAgPIE (billion US$2017/yr)", + "Costs|Biomass|Price integral presolve (billion US$2017/yr)", + "Costs|Biomass|Price integral (billion US$2017/yr)") var_pe <- intersect(getNames(csv,dim="variable"),var_pe) # take only existing variables if (!identical(var_pe, character(0))) { @@ -188,7 +188,7 @@ if (!identical(var_pe, character(0))) { swlatex(pdf,plot.title) dat<-as.ggplot(csv[,years,var_pe]["GLO",,invert=TRUE]) - p <- ggplot(data=dat, aes(x=Year, y=Value)) + geom_line(aes(colour=Data3),size=1) + labs(y="billion US$2005") + + p <- ggplot(data=dat, aes(x=Year, y=Value)) + geom_line(aes(colour=Data3),size=1) + labs(y="billion US$2017") + geom_point(aes(colour=Data3),size=1) + guides(color = guide_legend(nrow = length(var_pe))) + theme(legend.position="top", legend.title=element_blank()) + diff --git a/scripts/output/single/integratedDamageCosts.R b/scripts/output/single/integratedDamageCosts.R index 25aedb6fc..1aec0b4cb 100644 --- a/scripts/output/single/integratedDamageCosts.R +++ b/scripts/output/single/integratedDamageCosts.R @@ -31,7 +31,7 @@ computeCostsScen <- function(i_data, scenBaseNoDamage, scenNoDamage, scenDamage, mutate(`GDP|PPP|w/ Macro-Economic Climate Damage` = `GDP|PPP` * `Damage factor`) %>% mutate(`GDP|PPP|including chronic physical risk damage estimate` = `GDP|PPP|w/ Macro-Economic Climate Damage`) %>% mutate(`GDP|MER|including chronic physical risk damage estimate` = `GDP|MER|w/ Macro-Economic Climate Damage`) %>% - mutate(unit = "billion US$2005/yr") %>% + mutate(unit = "billion US$2017/yr") %>% select(-`GDP|MER`, -`GDP|PPP`, -`Damage factor`) %>% pivot_longer(names_to="variable", values_to="value", cols=c(-"model", -"scenario", -"region", -"unit", -"period")) %>% select(model, scenario, region, variable, unit, period, value) @@ -45,7 +45,7 @@ computeCostsScen <- function(i_data, scenBaseNoDamage, scenNoDamage, scenDamage, pivot_wider(names_from="variable", values_from="value") %>% mutate(value = `GDP|MER` * `Damage factor`) %>% mutate(variable = "GDP|MER") %>% - mutate(unit = "billion US$2005/yr") %>% + mutate(unit = "billion US$2017/yr") %>% select(-`GDP|MER`, -`Damage factor`) %>% select(model, scenario, region, variable, unit, period, value) %>% left_join( @@ -56,7 +56,7 @@ computeCostsScen <- function(i_data, scenBaseNoDamage, scenNoDamage, scenDamage, pivot_wider(names_from = "variable", values_from = "value") %>% mutate(value = `GDP|MER` * `Damage factor`) %>% mutate(variable = "GDP|MER") %>% - mutate(unit = "billion US$2005/yr") %>% + mutate(unit = "billion US$2017/yr") %>% select(-scenario, -`GDP|MER`, -`Damage factor`) %>% select(model, region, variable, unit, period, value) %>% rename(value_ref = value), diff --git a/scripts/output/single/notebook_templates/cesCalibrationReport.Rmd b/scripts/output/single/notebook_templates/cesCalibrationReport.Rmd index 73866d6ae..f5d87ffa7 100644 --- a/scripts/output/single/notebook_templates/cesCalibrationReport.Rmd +++ b/scripts/output/single/notebook_templates/cesCalibrationReport.Rmd @@ -144,7 +144,7 @@ knitr::kable(df, caption = "Prices below 0.01") ```{r line plots} te <- c( "gastr", "refliq", "biotr", "coaltr", "hydro", "ngcc", "ngt", - "pc", "dot", "gaschp", "wind", "tnrs" + "pc", "dot", "gaschp", "windon", "tnrs" ) in_set <- readGDX(gdx, "in", "sets") structure <- sort(intersect(in_set, getColValues(ces, "pf"))) diff --git a/scripts/start/checkFixCfg.R b/scripts/start/checkFixCfg.R index f81f7aa37..7966f7cfd 100644 --- a/scripts/start/checkFixCfg.R +++ b/scripts/start/checkFixCfg.R @@ -97,8 +97,17 @@ checkFixCfg <- function(cfg, remindPath = ".", testmode = FALSE) { if (! isTRUE(cfg$gms$CES_parameters == "calibrate")) { cfg$output <- setdiff(cfg$output, "reportCEScalib") } - - # Make sure that an input_bau.gdx has been specified if and only if needed. + + # remove rev at the beginning of inputRevision + if (grepl("^rev", cfg$inputRevision)) { + cfg$inputRevision <- sub("^rev", "", cfg$inputRevision) + warning("cfg$inputRevision started with 'rev', but this will be added automatically. Removed it.") + } + # check if RCP scenario other than (none), (rcp20), (rcp26), or (rcp45) is used + if (! isTRUE(cfg$gms$cm_rcp_scen %in% c("none","rcp20","rcp26","rcp45") )) { + warning("Chosen RCP scenario '", cfg$gms$cm_rcp_scen, "' might currently not be fully operational: test and verify before using it!") + } + # Make sure that an input_bau.gdx has been specified if needed. isBauneeded <- isTRUE(length(unlist(lapply(names(needBau), function(x) intersect(cfg$gms[[x]], needBau[[x]])))) > 0) if (isBauneeded) { if (is.na(cfg$files2export$start["input_bau.gdx"])) { diff --git a/scripts/start/getReportData.R b/scripts/start/getReportData.R index d244c3d3c..70e7ced5a 100644 --- a/scripts/start/getReportData.R +++ b/scripts/start/getReportData.R @@ -13,10 +13,10 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc notGLO <- getRegions(mag)[!(getRegions(mag)=="GLO")] if("Demand|Bioenergy|++|2nd generation (EJ/yr)" %in% getNames(mag)) { # MAgPIE 4 - out <- mag[,,"Prices|Bioenergy (US$05/GJ)"]*0.0315576 # with transformation factor from US$2005/GJ to US$2005/Wa + out <- mag[,,"Prices|Bioenergy (US$2017/GJ)"]*0.0315576 # with transformation factor from US$2017/GJ to US$2017/Wa } else { # MAgPIE 3 - out <- mag[,,"Price|Primary Energy|Biomass (US$2005/GJ)"]*0.0315576 # with transformation factor from US$2005/GJ to US$2005/Wa + out <- mag[,,"Price|Primary Energy|Biomass (US$2017/GJ)"]*0.0315576 # with transformation factor from US$2017/GJ to US$2017/Wa } out["JPN",is.na(out["JPN",,]),] <- 0 tmp <- out @@ -128,11 +128,7 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc .agriculture_costs <- function(mag){ notGLO <- getRegions(mag)[!(getRegions(mag)=="GLO")] - if ("Costs Without Incentives (million US$05/yr)" %in% getNames(mag)) { - out <- mag[,,"Costs Without Incentives (million US$05/yr)"]/1000/1000 # with transformation factor from 10E6 US$2005 to 10E12 US$2005 - } else { - out <- mag[,,"Costs|MainSolve w/o GHG Emissions (million US$05/yr)"]/1000/1000 # old reporting - } + out <- mag[,,"Costs Without Incentives (million US$2017/yr)"]/1000/1000 # with transformation factor from 10E6 US$2017 to 10E12 US$2017 out["JPN",is.na(out["JPN",,]),] <- 0 tmp <- out dimnames(out)[[3]] <- NULL #Delete variable name to prevent it from being written into output file @@ -142,7 +138,7 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc .agriculture_tradebal <- function(mag){ notGLO <- getRegions(mag)[!(getRegions(mag)=="GLO")] - out <- mag[,,"Trade|Agriculture|Trade Balance (billion US$2005/yr)"]/1000 # with transformation factor from 10E9 US$2005 to 10E12 US$2005 + out <- mag[,,"Trade|Agriculture|Trade Balance (billion US$2017/yr)"]/1000 # with transformation factor from 10E9 US$2017 to 10E12 US$2017 out["JPN",is.na(out["JPN",,]),] <- 0 dimnames(out)[[3]] <- NULL write.magpie(out[notGLO,,],paste0("./modules/26_agCosts/",inputpath_acc,"/input/trade_bal_reg.rem.csv"),file_type="csvr") diff --git a/scripts/start/prepare.R b/scripts/start/prepare.R index c35c79030..99b66865e 100644 --- a/scripts/start/prepare.R +++ b/scripts/start/prepare.R @@ -613,6 +613,11 @@ prepare <- function() { create_fixing_files(cfg = cfg, input_ref_file = "input_ref.gdx") } + if (cfg$gms$cm_startyear > 2005) { + cm_startyear_ref <- as.integer(readGDX("input_ref.gdx", name = "cm_startyear", format = "simplest")) + if (cfg$gms$cm_startyear < cm_startyear_ref) stop("cm_startyear must be larger than its counterpart in input_ref.gdx") + } + timePrepareEnd <- Sys.time() # Save run statistics to local file cat("Saving timePrepareStart and timePrepareEnd to runstatistics.rda\n") diff --git a/scripts/start/readCheckScenarioConfig.R b/scripts/start/readCheckScenarioConfig.R index a3d132dad..075697525 100644 --- a/scripts/start/readCheckScenarioConfig.R +++ b/scripts/start/readCheckScenarioConfig.R @@ -116,6 +116,15 @@ readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE paste0(names(needBau), ": ", sapply(needBau, paste, collapse = ", "), ".", collapse = " ")) } + startyearmismatch <- NULL + if ("cm_startyear" %in% names(scenConf)) { + startyearmismatch <- subset(rownames(scenConf), scenConf[,"cm_startyear"] < scenConf[scenConf[["path_gdx_ref"]], "cm_startyear"]) + if (length(startyearmismatch) > 0) { + warning("Those scenarios have cm_startyear earlier than their path_gdx_ref run, which is not supported: ", + paste(startyearmismatch, collapse = ", ")) + } + } + if (isTRUE(testmode)) { for (n in intersect(names(path_gdx_list), names(scenConf))) { missingPath <- ! (is.na(scenConf[, n]) | scenConf[, n] %in% rownames(scenConf)) @@ -128,7 +137,8 @@ readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE } # collect errors - errorsfound <- length(colduplicates) + sum(toolong) + sum(regionname) + sum(nameisNA) + sum(illegalchars) + whitespaceErrors + copyConfigFromErrors + pathgdxerrors + missingRealizations + errorsfound <- length(colduplicates) + sum(toolong) + sum(regionname) + sum(nameisNA) + sum(illegalchars) + whitespaceErrors + + copyConfigFromErrors + pathgdxerrors + missingRealizations + length(startyearmismatch) # check column names knownColumnNames <- c(names(path_gdx_list), "start", "model", "copyConfigFrom") @@ -168,7 +178,9 @@ readCheckScenarioConfig <- function(filename, remindPath = ".", testmode = FALSE "c_taxCO2inc_after_peakBudgYr" = "Rename to cm_taxCO2inc_after_peakBudgYr, see https://github.com/remindmodel/remind/pull/1776", "c_solscen" = "Deleted, not used anymore, see https://github.com/remindmodel/remind/pull/1515", "cm_regNetNegCO2" = "Deleted, not used, see https://github.com/remindmodel/remind/pull/1517", - "cm_solwindenergyscen"= "Deleted, not used, see https://github.com/remindmodel/remind/pull/1532", + "cm_solwindenergyscen" = "Deleted, not used, see https://github.com/remindmodel/remind/pull/1532", + "cm_wind_offshore" = "Deleted, not used, see https://github.com/remindmodel/development_issues/issues/272", + "cm_co2_tax_2020" = "Use cm_co2_tax_startyear instead, see https://github.com/remindmodel/remind/pull/1858", 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/updateInputData.R b/scripts/start/updateInputData.R index 123efb62f..8f1dd6d39 100644 --- a/scripts/start/updateInputData.R +++ b/scripts/start/updateInputData.R @@ -10,8 +10,8 @@ #' @param gamsCompile if set to TRUE, missing files don't trigger reload and most messages are suppressed updateInputData <- function(cfg, remindPath = ".", gamsCompile = FALSE) { - # write name of corresponding CES file to datainput.gms + # write name of corresponding CES file to datainput.gms cfg$gms$cm_CES_configuration <- calculate_CES_configuration(cfg, path = remindPath) if(file.exists("input/source_files.log")) { @@ -22,12 +22,17 @@ updateInputData <- function(cfg, remindPath = ".", gamsCompile = FALSE) { regicode <- madrat::regionscode(file.path(remindPath, cfg$regionmapping)) input_new <- c(paste0("rev",cfg$inputRevision,"_",regicode,"_", tolower(cfg$model_name),".tgz"), paste0("rev",cfg$inputRevision,"_",regicode,ifelse(cfg$extramappings_historic == "","",paste0("-", madrat::regionscode(cfg$extramappings_historic))),"_", tolower(cfg$validationmodel_name),".tgz"), - paste0("CESparametersAndGDX_",cfg$CESandGDXversion,".tgz")) - # check if all input files are there + paste0("CESparametersAndGDX_",cfg$CESandGDXversion,".tgz")) + + # Specify for each element of input_new whether to stop if the respective file could not be downloaded + stopOnMissing <- c(TRUE, FALSE, TRUE) + + # check if all input files are already there missinginput <- if (isTRUE(gamsCompile)) NULL else missingInputData() + requiredinput <- grep("config\\/gdx-files|modules\\/29_CES_parameters\\/load\\/input", missinginput, value = TRUE, invert = TRUE) # download and distribute needed data - if (! setequal(input_new, input_old) || isTRUE(cfg$force_download) || length(missinginput) > 0) { + if (! setequal(input_new, input_old) || isTRUE(cfg$force_download) || length(requiredinput) > 0) { message(if (isTRUE(gamsCompile)) paste0(" ", cfg$title, ": "), if (isTRUE(cfg$force_download)) "You set 'cfg$force_download = TRUE'" else "Your input data are outdated, incomplete or in a different regional resolution", @@ -37,7 +42,7 @@ updateInputData <- function(cfg, remindPath = ".", gamsCompile = FALSE) { repositories = cfg$repositories, # defined in your environment variables modelfolder = remindPath, debug = FALSE, - stopOnMissing = ! isTRUE(gamsCompile)) + stopOnMissing = if (isTRUE(gamsCompile)) FALSE else stopOnMissing) ) } else if (! isTRUE(gamsCompile)) { message("No input data downloaded and distributed. To enable that, delete input/source_files.log or set cfg$force_download to TRUE.") diff --git a/scripts/utils/SOFEOF b/scripts/utils/SOFEOF new file mode 100755 index 000000000..ec086a100 --- /dev/null +++ b/scripts/utils/SOFEOF @@ -0,0 +1,8 @@ +#!/bin/bash +if [ -f SOFEOF ]; then + cd ../.. +fi +for i in core/*.gms modules/*.gms modules/*/*.gms modules/*/*/*.gms +do + sed -i "s>\*\*\* *SOF.*$>\*\*\* SOF ./${i}>g;s>\*\*\* *EOF.*$>\*\*\* EOF ./${i}>g" $i +done diff --git a/standalone/MOFEX/MOFEX.gms b/standalone/MOFEX/MOFEX.gms index badc6b07e..878d34368 100644 --- a/standalone/MOFEX/MOFEX.gms +++ b/standalone/MOFEX/MOFEX.gms @@ -124,7 +124,7 @@ c_solver_try_max "maximum number of inner iterations within one Negishi ite c_keep_iteration_gdxes "save intermediate iteration gdxes" cm_nash_autoconverge "choice of nash convergence mode" cm_emiscen "policy scenario choice" -cm_co2_tax_2020 "level of co2 tax in year 2020 in $ per t CO2eq, makes sense only for emiscen eq 9 and 45_carbonprice exponential" +cm_co2_tax_startyear "level of co2 tax in start year in $ per t CO2eq" cm_co2_tax_growth "growth rate of carbon tax" c_macscen "use of mac" cm_nucscen "nuclear option choice" @@ -190,7 +190,7 @@ cm_frac_NetNegEmi "tax on net negative emissions to reflect risk of overshoot cm_DiscRateScen "Scenario for the implicit discount rate applied to the energy efficiency capital" c_peakBudgYr "date of net-zero CO2 emissions for peak budget runs without overshoot" cm_taxCO2inc_after_peakBudgYr "annual increase of CO2 price after the Peak Budget Year in $ per tCO2" -cm_CO2priceRegConvEndYr "Year at which regional CO2 prices converge in module 45 realization diffCurvPhaseIn2Lin" +cm_CO2priceRegConvEndYr "Year at which regional CO2 taxes converge in module 45 for realizations with differentiated carbon prices" c_regi_nucscen "regions to apply nucscen to" c_regi_capturescen "region to apply ccapturescen to" c_regi_synfuelscen "region to apply synfuelscen to" @@ -242,7 +242,7 @@ $setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" -cm_co2_tax_2020 = -1; !! def = -1 +cm_co2_tax_startyear = -1; !! def = -1 cm_co2_tax_growth = 1.05; !! def = 1.05 c_macscen = 1; !! def = 1 @@ -479,8 +479,6 @@ $setglobal cm_feShareLimits off !! def = off $setglobal c_fuelprice_init off !! def = off $setglobal cm_seTradeScenario off !! def = off -$setglobal cm_wind_offshore 0 !! def = 0 - *** -------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** -------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** END OF WARNING ZONE diff --git a/standalone/MOFEX/config/scenario_config_MOFEX.csv b/standalone/MOFEX/config/scenario_config_MOFEX.csv index 4930de2c4..8fb77dfa4 100644 --- a/standalone/MOFEX/config/scenario_config_MOFEX.csv +++ b/standalone/MOFEX/config/scenario_config_MOFEX.csv @@ -1,4 +1,4 @@ -title;start;cm_iteration_max;cm_MOFEX;fossil;regionmapping;cm_coal_scen;cm_gas_scen;cm_oil_scen;cm_rcp_scen;cm_iterative_target_adj;c_budgetCO2;carbonprice;cm_co2_tax_2020;cm_co2_tax_growth;cm_emiscen;techpol;cm_multigasscen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;revision;model;output +title;start;cm_iteration_max;cm_MOFEX;fossil;regionmapping;cm_coal_scen;cm_gas_scen;cm_oil_scen;cm_rcp_scen;cm_iterative_target_adj;c_budgetCO2;carbonprice;cm_co2_tax_startyear;cm_co2_tax_growth;cm_emiscen;techpol;cm_multigasscen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;revision;model;output Base;0;1;off;timeDepGrades;./config/regionmappingH12.csv;;;;none;0;0;none;-1;1.05;1;none;2;2005;./config/input.gdx;;;;; NDC;0;1;;;./config/regionmappingH12.csv;;;;rcp45;3;0;NDC;1;1.05;9;NDC;3;2015;./config/input.gdx;Base;Base;;; NPi;0;1;;;./config/regionmappingH12.csv;;;;rcp45;3;0;NPi;1;1.05;9;NPi2018;3;2025;./config/input.gdx;NDC;Base;;; diff --git a/standalone/template.gms b/standalone/template.gms index 24754fba5..f74906452 100644 --- a/standalone/template.gms +++ b/standalone/template.gms @@ -124,7 +124,7 @@ cm_solver_try_max "maximum number of inner iterations within one Negishi it c_keep_iteration_gdxes "save intermediate iteration gdxes" cm_nash_autoconverge "choice of nash convergence mode" cm_emiscen "policy scenario choice" -cm_co2_tax_2020 "level of co2 tax in year 2020 in $ per t CO2eq, makes sense only for emiscen eq 9 and 45_carbonprice exponential" +cm_co2_tax_startyear "level of co2 tax in start year in $ per t CO2eq" cm_co2_tax_growth "growth rate of carbon tax" c_macscen "use of mac" cm_nucscen "nuclear option choice" @@ -197,7 +197,7 @@ $setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" -cm_co2_tax_2020 = -1; !! def = -1 +cm_co2_tax_startyear = -1; !! def = -1 cm_co2_tax_growth = 1.05; !! def = 1.05 c_macscen = 1; !! def = 1 diff --git a/standalone/trade/trade.gms b/standalone/trade/trade.gms index 572735ec4..0a12f2718 100644 --- a/standalone/trade/trade.gms +++ b/standalone/trade/trade.gms @@ -128,7 +128,7 @@ c_solver_try_max "maximum number of inner iterations within one Negishi ite c_keep_iteration_gdxes "save intermediate iteration gdxes" cm_nash_autoconverge "choice of nash convergence mode" cm_emiscen "policy scenario choice" -cm_co2_tax_2020 "level of co2 tax in year 2020 in $ per t CO2eq, makes sense only for emiscen eq 9 and 45_carbonprice exponential" +cm_co2_tax_startyear "level of co2 tax in start year in $ per t CO2eq" cm_co2_tax_growth "growth rate of carbon tax" c_macscen "use of mac" cm_nucscen "nuclear option choice" @@ -194,7 +194,7 @@ cm_frac_NetNegEmi "tax on net negative emissions to reflect risk of overshoot cm_DiscRateScen "Scenario for the implicit discount rate applied to the energy efficiency capital" c_peakBudgYr "date of net-zero CO2 emissions for peak budget runs without overshoot" cm_taxCO2inc_after_peakBudgYr "annual increase of CO2 price after the Peak Budget Year in $ per tCO2" -cm_CO2priceRegConvEndYr "Year at which regional CO2 prices converge in module 45 realization diffCurvPhaseIn2Lin" +cm_CO2priceRegConvEndYr "Year at which regional CO2 taxes converge in module 45 for realizations with differentiated carbon prices" c_regi_nucscen "regions to apply nucscen to" c_regi_capturescen "region to apply ccapturescen to" c_regi_synfuelscen "region to apply synfuelscen to" @@ -246,7 +246,7 @@ $setglobal cm_MAgPIE_coupling off !! def = "off" cm_emiscen = 1; !! def = 1 $setglobal cm_rcp_scen none !! def = "none" -cm_co2_tax_2020 = -1; !! def = -1 +cm_co2_tax_startyear = -1; !! def = -1 cm_co2_tax_growth = 1.05; !! def = 1.05 c_macscen = 1; !! def = 1 @@ -483,7 +483,6 @@ $setglobal cm_feShareLimits off !! def = off $setglobal c_fuelprice_init off !! def = off $setglobal cm_seTradeScenario off !! def = off -$setglobal cm_wind_offshore 0 !! def = 0 *** -------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** -------------------------------------------------------------------------------------------------------------------------------------------------------------------- *** END OF WARNING ZONE diff --git a/start.R b/start.R index bd1601d03..06fdefafd 100755 --- a/start.R +++ b/start.R @@ -251,7 +251,7 @@ if (any(c("--reprepare", "--restart") %in% flags)) { if (! exists("slurmConfig") & (any(c("--debug", "--quick", "--testOneRegi") %in% flags) | ! "slurmConfig" %in% names(scenarios) || any(is.na(scenarios$slurmConfig)))) { slurmConfig <- choose_slurmConfig(flags = flags) - if ("--quick" %in% flags) slurmConfig <- combine_slurmConfig(slurmConfig, "--time=60") + if ("--quick" %in% flags && ! slurmConfig == "direct") slurmConfig <- combine_slurmConfig(slurmConfig, "--time=60") if (any(c("--debug", "--quick", "--testOneRegi") %in% flags) && ! length(config.file) == 0) { message("\nYour slurmConfig selection will overwrite the settings in your scenario_config file.") } diff --git a/tests/testthat/test_01-SOF-EOF.R b/tests/testthat/test_01-SOF-EOF.R new file mode 100644 index 000000000..934ce7f63 --- /dev/null +++ b/tests/testthat/test_01-SOF-EOF.R @@ -0,0 +1,14 @@ +test_that("all gms files have SOF and EOF statements", { + grepnotavailable <- Sys.which("grep") == "" + if (! grepnotavailable) { + files <- paste0("../../", c("core/", "modules/", paste0("modules/", c("*/", "*/*/"))), "*.gms") + SOF <- try(system(paste("grep -L '\\*\\*\\* *SOF.*$'", paste(files, collapse = " ")), intern = TRUE), silent = TRUE) + EOF <- try(system(paste("grep -L '\\*\\*\\* *EOF.*$'", paste(files, collapse = " ")), intern = TRUE), silent = TRUE) + missingSOFEOF <- sub("../../", "", sort(unique(c(SOF, EOF))), fixed = TRUE) + expect_equal(length(missingSOFEOF), 0) + if (length(missingSOFEOF) > 0) { + warning("These gms files lack SOF or EOF statements:\n", paste(missingSOFEOF, collapse = "\n"), + "\nAdd '*** SOF' at the beginning and '*** EOF' at the end of the files and then run './scripts/utils/SOFEOF'") + } + } +}) diff --git a/tests/testthat/test_01-checkFixCfg.R b/tests/testthat/test_01-checkFixCfg.R index 830237ed4..384ee3e3a 100644 --- a/tests/testthat/test_01-checkFixCfg.R +++ b/tests/testthat/test_01-checkFixCfg.R @@ -22,7 +22,7 @@ test_that("checkFixCfg works", { "cm_rcp_scen" = "apocalypse", "c_testOneRegi_region" = "LOONG", "c_shGreenH2" = "1.5", - "cm_co2_tax_2020" = "-2", + "cm_co2_tax_startyear" = "-2", NULL) cfg <- savecfg @@ -32,5 +32,6 @@ test_that("checkFixCfg works", { expect_match(w, paste0(n, "=", wrongsetting[[n]]), all = FALSE, fixed = TRUE) } expect_match(w, paste0(length(wrongsetting), " errors found"), all = FALSE, fixed = TRUE) - expect_equal(length(w), length(wrongsetting) + 1) + expect_match(w, "Chosen RCP scenario 'apocalypse' might currently not be fully operational", all = FALSE, fixed = TRUE) + expect_equal(length(w), length(wrongsetting) + 2) }) diff --git a/tests/testthat/test_01-inputdata.R b/tests/testthat/test_01-inputdata.R index f76448cd8..9fe6715cf 100644 --- a/tests/testthat/test_01-inputdata.R +++ b/tests/testthat/test_01-inputdata.R @@ -8,9 +8,17 @@ test_that("Are all input data files present?", { missinginput <- missingInputData(path = "../..") if (length(missinginput) > 0) { lockID <- gms::model_lock(folder = "../..") - updateInputData(cfg = gms::readDefaultConfig("../.."), remindPath = "../..") + w <- capture_warnings(updateInputData(cfg = gms::readDefaultConfig("../.."), remindPath = "../..")) + # ignore warning about missing historical.mif, raise warning if there were other warnings + ignore <- "File historical.mif seems to be missing!" + w <- setdiff(w, ignore) + if (length(w) > 0) { + warning(paste0("'updateInputData' raised the following warnings\n", paste(w, collapse = "\n"))) + } gms::model_unlock(lockID) missinginput <- missingInputData(path = "../..") + # remove historical.mif since it is optional + missinginput <- grep("historical.mif", missinginput, invert = TRUE, value = TRUE) if (length(missinginput) > 0) { warning("Missing input files: ", paste(missinginput, collapse = ", ")) } diff --git a/tests/testthat/test_01-readCheckScenarioConfig.R b/tests/testthat/test_01-readCheckScenarioConfig.R index 8a98dc4d3..33aed56ac 100644 --- a/tests/testthat/test_01-readCheckScenarioConfig.R +++ b/tests/testthat/test_01-readCheckScenarioConfig.R @@ -16,16 +16,17 @@ for (csvfile in csvfiles) { } test_that("readCheckScenarioConfig fails on error-loaden config", { csvfile <- tempfile(pattern = "scenario_config_a", fileext = ".csv") - writeLines(c(";start;copyConfigFrom;c_budgetCO2;path_gdx;path_gdx_carbonprice;carbonprice;path_gdx_bau;path_gdx_ref", - "abc.loremipsumloremipsum@lorem&ipsumloremipsumloremipsumloremipsumloremipsumloremipsum_;0;;33;;;;;", - "PBS;1;glob;29;whitespace inside;whitespaceafter ;;;whatever", - "glob;0;missing_copyConfigFrom;33; ;nobreakspace tab;;;", - "PBScopy;0;PBS;;;mustbedifferenttoPBS;;;", - "NA;1;;;;;notNDC_but_has_path_gdx_bau;PBS;", - "NDC_but_bau_missing;1;;;;;NDC;;"), + writeLines(c(";start;copyConfigFrom;c_budgetCO2;path_gdx;path_gdx_carbonprice;carbonprice;path_gdx_bau;path_gdx_ref;cm_startyear", + "abc.loremipsumloremipsum@lorem&ipsumloremipsumloremipsumloremipsumloremipsumloremipsum_;0;;33;;;;;;", + "PBS;1;glob;29;whitespace inside;whitespaceafter ;;;whatever;2020", + "glob;0;missing_copyConfigFrom;33; ;nobreakspace tab;;;;", + "PBScopy;0;PBS;;;mustbedifferenttoPBS;;;;", + "NA;1;;;;;notNDC_but_has_path_gdx_bau;PBS;;", + "NDC_but_bau_missing;1;;;;;NDC;;;", + "startyear_too_early;;;;;;;;PBS;2010"), con = csvfile, sep = "\n") w <- capture_warnings(m <- capture_messages(scenConf <- readCheckScenarioConfig(csvfile, remindPath = "../../", testmode = TRUE))) - expect_match(w, "21 errors found", all = FALSE, fixed = TRUE) + expect_match(w, "22 errors found", all = FALSE, fixed = TRUE) expect_match(w, "These titles are too long", all = FALSE, fixed = TRUE) expect_match(w, "These titles may be confused with regions", all = FALSE, fixed = TRUE) expect_match(w, "These titles contain illegal characters", all = FALSE, fixed = TRUE) @@ -41,6 +42,7 @@ test_that("readCheckScenarioConfig fails on error-loaden config", { expect_match(w, "Those scenarios link to a non-existing path_gdx_ref: PBS, PBScopy", all = FALSE, fixed = TRUE) expect_match(w, "Those scenarios link to a non-existing path_gdx_refpolicycost: PBS, PBScopy", all = FALSE, fixed = TRUE) expect_match(w, "Those scenarios link to a non-existing path_gdx_carbonprice: PBS, glob, PBScopy", all = FALSE, fixed = TRUE) + expect_match(w, "Those scenarios have cm_startyear earlier than their path_gdx_ref run, which is not supported: startyear_too_early", all = FALSE, fixed = TRUE) expect_match(m, "no column path_gdx_refpolicycost for policy cost comparison found, using path_gdx_ref instead", all = FALSE, fixed = TRUE) copiedFromPBS <- c("c_budgetCO2", "path_gdx", "path_gdx_ref") expect_identical(unlist(scenConf["PBS", copiedFromPBS]), diff --git a/tests/testthat/test_04-gamscompile.R b/tests/testthat/test_04-gamscompile.R index 45f2795c3..e43c2e32b 100644 --- a/tests/testthat/test_04-gamscompile.R +++ b/tests/testthat/test_04-gamscompile.R @@ -33,7 +33,7 @@ test_that("start.R --gamscompile works on all configs and scenarios", { expect_true(length(csvfiles) > 0) testthat::with_mocked_bindings( for (csvfile in csvfiles) { - if (grepl("scenario_config_IKEA", csvfile)) next + if (grepl("scenario_config_IKEA|scenario_config_21_EU11_ARIADNE", csvfile)) next test_that(paste("perform start.R --gamscompile with", basename(csvfile)), { titletag <- paste0("titletag=TESTTHAT-", gsub(".csv$", "", basename(csvfile))) output <- localSystem2("Rscript", diff --git a/tests/testthat/test_01-test-gams-compile.R b/tests/testthat/test_04-test-gams-compile.R similarity index 100% rename from tests/testthat/test_01-test-gams-compile.R rename to tests/testthat/test_04-test-gams-compile.R diff --git a/tests/testthat/validation/test_03-negative_electrictiy.R b/tests/testthat/validation/test_03-negative_electricity.R similarity index 90% rename from tests/testthat/validation/test_03-negative_electrictiy.R rename to tests/testthat/validation/test_03-negative_electricity.R index a41d9e0a2..3ca16aaf5 100644 --- a/tests/testthat/validation/test_03-negative_electrictiy.R +++ b/tests/testthat/validation/test_03-negative_electricity.R @@ -17,8 +17,8 @@ test_that("there are no negative electricity prices in historic years in EU regi read.report(mifs[1], as.list = FALSE)[ , , c( - "Price|Secondary Energy|Electricity (US$2005/GJ)", - "Price|Final Energy|Industry|Electricity (US$2005/GJ)" + "Price|Secondary Energy|Electricity (US$2017/GJ)", + "Price|Final Energy|Industry|Electricity (US$2017/GJ)" ) ] ) diff --git a/tests/testthat/validation/test_04-invest_esm.R b/tests/testthat/validation/test_04-invest_esm.R index e29227210..c7fd0b86e 100644 --- a/tests/testthat/validation/test_04-invest_esm.R +++ b/tests/testthat/validation/test_04-invest_esm.R @@ -19,7 +19,7 @@ test_that("Non-ESM Investments never drop more than 50% in comparison to previou if (length(mifs) == 1) { m <- suppressWarnings( read.report(mifs[1], as.list = FALSE) - )[reg, , "Investments|Non-ESM (billion US$2005/yr)"] + )[reg, , "Investments|Non-ESM (billion US$2017/yr)"] data <- mbind(data, m) } } diff --git a/tutorials/03_RunningBundleOfRuns.md b/tutorials/03_RunningBundleOfRuns.md index 1f5292edc..3daf75d93 100644 --- a/tutorials/03_RunningBundleOfRuns.md +++ b/tutorials/03_RunningBundleOfRuns.md @@ -31,7 +31,7 @@ readCheckScenarioConfig("config/scenario_config.csv")["SSP2-Base", ] ``` Further columns are the configurations that you can choose for the specific runs. -They may contain values for parameters such as `cm_rcp_scen` and module realizations such as `exponential` for [`./module/carbonprice/`](../modules/45_carbonprice). They overwrite the default defined and explained in [`./config/default.cfg`](../config/default.cfg) and [`./main.gms`](../main.gms) by the respective cell value for each run. If you leave a cell empty or if no column exists for a setting, the default value is used. +They may contain values for parameters such as `cm_rcp_scen` and module realizations such as `diffLin2Lin` for [`./module/carbonprice/`](../modules/45_carbonprice). They overwrite the default defined and explained in [`./config/default.cfg`](../config/default.cfg) and [`./main.gms`](../main.gms) by the respective cell value for each run. If you leave a cell empty or if no column exists for a setting, the default value is used. An important feature of scenario_config files is the possibility to execute runs which build on each other. Examples are (1) using the base run for all time steps until `cm_startyear`, or (2) use it to compare the impact of certain policies to a situation without them. diff --git a/tutorials/08a_Advanced_CreatingSimpleDashboard.Rmd b/tutorials/08a_Advanced_CreatingSimpleDashboard.Rmd index 714ff5e30..5fd0af46f 100644 --- a/tutorials/08a_Advanced_CreatingSimpleDashboard.Rmd +++ b/tutorials/08a_Advanced_CreatingSimpleDashboard.Rmd @@ -65,7 +65,7 @@ download.file("http://rse.pik-potsdam.de/data/example/REMIND_generic_BAU.mif", " ylab("Mt CO2/yr") # CO2 price - plot$CO2price <- mipLineHistorical(data["EUR",,"Price|Carbon (US$2005/t CO2)"],x_hist=NULL,ylab='US$2005/t CO2') + + plot$CO2price <- mipLineHistorical(data["EUR",,"Price|Carbon (US$2017/t CO2)"],x_hist=NULL,ylab='US$2017/t CO2') + theme_minimal() # Electricity mix diff --git a/tutorials/10_DebuggingREMIND.md b/tutorials/10_DebuggingREMIND.md index 691022b07..5993c7aa4 100644 --- a/tutorials/10_DebuggingREMIND.md +++ b/tutorials/10_DebuggingREMIND.md @@ -47,7 +47,7 @@ If full.log exists, this is the next place to look at. Either open it in your fa ```bash less full.log ``` -and then type `G` to get to the end of the file. `q` finishes looking at the file. +and then type `G` to get to the end of the file. Type `q` to close the file. Another option is to use the editor `vi` by typing `vi full.log`, in which case `:q` closes the editor. `less` is generally faster when looking at large file, but doesn’t offer color coding. You may find: diff --git a/tutorials/13_Submit_to_IIASA_database.md b/tutorials/13_Submit_to_IIASA_database.md index 1a2b851bc..8fefdadff 100644 --- a/tutorials/13_Submit_to_IIASA_database.md +++ b/tutorials/13_Submit_to_IIASA_database.md @@ -97,6 +97,18 @@ The following functions from `piamInterfaces` might be helpful for further analy - [`fixOnRef()`](https://github.com/pik-piam/piamInterfaces/blob/master/R/fixOnRef.R) checks whether the runs are correctly fixed on their reference run for delayed transition scenarios. - [`plotIntercomparison()`](https://github.com/pik-piam/piamInterfaces/blob/master/R/plotIntercomparison.R) plots area and line plots of selected variables. +If you like to generate a 'historical.mif' file for a different regional resolution and variable naming scheme than the REMIND one to pass it to plotIntercomparison, you can use the [regionmapping](https://github.com/pik-piam/piamInterfaces/tree/master/inst/regionmapping) ISO files from piamInterfaces or a similarly formatted file, for example like this: +``` +library(madrat); library(mrremind); library(quitte); library(piamInterfaces) +stopifnot(utils::packageVersion("piamInterfaces") >= "0.36.2") +setConfig(regionmapping = system.file("regionmapping/ISO_2_ISO.csv", package = "piamInterfaces")) +d <- madrat::retrieveData("VALIDATIONREMIND") +system(paste("tar -xvf", d, "./historical.mif")) +hist <- read.snapshot("historical.mif") +write.mif(convertHistoricalData(hist, "ScenarioMIP", "ISO_2_R10"), "historical_R10.mif") +write.mif(convertHistoricalData(hist, "ScenarioMIP", "ISO_2_R5"), "historical_R5.mif") +``` + ## Further Information Please refer to [this repository](https://gitlab.pik-potsdam.de/REMIND/miptemplate) for a showcase of all the tools and best practices when working with data from the IIASA database, including: