Skip to content

Commit

Permalink
Merge pull request #980 from fschreyer/CESMkup_Update
Browse files Browse the repository at this point in the history
Update of CES mark-up cost implementation: industry mark-up cost budget-neutral as tax, adapt some default cost, refactoring
  • Loading branch information
fschreyer authored Nov 8, 2022
2 parents 8e182a5 + 9fa21e2 commit 09bb41e
Show file tree
Hide file tree
Showing 17 changed files with 102 additions and 64 deletions.
47 changes: 19 additions & 28 deletions config/21_regions_EU11/scenario_config_21_EU11_ARIADNE.csv

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ cfg$extramappings_historic <- ""
cfg$inputRevision <- "6.316"

#### Current CES parameter and GDX revision (commit hash) ####
cfg$CESandGDXversion <- "346023c22fb098052539fbbfdda2041b5114d82c"
cfg$CESandGDXversion <- "b577e6de076abd3c12ca0385002af599db370c2c"

#### Force the model to download new input data ####
cfg$force_download <- FALSE
Expand Down
4 changes: 1 addition & 3 deletions core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@ v_emiTeMkt(tall,all_regi,all_enty,all_emiMkt) "total energy-emissions of e
v_emiEnFuelEx(ttot,all_regi,all_enty) "energy emissions from fuel extraction [GtC, Mt CH4, Mt N]"
vm_emiAllMkt(tall,all_regi,all_enty,all_emiMkt) "total regional emissions for each emission market. [GtC, Mt CH4, Mt N]"
vm_flexAdj(tall,all_regi,all_te) "flexibility adjustment used for flexibility subsidy (tax) to emulate price changes of technologies which see lower-than-average (higher-than-average) elec. prices [trUSD/TWa]"
vm_costCESMkup(ttot,all_regi,all_in) "CES markup cost to represent demand-side technology cost of end-use transformation [trUSD/TWa]"
vm_taxrevimplicitQttyTargetTax(ttot,all_regi) "quantity target bound implemented through implict tax"
vm_taxrevimplicitPriceTax(ttot,all_regi,entySe,all_enty,sector) "final energy price target implemented through implict tax"
vm_taxrevimplicitPePriceTax(ttot,all_regi,all_enty) "primary energy price target implemented through implict tax"
Expand Down Expand Up @@ -411,9 +412,6 @@ vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which
vm_prodEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Energy services (unit determined by conversion factor pm_fe2es)."
vm_transpGDPscale(ttot,all_regi) "dampening factor to align edge-t non-energy transportation costs with historical GDP data"

*** CES markup to represent end-use technology cost
vm_costCESMkup(ttot,all_regi,all_in) "CES markup cost to represent demand-side technology cost of end-use transformation [trUSD/TWa]"

