Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
*** | (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
*** SOF ./modules/45_carbonprice/NDC/postsolve.gms
if(cm_iterative_target_adj eq 3,
display pm_taxCO2eq;
*#' @equations
*#' calculate emission variable to be used for NDC target: GHG emissions w/o land-use change and w/o transport bunker emissions, unit [Mt CO2eq/yr]
p45_actual_co2eq_woLU_regi(regi_2030target) = vm_co2eq.l("2030",regi_2030target)*sm_c_2_co2*1000 + vm_emiFgas.L("2030",regi_2030target,"emiFgasTotal")
*cb* substract the bunker emissions, as in /modules/35_transport/complex/output.gms
*cb* 69.3 = ef_dem("fedie") as defined in /core/reporting.gms ()emission factor of liquid fuels in [Mt CO2/EJ]
- 69.3*(1-
*cb p_bioshare as in /core/reporting.gms
sum(se2fe(entySe,"fedie",te),
(sum(pe2se(peBio,entySe,te2),vm_prodSe.l("2030",regi_2030target,peBio,entySe,te2))
+ sum(pc2te(enty,entySe2(enty3),te,entySe),max(0, pm_prodCouple(regi_2030target,enty,enty3,te,entySe)) * vm_prodSe.l("2030",regi_2030target,enty,enty3,te)))
/(sum(pe2se(entyPe,entySe,te2),vm_prodSe.l("2030",regi_2030target,entyPe,entySe,te2))
+ sum(pc2te(enty,entySe2(enty3),te,entySe),max(0, pm_prodCouple(regi_2030target,enty,enty3,te,entySe)) * vm_prodSe.l("2030",regi_2030target,enty,enty3,te)))))
*cb total fedie energy in [TWa]]
* sum(se2fe(enty,"fedie",te),vm_prodFe.l("2030",regi_2030target,enty,"fedie",te) )
*cb bunkershare times emission intensity of liquid fuels
* pm_bunker_share_in_nonldv_fe("2030",regi_2030target) * 31.536;
*#' special case: US target refers to 2025,
p45_actual_co2eq_woLU_regi(regi_2025target) = vm_co2eq.l("2025",regi_2025target)*sm_c_2_co2*1000 + vm_emiFgas.L("2025",regi_2025target,"emiFgasTotal")
*cb* substract the bunker emissions, as in /modules/35_transport/complex/output.gms
*cb* 69.3 = ef_dem("fedie") as defined in /core/reporting.gms ()emission factor of liquid fuels in [Mt CO2/EJ]
- 69.3*(1-
*cb p_bioshare as in /core/reporting.gms
sum(se2fe(entySe,"fedie",te),
(sum(pe2se(peBio,entySe,te2),vm_prodSe.l("2025",regi_2025target,peBio,entySe,te2))
+ sum(pc2te(enty,entySe2(enty3),te,entySe),max(0, pm_prodCouple(regi_2025target,enty,enty3,te,entySe)) * vm_prodSe.l("2025",regi_2025target,enty,enty3,te)))
/(sum(pe2se(entyPe,entySe,te2),vm_prodSe.l("2025",regi_2025target,entyPe,entySe,te2))
+ sum(pc2te(enty,entySe2(enty3),te,entySe),max(0, pm_prodCouple(regi_2025target,enty,enty3,te,entySe)) * vm_prodSe.l("2025",regi_2025target,enty,enty3,te)))))
*cb total fedie energy in [TWa]]
* sum(se2fe(enty,"fedie",te),vm_prodFe.l("2025",regi_2025target,enty,"fedie",te) )
*cb bunkershare times emission intensity of liquid fuels
* pm_bunker_share_in_nonldv_fe("2025",regi_2025target) * 31.536;
display vm_co2eq.l;
display p45_actual_co2eq_woLU_regi;
display p45_ref_co2eq_woLU_regi;
*#' nash compatible convergence scheme: adjustment of co2 tax for next iteration based on deviation of emissions in this iteration (actual) from target emissions (ref)
*#' maximum possible change between iterations decreases with increase of iteration number
if(iteration.val lt 8,
p45_factorRescaleCO2Tax(regi) = min((( max(0.1, p45_actual_co2eq_woLU_regi(regi)/p45_ref_co2eq_woLU_regi(regi) ) )** 4),max(2-iteration.val/15,1.01-iteration.val/10000)); !! use max(0.1, ...) to make sure that negative emission values cause no problem
elseif iteration.val lt 15,
p45_factorRescaleCO2Tax(regi) = min((( max(0.1, p45_actual_co2eq_woLU_regi(regi)/p45_ref_co2eq_woLU_regi(regi) ) )**3),max(2-iteration.val/15,1.01-iteration.val/10000));
elseif iteration.val lt 23,
p45_factorRescaleCO2Tax(regi) = min((( max(0.1, p45_actual_co2eq_woLU_regi(regi)/p45_ref_co2eq_woLU_regi(regi) ) )**2),max(2-iteration.val/15,1.01-iteration.val/10000));
else
p45_factorRescaleCO2Tax(regi) = min((( max(0.1, p45_actual_co2eq_woLU_regi(regi)/p45_ref_co2eq_woLU_regi(regi) ) )**1),max(2-iteration.val/15,1.01-iteration.val/10000));
);
pm_taxCO2eq(t,regi)$(t.val gt 2016 AND t.val ge cm_startyear AND t.val lt 2031) = max(1* sm_DptCO2_2_TDpGtC,pm_taxCO2eq(t,regi) * p45_factorRescaleCO2Tax(regi) );
p45_factorRescaleCO2TaxTrack(iteration,regi) = p45_factorRescaleCO2Tax(regi);
display p45_factorRescaleCO2TaxTrack;
***carbon price safety valve for low-income and lower-middle income regions: max 1/4 of EUR carbon price
***pm_taxCO2eq(t,"IND")$(t.val gt 2014 AND t.val lt 2036) = min(pm_taxCO2eq(t,"IND"),0.25*pm_taxCO2eq(t,"EUR"));
***pm_taxCO2eq(t,"AFR")$(t.val gt 2014 AND t.val lt 2036) = min(pm_taxCO2eq(t,"AFR"),0.25*pm_taxCO2eq(t,"EUR"));
****** regions with some low-income or lower-middle income regions: max 50%
***pm_taxCO2eq(t,"LAM")$(t.val gt 2014 AND t.val lt 2036) = min(pm_taxCO2eq(t,"LAM"),0.5*pm_taxCO2eq(t,"EUR"));
***pm_taxCO2eq(t,"MEA")$(t.val gt 2014 AND t.val lt 2036) = min(pm_taxCO2eq(t,"MEA"),0.5*pm_taxCO2eq(t,"EUR"));
***pm_taxCO2eq(t,"OAS")$(t.val gt 2014 AND t.val lt 2036) = min(pm_taxCO2eq(t,"OAS"),0.5*pm_taxCO2eq(t,"EUR"));
*#' convergence scheme post 2030: exponential increase with 1.25% AND regional convergence
pm_taxCO2eq(ttot,regi)$(ttot.val gt 2030) = (pm_taxCO2eq("2030",regi)*1.0125**(ttot.val-2030)*max(70-ttot.val+2030,0) + 30 * sm_DptCO2_2_TDpGtC * 1.0125**(ttot.val-2030)*min(ttot.val-2030,70))/70;
*#'special case USA: already after 2025 shift to convergence
pm_taxCO2eq(ttot,regi_2025target)$(ttot.val gt 2025) = (pm_taxCO2eq("2025",regi_2025target)*1.0125**(ttot.val-2025)*max(75-ttot.val+2025,0) + 30 * sm_DptCO2_2_TDpGtC * 1.0125**(ttot.val-2030)*min(ttot.val-2025,75))/75;
*#'as a minimum, have linear price increase starting from 1$ in 2030
pm_taxCO2eq(ttot,regi)$(ttot.val gt 2030) = max(pm_taxCO2eq(ttot,regi),1*sm_DptCO2_2_TDpGtC * (1+(ttot.val-2030)*9/7));
*#' exception for China to meet the target of 2030 peak: linear increase starts already in 2025
pm_taxCO2eq(ttot,regi)$(ttot.val gt 2025 AND (sameas(regi,"CHN") OR sameas(regi,"CHA"))) = max(pm_taxCO2eq(ttot,regi),1*sm_DptCO2_2_TDpGtC * (1+(ttot.val-2025)*9/7));
*** new 2020 carbon price definition: weighted average of 2015 and 2025, with triple weight for 2015 (which is zero for all non-eu regions).
pm_taxCO2eq("2020",regi) = (3*pm_taxCO2eq("2015",regi)+pm_taxCO2eq("2025",regi))/4;
***
******special treatment for 2020 (not relevant if cm_startyear for NDC scenario is 2020, but relevant if earlier)
***pm_taxCO2eq("2020","EUR") = 5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","USA") = 3 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","JPN") = 3 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","ROW") = 3 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","CHN") = 1 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","IND") = 0.5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","LAM") = 0.5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","OAS") = 0.5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","AFR") = 0.5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","MEA") = 0.5 * sm_DptCO2_2_TDpGtC;
***pm_taxCO2eq("2020","RUS") = 0.5 * sm_DptCO2_2_TDpGtC;
display pm_taxCO2eq;
);
*** EOF ./modules/45_carbonprice/NDC/postsolve.gms