Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New realizations diffExp2Lin and diffLin2Lin in 45_carbonprice #1723

Merged
merged 2 commits into from
Jul 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### changed

### added
- added realizations diffExp2Lin and diffLin2Lin to 45_carbonprice [#1723](https://github.com/remindmodel/remind/pull/1723)

### fixed
- included CCS from plastic waste incineration in CCS mass flows so it is
Expand Down
23 changes: 17 additions & 6 deletions main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -372,12 +372,14 @@ $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): 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): 5% exponential increase until c_expoLinear_yearStart, linear increase thereafter
*' * (exponential): 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, 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): 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): [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;
*' * (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): [Variant of diffCurvPhaseIn2Lin, will be further developed before becoming the new default] 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);
*' * (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
$setglobal carbonprice none !! def = none
Expand Down Expand Up @@ -508,8 +510,8 @@ parameter
parameter
cm_co2_tax_growth "growth rate of carbon tax"
;
cm_co2_tax_growth = 1.05; !! def = 1.05 !! regexp = is.numeric
*' (any number >= 0): rate of exponential increase over time
cm_co2_tax_growth = 1.045; !! def = 1.045 !! regexp = is.numeric
*' (any number >= 0): rate of exponential increase over time, default value chosen to be consistent with interest rate
parameter
c_macscen "scenario switch on whether or not to use MAC (Marginal Abatement Cost) for certain sectors not related to direct combustion of fossil fuel, e.g. fugitive emissions from old mines, forestry, agriculture and cement"
;
Expand Down Expand Up @@ -977,10 +979,19 @@ parameter
c_taxCO2inc_after_peakBudgYr = 0; !! def = 0 . For weak targets (higher than 1100 Peak Budget), this value might need to increased to prevent continually increasing temperatures
*'
parameter
cm_CO2priceRegConvEndYr "Year at which regional CO2 taxes converge in module 45 realization diffCurvPhaseIn2Lin"
cm_CO2priceRegConvEndYr "Year at which regional CO2 taxes converge in module 45 for realizations with differentiated carbon prices"
;
cm_CO2priceRegConvEndYr = 2050; !! def = 2050
cm_CO2priceRegConvEndYr = 2050; !! def = 2050
*'
parameter
cm_co2_tax_spread "spread of carbon prices in 2025 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

parameter
c_teNoLearngConvEndYr "Year at which regional costs of non-learning technologies converge"
;
Expand Down
1 change: 1 addition & 0 deletions modules/45_carbonprice/NDC/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ pm_shPPPMER,input,questionnaire
pm_pop,input,questionnaire
pm_gdp,input,questionnaire
cm_CO2priceRegConvEndYr,input,questionnaire
cm_co2_tax_spread,switch,no carbon price differentiation in this realization
1 change: 1 addition & 0 deletions modules/45_carbonprice/NPi/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@ cm_NDC_divergentScenario,input,questionnaire
vm_demFeSector,input,questionnaire
pm_emifac,input,questionnaire
cm_startyear,input,added by codeCheck
cm_co2_tax_spread,input,no carbon price differentiation in this realization
1 change: 1 addition & 0 deletions modules/45_carbonprice/diffCurvPhaseIn2Lin/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ pm_consPC,input,questionnaire
pm_prtp,input,questionnaire
vm_demFeSector,input,questionnaire
pm_emifac,input,questionnaire
cm_co2_tax_spread,input,added by codeCheck
81 changes: 81 additions & 0 deletions modules/45_carbonprice/diffExp2Lin/datainput.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
*** | (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: [email protected]
*** SOF ./modules/45_carbonprice/diffExp2Lin/datainput.gms
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in,
*** global price from cm_CO2priceRegConvEndYr (default = 2050)
*** carbon price of developed regions increases exponentially with rate given by cm_co2_tax_growth until peak year (with iterative_target_adj = 9) or until 2100 (with iterative_target_adj = 5)
*** linear carbon price curve of developed regions starts at 0 in 2020
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


*** convergence to global CO2 price depends on GDP per capita (in 1e3 $ PPP 2005).
*** benchmark year kept at 2015 since 2020 not suitable.
p45_gdppcap2015_PPP(regi) = pm_gdp("2015",regi)/pm_shPPPMER(regi) / pm_pop("2015",regi);
display p45_gdppcap2015_PPP;

*** Selection of differentiation scheme via cm_co2_tax_spread
if(cm_co2_tax_spread eq 1,
p45_phasein_2025ratio(regi) = 1; !! all regions
);

if(cm_co2_tax_spread eq 10,
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) le 3.5) = 0.1; !! SSA
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 3.5 and p45_gdppcap2015_PPP(regi) le 5) = 0.2; !! IND
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 5 and p45_gdppcap2015_PPP(regi) le 10) = 0.3; !! OAS
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 10 and p45_gdppcap2015_PPP(regi) le 15) = 0.5; !! CHA, REF, LAM
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 15 and p45_gdppcap2015_PPP(regi) le 20) = 0.7; !! MEA, NEU
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 20) = 1; !! EUR, JPN, USA, CAZ
);