;
***----------------------------------------------------------------------------------------
*** EQUATIONS
Expand Down
2 changes: 1 addition & 1 deletion core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ q_costInv(t,regi)..
sum(sector2te_addTDCost(sector,te),
vm_costAddTeInv(t,regi,te,sector)
)
*** end-use technology cost placed on CES nodes to represent demand-side investment cost:
*** end-use transformation cost of novel technologies placed on CES nodes that are to be accounted in the budget equation
+
sum(in$(ppfen_CESMkup(in)),
vm_costCESMkup(t,regi,in)
Expand Down
2 changes: 1 addition & 1 deletion modules/21_tax/on/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ p21_tau_fuEx_sub(tall,all_regi,all_enty) "subsidy path for fuel extraction
p21_bio_EF(ttot,all_regi) "bioenergy emission factor, which is used to calculate the emission-factor-based tax level [GtC/TWa]"
p21_tau_BioImport(ttot,all_regi) "bioenergy import tax level"
pm_tau_pe_tax(ttot,all_regi,all_enty) "pe tax path"
pm_tau_ces_tax(ttot,all_regi,all_in) "ces production tax to mimic production drain and transformation costs"
pm_tau_ces_tax(ttot,all_regi,all_in) "ces production tax to implement CES mark-up cost in a budget-neutral way"

pm_taxrevGHG0(ttot,all_regi) "reference level value of GHG emission tax"
pm_taxrevCO2Sector0(ttot,all_regi,emi_sectors) "reference level value of CO2 sector markup tax"
Expand Down
2 changes: 1 addition & 1 deletion modules/21_tax/on/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ q21_taxrevFE(t,regi)$(t.val ge max(2010,cm_startyear))..
;

***---------------------------------------------------------------------------
*' Calculation of CES tax: tax rate times CES parameters
*' Calculation of CES tax: tax rate times CES inputs
*' Documentation of overall tax approach is above at q21_taxrev.
***---------------------------------------------------------------------------
q21_taxrevCES(t,regi,in)$(t.val ge max(2010,cm_startyear))..
Expand Down
1 change: 1 addition & 0 deletions modules/36_buildings/services_putty/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ sm_TWa_2_MWh,input,questionnaire
vm_costCESMkup,input,questionnaire
sm_trillion_2_non,input,questionnaire
sm_TWa_2_kWh,input,questionnaire
pm_tau_ces_tax,input,questionnaire
1 change: 1 addition & 0 deletions modules/36_buildings/services_with_capital/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ sm_TWa_2_MWh,input,questionnaire
vm_costCESMkup,input,questionnaire
sm_trillion_2_non,input,questionnaire
sm_TWa_2_kWh,input,questionnaire
pm_tau_ces_tax,input,questionnaire
33 changes: 27 additions & 6 deletions modules/36_buildings/simple/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -92,19 +92,40 @@ if ((cm_ElLim_b lt 1),
);


*** FS: CES markup cost buildings
*` CES mark-up cost buildings


*` The Mark-up cost on primary production factors (final energy) of the CES tree have two functions.
*` (1) They represent sectoral end-use cost not captured by the energy system.
*` (2) As they alter prices to of the CES function inputs, they affect the CES efficiency parameters during calibration
*` and therefore influence the efficiency of different FE CES inputs. The resulting economic subsitution rates
*` are given by the marginal rate of subsitution (MRS) in the parameter o01_CESmrs.

*` There are two types of CES mark-up cost:
*` (a) Mark-up cost on inputs in ppfen_MkupCost37: Those are counted as expenses in the budget and set by the parameter p37_CESMkup.
*` (b) Mark-up cost on other inputs: Those are budget-neutral and implemented as a tax. They are set by the parameter pm_tau_ces_tax.

*` Mark-up cost in buildings are modeled with budget-effect (a).

*` default values of CES mark-up with budget effect:
p36_CESMkup(t,regi,in) = 0;
*** place markup cost on heat pumps electricity of 200 USD/MWh(el) to represent demand-side cost of electrification and reach higher efficiency during calibration which leads to some energy efficiency gains of electrification
*` mark-up cost on heat pumps and district heating are incurred as actual cost to the budget (see option (a) above)
*` place markup cost on heat pumps electricity of 200 USD/MWh(el) to represent demand-side cost of electrification
*` and reach higher efficiency during calibration to model higher energy efficiency of heat pumps
p36_CESMkup(t,regi,"feelhpb") = 200 * sm_TWa_2_MWh * 1e-12;
*** place markup cost on district heating of 25 USD/MWh(heat) to represent additional sector-specific cost expanding district heat
*` place markup cost on district heating of 25 USD/MWh(heat) to represent additional t&d cost of expanding district heating networks for buildings
*` which makes district heating in buildings more expensive than in industry
p36_CESMkup(t,regi,"feheb") = 25 * sm_TWa_2_MWh * 1e-12;

*** overwrite or extent CES markup cost if specified by switch
$ifThen.CESMkup not "%cm_CESMkup_build%" == "standard"
p36_CESMkup(t,regi,in)$(p36_CESMkup_input(in)) = p36_CESMkup_input(in);

*` overwrite or extent CES markup cost if specified by switch
$ifThen.CESMkup not "%cm_CESMkup_build%" == "standard"
p36_CESMkup(t,regi,in)$(p36_CESMkup_input(in) AND ppfen_MkupCost36(in)) = p36_CESMkup_input(in);
pm_tau_ces_tax(t,regi,in)$(p36_CESMkup_input(in) AND (NOT ppfen_MkupCost36(in))) = p36_CESMkup_input(in);
$endIf.CESMkup

display p36_CESMkup;
display pm_tau_ces_tax;

*** EOF ./modules/36_buildings/simple/datainput.gms

4 changes: 2 additions & 2 deletions modules/36_buildings/simple/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ scalars
;

Parameters
p36_CESMkup(ttot,all_regi,all_in) "CES markup cost parameter [trUSD/CES input]"
p36_CESMkup(ttot,all_regi,all_in) "parameter for those CES markup cost accounted as investment cost in the budget [trUSD/CES input]"
p36_floorspace(tall,all_regi) "buildings floorspace, billion m2, in simple realization only used for reporting"
p36_uedemand_build(tall,all_regi,all_in) "useful energy demand in buildings in TWh/a, in simple realization only used for reporting"
;
Expand Down Expand Up @@ -41,7 +41,7 @@ Equations
q36_costAddH2LowPen(ttot,all_regi) "additional buildings hydrogen annual investment costs under low technology diffusion"
q36_auxCostAddTeInv(ttot,all_regi) "auxiliar logistic function exponent calculation for additional hydrogen low penetration cost"
q36_costAddH2PhaseIn(ttot,all_regi) "calculation of additional industry hydrogen t&d cost at low penetration levels of hydrogen in buildings"
q36_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc."
q36_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost that are accounted in the budget (GDP) to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps"
q36_costAddTeInv(ttot,all_regi,all_te) "summation of sector-specific demand-side cost"
;

Expand Down
2 changes: 1 addition & 1 deletion modules/36_buildings/simple/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ q36_H2Share(t,regi)..


***---------------------------------------------------------------------------
*' CES markup cost to represent sector-specific demand-side transformation cost in buildings
*' CES markup cost that are accounted in the budget (GDP) to represent sector-specific demand-side transformation cost in buildings
***---------------------------------------------------------------------------
q36_costCESmarkup(t,regi,in)$(ppfen_buildings_dyn36(in))..
vm_costCESMkup(t,regi,in)
Expand Down
6 changes: 6 additions & 0 deletions modules/36_buildings/simple/sets.gms
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ Sets
ue_dyn36(all_in) "useful energy items"
//

ppfen_MkupCost36(all_in) "primary production factors in buildings on which CES mark-up cost can be levied that are counted as expenses in the macroeconomic budget equation"
/
feelhpb
feheb
/

;

cal_ppf_buildings_dyn36(ppfen_buildings_dyn36) = YES;
Expand Down
3 changes: 2 additions & 1 deletion modules/37_industry/fixed_shares/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ vm_cap, variable, not needed
vm_capFac, variable, not needed
vm_Xport, variable, not needed
vm_Mport, variable, not needed
pm_secBioShare, parameter, not needed
pm_tau_ces_tax, input, questionnaire
pm_secBioShare, parameter, not needed
49 changes: 32 additions & 17 deletions modules/37_industry/subsectors/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -347,32 +347,47 @@ pm_ue_eff_target("ue_otherInd") = 0.008;



*** FS: CES markup cost industry
*** default values of CES markup
p37_CESMkup(t,regi,in) = 0;
*` CES mark-up cost industry

*` The Mark-up cost on primary production factors (final energy) of the CES tree have two functions.
*` (1) They represent sectoral end-use cost not captured by the energy system.
*` (2) As they alter prices to of the CES function inputs, they affect the CES efficiency parameters during calibration
*` and therefore influence the efficiency of different FE CES inputs. The resulting economic subsitution rates
*` are given by the marginal rate of subsitution (MRS) in the parameter o01_CESmrs.
*` Mark-up cost were tuned as to obtain similar or slightly higher marginal rate of substitution (MRS) to gas/liquids than technical subsitution rates and
*` obtain similar specific energy consumption per value added in chemicals and other industry across high and low electrification scenarios.


*` There are two ways in which mark-up cost can be set:
*` (a) Mark-up cost on inputs in ppfen_MkupCost37: Those are counted as expenses in the budget and set by the parameter p37_CESMkup.
*` (b) Mark-up cost on other inputs: Those are budget-neutral and implemented as a tax. They are set by the parameter pm_tau_ces_tax.

*` Mark-up cost in industry are modeled without budget-effect (b).

*` Default industry mark-up cost with budget effect:
p37_CESMkup(t,regi,in) = 0;

*** place markup cost of 200 USD/MWh(el) on electricity high-temperature heat and electricity steel nodes
*** to represent demand-side cost of electrification and reach higher subsitution rates
p37_CESMkup(t,regi,"feelhth_chemicals") = 200* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feelhth_otherInd") = 200* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feel_steel_secondary") = 200* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feel_steel_primary") = 200* sm_TWa_2_MWh * 1e-12;
*` Default industry mark-up cost without budget effect:
*` mark-up cost on electrification (hth_electricity inputs), to reach >1 MRS to gas/liquids as technical efficiency gains from electrification
pm_tau_ces_tax(t,regi,"feelhth_chemicals") = 100* sm_TWa_2_MWh * 1e-12;
pm_tau_ces_tax(t,regi,"feelhth_otherInd") = 300* sm_TWa_2_MWh * 1e-12;
pm_tau_ces_tax(t,regi,"feel_steel_secondary") = 100* sm_TWa_2_MWh * 1e-12;

