-
Alois Dirnaichner authoredAlois Dirnaichner authored
equations.gms 11.18 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/equations.gms
***---------------------------------------------------------------------------
*' The bioenergy tax is calculated: it scales linearly with the bioenergy demand starting at 0 at 0EJ to the level defined in cm_bioenergy_tax at 200 EJ.
***---------------------------------------------------------------------------
q21_tau_bio(t)$(t.val ge max(2010,cm_startyear))..
v21_tau_bio(t)
=e=
cm_bioenergy_tax / (200 * sm_EJ_2_TWa) * (sum(regi,vm_fuExtr(t,regi,"pebiolc","1") + pm_fuExtrForeign(t,regi,"pebiolc","1")))
;
***---------------------------------------------------------------------------
*' Calculation of the value of the overall tax revenue vm_taxrev, that is included in the qm_budget equation.
*' Overall tax revenue is the sum of various components which are calculated in the following equations, each of those with similar structure:
*' The tax revenue is the difference between the product of an activity level (a variable) and a tax rate (a parameter),
*' and this product in the last iteration (which is loaded as a parameter).
*' After converging Negishi/Nash iterations, the value approaches 0, as the activity levels between the current and last iteration don't change anymore.
*' This means, taxes are budget-neutral: the revenue is always recycled back and still available for the economy.
*' Nevertheless, the marginal of the (variable of) taxed activities is impacted by the tax which leads to the adjustment effect.
***---------------------------------------------------------------------------
q21_taxrev(t,regi)$(t.val ge max(2010,cm_startyear))..
vm_taxrev(t,regi)
=g=
v21_taxrevGHG(t,regi)
+ v21_taxrevCO2luc(t,regi)
+ v21_taxrevCCS(t,regi)
+ v21_taxrevNetNegEmi(t,regi)
+ v21_taxrevFEtrans(t,regi)
+ v21_taxrevFEBuildInd(t,regi)
+ v21_taxrevFE_Es(t,regi)
+ v21_taxrevResEx(t,regi)
+ v21_taxrevPE2SE(t,regi)
+ v21_taxrevXport(t,regi)
+ v21_taxrevSO2(t,regi)
+ v21_taxrevBio(t,regi)
- vm_costSubsidizeLearning(t,regi)
+ v21_implicitDiscRate(t,regi)
;
***---------------------------------------------------------------------------
*' Calculation of greenhouse gas taxes: tax rate (combination of 3 components) times ghg emissions
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevGHG(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevGHG(t,regi) =g= ( pm_taxCO2eq(t,regi) + pm_taxCO2eqSCC(t,regi) + pm_taxCO2eqHist(t,regi)) * (vm_co2eq(t,regi) - vm_emiMacSector(t,regi,"co2luc")$(cm_multigasscen ne 3))
- p21_taxrevGHG0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of greenhouse gas taxes: tax rate (combination of 3 components) times land use co2 emissions
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevCO2luc(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevCO2luc(t,regi) =g= ( pm_taxCO2eq(t,regi) + pm_taxCO2eqSCC(t,regi) + pm_taxCO2eqHist(t,regi))* cm_cprice_red_factor * vm_emiMacSector(t,regi,"co2luc")$(cm_multigasscen ne 3)
- p21_taxrevCO2LUC0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of CCS tax: tax rate (defined as fraction(or multiplier) of O&M costs) times amount of CO2 sequestration
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevCCS(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevCCS(t,regi)
=g= cm_frac_CCS * pm_data(regi,"omf","ccsinje") * pm_inco0_t(t,regi,"ccsinje")
* ( sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) )
* (1/sm_ccsinjecrate) * sum(teCCS2rlf(te,rlf), sum(ccs2te(ccsCO2(enty),enty2,te), vm_co2CCS(t,regi,enty,enty2,te,rlf) ) ) / pm_dataccs(regi,"quan","1") !! fraction of injection constraint per year
- p21_taxrevCCS0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of net-negative emissions tax: tax rate (defined as fraction of carbon price) times net-negative emissions
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevNetNegEmi(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevNetNegEmi(t,regi) =g= cm_frac_NetNegEmi * pm_taxCO2eq(t,regi) * v21_emiALLco2neg(t,regi)
- p21_taxrevNetNegEmi0(t,regi);
***---------------------------------------------------------------------------
*' Auxiliary calculation of net-negative emissions:
*' v21_emiAllco2neg and v21_emiAllco2neg_slack are defined as positive variables
*' so as long as vm_emiAll is positive, v21_emiAllco2neg_slack adjusts so that sum is zero
*' if vm_emiAll is negative, in order to minimize tax v21_emiAllco2neg_slack becomes zero
***---------------------------------------------------------------------------
q21_emiAllco2neg(t,regi)..
v21_emiALLco2neg(t,regi) =e= -vm_emiAll(t,regi,"co2") + v21_emiALLco2neg_slack(t,regi);
***---------------------------------------------------------------------------
*' Calculation of final Energy taxes in Transports: effective tax rate (tax - subsidy) times FE use in transport
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevFEtrans(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevFEtrans(t,regi)
=g= SUM(feForEs(enty),
(p21_tau_fe_tax_transport(t,regi,feForEs) + p21_tau_fe_sub_transport(t,regi,feForEs) ) * SUM(se2fe(enty2,enty,te), vm_prodFe(t,regi,enty2,enty,te))
) +
SUM(feForUe(enty),
(p21_tau_fe_tax_transport(t,regi,feForUe) + p21_tau_fe_sub_transport(t,regi,feForUe) ) * SUM(se2fe(enty2,enty,te), vm_prodFe(t,regi,enty2,enty,te))
)
- p21_taxrevFEtrans0(t,regi) ;
***---------------------------------------------------------------------------
*' Calculation of final Energy taxes in Buildings_Industry or Stationary: effective tax rate (tax - subsidy) times FE use in sector
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevFEBuildInd(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevFEBuildInd(t,regi)
=g= SUM(ppfen(in)$( NOT ppfenFromUe(in)),
(p21_tau_fe_tax_bit_st(t,regi,ppfen) + p21_tau_fe_sub_bit_st(t,regi,ppfen) ) * vm_cesIO(t,regi,ppfen)
)
- p21_taxrevFEBuildInd0(t,regi) ;
***---------------------------------------------------------------------------
*' Calculation of final Energy taxes in Buildings_Industry or Stationary sector with energy service representation: effective tax rate (tax - subsidy) times FE use in sector
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevFE_Es(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevFE_Es(t,regi)
=g= SUM(fe2es(entyFe,esty,teEs),
(pm_tau_fe_tax_ES_st(t,regi,esty) + pm_tau_fe_sub_ES_st(t,regi,esty) ) * vm_demFeForEs(t,regi,entyFe,esty,teEs)
)
- p21_taxrevFE_Es0(t,regi) ;
***---------------------------------------------------------------------------
*' Calcuation of ressource extraction subsidies: subsidy rate times fuel extraction
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevResEx(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevResEx(t,regi) =g= sum(pe2rlf(peEx(enty),rlf), p21_tau_fuEx_sub(t,regi,enty) * vm_fuExtr(t,regi,enty,rlf))
- p21_taxrevResEx0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of pe2se taxes (Primary to secondary energy technology taxes, specified by technology): effective tax rate (tax - subsidy) times SE output of technology
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevPE2SE(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevPE2SE(t,regi)
=g= SUM(pe2se(enty,enty2,te),
(p21_tau_pe2se_tax(t,regi,te) + p21_tau_pe2se_sub(t,regi,te) + p21_tau_pe2se_inconv(t,regi,te)) * vm_prodSe(t,regi,enty,enty2,te)
)
- p21_taxrevPE2SE0(t,regi) ;
***---------------------------------------------------------------------------
*' Calculation of export taxes: tax rate times export volume
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevXport(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevXport(t,regi) =g= SUM(tradePe(enty), p21_tau_XpRes_tax(t,regi,enty) * vm_Xport(t,regi,enty))
- p21_taxrevXport0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of so2 tax: tax rate times emissions
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevSO2(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevSO2(t,regi) =g= p21_tau_so2_tax(t,regi) * vm_emiTe(t,regi,"so2")
- p21_taxrevSO20(t,regi);
***---------------------------------------------------------------------------
*' Calculation of bioenergy tax: tax rate (calculated as multiple of bioenergy price) times PE use of pebiolc
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevBio(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_taxrevBio(t,regi) =g= v21_tau_bio(t) * vm_fuExtr(t,regi,"pebiolc","1") * vm_pebiolc_price(t,regi)
- p21_taxrevBio0(t,regi);
***---------------------------------------------------------------------------
*' Calculation of High implicit discount rates in energy efficiency capital
*' which is also modeled as a tax to mirror the lack of incentive for cost-efficient renovations.
*' calculation is done via additional discount rate times input of capital at different levels
***---------------------------------------------------------------------------
q21_implicitDiscRate(t,regi)$(t.val ge max(2010,cm_startyear))..
v21_implicitDiscRate(t,regi)
=g= sum(ppfKap(in),
p21_implicitDiscRateMarg(t,regi,in)
* vm_cesIO(t,regi,in)
) - p21_implicitDiscRate0(t,regi);
;
*** EOF ./modules/21_tax/on/equations.gms