-
Lavinia Baumstark authoredLavinia Baumstark authored
preloop.gms 8.24 KiB
*** | (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/21_tax/on/preloop.gms
*LB* set CO2 tax in 2005 and 2010 to 0
pm_taxCO2eq("2005",regi)=0;
pm_taxCO2eq("2010",regi)=0;
***-------------------------------------------------------------------
*** overwrite default targets with gdx values
***-------------------------------------------------------------------
Execute_Loadpoint 'input' p21_tau_CO2_tax_gdx = pm_taxCO2eq;
if (cm_gdximport_target eq 1,
*** only if tax rates not all equal to zero
if (smax((t,regi),p21_tau_CO2_tax_gdx(t,regi)$(t.val gt 2030)) gt 0,
pm_taxCO2eq(t,regi) = p21_tau_CO2_tax_gdx(t,regi);
);
);
if (cm_emiscen ne 9,
pm_taxCO2eq(t, regi) = 0;
);
***-------------------------------------------------------------------
*** overwrite co2 tax for delay runs with gdx values
***-------------------------------------------------------------------
if ( (cm_startyear gt 2005),
Execute_Loadpoint 'input_ref' p21_tau_CO2_tax_gdx_bau = pm_taxCO2eq;
pm_taxCO2eq(ttot,regi)$((ttot.val gt 2005) AND (ttot.val lt cm_startyear)) = p21_tau_CO2_tax_gdx_bau(ttot,regi);
);
display pm_taxCO2eq;
*** Adjustment of final energy subsidies to avoid neg. implicit 2005 prices that result in huge demand increases in 2010 and 2015
*** Maximum final energy subsidy levels (in $/Gj) from REMIND version prior to rev. 5429
p21_tau_fe_sub_bit_st(ttot,regi,all_in)$p21_max_fe_sub(ttot,regi,all_in) = max(p21_tau_fe_sub_bit_st(ttot,regi,all_in),-p21_max_fe_sub(ttot,regi,all_in)*0.001/sm_EJ_2_TWa);
pm_tau_fe_sub_ES_st(ttot,regi,esty)$p21_max_fe_subEs(ttot,regi,esty) = max(pm_tau_fe_sub_ES_st(ttot,regi,esty),-p21_max_fe_subEs(ttot,regi,esty)*0.001/sm_EJ_2_TWa);
*** Subsidy proportional cap to avoid liquids increasing dramatically
p21_tau_fe_sub_bit_st(ttot,regi,all_in)$p21_prop_fe_sub(ttot,regi,all_in) = p21_prop_fe_sub(ttot,regi,all_in) * p21_tau_fe_sub_bit_st(ttot,regi,all_in);
pm_tau_fe_sub_ES_st(ttot,regi,esty)$p21_prop_fe_subEs(ttot,regi,esty) = p21_prop_fe_subEs(ttot,regi,esty) * pm_tau_fe_sub_ES_st(ttot,regi,esty);
*** Maximum primary energy subsidy levels (in $/Gj) to provide plausible upper bound: 40$/barrel ~ 8 $/GJ"
p21_tau_fuEx_sub(ttot,regi,enty)$f21_max_pe_sub(ttot,regi,enty) = max(p21_tau_fuEx_sub(ttot,regi,enty),-f21_max_pe_sub(ttot,regi,enty)*0.001/sm_EJ_2_TWa);
*** ------------------------- Temporal development of final energy TAXES and SUBSIDIES, depending on cm_fetaxscen
*** Set time path for:
*** - final energy taxes (p21_tau_fe_tax)
*** - subsidies (p21_tau_fe_sub)
if(cm_fetaxscen ne 0,
*----- TAXES ----------------------------------
***CASE 1: constant TAXES
if(cm_fetaxscen eq 1,
loop(ttot, p21_tau_fe_tax_transport(ttot,regi,entyFe) = p21_tau_fe_tax_transport("2005",regi,entyFe));
loop(ttot, p21_tau_fe_tax_bit_st(ttot,regi,ppfen) = p21_tau_fe_tax_bit_st("2005",regi,ppfen));
loop(ttot, pm_tau_fe_tax_ES_st(ttot,regi,esty) = pm_tau_fe_tax_ES_st("2005",regi,esty));
);
***CASE 2: constant TAXES except for the final energies and regions defined at the f21_tax_convergence.cs4r file
if(cm_fetaxscen eq 2,
loop(ttot, p21_tau_fe_tax_transport(ttot,regi,entyFe) = p21_tau_fe_tax_transport("2005",regi,entyFe));
loop(ttot, p21_tau_fe_tax_bit_st(ttot,regi,ppfen) = p21_tau_fe_tax_bit_st("2005",regi,ppfen));
loop(ttot, pm_tau_fe_tax_ES_st(ttot,regi,esty) = pm_tau_fe_tax_ES_st("2005",regi,esty));
s21_tax_time = 2050;
p21_tau_fe_tax_transport(ttot,regi,entyFe)$(f21_tax_convergence("2050",regi,entyFe) AND ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
p21_tau_fe_tax_transport("2005",regi,entyFe)+((f21_tax_convergence("2050",regi,entyFe)*0.001/sm_EJ_2_TWa-p21_tau_fe_tax_transport("2005",regi,entyFe))*((ttot.val-2015)/(s21_tax_time-2015)));
p21_tau_fe_tax_transport(ttot,regi,entyFe)$(f21_tax_convergence("2050",regi,entyFe) AND ttot.val >(s21_tax_time)) = f21_tax_convergence("2050",regi,entyFe)*0.001/sm_EJ_2_TWa;
);
***CASE 3, 4: constant TAXES (same as CASE 1)
if(cm_fetaxscen eq 3 OR cm_fetaxscen eq 4,
loop(ttot, p21_tau_fe_tax_transport(ttot,regi,entyFe) = p21_tau_fe_tax_transport("2005",regi,entyFe));
loop(ttot, p21_tau_fe_tax_bit_st(ttot,regi,ppfen) = p21_tau_fe_tax_bit_st("2005",regi,ppfen));
loop(ttot, pm_tau_fe_tax_ES_st(ttot,regi,esty) = pm_tau_fe_tax_ES_st("2005",regi,esty));
);
***----- SUBSIDIES ----------------------------------
***global subsidies phase-out until 2030 for SSP1 (CASE 2) & SDP (CASE 4), until 2050 for SSP2 (CASE 3), no phaseout for SSP5 (CASE 1)
*** CASE 1: Constant subsidy (SSP5)
if(cm_fetaxscen eq 1,
loop(ttot, p21_tau_fe_sub_transport(ttot,regi,entyFe)=p21_tau_fe_sub_transport("2005",regi,entyFe));
loop(ttot, p21_tau_fe_sub_bit_st(ttot,regi,ppfen) = p21_tau_fe_sub_bit_st("2005",regi,ppfen));
loop(ttot, pm_tau_fe_sub_ES_st(ttot,regi,esty) = pm_tau_fe_sub_ES_st("2005",regi,esty));
loop(ttot, p21_tau_pe2se_sub(ttot,regi,te)=p21_tau_pe2se_sub("2005",regi,te));
loop(ttot, p21_tau_fuEx_sub(ttot,regi,entyPE)=p21_tau_fuEx_sub("2005",regi,entyPE));
);
*** CASE 2 and 3 and 4: Global subsidies phase-out by 2030 (SSP1, SDP) and 2050 (SSP2) respectively
if(cm_fetaxscen eq 2 OR cm_fetaxscen eq 3 OR cm_fetaxscen eq 4,
p21_tau_fe_sub_transport(ttot,regi,entyFe)$(ttot.val eq 2010 OR ttot.val eq 2015)=p21_tau_fe_sub_transport("2005",regi,entyFe);
p21_tau_fe_sub_bit_st(ttot,regi,ppfen)$(ttot.val eq 2010 OR ttot.val eq 2015)=p21_tau_fe_sub_bit_st("2005",regi,ppfen);
pm_tau_fe_sub_ES_st(ttot,regi,esty)$(ttot.val eq 2010 OR ttot.val eq 2015)=pm_tau_fe_sub_ES_st("2005",regi,esty);
p21_tau_pe2se_sub(ttot,regi,te)$(ttot.val eq 2010 OR ttot.val eq 2015)=p21_tau_pe2se_sub("2005",regi,te);
p21_tau_fuEx_sub(ttot,regi,entyPE)$(ttot.val eq 2010 OR ttot.val eq 2015)=p21_tau_fuEx_sub("2005",regi,entyPE);
if(cm_fetaxscen eq 2 OR cm_fetaxscen eq 4, s21_tax_time = 2030);
if(cm_fetaxscen eq 3, s21_tax_time = 2050);
s21_tax_value = 0;
*** Calculate phase-out
loop(ttot,
p21_tau_fe_sub_transport(ttot,regi,entyFe)$(ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
p21_tau_fe_sub_transport("2015",regi,entyFe)+((s21_tax_value-p21_tau_fe_sub_transport("2015",regi,entyFe))*(ttot.val-2015)/(s21_tax_time-2015));
p21_tau_fe_sub_transport(ttot,regi,entyFe)$(ttot.val>(s21_tax_time)) = s21_tax_value;
p21_tau_fe_sub_bit_st(ttot,regi,ppfen)$(ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
p21_tau_fe_sub_bit_st("2015",regi,ppfen)+((s21_tax_value-p21_tau_fe_sub_bit_st("2015",regi,ppfen))*(ttot.val-2015)/(s21_tax_time-2015));
p21_tau_fe_sub_bit_st(ttot,regi,ppfen)$(ttot.val>(s21_tax_time)) = s21_tax_value;
pm_tau_fe_sub_ES_st(ttot,regi,esty)$(ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
pm_tau_fe_sub_ES_st("2015",regi,esty)+((s21_tax_value-pm_tau_fe_sub_ES_st("2015",regi,esty))*(ttot.val-2015)/(s21_tax_time-2015));
pm_tau_fe_sub_ES_st(ttot,regi,esty)$(ttot.val>(s21_tax_time)) = s21_tax_value;
p21_tau_pe2se_sub(ttot,regi,te)$(ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
p21_tau_pe2se_sub("2015",regi,te)+((s21_tax_value-p21_tau_pe2se_sub("2015",regi,te))*(ttot.val-2015)/(s21_tax_time-2015));
p21_tau_pe2se_sub(ttot,regi,te)$(ttot.val>(s21_tax_time)) = s21_tax_value;
p21_tau_fuEx_sub(ttot,regi,entyPE)$(ttot.val > 2015 AND ttot.val<(s21_tax_time + 1))
=
p21_tau_fuEx_sub("2015",regi,entyPE)+((s21_tax_value-p21_tau_fuEx_sub("2015",regi,entyPE))*(ttot.val-2015)/(s21_tax_time-2015));
p21_tau_fuEx_sub(ttot,regi,entyPE)$(ttot.val>(s21_tax_time)) = s21_tax_value;
);
);
);
display p21_tau_fe_sub_bit_st, p21_tau_fe_sub_transport, pm_tau_fe_sub_ES_st, p21_tau_fuEx_sub;
display p21_tau_fe_tax_bit_st, p21_tau_fe_tax_transport;
display p21_tau_pe2se_sub;
*LB* initialization of vm_emiMac
vm_emiMac.l(ttot,regi,enty) = 0;
*LB* initialization of v21_emiALLco2neg
v21_emiALLco2neg.l(ttot,regi) =0;
*DK initialize bioenergy tax
v21_tau_bio.l(ttot) = 0;
*** EOF ./modules/21_tax/on/preloop.gms