*** place markup cost of 100 USD/MWh(H2) on H2 nodes
*** to represent demand-side cost of hydrogen usage and reach higher subsitution rates
p37_CESMkup(t,regi,"feh2_chemicals") = 100* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feh2_otherInd") = 100* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feh2_steel") = 100* sm_TWa_2_MWh * 1e-12;
p37_CESMkup(t,regi,"feh2_cement") = 100* sm_TWa_2_MWh * 1e-12;
*` mark-up cost on H2 inputs, to reach MRS around 1 to gas/liquids as similar technical efficiency
pm_tau_ces_tax(t,regi,"feh2_chemicals") = 100* sm_TWa_2_MWh * 1e-12;
pm_tau_ces_tax(t,regi,"feh2_otherInd") = 50* sm_TWa_2_MWh * 1e-12;
pm_tau_ces_tax(t,regi,"feh2_steel") = 50* sm_TWa_2_MWh * 1e-12;
pm_tau_ces_tax(t,regi,"feh2_cement") = 100* sm_TWa_2_MWh * 1e-12;


*** overwrite or extent CES markup cost if specified by switch
*` overwrite or extent CES markup cost if specified by switch
$ifThen.CESMkup not "%cm_CESMkup_ind%" == "standard"
p37_CESMkup(t,regi,in)$(p37_CESMkup_input(in)) = p37_CESMkup_input(in);
p37_CESMkup(t,regi,in)$(p37_CESMkup_input(in) AND ppfen_MkupCost37(in)) = p37_CESMkup_input(in);
pm_tau_ces_tax(t,regi,in)$(p37_CESMkup_input(in) AND (NOT ppfen_MkupCost37(in))) = p37_CESMkup_input(in);
$endIf.CESMkup

