Skip to content

Commit

Permalink
Merge pull request remindmodel#1668 from Renato-Rodrigues/taxRampUp
Browse files Browse the repository at this point in the history
Exposing SE electricity tax rate tech specific ramp up logistic function parameters as a switch
  • Loading branch information
Renato-Rodrigues authored May 11, 2024
2 parents 3192e54 + c56ca91 commit 50b9077
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 6 deletions.
10 changes: 10 additions & 0 deletions main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1407,6 +1407,16 @@ $setGlobal cm_import_ariadne off !! def off
*** then the values from the region group disaggregation will be overwritten by this region-specific value.
*** For example: "2030.2050.MEA.EU27_regi.seh2 0.5, 2030.2050.MEA.DEU.seh2 0.3".
$setGlobal cm_trade_SE_exog off !! def off
*** This allows to manually adjust the ramp-up curve of the SE tax on electricity. It is mainly used for taxing electricity going into electrolysis for green hydrogen production.
*** The ramp-up curve is a logistic function that determines how fast taxes increase with increasing share of technology in total power demand.
*** This essentially makes an assumption about to what extend the power demand of electrolysis will be taxed and how much tax exemptions there will be at low shares of green hydrogen production.
*** The parameter a defines how fast the tax increases with increasing share, with 4/a being the percentage point range over which the tax value increases from 12% to 88%
*** The parameter b defines at which share the tax is halfway between the value at 0 share and the maximum value (defined by a region's electricity tax and the electricity grid cost) that it converges to for high shares.
*** Example use:
*** cm_SEtaxRampUpParam = "GLO.elh2.a 0.4, GLO.elh2.b 30" sets the logistic function parameter values a=0.4 and b=30 for electrolysis (elh2) to all model regions (GLO).
*** cm_SEtaxRampUpParam = "off" disables v21_tau_SE_tax
*** For details, please see ./modules/21_tax/on/equations.gms.
$setGlobal cm_SEtaxRampUpParam GLO.elh2.a 0.4, GLO.elh2.b 30 !! def = GLO.elh2.a 0.4, GLO.elh2.b 30
*** cm_EnSecScen "switch for running an ARIADNE energy security scenario, introducing a tax on PE fossil energy in Germany"
*** switch on energy security scenario for Germany (used in ARIADNE project), sets tax on fossil PE
*** switch to activate energy security scenario assumptions for Germany including additional tax on gas/oil
Expand Down
10 changes: 10 additions & 0 deletions modules/21_tax/on/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,16 @@ p21_tau_pe2se_tax(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_tax(ttot,r
p21_tau_pe2se_sub(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_sub(ttot,regi,te) * 0.001 / sm_EJ_2_TWa;
p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_inconv(ttot,regi,te) * 0.001 / sm_EJ_2_TWa;

*** SE electricity tax rate tech specific ramp up logistic function parameters
p21_tau_SE_tax_rampup(t,regi,te,teSeTax_coeff) = 0;
$ifThen.SEtaxRampUpParam not "%cm_SEtaxRampUpParam%" == "off"
loop((ext_regi,te,teSeTax_coeff)$p21_SEtaxRampUpParameters(ext_regi,te,teSeTax_coeff),
loop(regi$regi_groupExt(ext_regi,regi),
p21_tau_SE_tax_rampup(t,regi,te,teSeTax_coeff) = p21_SEtaxRampUpParameters(ext_regi,te,teSeTax_coeff);
);
);
$endif.SEtaxRampUpParam

***cb 20110923 load paths for ressource export taxes
***cb* file for resource export taxes, not used in default settings
Parameter p21_tau_xpres_tax(tall,all_regi,all_enty) "tax path for ressource export"
Expand Down
6 changes: 4 additions & 2 deletions modules/21_tax/on/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,12 @@ p21_tau_CO2_tax_gdx_bau(ttot,all_regi) "tax path from gdx, may overwrite d

p21_implicitDiscRateMarg(ttot,all_regi,all_in) "Difference between the normal discount rate and the implicit discount rate"

p21_tau_SE_tax_rampup(ttot,all_regi,all_te,teSeTax_coeff) "Paramters of logistic function to describe relationship between SE electricity tax rate and share of technology in total electricity demand"
p21_tau_SE_tax_rampup(ttot,all_regi,all_te,teSeTax_coeff) "Parameters of logistic function to describe relationship between SE electricity tax rate and share of technology in total electricity demand"
$ifThen.SEtaxRampUpParam not "%cm_SEtaxRampUpParam%" == "off"
p21_SEtaxRampUpParameters(ext_regi,all_te,teSeTax_coeff) "config values for SE electricity tax rate tech specific ramp up logistic function parameters" / %cm_SEtaxRampUpParam% /
$endif.SEtaxRampUpParam
;


$ifThen.import not "%cm_import_tax%" == "off"
Parameter
p21_import_tax(ext_regi,all_enty,tax_import_type_21) "parameter to read in configurations from import tax switch" / %cm_import_tax% /
Expand Down
8 changes: 4 additions & 4 deletions modules/21_tax/on/preloop.gms
Original file line number Diff line number Diff line change
Expand Up @@ -140,22 +140,22 @@ display p21_tau_fe_tax;
display p21_tau_pe2se_sub, p21_tau_fuEx_sub;

*** SE Tax
p21_tau_SE_tax(t,regi,te) = 0;
$ifThen.SEtaxRampUpParam not "%cm_SEtaxRampUpParam%" == "off"
*** SE tax is currently used to tax electricity going into electrolysis. There is a maximum tax rate that is assumed
*** to be the sum of the industry electricity FE tax and the investment cost per unit electricity of the grid (grid fee).
*** There is a ramp up of the SE electricity tax for electrolysis depending on the share of electrolysis in total electricity demand
*** described by a logistic function. This results in low taxes for electrolysis at low shares of electrolysis in the power system
*** as the technology has system benefits in this domain. At higher shares this rapidly increases and converges towards the maximum tax rate.
*** See the equations file of the tax module for more information on the SE tax.
*** Parameter datainput needs to happen here because pm_tau_fe_tax, the final energy tax rate, is set in this file and not in the datainput file.
p21_tau_SE_tax(t,regi,"elh2") = p21_tau_fe_tax(t,regi,"indst","feels")
p21_tau_SE_tax(t,regi,"elh2") = p21_tau_fe_tax(t,regi,"indst","feels")
*** calculate grid fees as levelized cost of CAPEX from tdels, the electricity transmission and distribution grid
*** by annualising the CAPEX and dividing by the capacity factor
+ pm_inco0_t(t,regi,"tdels")
* pm_teAnnuity("tdels")
/ pm_cf(t,regi,"tdels");

p21_tau_SE_tax_rampup(t,regi,te,"a") = 0.4;
p21_tau_SE_tax_rampup(t,regi,te,"b") = 10;
$endif.SEtaxRampUpParam

*LB* initialization of vm_emiMac
vm_emiMac.l(ttot,regi,enty) = 0;
Expand Down

0 comments on commit 50b9077

Please sign in to comment.