Skip to content
Open
2 changes: 1 addition & 1 deletion config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv"
cfg$extramappings_historic <- ""

#### Current input data revision (<mainrevision>.<subrevision>) ####
cfg$inputRevision <- "7.88"
cfg$inputRevision <- "7.90"

#### Current CES parameter and GDX revision (commit hash) ####
cfg$CESandGDXversion <- "a12b6355e0ac96081f79504465c61e68fd14ed48"
Expand Down
2 changes: 2 additions & 0 deletions core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ vm_co2eq(ttot,all_regi) "total greenhouse gas emiss
vm_co2eqMkt(ttot,all_regi,all_emiMkt) "total greenhouse gas emissions per market measured in co2 equivalents that are subject to carbon pricing, be aware that emissions coverage of this variable depends on switch cm_multigasscen [GtCeq]"
vm_emiAll(ttot,all_regi,all_enty) "total emissions by species [GtC, Mt CH4, Mt N, Mt SO2, Mt BC, Mt OC]"
v_co2eqCum(all_regi) "cumulated vm_co2eq emissions for the first budget period [GtCeq]"
vm_emiGHG_exclLULUCF_exclBunkers(ttot,all_regi) "total GHG emissions excl LULUCF and excl bunkers, needed for NDC targets [GtCeq]"

*** sectoral emissions
vm_emiTeDetail(ttot,all_regi,all_enty,all_enty,all_te,all_enty) "emissions from energy technologies on supply-side (pm_emifac * PE) and demand-side (pm_emifac * FE), note: not equivalent to Emi|CO2|Energy in reporting [GtC, Mt CH4, Mt N, Mt SO2, Mt BC, Mt OC]"
Expand Down Expand Up @@ -184,6 +185,7 @@ q_emiCdrAll(ttot,all_regi) "summing over all CDR emiss
q_balcapture(ttot,all_regi) "balance equation for carbon capture"
q_balCCUvsCCS(ttot,all_regi) "balance equation for captured carbon to CCU or CCS or valve"
q_ccsShare(ttot,all_regi) "calculate the share of captured CO2 that is stored geologically"
q_emiGHG_exclLULUCF_exclBunkers(ttot,all_regi) "calculate total GHG emissions excl LULUCF and excl bunkers"
;

*** ---------------------------------------------------------------------------
Expand Down
18 changes: 18 additions & 0 deletions core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -853,6 +853,24 @@ q_emiCap(t,regi) ..
vm_co2eq(t,regi) + vm_Xport(t,regi,"perm") - vm_Mport(t,regi,"perm")
=l= vm_perm(t,regi);


***--------------------------------------------------
*' Total GHG emissions excl. land-use change and excl. bunker emissions (needed for NDC targets)
***--------------------------------------------------
q_emiGHG_exclLULUCF_exclBunkers(t,regi)..
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you please explain why you add this variable? in the NDC calculation we don't use it and in the reporting it is already there?!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is used for reading in the emissions trajectory of the NPI run here. This replaces reading data from pm_BAU_reg_emi_wo_LU_wo_bunkers.cs4r. I'd remove these data files and the infrastructure for them later.

vm_emiGHG_exclLULUCF_exclBunkers(t,regi)
=e=
*** total GHG emissions excl. F-Gases and excl. LULUCF
vm_co2eq(t,regi)
*** add F-Gases, convert from MtCO2eq/yr to GtC/yr
+ vm_emiFgas(t,regi,"emiFgasTotal") / sm_c_2_co2 / 1000
*** subtract bunker emissions
- sum(se2fe(enty,enty2,te),
pm_emifac(t,regi,enty,enty2,te,"co2")
* vm_demFeSector(t,regi,enty,enty2,"trans","other")
);


