Skip to content
Snippets Groups Projects
Commit b5c653ae authored by David Klein's avatar David Klein
Browse files

Merge branch 'develop' of https://github.com/remindmodel/remind into develop

parents 12ffdcd2 bb61a8d9
No related branches found
No related tags found
1 merge request!162Update coupling docu
Showing
with 184085 additions and 32282 deletions
...@@ -112,7 +112,7 @@ added to the PATH variable of your system. ...@@ -112,7 +112,7 @@ added to the PATH variable of your system.
## HOW TO CONFIGURE ## HOW TO CONFIGURE
Model run settings are set in `config/default.cfg` (or another config file of Model run settings are set in `config/default.cfg` (or another config file of
the same structure). New model scenarios can be created by adding a column to the same structure). New model scenarios can be created by adding a row to
`config/scenario_config.csv` `config/scenario_config.csv`
## HOW TO RUN ## HOW TO RUN
......
...@@ -22,7 +22,7 @@ cfg$title <- "default" ...@@ -22,7 +22,7 @@ cfg$title <- "default"
cfg$regionmapping <- "config/regionmappingH12.csv" cfg$regionmapping <- "config/regionmappingH12.csv"
#### Current input data revision (<mainrevision>.<subrevision>) #### #### Current input data revision (<mainrevision>.<subrevision>) ####
cfg$revision <- 5.942 cfg$revision <- 5.944
#### Force the model to download new input data #### #### Force the model to download new input data ####
cfg$force_download <- FALSE cfg$force_download <- FALSE
...@@ -206,7 +206,10 @@ cfg$gms$banking <- "off" # def = off ...@@ -206,7 +206,10 @@ cfg$gms$banking <- "off" # def = off
# * (ExogSameAsPrevious): uses the identical carbon prices of a previous run, so far requires manual updating of the input file - see outcommented text in scripts/start_functions.R # * (ExogSameAsPrevious): uses the identical carbon prices of a previous run, so far requires manual updating of the input file - see outcommented text in scripts/start_functions.R
# * (temperatureNotToExceed): [test and verify before using it!] Find the optimal carbon carbon tax (set cm_emiscen=9) for the not-to-exceed temperature target defined by cm_carbonprice_temperatureLimit. # * (temperatureNotToExceed): [test and verify before using it!] Find the optimal carbon carbon tax (set cm_emiscen=9) for the not-to-exceed temperature target defined by cm_carbonprice_temperatureLimit.
# * (NDC2constant): linearly phase in global constant price from NDC prices (default 2020-2040 phase-in) # * (NDC2constant): linearly phase in global constant price from NDC prices (default 2020-2040 phase-in)
# * (diffPhaseIn2Constant): linearly phase in global constant price, with starting values differentiated by GDP/cap (Robert's proposal) # * (diffCurvPhaseIn2Lin): [REMIND 2.1 default for validation peakBudget runs, in combination with "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;
# * (diffPhaseIn2Constant): !experimental! linearly phase in global constant price, with starting values differentiated by GDP/cap
# *
cfg$gms$carbonprice <- "none" # def = none cfg$gms$carbonprice <- "none" # def = none
...@@ -273,7 +276,9 @@ cfg$gms$cm_nucscen <- 2 # def <- 2 ...@@ -273,7 +276,9 @@ cfg$gms$cm_nucscen <- 2 # def <- 2
cfg$gms$cm_ccapturescen <- 1 # def <- 1 cfg$gms$cm_ccapturescen <- 1 # def <- 1
cfg$gms$c_bioliqscen <- 1 # def <- 1 cfg$gms$c_bioliqscen <- 1 # def <- 1
cfg$gms$c_bioh2scen <- 1 # def <- 1 cfg$gms$c_bioh2scen <- 1 # def <- 1
cfg$gms$c_shGreenh2 <- 0 # def <- 0 cfg$gms$c_shGreenH2 <- 0 # def <- 0
cfg$gms$c_shBioTrans <- 1 # def <- 1
cfg$gms$cm_shSynTrans <- 0 # def <- 0
cfg$gms$cm_IndCCSscen <- 1 # def <- 1 cfg$gms$cm_IndCCSscen <- 1 # def <- 1
cfg$gms$cm_optimisticMAC <- 0 # def <- 0 cfg$gms$cm_optimisticMAC <- 0 # def <- 0
cfg$gms$cm_CCS_cement <- 1 # def <- 1 cfg$gms$cm_CCS_cement <- 1 # def <- 1
...@@ -359,7 +364,7 @@ cfg$gms$cm_CO2priceRegConvEndYr <- 2050 # def <- 2050 ...@@ -359,7 +364,7 @@ cfg$gms$cm_CO2priceRegConvEndYr <- 2050 # def <- 2050
cfg$gms$c_regi_nucscen <- "all" # def <- "all" cfg$gms$c_regi_nucscen <- "all" # def <- "all"
cfg$gms$c_regi_capturescen <- "all" # def <- "all" cfg$gms$c_regi_capturescen <- "all" # def <- "all"
cfg$gms$cm_EDGEtr_scen <- "Conservative_liquids" # def <- "Conservative_liquids" cfg$gms$cm_EDGEtr_scen <- "ConvCase" # def <- "ConvCase". For calibration runs: "ConvCase", "ConvCaseWise". For standard runs:"ConvCase", "ElecEra", "HydrHype", "ConvCaseWise", "ElecEraWise", "HydrHypeWise"
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# FLAGS # FLAGS
...@@ -418,7 +423,7 @@ cfg$action <- "ce" #def <- ce ...@@ -418,7 +423,7 @@ cfg$action <- "ce" #def <- ce
# Tar-ball all the put files to save space? # Tar-ball all the put files to save space?
cfg$tarball_puts <- "on" # def <- on cfg$tarball_puts <- "on" # def <- on
# Provide additional SLURM parameters (e.g. "--time=03:30:00") not included in # Provide additional SLURM parameters (e.g. "--time=03:30:00") not included in
# the list of following parameters that are set automatically in start.R: # the list of following parameters that are set automatically in start.R:
# --qos, --nodes, --tasks-per-node, -job-name, --output, --mail-type, --comment. # --qos, --nodes, --tasks-per-node, -job-name, --output, --mail-type, --comment.
cfg$slurmConfig <- "" cfg$slurmConfig <- ""
...@@ -533,6 +538,10 @@ cfg$RunsUsingTHISgdxAsBAU <- NA ...@@ -533,6 +538,10 @@ cfg$RunsUsingTHISgdxAsBAU <- NA
# (1): all technologies # (1): all technologies
# c_shGreenH2 "lower bound on share of green hydrogen in all hydrogen by 2030" # c_shGreenH2 "lower bound on share of green hydrogen in all hydrogen by 2030"
# (a number between 0 and 1): share # (a number between 0 and 1): share
# c_shBioTrans "upper bound on share of biofuels in transport fuels from 2020 onwards"
# (a number between 0 and 1): share
# cm_shSynTrans "lower bound on share of synfuels in transport fuels by 2035"
# (a number between 0 and 1): share
# c_solscen "solar option choice" # c_solscen "solar option choice"
# (1): yes # (1): yes
# (2): no solar # (2): no solar
...@@ -662,6 +671,7 @@ cfg$RunsUsingTHISgdxAsBAU <- NA ...@@ -662,6 +671,7 @@ cfg$RunsUsingTHISgdxAsBAU <- NA
# (5): iterative adjustment V for both budget and tax runs based on CO2 emissions 2011-2100, see core/postsolve.gms for direct algorithms of adjustment # (5): iterative adjustment V for both budget and tax runs based on CO2 emissions 2011-2100, see core/postsolve.gms for direct algorithms of adjustment
# (6): iterative adjustment VI for both budget and tax runs based on peak CO2 emissions budget, without changing temporal profile (i.e. with overshoot), see core/postsolve.gms for direct algorithms of adjustment # (6): iterative adjustment VI for both budget and tax runs based on peak CO2 emissions budget, without changing temporal profile (i.e. with overshoot), see core/postsolve.gms for direct algorithms of adjustment
# (7): iterative adjustment VII for tax runs based on peak CO2 emissions, with change of temporal tax profile after time of peak budget, aiming for net-zero thereafter, see core/postsolve.gms for direct algorithms of adjustment # (7): iterative adjustment VII for tax runs based on peak CO2 emissions, with change of temporal tax profile after time of peak budget, aiming for net-zero thereafter, see core/postsolve.gms for direct algorithms of adjustment
# (9): [REMIND 2.1 default for validation peakBudget runs, in combination with carbonprice = diffCurvPhaseIn2Lin) ] aims at achieving c_budgetCO2 as peakBudget. Scales up and down the original CO2 price path before the peaking year; after the peaking year annual increase by cm_taxCO2inc_after_peakBudgYr. Automatically shifts cm_peakBudgYr to find the correct peaking year for a given .
#c_budgetCO2 "cumulative CO2|Total emissions budget 2011-2100, Gt CO2" #c_budgetCO2 "cumulative CO2|Total emissions budget 2011-2100, Gt CO2"
# budgets from 1.5°C report, chapter 2, Table 2.2: 67% 1.5°C GSAT budget 2018-2100 = 420 Gt CO2, 67% 2.0°C GSAT budget 2018-2100 = 1170 # budgets from 1.5°C report, chapter 2, Table 2.2: 67% 1.5°C GSAT budget 2018-2100 = 420 Gt CO2, 67% 2.0°C GSAT budget 2018-2100 = 1170
# add emissions 2011-2018 = 290 Gt CO2, subtract emissions from feedbacks (e.g. thawing permafrost) 100 Gt CO2 # add emissions 2011-2018 = 290 Gt CO2, subtract emissions from feedbacks (e.g. thawing permafrost) 100 Gt CO2
......
title;start;CES_parameters;cm_bioenergy_tax;cm_rcp_scen;cm_iterative_target_adj;cm_nash_autoconverge;cm_iteration_max;c_budgetCO2;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;cm_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_bioenergymaxscen;c_ccsinjecratescen;c_ccscapratescen;techpol;cm_POPscen;cm_GDPscen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_OILRETIRE;cm_LU_emi_scen;cm_tradecost_bio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau title;start;CES_parameters;cm_bioenergy_tax;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;cm_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;cm_bioenergymaxscen;c_ccsinjecratescen;c_ccscapratescen;techpol;cm_POPscen;cm_GDPscen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_OILRETIRE;cm_LU_emi_scen;cm_tradecost_bio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau
SSP1-calibrate;0;calibrate;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;2;1.025;0;2;1;none;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;; SSP1-calibrate;0;calibrate;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.09;2;1.025;0;2;1;none;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;;
SSP1-Base;1;load;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;2;1.025;0;2;1;none;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;; SSP1-Base;1;load;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.09;2;1.025;0;2;1;none;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;;
SSP1-NDC;1;load;1.75;rcp45;3;1;1;0;NDC2018;1;2100;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base SSP1-NDC;1;load;1.75;rcp45;3;globallyOptimal;0;NDC2018;1;2100;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base
SSP1-NPi;1;load;1.75;rcp45;3;1;1;0;NPi2018;1;2100;3;2050;9;0.09;2;1.025;0;2;1;NPi2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base SSP1-NPi;1;load;1.75;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;0.09;2;1.025;0;2;1;NPi2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base
SSP1-PkBudg900;1;load;1.75;rcp20;9;1;1;900;diffCurvPhaseIn2Lin;60;2045;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base SSP1-PkBudg900;1;load;1.75;rcp20;9;globallyOptimal;900;diffCurvPhaseIn2Lin;60;2045;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base
SSP1-PkBudg1100;1;load;1.75;rcp26;9;1;1;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base SSP1-PkBudg1100;1;load;1.75;rcp26;9;globallyOptimal;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base
SSP1-PkBudg1300;1;load;1.75;rcp26;9;1;1;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base SSP1-PkBudg1300;1;load;1.75;rcp26;9;globallyOptimal;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.09;2;1.025;0;2;1;NDC2018;pop_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SSP1-Base
SDP-calibrate;0;calibrate;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.12;2;1.025;4;5;1;none;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;; SDP-calibrate;0;calibrate;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.12;2;1.025;4;5;1;none;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;;
SDP-Base;1;load;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.12;2;1.025;4;5;1;none;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;; SDP-Base;1;load;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.12;2;1.025;4;5;1;none;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;2005;./config/input.gdx;;
SDP-NDC;1;load;1.75;rcp45;3;1;1;0;NDC2018;1;2100;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-NDC;1;load;1.75;rcp45;3;globallyOptimal;0;NDC2018;1;2100;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SDP-NPi;1;load;1.75;rcp45;3;1;1;0;NPi2018;1;2100;3;2050;9;0.12;2;1.025;4;5;1;NPi2018;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-NPi;1;load;1.75;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;0.12;2;1.025;4;5;1;NPi2018;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SDP-PkBudg900;1;load;1.75;rcp20;9;1;1;900;diffCurvPhaseIn2Lin;200;2045;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-PkBudg900;1;load;1.75;rcp20;9;globallyOptimal;900;diffCurvPhaseIn2Lin;200;2045;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SDP-PkBudg1000;1;load;1.75;rcp20;9;1;1;1000;diffCurvPhaseIn2Lin;150;2045;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-PkBudg1000;1;load;1.75;rcp20;9;globallyOptimal;1000;diffCurvPhaseIn2Lin;150;2045;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SDP-PkBudg1100;1;load;1.75;rcp26;9;1;1;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-PkBudg1100;1;load;1.75;rcp26;9;globallyOptimal;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SDP-PkBudg1300;1;load;1.75;rcp26;9;1;1;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base SDP-PkBudg1300;1;load;1.75;rcp26;9;globallyOptimal;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.12;2;1.025;4;5;1;NDC2018plus;pop_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;2025;./config/input.gdx;SSP2-NDC;SDP-Base
SSP2-calibrate;0;calibrate;1.5;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;3;1.05;0;1;1;none;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;2005;./config/input.gdx;; SSP2-calibrate;0;calibrate;1.5;none;0;off;0;none;-1;2100;3;2050;1;0.09;3;1.05;0;1;1;none;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;2005;./config/input.gdx;;
SSP2-Base;1;load;1.5;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;3;1.05;0;1;1;none;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;2005;./config/input.gdx;; SSP2-Base;1;load;1.5;none;0;off;0;none;-1;2100;3;2050;1;0.09;3;1.05;0;1;1;none;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;2005;./config/input.gdx;;
SSP2-NDC;1;load;1.5;rcp45;3;1;1;0;NDC2018;1;2100;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;2015;./config/input.gdx;SSP2-Base;SSP2-Base SSP2-NDC;1;load;1.5;rcp45;3;globallyOptimal;0;NDC2018;1;2100;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;2015;./config/input.gdx;SSP2-Base;SSP2-Base
SSP2-NPi;1;load;1.5;rcp45;3;1;1;0;NPi2018;1;2100;3;2050;9;0.09;3;1.05;0;1;1;NPi2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base SSP2-NPi;1;load;1.5;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;0.09;3;1.05;0;1;1;NPi2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base
SSP2-PkBudg900;1;load;1.5;rcp20;9;1;1;900;diffCurvPhaseIn2Lin;200;2045;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base SSP2-PkBudg900;1;load;1.5;rcp20;9;globallyOptimal;900;diffCurvPhaseIn2Lin;200;2045;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base
SSP2-PkBudg1100;1;load;1.5;rcp26;9;1;1;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base SSP2-PkBudg1100;1;load;1.5;rcp26;9;globallyOptimal;1100;diffCurvPhaseIn2Lin;100;2080;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base
SSP2-PkBudg1300;1;load;1.5;rcp26;9;1;1;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base SSP2-PkBudg1300;1;load;1.5;rcp26;9;globallyOptimal;1300;diffCurvPhaseIn2Lin;60;2100;3;2050;9;0.09;3;1.05;0;1;1;NDC2018;pop_SSP2;gdp_SSP2;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;2025;./config/input.gdx;SSP2-NDC;SSP2-Base
SSP5-calibrate;0;calibrate;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;1;1.05;0;3;2;none;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;2005;./config/input.gdx;; SSP5-calibrate;0;calibrate;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.09;1;1.05;0;3;2;none;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;2005;./config/input.gdx;;
SSP5-Base;1;load;1.75;none;0;1;1;0;none;-1;2100;3;2050;1;0.09;1;1.05;0;3;2;none;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;2005;./config/input.gdx;; SSP5-Base;1;load;1.75;none;0;off;0;none;-1;2100;3;2050;1;0.09;1;1.05;0;3;2;none;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;2005;./config/input.gdx;;
SSP5-NDC;1;load;1.75;rcp45;3;1;1;0;NDC2018;1;2100;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base SSP5-NDC;1;load;1.75;rcp45;3;globallyOptimal;0;NDC2018;1;2100;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base
SSP5-NPi;1;load;1.75;rcp45;3;1;1;0;NPi2018;1;2100;3;2050;9;0.09;1;1.05;0;3;2;NPi2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base SSP5-NPi;1;load;1.75;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;0.09;1;1.05;0;3;2;NPi2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base
SSP5-PkBudg900;1;load;1.75;rcp20;9;1;1;900;diffCurvPhaseIn2Lin;300;2045;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base SSP5-PkBudg900;1;load;1.75;rcp20;9;globallyOptimal;900;diffCurvPhaseIn2Lin;300;2045;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base
SSP5-PkBudg1100;1;load;1.75;rcp26;9;1;1;1100;diffCurvPhaseIn2Lin;150;2080;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base SSP5-PkBudg1100;1;load;1.75;rcp26;9;globallyOptimal;1100;diffCurvPhaseIn2Lin;150;2080;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base
SSP5-PkBudg1300;1;load;1.75;rcp26;9;1;1;1300;diffCurvPhaseIn2Lin;80;2100;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base SSP5-PkBudg1300;1;load;1.75;rcp26;9;globallyOptimal;1300;diffCurvPhaseIn2Lin;80;2100;3;2050;9;0.09;1;1.05;0;3;2;NDC2018;pop_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;2025;./config/input.gdx;SSP2-NDC;SSP5-Base
...@@ -504,5 +504,10 @@ loop ((t, regi) $ ( (sameAs(t,"2010") OR sameAs(t,"2015")) ...@@ -504,5 +504,10 @@ loop ((t, regi) $ ( (sameAs(t,"2010") OR sameAs(t,"2015"))
v_shGreenH2.lo(t,regi)$(t.val eq 2025) = c_shGreenH2 * 2/3; v_shGreenH2.lo(t,regi)$(t.val eq 2025) = c_shGreenH2 * 2/3;
v_shGreenH2.lo(t,regi)$(t.val gt 2025) = c_shGreenH2; v_shGreenH2.lo(t,regi)$(t.val gt 2025) = c_shGreenH2;
***----------------------------------------------------------------------------
*** upper bound on bioliquids as a share of transport liquids
***----------------------------------------------------------------------------
v_shBioTrans.up(t,regi)$(t.val > 2020) = c_shBioTrans;
*** EOF ./core/bounds.gms *** EOF ./core/bounds.gms
...@@ -53,14 +53,16 @@ o_diff_to_Budg(iteration) "Difference between actual ...@@ -53,14 +53,16 @@ o_diff_to_Budg(iteration) "Difference between actual
o_totCO2emi_peakBudgYr(iteration) "Total CO2 emissions in the peakBudgYr" o_totCO2emi_peakBudgYr(iteration) "Total CO2 emissions in the peakBudgYr"
o_peakBudgYr_Itr(iteration) "Year in which the CO2 budget is supposed to peak. Is changed in iterative_target_adjust = 9" o_peakBudgYr_Itr(iteration) "Year in which the CO2 budget is supposed to peak. Is changed in iterative_target_adjust = 9"
o_factorRescale_taxCO2_afterPeakBudgYr(iteration) "Multiplicative factor for rescaling the CO2 price in the year after peakBudgYr - only needed if flip-flopping of peakBudgYr occurs" o_factorRescale_taxCO2_afterPeakBudgYr(iteration) "Multiplicative factor for rescaling the CO2 price in the year after peakBudgYr - only needed if flip-flopping of peakBudgYr occurs"
o_delay_increase_peakBudgYear(iteration) "Switch that tracks if flip-flopping of peakBudgYr happened. Starts an inner loop to try and overcome this" o_delay_increase_peakBudgYear(iteration) "Counter that tracks if flip-flopping of peakBudgYr happened. Starts an inner loop to try and overcome this"
o_reached_until2150pricepath(iteration) "Switch that tracks if the inner loop of increasing the CO2 price AFTER peakBudgYr goes beyond the initial trajectory" o_reached_until2150pricepath(iteration) "Counter that tracks if the inner loop of increasing the CO2 price AFTER peakBudgYr goes beyond the initial trajectory"
p_taxCO2eq_until2150(ttot,all_regi) "CO2 price trajectory continued until 2150 - as if there was no change in trajectory after peakBudgYr. Needed to recalculate CO2 price trajectory after peakBudgYr was shifted right" p_taxCO2eq_until2150(ttot,all_regi) "CO2 price trajectory continued until 2150 - as if there was no change in trajectory after peakBudgYr. Needed to recalculate CO2 price trajectory after peakBudgYr was shifted right"
o_totCO2emi_allYrs(ttot,iteration) "Global CO2 emissions over time and iterations. Needed to check the procedure to find the peakBudgYr" o_totCO2emi_allYrs(ttot,iteration) "Global CO2 emissions over time and iterations. Needed to check the procedure to find the peakBudgYr"
o_change_totCO2emi_peakBudgYr "Measure for how much the CO2 emissions change around the peakBudgYr" o_change_totCO2emi_peakBudgYr "Measure for how much the CO2 emissions change around the peakBudgYr"
p_factorRescale_taxCO2(iteration) "Multiplicative factor for rescaling the CO2 price to reach the target" p_factorRescale_taxCO2(iteration) "Multiplicative factor for rescaling the CO2 price to reach the target"
p_factorRescale_taxCO2_Funneled(iteration) "Multiplicative factor for rescaling the CO2 price to reach the target - limited by an iteration-dependent funnel" p_factorRescale_taxCO2_Funneled(iteration) "Multiplicative factor for rescaling the CO2 price to reach the target - limited by an iteration-dependent funnel"
o_taxCO2eq_Itr_1regi(ttot,iteration) "CO2 taxed in the last region, tracked over iterations for debugging" o_taxCO2eq_Itr_1regi(ttot,iteration) "CO2 taxed in the last region, tracked over iterations for debugging"
o_pkBudgYr_flipflop(iteration) "Counter that tracks if flipfloping of cm_peakBudgYr occured in the last iterations"
o_taxCO2eq_afterPeakShiftLoop_Itr_1regi(ttot, iteration) "CO2 taxed in the last region, after the loop that shifts peakBudgYr, tracked over iterations for debugging"
***---------------------------------------------------------------------------------------- ***----------------------------------------------------------------------------------------
***-----------------------------------------------ESM module------------------------------- ***-----------------------------------------------ESM module-------------------------------
...@@ -301,6 +303,7 @@ vm_demSeOth(ttot,all_regi,all_enty,all_te) "other sety demand from cert ...@@ -301,6 +303,7 @@ vm_demSeOth(ttot,all_regi,all_enty,all_te) "other sety demand from cert
vm_prodSeOth(ttot,all_regi,all_enty,all_te) "other sety production from certain technologies, have to be calculated in additional equations [TWa]" vm_prodSeOth(ttot,all_regi,all_enty,all_te) "other sety production from certain technologies, have to be calculated in additional equations [TWa]"
v_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen by 2030 [0..1]" v_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen by 2030 [0..1]"
v_shBioTrans(ttot,all_regi) "Share of biofuels in all final energies used for transportation. Value between 0 and 1."
*** ES layer variables *** ES layer variables
vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer." vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer."
...@@ -391,6 +394,7 @@ q_es2ppfen(ttot,all_regi,all_in) "Energy services are h ...@@ -391,6 +394,7 @@ q_es2ppfen(ttot,all_regi,all_in) "Energy services are h
q_shFeCes(ttot,all_regi,all_enty,all_in,all_teEs) "Shares of final energies in production factors." q_shFeCes(ttot,all_regi,all_enty,all_in,all_teEs) "Shares of final energies in production factors."
*q_shFeCesNorm(ttot,all_regi,all_in) "Shares have to sum to 1." *q_shFeCesNorm(ttot,all_regi,all_in) "Shares have to sum to 1."
q_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen" q_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen"
q_shBioTrans(ttot,all_regi) "Define the share of biofuels in all final energies for transportation."
***---------------------------------------------------------------------------------------- ***----------------------------------------------------------------------------------------
***----------------------------------------------trade module------------------------------ ***----------------------------------------------trade module------------------------------
......
...@@ -827,5 +827,16 @@ q_shGreenH2(t,regi).. ...@@ -827,5 +827,16 @@ q_shGreenH2(t,regi)..
) * v_shGreenH2(t,regi) ) * v_shGreenH2(t,regi)
; ;
***---------------------------------------------------------------------------
*' Share of biofuels in transport liquids
***---------------------------------------------------------------------------
q_shBioTrans(t,regi)..
sum(se2fe(entySe,entyFeTrans,te)$seAgg2se("all_seliq",entySe), vm_prodFe(t,regi,entySe,entyFeTrans,te) )
* v_shBioTrans(t,regi)
=e=
sum(se2fe("seliqbio",entyFeTrans,te), vm_prodFe(t,regi,"seliqbio",entyFeTrans,te) )
;
*** EOF ./core/equations.gms *** EOF ./core/equations.gms
...@@ -295,8 +295,7 @@ display p_actualbudgetco2; ...@@ -295,8 +295,7 @@ display p_actualbudgetco2;
*** if tax after cm_peakBudgYr is higher than normal increase rate (exceeding a 20% tolerance): shift right *** if tax after cm_peakBudgYr is higher than normal increase rate (exceeding a 20% tolerance): shift right
elseif( ( sum(regi, sum(t2$(t2.val = pm_ttot_val(ttot+1)),pm_taxCO2eq(t2,regi))) > sum(regi,sum(t2$(t2.val = pm_ttot_val(ttot+1)),p_taxCO2eq_until2150(t2,regi)))*1.2 ) AND (cm_peakBudgYr < 2100) ), !! if peaking time would be after 2100, keep 2100 budget year elseif( ( sum(regi, sum(t2$(t2.val = pm_ttot_val(ttot+1)),pm_taxCO2eq(t2,regi))) > sum(regi,sum(t2$(t2.val = pm_ttot_val(ttot+1)),p_taxCO2eq_until2150(t2,regi)))*1.2 ) AND (cm_peakBudgYr < 2100) ), !! if peaking time would be after 2100, keep 2100 budget year
if( (iteration.val > 2) AND ( o_peakBudgYr_Itr(iteration - 1) > o_peakBudgYr_Itr(iteration) ) AND ( o_peakBudgYr_Itr(iteration - 2) = o_peakBudgYr_Itr(iteration) ) , !! if the target year was just shifted left after being shifted right if( (iteration.val > 2) AND ( o_peakBudgYr_Itr(iteration - 1) > o_peakBudgYr_Itr(iteration) ) AND ( o_peakBudgYr_Itr(iteration - 2) = o_peakBudgYr_Itr(iteration) ) , !! if the target year was just shifted left after being shifted right
o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); !! don't shift right again immediately, but go into a different loop: o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); !! don't shift right again immediately
o_delay_increase_peakBudgYear(iteration) = 1;
else else
display "shift peakBudgYr right"; display "shift peakBudgYr right";
o_peakBudgYr_Itr(iteration+1) = pm_ttot_val(ttot + 1); !! ttot+1 is the new peakBudgYr o_peakBudgYr_Itr(iteration+1) = pm_ttot_val(ttot + 1); !! ttot+1 is the new peakBudgYr
...@@ -422,6 +421,13 @@ if(cm_iterative_target_adj eq 9, ...@@ -422,6 +421,13 @@ if(cm_iterative_target_adj eq 9,
*** ----B1: check if cm_peakBudgYr should be shifted left or right: *** ----B1: check if cm_peakBudgYr should be shifted left or right:
if( abs(o_diff_to_Budg(iteration)) < 20, !! only think about shifting peakBudgYr if the budget is close enough to target budget if( abs(o_diff_to_Budg(iteration)) < 20, !! only think about shifting peakBudgYr if the budget is close enough to target budget
display "close enough to target budget to check timing of peak year"; display "close enough to target budget to check timing of peak year";
!! check if the target year was just shifted back left after being shifted right before
if ( (iteration.val > 2) AND ( o_peakBudgYr_Itr(iteration - 1) > o_peakBudgYr_Itr(iteration) ) AND ( o_peakBudgYr_Itr(iteration - 2) = o_peakBudgYr_Itr(iteration) ),
o_pkBudgYr_flipflop(iteration) = 1;
display "flipflop observed (before loop)";
);
loop(ttot$(ttot.val = cm_peakBudgYr), !! look at the peak timing loop(ttot$(ttot.val = cm_peakBudgYr), !! look at the peak timing
if( ( (o_totCO2emi_peakBudgYr(iteration) < -(0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ) AND (cm_peakBudgYr > 2040) ), !! no peaking time before 2040 if( ( (o_totCO2emi_peakBudgYr(iteration) < -(0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ) AND (cm_peakBudgYr > 2040) ), !! no peaking time before 2040
display "shift peakBudgYr left"; display "shift peakBudgYr left";
...@@ -429,9 +435,13 @@ if(cm_iterative_target_adj eq 9, ...@@ -429,9 +435,13 @@ if(cm_iterative_target_adj eq 9,
pm_taxCO2eq(t,regi)$(t.val gt pm_ttot_val(ttot - 1)) = p_taxCO2eq_until2150(ttot-1,regi) + (t.val - pm_ttot_val(ttot - 1)) * cm_taxCO2inc_after_peakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year after peakBudgYr pm_taxCO2eq(t,regi)$(t.val gt pm_ttot_val(ttot - 1)) = p_taxCO2eq_until2150(ttot-1,regi) + (t.val - pm_ttot_val(ttot - 1)) * cm_taxCO2inc_after_peakBudgYr * sm_DptCO2_2_TDpGtC; !! increase by cm_taxCO2inc_after_peakBudgYr per year after peakBudgYr
elseif ( ( o_totCO2emi_peakBudgYr(iteration) > (0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ) AND (cm_peakBudgYr < 2100) ), !! if peaking time would be after 2100, keep 2100 budget year elseif ( ( o_totCO2emi_peakBudgYr(iteration) > (0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ) AND (cm_peakBudgYr < 2100) ), !! if peaking time would be after 2100, keep 2100 budget year
if( (iteration.val > 2) AND ( o_peakBudgYr_Itr(iteration - 1) > o_peakBudgYr_Itr(iteration) ) AND ( o_peakBudgYr_Itr(iteration - 2) = o_peakBudgYr_Itr(iteration) ) , !! if the target year was just shifted left after being shifted right if( (o_pkBudgYr_flipflop(iteration) eq 1), !! if the target year was just shifted left after being shifted right, and would now be shifted right again
display "peakBudgYr was left, right, left and is now supposed to be shifted right again -> flipflop, thus go into separate loop";
o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); !! don't shift right again immediately, but go into a different loop: o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); !! don't shift right again immediately, but go into a different loop:
o_delay_increase_peakBudgYear(iteration) = 1; o_delay_increase_peakBudgYear(iteration) = 1;
elseif ( o_delay_increase_peakBudgYear(iteration) eq 1 ),
display "still in separate loop trying to resolve flip-flop behavior";
o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); !! keep current peakBudgYr,
else else
display "shift peakBudgYr right"; display "shift peakBudgYr right";
o_peakBudgYr_Itr(iteration+1) = pm_ttot_val(ttot + 1); !! ttot+1 is the new peakBudgYr o_peakBudgYr_Itr(iteration+1) = pm_ttot_val(ttot + 1); !! ttot+1 is the new peakBudgYr
...@@ -456,27 +466,36 @@ if(cm_iterative_target_adj eq 9, ...@@ -456,27 +466,36 @@ if(cm_iterative_target_adj eq 9,
display "not shifting peakBudgYr right, instead adjusting CO2 price for following year"; display "not shifting peakBudgYr right, instead adjusting CO2 price for following year";
loop(ttot$(ttot.val eq cm_peakBudgYr), !! set ttot to the current peakBudgYr loop(ttot$(ttot.val eq cm_peakBudgYr), !! set ttot to the current peakBudgYr
loop(t2$(t2.val eq pm_ttot_val(ttot+1)), !! set t2 to the following time step loop(t2$(t2.val eq pm_ttot_val(ttot+1)), !! set t2 to the following time step
o_factorRescale_taxCO2_afterPeakBudgYr(iteration) = 1 + max(sum(regi2,vm_emiAll.l(t2,regi2,"co2"))/sum(regi2,vm_emiAll.l("2015",regi2,"co2")),-0.75) ; !! inspired by Christoph. This value is 1 if emissions are 0. o_factorRescale_taxCO2_afterPeakBudgYr(iteration) = 1 + max(sum(regi2,vm_emiAll.l(ttot,regi2,"co2"))/sum(regi2,vm_emiAll.l("2015",regi2,"co2")),-0.75) ;
!! this was inspired by Christoph's approach. This value is 1 if emissions in the peakBudgYr are 0; goes down to 0.25 if emissions are <0 and approaching the size of 2015 emissions, and > 1 if emissions > 0.
!! in case the normal linear extension still is not enough to get emissions to 0 after the peakBudgYr, shift peakBudgYr right again: !! in case the normal linear extension still is not enough to get emissions to 0 after the peakBudgYr, shift peakBudgYr right again:
if( ( o_reached_until2150pricepath(iteration-1) eq 1 ) AND ( (o_factorRescale_taxCO2_afterPeakBudgYr(iteration) / p_factorRescale_taxCO2_Funneled(iteration)) > 1), if( ( o_reached_until2150pricepath(iteration-1) eq 1 ) AND ( o_totCO2emi_peakBudgYr(iteration) > (0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ),
display "price in following year reached original path and is still not enough -> shift peakBudgYr to right"; display "price in following year reached original path in previous iteration and is still not enough -> shift peakBudgYr to right";
o_delay_increase_peakBudgYear(iteration) = 0; o_delay_increase_peakBudgYear(iteration+1) = 0; !! probably is not necessary
o_reached_until2150pricepath(iteration) = 0; o_reached_until2150pricepath(iteration) = 0;
o_peakBudgYr_Itr(iteration+1) = t2.val; !! shift PeakBudgYear to the following time step o_peakBudgYr_Itr(iteration+1) = t2.val; !! shift PeakBudgYear to the following time step
cm_peakBudgYr = o_peakBudgYr_Itr(iteration+1); cm_peakBudgYr = o_peakBudgYr_Itr(iteration+1);
pm_taxCO2eq(t2,regi) = p_taxCO2eq_until2150(t2,regi) ; !! set CO2 price in t2 to value in the "continuous path" pm_taxCO2eq(t2,regi) = p_taxCO2eq_until2150(t2,regi) ; !! set CO2 price in t2 to value in the "continuous path"
display cm_peakBudgYr; display cm_peakBudgYr;
elseif ( ( o_reached_until2150pricepath(iteration-1) eq 1 ) AND ( o_totCO2emi_peakBudgYr(iteration) < (0.1 + o_change_totCO2emi_peakBudgYr(iteration)) ) ),
display "New intermediate price in timestep after cm_peakBudgYr is sufficient to stabilize peaking year - go back to normal loop";
o_delay_increase_peakBudgYear(iteration+1) = 0; !! probably is not necessary
o_reached_until2150pricepath(iteration) = 0;
o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration);
cm_peakBudgYr = o_peakBudgYr_Itr(iteration+1);
else !! either didn't reach the continued "until2150"-price path in last iteration, or the increase was high enough to get emissions to 0. else !! either didn't reach the continued "until2150"-price path in last iteration, or the increase was high enough to get emissions to 0.
!! in this case, keep PeakBudgYr, and adjust the price in the year after the peakBudgYr to get emissions close to 0, !! in this case, keep PeakBudgYr, and adjust the price in the year after the peakBudgYr to get emissions close to 0,
o_delay_increase_peakBudgYear(iteration+1) = 1; !! make sure next iteration peakBudgYr is not shifted right again
o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration); o_peakBudgYr_Itr(iteration+1) = o_peakBudgYr_Itr(iteration);
pm_taxCO2eq(t2,regi) = max(pm_taxCO2eq(ttot,regi), !! at least as high as the price in the peakBudgYr pm_taxCO2eq(t2,regi) = max(pm_taxCO2eq(ttot,regi), !! at least as high as the price in the peakBudgYr
pm_taxCO2eq(t2,regi) * (o_factorRescale_taxCO2_afterPeakBudgYr(iteration) / p_factorRescale_taxCO2_Funneled(iteration) ) !! the full path was already rescaled by p_factorRescale_taxCO2_Funneled, so adjust the second rescaling pm_taxCO2eq(t2,regi) * (o_factorRescale_taxCO2_afterPeakBudgYr(iteration) / p_factorRescale_taxCO2_Funneled(iteration) ) !! the full path was already rescaled by p_factorRescale_taxCO2_Funneled, so adjust the second rescaling
); );
loop(regi, !! this loop necessary to allow the <-comparison in the next if statement loop(regi, !! this loop is necessary to allow the <-comparison in the next if statement
if( p_taxCO2eq_until2150(t2,regi) < pm_taxCO2eq(t2,regi) , !! check if new price would be higher than the price if the peakBudgYr would be one timestep later if( p_taxCO2eq_until2150(t2,regi) < pm_taxCO2eq(t2,regi) , !! check if new price would be higher than the price if the peakBudgYr would be one timestep later
pm_taxCO2eq(t2,regi) = p_taxCO2eq_until2150(t2,regi); display "price increase reached price from path with cm_peakBudgYr one timestep later - downscale to 99%";
pm_taxCO2eq(t2,regi) = 0.99 * p_taxCO2eq_until2150(t2,regi); !! reduce the new CO2 price to 99% of the price that it would be if the peaking year was one timestep later. The next iteration will show if this is enough, otherwise cm_peakBudgYr will be shifted right
o_reached_until2150pricepath(iteration) = 1; !! upward CO2 price correction reached the continued price path - check in next iteration if this is high enough. o_reached_until2150pricepath(iteration) = 1; !! upward CO2 price correction reached the continued price path - check in next iteration if this is high enough.
); );
); );
...@@ -490,7 +509,12 @@ if(cm_iterative_target_adj eq 9, ...@@ -490,7 +509,12 @@ if(cm_iterative_target_adj eq 9,
cm_peakBudgYr = o_peakBudgYr_Itr(iteration+1); !! this has to happen outside the loop, otherwise the loop condition might be true twice cm_peakBudgYr = o_peakBudgYr_Itr(iteration+1); !! this has to happen outside the loop, otherwise the loop condition might be true twice
); !! if o_delay_increase_peakBudgYear(iteration) = 1, !! if there was a flip-floping in the previous iterations, try to solve this ); !! if o_delay_increase_peakBudgYear(iteration) = 1, !! if there was a flip-floping in the previous iterations, try to solve this
display o_delay_increase_peakBudgYear, o_reached_until2150pricepath, pm_taxCO2eq, o_peakBudgYr_Itr;
loop(regi, !! not a nice solution to having only the price of one regi display (for better visibility), but this way it overwrites again and again until the value from the last regi remain
o_taxCO2eq_afterPeakShiftLoop_Itr_1regi(t,iteration+1) = pm_taxCO2eq(t,regi);
);
display o_delay_increase_peakBudgYear, o_reached_until2150pricepath, pm_taxCO2eq, o_peakBudgYr_Itr, o_taxCO2eq_afterPeakShiftLoop_Itr_1regi, o_pkBudgYr_flipflop;
); !! if cm_emiscen eq 9, ); !! if cm_emiscen eq 9,
); !! if cm_iterative_target_adj eq 8, ); !! if cm_iterative_target_adj eq 8,
......
...@@ -82,9 +82,9 @@ ...@@ -82,9 +82,9 @@
* *
* Regionscode: 690d3718e151be1b450b394c1064b1c5 * Regionscode: 690d3718e151be1b450b394c1064b1c5
* *
* Input data revision: 5.942 * Input data revision: 5.944
* *
* Last modification (input data): Thu Apr 23 11:28:04 2020 * Last modification (input data): Tue Apr 28 10:13:23 2020
* *
*###################### R SECTION END (VERSION INFO) ########################### *###################### R SECTION END (VERSION INFO) ###########################
...@@ -220,7 +220,9 @@ cm_nucscen "nuclear option choice" ...@@ -220,7 +220,9 @@ cm_nucscen "nuclear option choice"
cm_ccapturescen "carbon capture option choice" cm_ccapturescen "carbon capture option choice"
c_bioliqscen "bioenergy liquids technology choise" c_bioliqscen "bioenergy liquids technology choise"
c_bioh2scen "bioenergy hydrogen technology choice" c_bioh2scen "bioenergy hydrogen technology choice"
c_shGreenH2 "share of green hydrogen in all hydrogen by 2030" c_shGreenH2 "lower bound on share of green hydrogen in all hydrogen by 2030"
c_shBioTrans "upper bound on share of bioliquids in all transport liquids from 2020 onwards"
cm_shSynTrans "lower bound on share of synthetic fuels in all transport fuels by 2035"
cm_IndCCSscen "CCS for Industry" cm_IndCCSscen "CCS for Industry"
cm_optimisticMAC "assume optimistic Industry MAC from AR5 Ch. 10?" cm_optimisticMAC "assume optimistic Industry MAC from AR5 Ch. 10?"
cm_CCS_cement "CCS for cement sub-sector" cm_CCS_cement "CCS for cement sub-sector"
...@@ -311,6 +313,8 @@ cm_ccapturescen = 1; !! def = 1 ...@@ -311,6 +313,8 @@ cm_ccapturescen = 1; !! def = 1
c_bioliqscen = 1; !! def = 1 c_bioliqscen = 1; !! def = 1
c_bioh2scen = 1; !! def = 1 c_bioh2scen = 1; !! def = 1
c_shGreenH2 = 0; !! def = 0 c_shGreenH2 = 0; !! def = 0
c_shBioTrans = 1; !! def = 1
cm_shSynTrans = 0; !! def = 0
c_solscen = 1; !! def = 1 c_solscen = 1; !! def = 1
cm_IndCCSscen = 1; !! def = 1 cm_IndCCSscen = 1; !! def = 1
......
...@@ -272,8 +272,8 @@ pm_cesdata(t,regi,in,"quantity") $ p29_esdemand(t,regi,"%cm_GDPscen%",in) ...@@ -272,8 +272,8 @@ pm_cesdata(t,regi,in,"quantity") $ p29_esdemand(t,regi,"%cm_GDPscen%",in)
*** Load exogenous transport demand - required for the EDGE transport module *** Load exogenous transport demand - required for the EDGE transport module
$ifthen.edgesm %transport% == "edge_esm" $ifthen.edgesm %transport% == "edge_esm"
pm_cesdata(t,regi,in,"quantity") $ p29_trpdemand(t,regi,"%cm_GDPscen%",in) pm_cesdata(t,regi,in,"quantity") $ p29_trpdemand(t,regi,"%cm_GDPscen%","%cm_EDGEtr_scen%", in)
= p29_trpdemand(t,regi,"%cm_GDPscen%",in); = p29_trpdemand(t,regi,"%cm_GDPscen%", "%cm_EDGEtr_scen%", in);
$endif.edgesm $endif.edgesm
*** Load capital quantities *** Load capital quantities
......
# | (C) 2006-2019 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 name,type,reason
pm_esCapCost,input,questionnaire pm_esCapCost,input,questionnaire
pm_fe2es,input,questionnaire pm_fe2es,input,questionnaire
pm_shFeCes,input,questionnaire pm_shFeCes,input,questionnaire
vm_prodSe,input,questionnaire
vm_prodFe,input,questionnaire
vm_demFeForEs,input,questionnaire vm_demFeForEs,input,questionnaire
pm_cf,input,questionnaire pm_cf,input,questionnaire
cm_startyear,input,questionnaire cm_startyear,input,questionnaire
...@@ -10,15 +10,9 @@ pm_bunker_share_in_nonldv_fe(tall,all_regi) "Share of bunkers in non-LDV trans ...@@ -10,15 +10,9 @@ pm_bunker_share_in_nonldv_fe(tall,all_regi) "Share of bunkers in non-LDV trans
; ;
Positive variables Positive variables
v35_shBioFe(ttot,all_regi) "Share of biofuels in all final energies used for transportation. Value between 0 and 1."
v35_shSynSe(ttot,all_regi) "Share of synthetic liquids in all fossil liquids. Value between 0 and 1."
; ;
Equations Equations
q35_shBioFe(ttot,all_regi) "Define the share of biofuels in all final energies for transportation."
$ifthen.ccu %CCU% == "on"
q35_shSynSe(ttot,all_regi) "Define share of synthetic liquids in all fossil liquids."
$endif.ccu
; ;
*** EOF ./modules/35_transport/edge_esm/declarations.gms *** EOF ./modules/35_transport/edge_esm/declarations.gms
...@@ -6,23 +6,4 @@ ...@@ -6,23 +6,4 @@
*** | Contact: remind@pik-potsdam.de *** | Contact: remind@pik-potsdam.de
*** SOF ./modules/35_transport/edge_esm/equations.gms *** SOF ./modules/35_transport/edge_esm/equations.gms
*' Adjust the shares of biofuels in transport liquids.
q35_shBioFe(t,regi)..
sum(se2fe(entySe,fe_transport_liquids_dyn35,te), vm_prodFe(t,regi,entySe,fe_transport_liquids_dyn35,te) )
* v35_shBioFe(t,regi)
=e=
sum(se2fe("seliqbio",fe_transport_liquids_dyn35,te), vm_prodFe(t,regi,"seliqbio",fe_transport_liquids_dyn35,te) )
;
*' Adjust the shares of synfuels in transport liquids.
*' This equation is only effective when CCU is switched on.
$ifthen.ccu %CCU% == "on"
q35_shSynSe(t,regi)..
sum(se2fe(entySe,fe_transport_liquids_dyn35,te), vm_prodFe(t,regi,entySe,fe_transport_liquids_dyn35,te) ) * v35_shSynSe(t,regi)
=e=
vm_prodSe(t,regi,"seh2","seliqfos","MeOH")
;
$endif.ccu
*** EOF ./modules/35_transport/edge_esm/equations.gms *** EOF ./modules/35_transport/edge_esm/equations.gms
"scenario_name";"options";"switch" scenario_name;options;switch
"Conservative_liquids";"addvintages";TRUE ConvCase;enhancedtech;FALSE
"Conservative_liquids";"endogeff";TRUE ConvCase;inconvenience;TRUE
"Conservative_liquids";"enhancedtech";FALSE ConvCase;merge_traccs;TRUE
"Conservative_liquids";"inconvenience";TRUE ConvCase;rebates_febates;FALSE
"Conservative_liquids";"merge_traccs";TRUE ConvCase;selfmarket_acceptancy;FALSE
"Conservative_liquids";"rebates_febates";FALSE ConvCase;selfmarket_policypush;FALSE
"Conservative_liquids";"savetmpinput";TRUE ConvCase;selfmarket_taxes;FALSE
"Conservative_liquids";"selfmarket_acceptancy";FALSE ConvCase;smartlifestyle;FALSE
"Conservative_liquids";"selfmarket_policypush";FALSE ElecEra;enhancedtech;TRUE
"Conservative_liquids";"selfmarket_taxes";FALSE ElecEra;inconvenience;TRUE
"Conservative_liquids";"smartlifestyle";FALSE ElecEra;merge_traccs;TRUE
"Electricity_push";"addvintages";TRUE ElecEra;rebates_febates;TRUE
"Electricity_push";"endogeff";TRUE ElecEra;selfmarket_acceptancy;TRUE
"Electricity_push";"enhancedtech";TRUE ElecEra;selfmarket_policypush;TRUE
"Electricity_push";"inconvenience";TRUE ElecEra;selfmarket_taxes;TRUE
"Electricity_push";"merge_traccs";TRUE ElecEra;smartlifestyle;FALSE
"Electricity_push";"rebates_febates";TRUE HydrHype;enhancedtech;TRUE
"Electricity_push";"savetmpinput";TRUE HydrHype;inconvenience;TRUE
"Electricity_push";"selfmarket_acceptancy";TRUE HydrHype;merge_traccs;TRUE
"Electricity_push";"selfmarket_policypush";TRUE HydrHype;rebates_febates;TRUE
"Electricity_push";"selfmarket_taxes";TRUE HydrHype;selfmarket_acceptancy;TRUE
"Electricity_push";"smartlifestyle";FALSE HydrHype;selfmarket_policypush;TRUE
"Hydrogen_push";"addvintages";TRUE HydrHype;selfmarket_taxes;TRUE
"Hydrogen_push";"endogeff";TRUE HydrHype;smartlifestyle;FALSE
"Hydrogen_push";"enhancedtech";TRUE ConvCaseWise;enhancedtech;FALSE
"Hydrogen_push";"inconvenience";TRUE ConvCaseWise;inconvenience;TRUE
"Hydrogen_push";"merge_traccs";TRUE ConvCaseWise;merge_traccs;TRUE
"Hydrogen_push";"rebates_febates";TRUE ConvCaseWise;rebates_febates;FALSE
"Hydrogen_push";"savetmpinput";TRUE ConvCaseWise;selfmarket_acceptancy;FALSE
"Hydrogen_push";"selfmarket_acceptancy";TRUE ConvCaseWise;selfmarket_policypush;FALSE
"Hydrogen_push";"selfmarket_policypush";TRUE ConvCaseWise;selfmarket_taxes;FALSE
"Hydrogen_push";"selfmarket_taxes";TRUE ConvCaseWise;smartlifestyle;TRUE
"Hydrogen_push";"smartlifestyle";FALSE ElecEraWise;enhancedtech;TRUE
"Smart_lifestyles_Electricity_push";"addvintages";TRUE ElecEraWise;inconvenience;TRUE
"Smart_lifestyles_Electricity_push";"endogeff";TRUE ElecEraWise;merge_traccs;TRUE
"Smart_lifestyles_Electricity_push";"enhancedtech";TRUE ElecEraWise;rebates_febates;TRUE
"Smart_lifestyles_Electricity_push";"inconvenience";TRUE ElecEraWise;selfmarket_acceptancy;TRUE
"Smart_lifestyles_Electricity_push";"merge_traccs";TRUE ElecEraWise;selfmarket_policypush;TRUE
"Smart_lifestyles_Electricity_push";"rebates_febates";TRUE ElecEraWise;selfmarket_taxes;TRUE
"Smart_lifestyles_Electricity_push";"savetmpinput";TRUE ElecEraWise;smartlifestyle;TRUE
"Smart_lifestyles_Electricity_push";"selfmarket_acceptancy";TRUE HydrHypeWise;enhancedtech;TRUE
"Smart_lifestyles_Electricity_push";"selfmarket_policypush";TRUE HydrHypeWise;inconvenience;TRUE
"Smart_lifestyles_Electricity_push";"selfmarket_taxes";TRUE HydrHypeWise;merge_traccs;TRUE
"Smart_lifestyles_Electricity_push";"smartlifestyle";TRUE HydrHypeWise;rebates_febates;TRUE
HydrHypeWise;selfmarket_acceptancy;TRUE
HydrHypeWise;selfmarket_policypush;TRUE
HydrHypeWise;selfmarket_taxes;TRUE
HydrHypeWise;smartlifestyle;TRUE
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment