diff --git a/core/declarations.gms b/core/declarations.gms index ca4253635..0e9114780 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -162,6 +162,8 @@ pm_shFeCes(ttot,all_regi,all_enty,all_in,all_teEs) "Final energy shares for CE pm_shfe_up(ttot,all_regi,all_enty,emi_sectors) "Final energy shares exogenous upper bounds per sector" pm_shfe_lo(ttot,all_regi,all_enty,emi_sectors) "Final energy shares exogenous lower bounds per sector" +p_shSeFe(ttot,all_regi,all_enty) "Initial share of energy carrier subtype in final energy demand of the aggregated carrier type (eg 'the share of bio-based FE liquids in all FE liquids') [0..1]" +p_shSeFeSector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "Initial share of energy carrier subtype in final energy demand of the aggregated carrier type for each sector/emiMarket combination (eg 'bio-based FE liquids share in all FE liquids within ETS transport') [0..1]" pm_shGasLiq_fe_up(ttot,all_regi,emi_sectors) "Final energy gases plus liquids shares exogenous upper bounds per sector" pm_shGasLiq_fe_lo(ttot,all_regi,emi_sectors) "Final energy gases plus liquids shares exogenous lower bounds per sector" @@ -429,6 +431,8 @@ v_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen by 2030 [0 v_shBioTrans(ttot,all_regi) "Share of biofuels in transport liquids from 2025 onwards. Value between 0 and 1." v_shfe(ttot,all_regi,all_enty,emi_sectors) "share of final energy in sector total final energy [0..1]" +v_shSeFe(ttot,all_regi,all_enty) "share of energy carrier subtype in final energy demand of the aggregated carrier type (eg 'the share of bio-based FE liquids in all FE liquids') [0..1]" +v_shSeFeSector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "share of energy carrier subtype in final energy demand of the aggregated carrier type per sector/emiMarket combination (eg 'the share of bio-based FE liquids in all FE liquids used in ETS-covered transport') [0..1]" v_shGasLiq_fe(ttot,all_regi,emi_sectors) "share of gases and liquids in sector final energy [0..1]" vm_emiCdrAll(ttot,all_regi) "all CDR emissions" @@ -447,7 +451,17 @@ 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" +$ifthen.seFeSectorShareDev not "%cm_seFeSectorShareDevMethod%" == "off" + v_penSeFeSectorShare(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "penalty cost for secondary energy share deviation between sectors, for each sector/emiMarket combination" + vm_penSeFeSectorShareDevCost(ttot,all_regi) "total penalty cost for secondary energy share deviation between sectors" +$endif.seFeSectorShareDev + +$ifthen.minMaxSeFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "minMaxAvrgShare" + v_NegPenSeFeSectorShare(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "min-max negative penalty for secondary energy share deviation in sectors" + v_PosPenSeFeSectorShare(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "min-max positive penalty for secondary energy share deviation in sectors" +$endif.minMaxSeFeSectorShareDev ; + ***---------------------------------------------------------------------------------------- *** EQUATIONS ***---------------------------------------------------------------------------------------- @@ -552,6 +566,8 @@ q_shGreenH2(ttot,all_regi) "share of green hydrogen in all hydrogen" q_shBioTrans(ttot,all_regi) "Define the share of biofuels in transport liquids from 2025 on." q_shfe(ttot,all_regi,all_enty,emi_sectors) "share of final energy carrier in the sector final energy" +q_shSeFe(ttot,all_regi,all_enty) "share of energy carrier subtype in final energy demand of the aggregated carrier type (eg 'the share of bio-based FE liquids in all FE liquids')" +q_shSeFeSector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "share of energy carrier subtype in final energy demand of the aggregated carrier type for each sector/emiMarket combination (eg 'the share of bio-based FE liquids in all FE liquids within ETS-covered transport" q_shGasLiq_fe(ttot,all_regi,emi_sectors) "share of gases and liquids in sector final energy" q_shbiofe_up(ttot,all_regi,all_enty,emi_sectors,all_emiMkt) "share of biomass per carrier in sector final energy (upper bound)" @@ -565,6 +581,15 @@ $IFTHEN.sehe_upper not "%cm_sehe_upper%" == "off" q_heat_limit(ttot,all_regi) "equation to limit maximum level of secondary energy district heating and heat pumps use" $ENDIF.sehe_upper +$ifthen.seFeSectorShareDev not "%cm_seFeSectorShareDevMethod%" == "off" + q_penSeFeSectorShareDevCost(ttot,all_regi) "total penalty cost for secondary energy share deviation in sectors" + q_penSeFeSectorShareDev(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "penalty for secondary energy share deviation in sectors" +$endif.seFeSectorShareDev + +$ifthen.minMaxSeFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "minMaxAvrgShare" + q_minMaxPenSeFeSectorShareDev(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "min-max penalty balance for secondary energy share deviation in sectors" +$endif.minMaxSeFeSectorShareDev + ; ***---------------------------------------------------------------------------------------- *** SCALARS diff --git a/core/equations.gms b/core/equations.gms index 438947d8e..7988b30a4 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -1052,32 +1052,52 @@ q_shBioTrans(t,regi).. ; ***--------------------------------------------------------------------------- -*' Share of final energy carrier in sector +*' Shares of final energy carrier in sector ***--------------------------------------------------------------------------- q_shfe(t,regi,entyFe,sector)$(pm_shfe_up(t,regi,entyFe,sector) OR pm_shfe_lo(t,regi,entyFe,sector)).. v_shfe(t,regi,entyFe,sector) * sum(emiMkt$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe2,te)$(entyFe2Sector(entyFe2,sector)), - vm_demFeSector(t,regi,entySe,entyFe2,sector,emiMkt))) + vm_demFeSector_afterTax(t,regi,entySe,entyFe2,sector,emiMkt))) =e= sum(emiMkt$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe,te), - vm_demFeSector(t,regi,entySe,entyFe,sector,emiMkt))) + vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt))) +; + +q_shSeFe(t,regi,entySe)$(entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)).. !! share of energy carrier subtype in final energy demand of the aggregated carrier type (eg 'the share of bio-based FE liquids in all FE liquids') + v_shSeFe(t,regi,entySe) + * sum((sector,emiMkt)$sector2emiMkt(sector,emiMkt), + sum(seAgg$seAgg2se(seAgg,entySe), !! determining the aggregate SE carrier type (liquids, gases, ...) + sum(entySe2$seAgg2se(seAgg,entySe2), !! summing over the bio/fos/syn variants of the chosen SE carrier" + sum(entyFe$(sefe(entySe2,entyFe) AND entyFe2Sector(entyFe,sector)), + vm_demFeSector_afterTax(t,regi,entySe2,entyFe,sector,emiMkt))))) + =e= + sum((sector,emiMkt)$sector2emiMkt(sector,emiMkt), + sum(entyFe$(sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector)), + vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt))) +; + +q_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt)$((entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)) AND (sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt))).. + v_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt) + * sum(entySe2$sefe(entySe2,entyFe), + vm_demFeSector_afterTax(t,regi,entySe2,entyFe,sector,emiMkt)) + =e= + vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt) ; q_shGasLiq_fe(t,regi,sector)$(pm_shGasLiq_fe_up(t,regi,sector) OR pm_shGasLiq_fe_lo(t,regi,sector)).. v_shGasLiq_fe(t,regi,sector) * sum(emiMkt$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe,te)$(entyFe2Sector(entyFe,sector)), - vm_demFeSector(t,regi,entySe,entyFe,sector,emiMkt))) + vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt))) =e= sum(emiMkt$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe,te)$(SAMEAS(entyFe,"fegas") OR SAMEAS(entyFe,"fehos")), - vm_demFeSector(t,regi,entySe,entyFe,sector,emiMkt))) + vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt))) ; - *limit secondary energy district heating and heat pumps $IFTHEN.sehe_upper not "%cm_sehe_upper%" == "off" q_heat_limit(t,regi)$(t.val gt 2020).. @@ -1127,4 +1147,80 @@ q_shbiofe_lo(t,regi,entyFe,sector,emiMkt)$(pm_secBioShare(t,regi,entyFe,sector) sum((entySeBio,te)$se2fe(entySeBio,entyFe,te), vm_demFeSector_afterTax(t,regi,entySeBio,entyFe,sector,emiMkt)) ; +***--------------------------------------------------------------------------- +*' Penalty for secondary energy share deviation in sectors +***--------------------------------------------------------------------------- + +$ifthen.seFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "sqSectorShare" +q_penSeFeSectorShareDev(t,regi,entySe,entyFe,sector,emiMkt)$( + (t.val ge 2025) AND !!disable share incentives for historical years in buildings, industry and CDR as this should be handled by historical bounds + ( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ) AND !!only create the equation for valid cobinations of entySe, entyFe, sector and emiMkt + ( (entySeBio(entySe) OR entySeSyn(entySe)) ) AND !!share incentives only need to be applied to n-1 secondary energy carriers + ( NOT(sameas(sector,"build") AND (sameas(entyFE,"fesos"))) ) !!disable buildings solids share incentives + ).. + v_penSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + =e= + power(v_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt) ,2) + * (1$sameas("%c_seFeSectorShareDevUnit%","share") + ( vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt) )$(sameas("%c_seFeSectorShareDevUnit%","energy")) ) !!define deviation in share or energy units +; +$elseIf.seFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "sqSectorAvrgShare" +q_penSeFeSectorShareDev(t,regi,entySe,entyFe,sector,emiMkt)$( + (t.val ge 2025) AND !!disable share incentives for historical years in buildings, industry and CDR as this should be handled by historical bounds + ( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ) AND !!only create the equation for valid cobinations of entySe, entyFe, sector and emiMkt + ( (entySeBio(entySe) OR entySeSyn(entySe)) ) AND !!share incentives only need to be applied to n-1 secondary energy carriers + ( NOT(sameas(sector,"build") AND (sameas(entyFE,"fesos"))) ) !!disable buildings solids share incentives + ).. + v_penSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + =e= + power(v_shSeFe(t,regi,entySe) - v_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt) ,2) + * (1$sameas("%c_seFeSectorShareDevUnit%","share") + ( vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt) )$(sameas("%c_seFeSectorShareDevUnit%","energy")) ) !!define deviation in share or energy units +; +$elseIf.seFeSectorShareDev "%cm_seFeSectorShareDevMethod%" == "minMaxAvrgShare" +q_penSeFeSectorShareDev(t,regi,entySe,entyFe,sector,emiMkt)$( + (t.val ge 2025) AND !!disable share incentives for historical years in buildings, industry and CDR as this should be handled by historical bounds + ( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ) AND !!only create the equation for valid cobinations of entySe, entyFe, sector and emiMkt + ( (entySeBio(entySe) OR entySeSyn(entySe)) ) AND !!share incentives only need to be applied to n-1 secondary energy carriers + ( NOT(sameas(sector,"build") AND (sameas(entyFE,"fesos"))) ) !!disable buildings solids share incentives + ).. + v_penSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + =e= + v_NegPenSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + + v_PosPenSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) +; + +q_minMaxPenSeFeSectorShareDev(t,regi,entySe,entyFe,sector,emiMkt)$( + (t.val ge 2025) AND !!disable share incentives for historical years in buildings, industry and CDR as this should be handled by historical bounds + ( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ) AND !!only create the equation for valid cobinations of entySe, entyFe, sector and emiMkt + ( (entySeBio(entySe) OR entySeSyn(entySe)) ) AND !!share incentives only need to be applied to n-1 secondary energy carriers + ( NOT(sameas(sector,"build") AND (sameas(entyFE,"fesos"))) ) !!disable buildings solids share incentives + ).. + ( + v_shSeFe(t,regi,entySe) + - v_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt) + + v_NegPenSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + - v_PosPenSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + ) + * !!define deviation in share or energy units + ( 1$sameas("%c_seFeSectorShareDevUnit%","share") + + (sum(seAgg$seAgg2se(seAgg,entySe), + sum(entyFe2$(seAgg2fe(seAgg,entyFe2) AND entyFe2Sector(entyFe2,sector)), + sum(entySe2$(seAgg2se(seAgg,entySe2) AND sefe(entySe2,entyFe2) AND entyFe2Sector(entyFe2,sector)), + vm_demFeSector_afterTax(t,regi,entySe2,entyFe2,sector,emiMkt)))) + )$sameas("%c_seFeSectorShareDevUnit%","energy") + ) + =e= + 0 +; +$endif.seFeSectorShareDev + +$ifthen.penSeFeSectorShareDevCost not "%cm_seFeSectorShareDevMethod%" == "off" +q_penSeFeSectorShareDevCost(t,regi).. + vm_penSeFeSectorShareDevCost(t,regi) + =e= + sum((entySe,entyFe,sector,emiMkt)$( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ), + v_penSeFeSectorShare(t,regi,entySe,entyFe,sector,emiMkt) + ) * c_seFeSectorShareDevScale +; +$endif.penSeFeSectorShareDevCost + *** EOF ./core/equations.gms diff --git a/core/preloop.gms b/core/preloop.gms index 4a5f07e1f..e50a39f82 100644 --- a/core/preloop.gms +++ b/core/preloop.gms @@ -189,4 +189,32 @@ if (cm_startyear gt 2005, Execute_Loadpoint 'input_ref' vm_capEarlyReti.l = vm_capEarlyReti.l; ); +*** initialize the carrier subtype shares in final energy demand such that the starting point for the model is "all sectors have the same bio/fos/syn shares for a given carrier type" when cm_seFeSectorShareDevMethod is enabled +p_shSeFe(t,regi,entySe)$((entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)) AND sum(seAgg$seAgg2se(seAgg,entySe), sum((sector,emiMkt)$sector2emiMkt(sector,emiMkt), sum(entySe2$seAgg2se(seAgg,entySe2), sum(entyFe$(sefe(entySe2,entyFe) AND entyFe2Sector(entyFe,sector)), vm_demFeSector.l(t,regi,entySe2,entyFe,sector,emiMkt))))) ) = + sum((sector,emiMkt)$sector2emiMkt(sector,emiMkt), sum(entyFe$(sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector)), vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt))) + / + sum(seAgg$seAgg2se(seAgg,entySe), sum((sector,emiMkt)$sector2emiMkt(sector,emiMkt), sum(entySe2$seAgg2se(seAgg,entySe2), sum(entyFe$(sefe(entySe2,entyFe) AND entyFe2Sector(entyFe,sector)), vm_demFeSector.l(t,regi,entySe2,entyFe,sector,emiMkt))))); +v_shSeFe.l(t,regi,entySe)$p_shSeFe(t,regi,entySe) = p_shSeFe(t,regi,entySe); + +$ifthen.penSeFeSectorShareDevCost not "%cm_seFeSectorShareDevMethod%" == "off" +vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt)$( + ( p_shSeFe(t,regi,entySe) ) AND + (t.val ge 2025) AND !!disable share incentives for historical years in buildings, industry and CDR as this should be handled by historical bounds + ( entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe) ) AND !! only redefine vm_demFeSector for entySeBio, entySeSyn and entySeFos items + ( sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) ) AND !!only create the equation for valid cobinations of entySe, entyFe, sector and emiMkt + ( (entySeBio(entySe) OR entySeSyn(entySe)) ) AND !!share incentives only need to be applied to n-1 secondary energy carriers + ( NOT(sameas(sector,"build") AND (sameas(entyFE,"fesos"))) ) !!disable buildings solids share incentives +) = + sum(entySe2$sefe(entySe2,entyFe), vm_demFeSector.l(t,regi,entySe2,entyFe,sector,emiMkt)) + * p_shSeFe(t,regi,entySe); +vm_demFeSector_afterTax.l(t,regi,entySe,entyFe,sector,emiMkt) = vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt); +$endif.penSeFeSectorShareDevCost + +p_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt)$((entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)) AND (sefe(entySe,entyFe) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt)) AND sum(entySe2$sefe(entySe2,entyFe), vm_demFeSector.l(t,regi,entySe2,entyFe,sector,emiMkt)) ) = + vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt) + / + sum(entySe2$sefe(entySe2,entyFe), vm_demFeSector.l(t,regi,entySe2,entyFe,sector,emiMkt)) +; +v_shSeFeSector.l(t,regi,entySe,entyFe,sector,emiMkt)$p_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt) = p_shSeFeSector(t,regi,entySe,entyFe,sector,emiMkt); + *** EOF ./core/preloop.gms diff --git a/main.gms b/main.gms index 77e381b79..302038e71 100755 --- a/main.gms +++ b/main.gms @@ -1053,6 +1053,11 @@ parameter ; c_earlyRetiValidYr = 2035; !! def = 2035 *' +parameter + c_seFeSectorShareDevScale "scale factor in the objective function of the penalization to incentive sectors to have similar shares of secondary energy fuels." +; + c_seFeSectorShareDevScale = 1e-3; !! def = 1e-3 +*' parameter cm_TaxConvCheck "switch for enabling tax convergence check in nash mode" ; @@ -1758,6 +1763,18 @@ $setglobal cm_INCONV_PENALTY on !! def = on !! regexp = off|on *** cm_INCONV_PENALTY_FESwitch off !! def = off *** flag to trun on inconvenience penalty to avoid switching shares on buildings, transport and industry biomass use if costs are relatively close (seLiqbio, sesobio, segabio) $setglobal cm_INCONV_PENALTY_FESwitch on !! def = on !! regexp = off|on +*** cm_seFeSectorShareDevMethod "Switch to enable an optimization incentive for sectors to have similar shares of secondary energy fuels and determine the method used for the incentive." +*** Possible values: off or the method name (sqSectorShare, sqSectorAvrgShare, or minMaxAvrgShare) +*** off "The model can freely allocate bio/syn/fossil fuels between sectors. If not off, a penalization term is added so sectors are incentivized to apply similar shares of bio-fuels, synfuels, and fossils in each sector." +*** sqSectorShare "Square share penalty. This method is not recommended as it also creates an unwanted incentive for the model to have equal total fos/syn/bio shares, as higher shares are penalized more than lower ones. Runs will be more sensible to the chosen c_seFeSectorShareDevScale values for this reason." +*** sqSectorAvrgShare "Square deviation from average share penalty. Recomended over sqSectorShare (see above)." +*** minMaxAvrgShare "Min-max deviation from average share penalty." +*** The relative effect of the penalization term in the objective function is scaled to avoid affecting optimization results. This scaling factor can be defined using the switch c_seFeSectorShareDevScale. +$setglobal cm_seFeSectorShareDevMethod off !! def = sqSectorAvrgShare !! regexp = off|sqSectorShare|sqSectorAvrgShare|minMaxAvrgShare +*** c_seFeSectorShareDevUnit "Defines if the penalization term is applied over fuel shares or energy units." +*** share, "The square penalization is applied directly to the share values. This results in different-sized regions having varying relative penalization incentives, but the range of penalization values will be more consistent from the solver's perspective." +*** energy, "The square penalization is applied to the share values multiplied by the energy demand. This approach scales penalizations better across different-sized regions, but there is a higher risk of the penalizations being ignored and the shares not being enforced if the value range is too small." +$setglobal c_seFeSectorShareDevUnit share !! def = share !! regexp = share|energy *** cm_MOFEX off !! def=off *** *JH/LB* Activate MOFEX partial fossil fuel extraction cost minimization model *** * Warning: Use a well-converged run since the model uses vm_prodPe from the input GDX diff --git a/modules/02_welfare/ineqLognormal/equations.gms b/modules/02_welfare/ineqLognormal/equations.gms index abca99484..d5e44f3c8 100644 --- a/modules/02_welfare/ineqLognormal/equations.gms +++ b/modules/02_welfare/ineqLognormal/equations.gms @@ -60,9 +60,13 @@ $ifthen "%cm_INCONV_PENALTY_FESwitch%" == "on" AND sector2emiMkt(sector,emiMkt) AND (entySeBio(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - ) - / 1e3 + + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + ) + / 1e3 +$endif +$ifthen not "%cm_seFeSectorShareDevMethod%" == "off" + !! penalizing secondary energy share deviation in sectors + - vm_penSeFeSectorShareDevCost(ttot,regi) $endif ) ) diff --git a/modules/02_welfare/utilitarian/equations.gms b/modules/02_welfare/utilitarian/equations.gms index 7fd236abc..1ac8c3734 100644 --- a/modules/02_welfare/utilitarian/equations.gms +++ b/modules/02_welfare/utilitarian/equations.gms @@ -56,9 +56,13 @@ $ifthen "%cm_INCONV_PENALTY_FESwitch%" == "on" AND sector2emiMkt(sector,emiMkt) AND (entySeBio(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - ) - / 1e3 + + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + ) + / 1e3 +$endif +$ifthen not "%cm_seFeSectorShareDevMethod%" == "off" + !! penalizing secondary energy share deviation in sectors + - vm_penSeFeSectorShareDevCost(ttot,regi) $endif ) )