***-----------------------------------------------------------------
*** Budgets on GHG emissions (single or two subsequent time periods)
***-----------------------------------------------------------------
Expand Down
4 changes: 4 additions & 0 deletions main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1414,6 +1414,10 @@ $setglobal cm_NDC_targetYear 2030, 2035 !! def = "2030, 2035"
*' * By default 2030 CO2 prices are limited to 150 USD/tCO2 in EUR, 80 USD/tCO2 in CAZ, USA, JPN and NEU, 50 USD/tCO2 in REF and MEA, 40 USD/tCO2 in LAM and CHA, 30 USD/tCO2 in OAS, 15 USD/tCO2 in IND and 10 USD/tCO2 in SSA.
*' * If set to "off", no CO2 price limits are applied in any region.
$setglobal cm_NDC_CO2PriceLimit 2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10 !! def = "2030.EUR 150, 2030.(CAZ,USA, JPN, NEU) 80, 2030.(REF,MEA) 50, 2030.(LAM, CHA) 40, 2030.OAS 30, 2030.IND 15, 2030.SSA 10"
*' cm_NDC_CO2PriceLimit_continuation "switch to determine whether CO2 price limits in NDC realization are applied only in the specified target year or also in subsequent years" [requires 45_carbonprice = NDC]
*' * (on): CO2 price limits are applied not only in the specified target year but also in subsequent years, with the limit increasing by 20% per year after the target year, but allowing for carbon price of at least 200$/tCO2 at minimum
*' * (off): CO2 price limits are only applied in the specified target year, but not in subsequent years
$setglobal cm_NDC_CO2PriceLimit_continuation off !! def = "off" !! regexp = on|off
*' cm_NDC_postTargetDevelopment "choose assumption on co2 price trajectory after NDC target years" [requires 45_carbonprice = NDC]
*' * (constant): carbon price remains constant after the last NDC target year
*' * (global_conv): carbon price converges across regions to a global value of 100$/tCO2 by 2100
Expand Down
23 changes: 17 additions & 6 deletions modules/45_carbonprice/NDC/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ Execute_Loadpoint "input_ref" p45_taxCO2eq_bau = pm_taxCO2eq;
pm_taxCO2eq(t,regi) = p45_taxCO2eq_bau(t,regi);


