From 076d4160e85b557ce638e99258f339ba62ad56dc Mon Sep 17 00:00:00 2001 From: Michaja Pehl Date: Tue, 19 Mar 2024 09:18:54 +0100 Subject: [PATCH] adapt q37_demFeIndst and o37_demFeIndSub to q37_demFeIndst_intermediate change --- modules/37_industry/subsectors/bounds.gms | 30 ++++++++------- modules/37_industry/subsectors/equations.gms | 39 +++++++++++--------- modules/37_industry/subsectors/postsolve.gms | 6 +-- modules/37_industry/subsectors/sets.gms | 9 +++++ 4 files changed, 49 insertions(+), 35 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 0ed9db58f8..64025a20ec 100644 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -162,23 +162,25 @@ $endif.cm_subsec_model_steel *** Populate values for v37_demFeIndst to ease introduction of new variale. Can *** be removed once the variable is established. -loop ((t,regi, - sefe(entySe,entyFe), - fe2ppfEn(entyFe,in), - ppfen_industry_dyn37(in), - secInd37_2_pf(secInd37,in), - secInd37_emiMkt(secInd37,emiMkt))$( entySeFos(entySe) - OR entySeBio(entySe) - OR entySeSyn(entySe) ), - v37_demFeIndst.l(t,regi,entySe,entyFe,in,emiMkt)$( - sum(se2fe(entySe2,entyFe,te), - vm_demFeSector_afterTax.l(t,regi,entySe2,entyFe,"indst",emiMkt) - ) ) - = vm_cesIO.l(t,regi,in) +v37_demFeIndst.l(t,regi,entySe,entyFe,out,emiMkt) = 0; +loop ((t,regi,entySe,entyFe,out,emiMkt,secInd37,in)$( + sefe(entySe,entyFe) + AND sector2emiMkt("indst",emiMkt) + AND secInd37_emiMkt(secInd37,emiMkt) + AND secInd37_2_pf(secInd37,out) + AND ue_industry_2_pf(out,in) + AND fe2ppfEn37(entyFe,in) + AND sum(se2fe(entySe,entyFe,te), + vm_demFeSector_afterTax.l(t,regi,entySe,entyFe,"indst",emiMkt) + ) ), + v37_demFeIndst.l(t,regi,entySe,entyFe,out,emiMkt) + = sum((fe2ppfEn37_2(entyFe,in),ue_industry_2_pf(out,in)), + vm_cesIO.l(t,regi,in) + + pm_cesdata(t,regi,in,"offset_quantity") + ) * vm_demFeSector_afterTax.l(t,regi,entySe,entyFe,"indst",emiMkt) / sum(se2fe(entySe2,entyFe,te), vm_demFeSector_afterTax.l(t,regi,entySe2,entyFe,"indst",emiMkt) ); ); - *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 141706e62b..903e2deb89 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -13,21 +13,25 @@ ***------------------------------------------------------ *' Industry final energy balance ***------------------------------------------------------ -q37_demFeIndst_intermediate(t,regi,entyFe,in,secInd37,emiMkt)$( - ue_industry_dyn37(in) - AND secInd37_2_pf(secInd37,in) - AND secInd37_emiMkt(secInd37,emiMkt) ) .. +*' Industry final energy demand is calculated by (entySe,entyFe,out,secIind37) +*' tuple, where out is the root of the CES subtree (e.g. ue_cement). The +*' (entyFe,out) tuple is equivalent to ppfen, and necessary to deal with +*' process-based steel, which is not part of the CES tree below +*' ue_steel_primary/ue_steel_secondary. +q37_demFeIndst_intermediate(t,regi,entyFe,out,secInd37,emiMkt)$( + entyFe_out_emiMkt(entyFe,out,emiMkt) + AND secInd37_emiMkt(secInd37,emiMkt) + AND secInd37_2_pf(secInd37,out) ) .. sum(sefe(entySe,entyFe), - v37_demFeIndst(t,regi,entySe,entyFe,in,emiMkt) + v37_demFeIndst(t,regi,entySe,entyFe,out,emiMkt) ) =e= - sum((ue_industry_2_pf(in,in2), - fe2ppfEn(entyFe,in2)), - ( vm_cesIO(t,regi,in2) - + pm_cesdata(t,regi,in2,"offset_quantity") - )) - + sum((tePrc2ue(tePrc,in), - tePrc2opmoPrc(tePrc,opmoPrc)), + sum((ue_industry_2_pf(out,in), + fe2ppfEn(entyFe,in)), + vm_cesIO(t,regi,in) + + pm_cesdata(t,regi,in,"offset_quantity") + ) + + sum(tePrc2ue(tePrc,opmoPrc,out), pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) * vm_outflowPrc(t,regi,tePrc,opmoPrc) ) @@ -35,17 +39,16 @@ q37_demFeIndst_intermediate(t,regi,entyFe,in,secInd37,emiMkt)$( q37_demFeIndst(t,regi,entySe,entyFe,emiMkt)$( sefe(entySe,entyFe) - AND entyFe2Sector(entyFe,"indst") ) .. + AND entyFe2Sector(entyFe,"indst") + AND sector2emiMkt("indst",emiMkt) ) .. vm_demFeSector_afterTax(t,regi,entySe,entyFe,"indst",emiMkt) =e= - sum((fe2ppfEn(entyFe,in), - ppfen_industry_dyn37(in), - secInd37_2_pf(secInd37,in), - secInd37_emiMkt(secInd37,emiMkt)), - v37_demFeIndst(t,regi,entySe,entyFe,in,emiMkt) + sum(entyFe_out_emiMkt(entyFe,out,emiMkt), + v37_demFeIndst(t,regi,entySe,entyFe,out,emiMkt) ) ; + ***------------------------------------------------------ *' Thermodynamic limits on subsector energy demand ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index d51f71a44e..6dd0baf5ec 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -33,9 +33,9 @@ o37_demFePrc(ttot,regi,entyFe,tePrc,opmoPrc)$(pm_specFeDem(ttot,regi,entyFe,tePr o37_demFeIndSub(ttot,regi,entySe,entyFe,secInd37,emiMkt)$( sefe(entySe,entyFe) AND secInd37_emiMkt(secInd37,emiMkt) ) - = sum((fe2ppfEn(entyFe,in), - secInd37_2_pf(secInd37,in)), - v37_demFeIndst.l(ttot,regi,entySe,entyFe,in,emiMkt) + = sum((secInd37_2_pf(secInd37,out), + ue_industry_dyn37(out)), + v37_demFeIndst.l(ttot,regi,entySe,entyFe,out,emiMkt) ); *** industry captured fuel CO2 diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 4bfc30eab2..8bfe55d1a1 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -352,6 +352,15 @@ ppfen_MkupCost37(all_in) "primary production factors in industry on which CES / / + entyFe_out_emiMkt(all_enty,all_in,all_emiMkt) "link FE demand to subsector production to emission markets" + / + (fesos, fehos, fegas, feh2s, feels) . ue_cement . ETS + (fesos, fehos, fegas, feh2s, feels) . ue_chemicals . ETS + (fesos, fehos, fegas, feh2s, feels) . ue_steel_primary . ETS + feels . ue_steel_secondary . ETS + (fesos, fehos, fegas, feh2s, fehes, feels) . ue_otherInd . ES + / + *** --------------------------------------------------------------------------- *** 2. Process-Based