if(cm_co2_tax_spread eq 20,
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) le 3.5) = 0.05; !! SSA
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 3.5 and p45_gdppcap2015_PPP(regi) le 5) = 0.1; !! IND
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 5 and p45_gdppcap2015_PPP(regi) le 10) = 0.2; !! OAS
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 10 and p45_gdppcap2015_PPP(regi) le 15) = 0.4; !! CHA, REF, LAM
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 15 and p45_gdppcap2015_PPP(regi) le 20) = 0.6; !! MEA, NEU
p45_phasein_2025ratio(regi)$(p45_gdppcap2015_PPP(regi) gt 20) = 1; !! EUR, JPN, USA, CAZ
);
display p45_phasein_2025ratio;


*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

*** for the current implementation, use the following trajectory for rich countries:
*** price increases exponentially from cm_co2_tax_2020 in 2020
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("2020") = cm_co2_tax_2020 * sm_DptCO2_2_TDpGtC;
);

p45_CO2priceTrajDeveloped(t)$(t.val gt 2005) = p45_CO2priceTrajDeveloped("2020") * cm_co2_tax_growth**(t.val-2020);
p45_CO2priceTrajDeveloped(t)$(t.val gt 2110) = p45_CO2priceTrajDeveloped("2110"); !! to prevent huge taxes after 2110 and the resulting convergence problems, set taxes after 2110 equal to 2110 value

*** Then create regional phase-in:
*** Set regional CO2 price factor equal to p45_phasein_2025ratio until 2025:
p45_regCO2priceFactor(t,regi)$(t.val le 2025) = p45_phasein_2025ratio(regi);
*** Then define quadratic phase-in until cm_CO2priceRegConvEndYr:
loop(t$((t.val gt 2025) and (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), 2)
)
);
);
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/diffExp2Lin/datainput.gms
23 changes: 23 additions & 0 deletions modules/45_carbonprice/diffExp2Lin/declarations.gms
Original file line number Diff line number Diff line change
@@ -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: [email protected]
*** SOF ./modules/45_carbonprice/diffExp2Lin/datainput.gms
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in,
*** global price from cm_CO2priceRegConvEndYr (default = 2050)
*** carbon price of developed regions increases exponentially with rate given by cm_co2_tax_growth until peak year (with iterative_target_adj = 9) or until 2100 (with iterative_target_adj = 5)
*** linear carbon price curve of developed regions starts at 0 in 2020
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
parameters
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/diffExp2Lin/declarations.gms
25 changes: 25 additions & 0 deletions modules/45_carbonprice/diffExp2Lin/not_used.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# | (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: [email protected]
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,???
vm_emiFgas,input,questionnaire
pm_globalMeanTemperature,input,questionnaire
pm_temperatureImpulseResponseCO2,input,questionnaire
pm_consPC,input,questionnaire
pm_GDPGross,input,questionnaire
pm_prtp,input,questionnaire
cm_carbonprice_temperatureLimit,input,questionnaire
pm_ttot_2_tall,input,questionnaire
cm_NDC_divergentScenario,input,questionnaire
vm_demFeSector,input,questionnaire
pm_emifac,input,questionnaire
25 changes: 25 additions & 0 deletions modules/45_carbonprice/diffExp2Lin/postsolve.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
*** | (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: [email protected]
*** SOF ./modules/45_carbonprice/diffExp2Lin/postsolve.gms
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
*** regional prices are initially differentiated by GDP/capita and converge using quadratic phase-in,
*** global price from cm_CO2priceRegConvEndYr (default = 2050)
*** carbon price of developed regions increases exponentially with rate given by cm_co2_tax_growth until peak year (with iterative_target_adj = 9) or until 2100 (with iterative_target_adj = 5)
*** linear carbon price curve of developed regions starts at 0 in 2020
***---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*** 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 20),
p45_CO2priceTrajDeveloped(t) = pm_taxCO2eq(t,regi);
);

*** quadratic 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/diffExp2Lin/postsolve.gms
16 changes: 16 additions & 0 deletions modules/45_carbonprice/diffExp2Lin/realization.gms
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*** | (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: [email protected]
*** 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.

*####################### R SECTION START (PHASES) ##############################
$Ifi "%phase%" == "declarations" $include "./modules/45_carbonprice/diffExp2Lin/declarations.gms"
$Ifi "%phase%" == "datainput" $include "./modules/45_carbonprice/diffExp2Lin/datainput.gms"
$Ifi "%phase%" == "postsolve" $include "./modules/45_carbonprice/diffExp2Lin/postsolve.gms"
*######################## R SECTION END (PHASES) ###############################
*** EOF ./modules/45_carbonprice/diffExp2Lin/realization.gms
Loading
Loading