*** load NDC data
Table f45_factorTargetyear(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with multiplier for target year emissions vs 2015 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]"
*** load NDC emissions targets (only fraction of emissions in REMIND region from countries with NDC targets)
Table fm_EmiTargetAbs(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with absolute NDC emissions targets, emissions from countries without targets are not included [Mt CO2eq/yr]"
$offlisting
$ondelim
$include "./modules/45_carbonprice/NDC/input/fm_factorTargetyear.cs3r"
$include "./modules/45_carbonprice/NDC/input/fm_EmiTargetAbs.cs3r"
$offdelim
$onlisting
;

Parameter p45_factorTargetyear(ttot,all_regi) "Multiplier for target year emissions vs 2015 emissions, as weighted average for all countries with quantifyable emissions under NDC in particular region [1]";
p45_factorTargetyear(t,all_regi) = f45_factorTargetyear(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%");
Parameter p45_EmiTargetAbs(ttot,all_regi) "Absolute NDC emissions targets, emissions from countries without targets are not included [Mt CO2eq/yr]";
p45_EmiTargetAbs(t,all_regi) = fm_EmiTargetAbs(t,all_regi,"%cm_NDC_version%","%cm_GDPpopScen%");

display p45_factorTargetyear;
display p45_EmiTargetAbs;

Table f45_shareTarget(tall,all_regi,NDC_version,all_GDPpopScen) "Table for all NDC versions with estimated target year GHG emissions share of countries with quantifyable emissions under NDC in particular region, time dimension specifies alternative future target years [0..1]"
$offlisting
Expand All @@ -49,6 +49,17 @@ $endif
$offdelim
/ ;

*** --------------------------------------------------------------------------
*** use new GAMS internal variables for total GHG excl LULUCF and excl bunkers

*** overwrite BAU emissions with emissions in GAMS variable from reference GDX
p45_BAU_reg_emi_wo_LU_wo_bunkers(ttot,regi) = 0;
Execute_Loadpoint 'input_ref' p45_BAU_reg_emi_wo_LU_wo_bunkers = vm_emiGHG_exclLULUCF_exclBunkers.l;
*** convert from GtCeq/yr to MtCO2eq/yr
p45_BAU_reg_emi_wo_LU_wo_bunkers(ttot,regi) = p45_BAU_reg_emi_wo_LU_wo_bunkers(ttot,regi) * sm_c_2_co2 * 1000;

*** --------------------------------------------------------------------------

*** parameters for selecting NDC years
Set t_NDC_targetYear(ttot) "Years for which NDC emissions targets can be applied [0 or 1]" / %cm_NDC_targetYear% /;
Scalar p45_minRatioOfCoverageToMax "only targets whose coverage is this times p45_bestNDCcoverage are considered. Use 1 for only best [0..1]" /0/;
Expand Down
2 changes: 1 addition & 1 deletion modules/45_carbonprice/NDC/input/files
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
fm_shareTarget.cs3r
fm_factorTargetyear.cs3r
fm_EmiTargetAbs.cs3r
12 changes: 9 additions & 3 deletions modules/45_carbonprice/NDC/postsolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,15 @@ $ifThen.cm_NDC_CO2PriceLimit not "%cm_NDC_CO2PriceLimit%" == "off"
loop( p45_NDCyearSet(t,regi)$( p45_CO2PriceLimitNDC(t,regi) > 0 ) ,
pm_taxCO2eq(t,regi) = min( pm_taxCO2eq(t,regi),
p45_CO2PriceLimitNDC(t,regi) * sm_DptCO2_2_TDpGtC );
*** after target year, CO2 price limit increases by 20%/yr
pm_taxCO2eq(t2,regi)$( t2.val gt t.val) = min( pm_taxCO2eq(t2,regi),
( p45_CO2PriceLimitNDC(t,regi) * (1 + 0.2 * (t2.val - t.val)) ) * sm_DptCO2_2_TDpGtC );
$ifThen.cm_NDC_CO2PriceLimit_continuation not "%cm_NDC_CO2PriceLimit_continuation%" == "off"
*** For the periods after the carbon price limit:
*** If this switch is on, limit increase by 20%/yr, but ensure the CO2 price limit (cap) is at least 200$/tCO2.
pm_taxCO2eq(t2,regi)$( t2.val gt t.val) = min( pm_taxCO2eq(t2,regi),
max( p45_CO2PriceLimitNDC(t,regi) * (1 + 0.2 * (t2.val - t.val)) * sm_DptCO2_2_TDpGtC,
200 * sm_DptCO2_2_TDpGtC
)
);
$endif.cm_NDC_CO2PriceLimit_continuation
);
$endif.cm_NDC_CO2PriceLimit

Expand Down
6 changes: 3 additions & 3 deletions modules/45_carbonprice/NDC/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@
*#' @equations
*#' calculate level of emission target per REMIND region. It is componsed to two terms:
*#' 1. Contribution of countries within REMIND region with NDC target:
*#' share of emissions covered by NDC in particular region * REMIND NPI emissions in 2015 * (country-aggregated) relative NDC emissions target with respect to 2015
*#' Absolute NDC emissions target that was derived by summing the targets of all countries within the region that have NDC targets
*#' 2. Contribution of countries within REMIND region without NDC target:
*#' (1 - share of emissions covered by NDC in particular region) * REMIND NPI emissions in target year
p45_CO2eqwoLU_goal(p45_NDCyearSet(t,regi)) =
p45_shareTarget(t,regi) * p45_BAU_reg_emi_wo_LU_wo_bunkers("2015",regi) * p45_factorTargetyear(t,regi) !! share with NDC target
+ (1-p45_shareTarget(t,regi)) * p45_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); !! baseline for share of countries without NDC target
p45_EmiTargetAbs(t,regi) !! emissions target derived from countries with NDC target
+ (1-p45_shareTarget(t,regi)) * p45_BAU_reg_emi_wo_LU_wo_bunkers(t,regi); !! countries without NDC target are assumed to follow NPI emissions pathway

display pm_taxCO2eq,p45_CO2eqwoLU_goal;

Expand Down
Loading