display p37_CESMkup;
display pm_tau_ces_tax;

* Load secondary steel share limits
Parameter
Expand Down
2 changes: 1 addition & 1 deletion modules/37_industry/subsectors/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Parameters
p37_clinker_cement_ratio(ttot,all_regi) "clinker content per unit cement used"
pm_ue_eff_target(all_in) "energy efficiency target trajectories [% p.a.]"
pm_IndstCO2Captured(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "Captured CO2 in industry by energy carrier, subsector and emissions market"
p37_CESMkup(ttot,all_regi,all_in) "CES markup cost parameter [trUSD/CES input]"
p37_CESMkup(ttot,all_regi,all_in) "parameter for those CES markup cost accounted as investment cost in the budget [trUSD/CES input]"
p37_cesIO_up_steel_secondary(tall,all_regi,all_GDPscen) "upper limit to secondary steel production based on scrap availability"
p37_steel_secondary_max_share(tall,all_regi) "maximum share of secondary steel production"
p37_BAU_industry_ETS_solids(tall,all_regi) "industry solids demand in baseline scenario"
Expand Down
2 changes: 1 addition & 1 deletion modules/37_industry/subsectors/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ q37_IndCCSCost(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) ..


***---------------------------------------------------------------------------
*' CES markup cost to represent sector-specific demand-side transformation cost in industry
*' CES markup cost that are accounted in the budget (GDP) to represent sector-specific demand-side transformation cost in industry
***---------------------------------------------------------------------------
q37_costCESmarkup(t,regi,in)$(ppfen_industry_dyn37(in))..
vm_costCESMkup(t,regi,in)
Expand Down
4 changes: 4 additions & 0 deletions modules/37_industry/subsectors/sets.gms
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,10 @@ entyFeCC37(all_enty) "FE carriers in industry which can be used for CO2 capture
fehos
fegas
/

ppfen_MkupCost37(all_in) "primary production factors in industry on which CES mark-up cost can be levied that are counted as expenses in the macroeconomic budget equation"
/
/
;

*** ---------------------------------------------------------------------------
Expand Down

0 comments on commit 09bb41e

Please sign in to comment.