From 65910e8152c0a384609f83ba9e8cc77a5f1b2a94 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 12 Sep 2024 14:44:00 +0200 Subject: [PATCH 1/4] account carbon contained in plastics and emitted durin waste incineration irrespective of source --- core/declarations.gms | 9 ++++---- core/equations.gms | 12 +++++----- modules/37_industry/fixed_shares/not_used.txt | 3 +-- .../37_industry/subsectors/declarations.gms | 4 ++-- modules/37_industry/subsectors/equations.gms | 23 +++++-------------- modules/37_industry/subsectors/postsolve.gms | 7 ++++++ 6 files changed, 26 insertions(+), 32 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index 1e98f91bd..6b1bbb1ab 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -45,10 +45,10 @@ p_developmentState(tall,all_regi) "level of development based f_lab(tall,all_regi,all_POPscen) "labour data for all possible scenarios" pm_lab(tall,all_regi) "data for labour [bn people]" pm_esCapCost(tall,all_regi,all_teEs) "Capital energy cost per unit of consumption for end-use capital (energy service layer)" -*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. -*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. +*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. +*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. *** If sigma is larger than 1, the more one product is used, the less the others are used, i.e. the products are substitutes" -pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." +pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." p_r(ttot,all_regi) "calculating capital interest rate" o_diff_to_Budg(iteration) "Difference between actual CO2 budget and target CO2 budget" @@ -431,7 +431,6 @@ vm_emiCdrAll(ttot,all_regi) "all CDR emissions" vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in feedstocks with unknown fate (not plastics)(assumed to go back into the atmosphere) [GtC]" vm_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" vm_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "CCS from incineration of plastic waste [GtC]" -vm_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" v_changeProdStartyearAdj(ttot,all_regi,all_te) "Absolute effect size of changing output with respect to the reference run for each te" vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output with respect to the reference run for each te" @@ -440,7 +439,7 @@ vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer." 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" +vm_transpGDPscale(ttot,all_regi) "dampening factor to align edge-t non-energy transportation costs with historical GDP data" ; ***---------------------------------------------------------------------------------------- diff --git a/core/equations.gms b/core/equations.gms index 760828b25..80ac72c3c 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -397,7 +397,7 @@ qm_fuel2pe(t,regi,peRicardian(enty)).. =e= sum(pe2rlf(enty,rlf2), vm_fuExtr(t,regi,enty,rlf2)) - (vm_Xport(t,regi,enty) - (1-pm_costsPEtradeMp(regi,enty)) * vm_Mport(t,regi,enty))$(tradePe(enty)) - - sum(pe2rlf(enty2,rlf2), + - sum(pe2rlf(enty2,rlf2), (pm_fuExtrOwnCons(regi, enty, enty2) * vm_fuExtr(t,regi,enty2,rlf2))$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0) ) ; @@ -605,12 +605,12 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt) .. !! substract carbon from non-fossil origin contained in plastics that don't !! get incinerated ("plastic removals") - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), - vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) + se2fe(entySe,entyFe,te)), + vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) )$( sameas(enty,"co2") ) - !! add fossil emissions from plastics incineration. + !! add fossil emissions from plastics incineration. + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te))$( entySeFos(entySe) ), + se2fe(entySe,entyFe,te)), vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) )$( sameas(enty,"co2") ) !! add fossil emissions from chemical feedstock with unknown fate @@ -841,7 +841,7 @@ q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) .. + sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,enty,enty2,te,rlf)) !! carbon captured from industry + sum(emiInd37, vm_emiIndCCS(t,regi,emiInd37)) - + sum((sefe(entySe,entyFe),emiMkt)$( + + sum((sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ), vm_incinerationCCS(t,regi,entySe,entyFe,emiMkt) ) diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index a73aa7d40..e0791e39a 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -23,7 +23,7 @@ sm_macChange, parameter, not needed sm_tmp2, parameter, not needed sm_TWa_2_MWh, input, questionnaire v37_FeedstocksCarbon, variable, not needed -v37_plasticsCarbon, variable, not needed +vm_plasticsCarbon, variable, not needed v37_plasticWaste, variable, not needed vm_capFac, variable, not needed vm_cap, variable, not needed @@ -32,5 +32,4 @@ vm_demFENonEnergySector, variable, not needed vm_feedstockEmiUnknownFate, variable, not needed vm_incinerationCCS, variable, does not want to play vm_incinerationEmi, variable, not needed -vm_nonIncineratedPlastics, variable, not needed vm_outflowPrc, variable, not needed diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 827d4cace..bac6b3fd4 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -54,6 +54,7 @@ Parameters o37_demFeIndTotEn(ttot,all_regi,all_enty,all_emiMkt) "total FE per energy carrier and emissions market in industry (sum over subsectors)" o37_shIndFE(ttot,all_regi,all_enty,secInd37,all_emiMkt) "share of subsector in FE industry energy carriers and emissions markets" o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector" + o37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" !! process-based implementation o37_demFePrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Process-based FE demand per FE type and process" o37_shareRoute(ttot,all_regi,all_te,opmoPrc,route) "The relative share (between 0 and 1) of a technology and operation mode outflow which belongs to a certain route; For example, bf.standard belongs partly to the route bfbof and partly to the route bfbof" @@ -88,7 +89,7 @@ Positive Variables vm_IndCCSCost(ttot,all_regi,all_enty) "industry CCS cost" v37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" v37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in chemical feedstocks [GtC]" - v37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" + vm_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" v37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastic waste [GtC]" v37_regionalWasteIncinerationCCSshare(tall,all_regi) "share of waste incineration that is captured [%]" @@ -121,7 +122,6 @@ $endif.no_calibration q37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastic waste [GtC]" q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" q37_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon captured from plastics that are incinerated [GtC]" - q37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" q37_feedstocksShares(ttot,all_regi,all_enty,all_enty,all_emiMkt) "identical fossil/biomass/synfuel shares for FE and feedstocks" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index ae83992fc..09919f3b4 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -272,7 +272,7 @@ q37_FeedstocksCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( *' Calculate carbon contained in plastics as a share of carbon in feedstock [GtC] q37_plasticsCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - v37_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) + vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) =e= v37_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * s37_plasticsShare @@ -289,15 +289,15 @@ q37_plasticWaste(ttot,regi,sefe(entySe,entyFe),emiMkt)$( v37_plasticWaste(ttot,regi,entySe,entyFe,emiMkt) =e= !! prompt waste - v37_plasticsCarbon(ttot,regi,entySe,entyFe,emiMkt)$( NOT %cm_wastelag% ) + vm_plasticsCarbon(ttot,regi,entySe,entyFe,emiMkt)$( NOT %cm_wastelag% ) !! lagged waste - + ( v37_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt)$( ttot.val lt 2070 ) - + ( ( v37_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt) - + v37_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt) + + ( vm_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt)$( ttot.val lt 2070 ) + + ( ( vm_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt) + + vm_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt) ) / 2 )$( ttot.val eq 2070 ) - + v37_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt)$( ttot.val gt 2070 ) + + vm_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt)$( ttot.val gt 2070 ) )$( %cm_wastelag% ) ; @@ -321,17 +321,6 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( * v37_regionalWasteIncinerationCCSshare(t,regi) ; -*' calculate carbon contained in non-incinerated plastics -*' this is used in emissions accounting to subtract the carbon that gets -*' sequestered in plastic products -q37_nonIncineratedPlastics(t,regi,sefe(entySe,entyFe),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) - =e= - v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) - * (1 - pm_incinerationRate(t,regi)) - ; - *' calculate flow of carbon contained in chemical feedstock with unknown fate *' it is assumed that this carbon is re-emitted in the same timestep if cm_feedstockEmiUnknownFate is enabled (=on) q37_feedstockEmiUnknownFate(t,regi,sefe(entySe,entyFe),emiMkt)$( diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 2e92cadbe..50a2fa8f8 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -84,6 +84,13 @@ pm_IndstCO2Captured(ttot,regi,entySe,entyFe(entyFeCC37),secInd37,emiMkt)$( ) !! subsector capture share ; +*' calculate carbon contained in non-incinerated plastics +o37_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt)$( + sefe(entySe,entyFe) + AND entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) + = v37_plasticWaste.l(t,regi,entySe,entyFe,emiMkt) + * (1 - pm_incinerationRate(t,regi)) +; *** --------------------------------------------------------------------------- *** Process-Based From ffd437e40f1d9eaf873c36403e0470dc577f8d0e Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 10 Oct 2024 11:25:01 +0200 Subject: [PATCH 2/4] Revert "account carbon contained in plastics and emitted durin waste incineration irrespective of source" This reverts commit 65910e8152c0a384609f83ba9e8cc77a5f1b2a94. --- core/declarations.gms | 9 ++++---- core/equations.gms | 12 +++++----- modules/37_industry/fixed_shares/not_used.txt | 3 ++- .../37_industry/subsectors/declarations.gms | 4 ++-- modules/37_industry/subsectors/equations.gms | 23 ++++++++++++++----- modules/37_industry/subsectors/postsolve.gms | 7 ------ 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index 6b1bbb1ab..1e98f91bd 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -45,10 +45,10 @@ p_developmentState(tall,all_regi) "level of development based f_lab(tall,all_regi,all_POPscen) "labour data for all possible scenarios" pm_lab(tall,all_regi) "data for labour [bn people]" pm_esCapCost(tall,all_regi,all_teEs) "Capital energy cost per unit of consumption for end-use capital (energy service layer)" -*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. -*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. +*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. +*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. *** If sigma is larger than 1, the more one product is used, the less the others are used, i.e. the products are substitutes" -pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." +pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." p_r(ttot,all_regi) "calculating capital interest rate" o_diff_to_Budg(iteration) "Difference between actual CO2 budget and target CO2 budget" @@ -431,6 +431,7 @@ vm_emiCdrAll(ttot,all_regi) "all CDR emissions" vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in feedstocks with unknown fate (not plastics)(assumed to go back into the atmosphere) [GtC]" vm_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" vm_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "CCS from incineration of plastic waste [GtC]" +vm_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" v_changeProdStartyearAdj(ttot,all_regi,all_te) "Absolute effect size of changing output with respect to the reference run for each te" vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output with respect to the reference run for each te" @@ -439,7 +440,7 @@ vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer." 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" +vm_transpGDPscale(ttot,all_regi) "dampening factor to align edge-t non-energy transportation costs with historical GDP data" ; ***---------------------------------------------------------------------------------------- diff --git a/core/equations.gms b/core/equations.gms index 80ac72c3c..760828b25 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -397,7 +397,7 @@ qm_fuel2pe(t,regi,peRicardian(enty)).. =e= sum(pe2rlf(enty,rlf2), vm_fuExtr(t,regi,enty,rlf2)) - (vm_Xport(t,regi,enty) - (1-pm_costsPEtradeMp(regi,enty)) * vm_Mport(t,regi,enty))$(tradePe(enty)) - - sum(pe2rlf(enty2,rlf2), + - sum(pe2rlf(enty2,rlf2), (pm_fuExtrOwnCons(regi, enty, enty2) * vm_fuExtr(t,regi,enty2,rlf2))$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0) ) ; @@ -605,12 +605,12 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt) .. !! substract carbon from non-fossil origin contained in plastics that don't !! get incinerated ("plastic removals") - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te)), - vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) + se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), + vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) )$( sameas(enty,"co2") ) - !! add fossil emissions from plastics incineration. + !! add fossil emissions from plastics incineration. + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te)), + se2fe(entySe,entyFe,te))$( entySeFos(entySe) ), vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) )$( sameas(enty,"co2") ) !! add fossil emissions from chemical feedstock with unknown fate @@ -841,7 +841,7 @@ q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) .. + sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,enty,enty2,te,rlf)) !! carbon captured from industry + sum(emiInd37, vm_emiIndCCS(t,regi,emiInd37)) - + sum((sefe(entySe,entyFe),emiMkt)$( + + sum((sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ), vm_incinerationCCS(t,regi,entySe,entyFe,emiMkt) ) diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index e0791e39a..a73aa7d40 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -23,7 +23,7 @@ sm_macChange, parameter, not needed sm_tmp2, parameter, not needed sm_TWa_2_MWh, input, questionnaire v37_FeedstocksCarbon, variable, not needed -vm_plasticsCarbon, variable, not needed +v37_plasticsCarbon, variable, not needed v37_plasticWaste, variable, not needed vm_capFac, variable, not needed vm_cap, variable, not needed @@ -32,4 +32,5 @@ vm_demFENonEnergySector, variable, not needed vm_feedstockEmiUnknownFate, variable, not needed vm_incinerationCCS, variable, does not want to play vm_incinerationEmi, variable, not needed +vm_nonIncineratedPlastics, variable, not needed vm_outflowPrc, variable, not needed diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index bac6b3fd4..827d4cace 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -54,7 +54,6 @@ Parameters o37_demFeIndTotEn(ttot,all_regi,all_enty,all_emiMkt) "total FE per energy carrier and emissions market in industry (sum over subsectors)" o37_shIndFE(ttot,all_regi,all_enty,secInd37,all_emiMkt) "share of subsector in FE industry energy carriers and emissions markets" o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector" - o37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" !! process-based implementation o37_demFePrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Process-based FE demand per FE type and process" o37_shareRoute(ttot,all_regi,all_te,opmoPrc,route) "The relative share (between 0 and 1) of a technology and operation mode outflow which belongs to a certain route; For example, bf.standard belongs partly to the route bfbof and partly to the route bfbof" @@ -89,7 +88,7 @@ Positive Variables vm_IndCCSCost(ttot,all_regi,all_enty) "industry CCS cost" v37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" v37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in chemical feedstocks [GtC]" - vm_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" + v37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" v37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastic waste [GtC]" v37_regionalWasteIncinerationCCSshare(tall,all_regi) "share of waste incineration that is captured [%]" @@ -122,6 +121,7 @@ $endif.no_calibration q37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastic waste [GtC]" q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" q37_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon captured from plastics that are incinerated [GtC]" + q37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" q37_feedstocksShares(ttot,all_regi,all_enty,all_enty,all_emiMkt) "identical fossil/biomass/synfuel shares for FE and feedstocks" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 09919f3b4..ae83992fc 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -272,7 +272,7 @@ q37_FeedstocksCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( *' Calculate carbon contained in plastics as a share of carbon in feedstock [GtC] q37_plasticsCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) + v37_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) =e= v37_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * s37_plasticsShare @@ -289,15 +289,15 @@ q37_plasticWaste(ttot,regi,sefe(entySe,entyFe),emiMkt)$( v37_plasticWaste(ttot,regi,entySe,entyFe,emiMkt) =e= !! prompt waste - vm_plasticsCarbon(ttot,regi,entySe,entyFe,emiMkt)$( NOT %cm_wastelag% ) + v37_plasticsCarbon(ttot,regi,entySe,entyFe,emiMkt)$( NOT %cm_wastelag% ) !! lagged waste - + ( vm_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt)$( ttot.val lt 2070 ) - + ( ( vm_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt) - + vm_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt) + + ( v37_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt)$( ttot.val lt 2070 ) + + ( ( v37_plasticsCarbon(ttot-2,regi,entySe,entyFe,emiMkt) + + v37_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt) ) / 2 )$( ttot.val eq 2070 ) - + vm_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt)$( ttot.val gt 2070 ) + + v37_plasticsCarbon(ttot-1,regi,entySe,entyFe,emiMkt)$( ttot.val gt 2070 ) )$( %cm_wastelag% ) ; @@ -321,6 +321,17 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( * v37_regionalWasteIncinerationCCSshare(t,regi) ; +*' calculate carbon contained in non-incinerated plastics +*' this is used in emissions accounting to subtract the carbon that gets +*' sequestered in plastic products +q37_nonIncineratedPlastics(t,regi,sefe(entySe,entyFe),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. + vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) + =e= + v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) + * (1 - pm_incinerationRate(t,regi)) + ; + *' calculate flow of carbon contained in chemical feedstock with unknown fate *' it is assumed that this carbon is re-emitted in the same timestep if cm_feedstockEmiUnknownFate is enabled (=on) q37_feedstockEmiUnknownFate(t,regi,sefe(entySe,entyFe),emiMkt)$( diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 50a2fa8f8..2e92cadbe 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -84,13 +84,6 @@ pm_IndstCO2Captured(ttot,regi,entySe,entyFe(entyFeCC37),secInd37,emiMkt)$( ) !! subsector capture share ; -*' calculate carbon contained in non-incinerated plastics -o37_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt)$( - sefe(entySe,entyFe) - AND entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) - = v37_plasticWaste.l(t,regi,entySe,entyFe,emiMkt) - * (1 - pm_incinerationRate(t,regi)) -; *** --------------------------------------------------------------------------- *** Process-Based From ac011c672dd0bc84a9a952161c1895d17f496298 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 10 Oct 2024 13:52:17 +0200 Subject: [PATCH 3/4] restructure chemical feedstock emissions balancing --- core/declarations.gms | 15 +-- core/equations.gms | 33 ++----- modules/37_industry/fixed_shares/not_used.txt | 63 ++++++------ .../37_industry/subsectors/declarations.gms | 16 +++- modules/37_industry/subsectors/equations.gms | 96 ++++++++++++++----- 5 files changed, 129 insertions(+), 94 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index c38ccb4d2..29aca9619 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -45,10 +45,10 @@ p_developmentState(tall,all_regi) "level of development based f_lab(tall,all_regi,all_POPscen) "labour data for all possible scenarios" pm_lab(tall,all_regi) "data for labour [bn people]" pm_esCapCost(tall,all_regi,all_teEs) "Capital energy cost per unit of consumption for end-use capital (energy service layer)" -*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. -*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. +*** If elasticities of substitution (sigma) is below 1, the smaller it is the less the substitution replacement effect between different CES nodes. +*** The products become more and more complementary in the production, meaning that the more one product is used, the more the other one is demanded as well. *** If sigma is larger than 1, the more one product is used, the less the others are used, i.e. the products are substitutes" -pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." +pm_cesdata_sigma(ttot,all_in) "elasticities of substitution." p_r(ttot,all_regi) "calculating capital interest rate" o_diff_to_Budg(iteration) "Difference between actual CO2 budget and target CO2 budget" @@ -399,7 +399,7 @@ vm_prodPe(ttot,all_regi,all_enty) "pe production. [TWa, Urani vm_demSe(ttot,all_regi,all_enty,all_enty,all_te) "se demand. [TWa]" vm_prodSe(tall,all_regi,all_enty,all_enty,all_te) "se production. [TWa]" vm_prodFe(ttot,all_regi,all_enty,all_enty,all_te) "fe production. [TWa]" -vm_demFENonEnergySector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "energy flows of non-energy feedstocks [TWa]" +vm_demFeNonEnergySector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "energy flows of non-energy feedstocks [TWa]" vm_demFeSector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "fe demand per sector and emission market. Taxes should be applied to this variable or variables closer to the supply side whenever possible so the marginal prices include the tax effects. [TWa]" vm_demFeSector_afterTax(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "fe demand per sector and emission market after tax. Demand sectors should use this variable in their fe balance equations so demand side marginals include taxes effects. [TWa]" v_costFu(ttot,all_regi) "fuel costs" @@ -432,11 +432,6 @@ v_shGasLiq_fe(ttot,all_regi,emi_sectors) "share of gases and liquids vm_emiCdrAll(ttot,all_regi) "all CDR emissions" -vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in feedstocks with unknown fate (not plastics)(assumed to go back into the atmosphere) [GtC]" -vm_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" -vm_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "CCS from incineration of plastic waste [GtC]" -vm_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" - v_changeProdStartyearAdj(ttot,all_regi,all_te) "Absolute effect size of changing output with respect to the reference run for each te" vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output with respect to the reference run for each te" @@ -444,7 +439,7 @@ vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer." 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" +vm_transpGDPscale(ttot,all_regi) "dampening factor to align edge-t non-energy transportation costs with historical GDP data" ; ***---------------------------------------------------------------------------------------- diff --git a/core/equations.gms b/core/equations.gms index 438947d8e..0965d65b9 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -395,7 +395,7 @@ qm_fuel2pe(t,regi,peRicardian(enty)).. =e= sum(pe2rlf(enty,rlf2), vm_fuExtr(t,regi,enty,rlf2)) - (vm_Xport(t,regi,enty) - (1-pm_costsPEtradeMp(regi,enty)) * vm_Mport(t,regi,enty))$(tradePe(enty)) - - sum(pe2rlf(enty2,rlf2), + - sum(pe2rlf(enty2,rlf2), (pm_fuExtrOwnCons(regi, enty, enty2) * vm_fuExtr(t,regi,enty2,rlf2))$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0) ) ; @@ -556,7 +556,7 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$( !! substract FE used for non-energy purposes (as feedstocks) so it does !! not create energy-related emissions - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), - vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) + vm_demFeNonEnergySector(t,regi,enty,enty2,sector,emiMkt)) ) ) ) @@ -600,22 +600,8 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt) .. - sum(emiInd37_fuel, vm_emiIndCCS(t,regi,emiInd37_fuel) )$( sameas(enty,"co2") AND sameas(emiMkt,"ETS") ) - !! substract carbon from non-fossil origin contained in plastics that don't - !! get incinerated ("plastic removals") - - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), - vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) - )$( sameas(enty,"co2") ) - !! add fossil emissions from plastics incineration. - + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te))$( entySeFos(entySe) ), - vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) - )$( sameas(enty,"co2") ) - !! add fossil emissions from chemical feedstock with unknown fate - + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te))$( entySeFos(entySe) ), - vm_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) - )$( sameas(enty,"co2") ) + !! plastic waste incineration; can be positive (fossil non-ccs) or negative (bio/syn w/ CCS) + + vm_wasteIncinerationEmiBalance(t,regi,enty,emiMkt) !! Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS !! capacity don't have the same lifetime + v_co2capturevalve(t,regi)$( sameas(enty,"co2") AND sameas(emiMkt,"ETS") ) @@ -644,12 +630,9 @@ q_emiAllMkt(t,regi,emi,emiMkt) .. + vm_emiCdr(t,regi,emi)$( sameas(emi,"co2") AND sameas(emiMkt,"ETS") ) !! Exogenous emissions + pm_emiExog(t,regi,emi)$( sameas(emiMkt,"other") ) - !! non energy emi from chem sector (process emissions from feedstocks): - + sum((entyFE2sector2emiMkt_NonEn(entyFe,sector,emiMkt), - se2fe(entySe,entyFe,te)), - vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) - * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) - ) + !! emission balance of carbon feedstocks contained in chemicals. + !! can be positive (fossil, emitted) or negative (non-fossil, stored in products) + + vm_feedstocksEmiBalance(t,regi,emi,emiMkt) ; @@ -839,7 +822,7 @@ q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) .. + sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,enty,enty2,te,rlf)) !! carbon captured from industry + sum(emiInd37, vm_emiIndCCS(t,regi,emiInd37)) - + sum((sefe(entySe,entyFe),emiMkt)$( + + sum((sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ), vm_incinerationCCS(t,regi,entySe,entyFe,emiMkt) ) diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index 3082cb3c0..b66405d2e 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -4,35 +4,38 @@ # | 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 -name, type, reason -cm_emiscen, parameter, not needed -pm_calibrate_eff_scale, parameter, not needed -pm_delta_kap, input, questionnaire -pm_emifacNonEnergy, parameter, not needed -pm_exogDemScen, input, added by codeCheck -pm_fedemand, parameter, not needed -pm_incinerationRate, parameter, not needed -pm_outflowPrcHist, parameter, not needed -pm_secBioShare, parameter, not needed -pm_specFeDem, parameter, not needed -pm_tau_ces_tax, input, questionnaire -pm_ts, parameter, not needed -sm_EJ_2_TWa, input, not needed -sm_giga_2_non, input, not needed -sm_macChange, parameter, not needed -sm_tmp2, parameter, not needed -sm_TWa_2_MWh, input, questionnaire -v37_FeedstocksCarbon, variable, not needed -v37_plasticsCarbon, variable, not needed -v37_plasticWaste, variable, not needed -vm_capFac, variable, not needed -vm_cap, variable, not needed -vm_costMatPrc, variable, not needed -vm_demFENonEnergySector, variable, not needed -vm_feedstockEmiUnknownFate, variable, not needed -vm_incinerationCCS, variable, does not want to play -vm_incinerationEmi, variable, not needed -vm_nonIncineratedPlastics, variable, not needed -vm_outflowPrc, variable, not needed +name, type, reason +cm_emiscen, parameter, not needed +pm_calibrate_eff_scale, parameter, not needed +pm_delta_kap, input, questionnaire +pm_emifacNonEnergy, parameter, not needed +pm_exogDemScen, input, added by codeCheck +pm_fedemand, parameter, not needed +pm_incinerationRate, parameter, not needed +pm_outflowPrcHist, parameter, not needed +pm_secBioShare, parameter, not needed +pm_specFeDem, parameter, not needed +pm_tau_ces_tax, input, questionnaire +pm_ts, parameter, not needed +sm_EJ_2_TWa, input, not needed +sm_giga_2_non, input, not needed +sm_macChange, parameter, not needed +sm_tmp2, parameter, not needed +sm_TWa_2_MWh, input, questionnaire +vm_capFac, variable, not needed +vm_cap, variable, not needed +vm_costMatPrc, variable, not needed +v37_feedstockEmiUnknownFate, variable, not needed +v37_incinerationEmi, variable, not needed +vm_incinerationCCS, variable, not needed +v37_incineratedPlastics, variable, not needed +v37_feedstocksCarbon, variable, not needed +v37_plasticsCarbon, variable, not needed +v37_plasticWaste, variable, not needed +v37_regionalWasteIncinerationCCSshare, variable, not needed +vm_feedstocksEmiBalance, variable, not needed +vm_demFeNonEnergySector, variable, not needed +vm_wasteIncinerationEmiBalance, variable, not needed +vm_outflowPrc, variable, not needed sm_D2020_2_D2017,input,no conversion needed sm_EURO2023_2_D2017,input,no conversion needed diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 5e462bd73..590f926ec 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -87,10 +87,18 @@ Positive Variables vm_emiIndCCS(ttot,all_regi,all_enty) "industry CCS emissions [GtC/a]" vm_IndCCSCost(ttot,all_regi,all_enty) "industry CCS cost" v37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" - v37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in chemical feedstocks [GtC]" + + !! feedstocks + v37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in feedstocks with unknown fate (not plastics)(assumed to go back into the atmosphere) [GtC]" + v37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" + vm_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "CCS from incineration of plastic waste [GtC]" + v37_incineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" + v37_feedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in chemical feedstocks [GtC]" v37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" v37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastic waste [GtC]" - v37_regionalWasteIncinerationCCSshare(tall,all_regi) "share of waste incineration that is captured [%]" + v37_regionalWasteIncinerationCCSshare(tall,all_regi) "Share of waste incineration that is captured [%]" + vm_feedstocksEmiBalance(tall,all_regi,all_enty,all_emiMkt) "Sum of chemical feedstock related emissions (positive and negative) that are accounted as non-energy, i.e. non-waste-incineration [GtC]" + vm_wasteIncinerationEmiBalance(tall,all_regi,all_enty,all_emiMkt) "Sum of plastics waste incineration related emissions (positive and negative) [GtC]" !! process-based implementation vm_outflowPrc(tall,all_regi,all_te,opmoPrc) "Production volume of processes in process-based model [Gt/a]" @@ -120,10 +128,12 @@ $endif.no_calibration q37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastic waste [GtC]" q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" q37_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon captured from plastics that are incinerated [GtC]" - q37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" + q37_incineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" q37_feedstocksShares(ttot,all_regi,all_enty,all_enty,all_emiMkt) "identical fossil/biomass/synfuel shares for FE and feedstocks" + q37_feedstocksEmiBalance(tall,all_regi,all_enty,all_emiMkt) "sum feedstocks emission balance up in order not to clutter the core" + q37_wasteIncinerationEmiBalance(tall,all_regi,all_enty,all_emiMkt) "sum feedstocks incineration emissions up in order not to clutter the core" !! process-based implementation q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index e6011ce34..65d157fb7 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -83,7 +83,7 @@ $endif.exogDem_scen ***------------------------------------------------------ q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) - OR ( sameas(enty,"co2cement_process") + OR ( sameas(enty,"co2cement_process") AND cm_CCS_cement eq 1 ) ) .. vm_emiIndBase(t,regi,enty,secInd37) =e= @@ -221,7 +221,7 @@ q37_chemicals_feedstocks_limit(t,regi) .. q37_demFeFeedstockChemIndst(t,regi,entyFe,emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. sum(se2fe(entySe,entyFe,te), - vm_demFENonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) + vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) ) =e= sum((fe2ppfEn(entyFe,ppfen_industry_dyn37(in)), @@ -242,7 +242,7 @@ q37_feedstocksLimit(t,regi,entySe,entyFe,emiMkt)$( AND entyFeCC37(entyFe) ) .. vm_demFeSector_afterTax(t,regi,entySe,entyFe,"indst",emiMkt) =g= - vm_demFENonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) + vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) ; *' Feedstocks have identical fossil/biomass/synfuel shares as industry FE @@ -252,10 +252,10 @@ q37_feedstocksShares(t,regi,entySe,entyFe,emiMkt)$( AND cm_emiscen ne 1 ) .. vm_demFeSector_afterTax(t,regi,entySe,entyFe,"indst",emiMkt) * sum(se2fe(entySe2,entyFe,te), - vm_demFENonEnergySector(t,regi,entySe2,entyFe,"indst",emiMkt) + vm_demFeNonEnergySector(t,regi,entySe2,entyFe,"indst",emiMkt) ) =e= - vm_demFENonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) + vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) * sum(se2fe2(entySe2,entyFe,te), vm_demFeSector_afterTax(t,regi,entySe2,entyFe,"indst",emiMkt) ) @@ -265,9 +265,9 @@ q37_feedstocksShares(t,regi,entySe,entyFe,emiMkt)$( *' Calculate mass of carbon contained in chemical feedstocks q37_FeedstocksCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - v37_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) =e= - vm_demFENonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) + vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) * p37_FeedstockCarbonContent(t,regi,entyFe) ; @@ -276,7 +276,7 @@ q37_plasticsCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. v37_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) =e= - v37_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * s37_plasticsShare ; @@ -303,14 +303,23 @@ q37_plasticWaste(ttot,regi,sefe(entySe,entyFe),emiMkt)$( )$( %cm_wastelag% ) ; +*' calculate carbon contained in incinerated plastics +*' this is used in emissions accounting +q37_incineratedPlastics(t,regi,sefe(entySe,entyFe),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. + v37_incineratedPlastics(t,regi,entySe,entyFe,emiMkt) + =e= + v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) + * pm_incinerationRate(t,regi) + ; + *' emissions from plastics incineration as a share of total plastic waste, *' discounted by captured amount q37_incinerationEmi(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) + v37_incinerationEmi(t,regi,entySe,entyFe,emiMkt) =e= - v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) - * pm_incinerationRate(t,regi) + v37_incineratedPlastics(t,regi,entySe,entyFe,emiMkt) * (1 - v37_regionalWasteIncinerationCCSshare(t,regi)) ; @@ -318,31 +327,19 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. vm_incinerationCCS(t,regi,entySe,entyFe,emiMkt) =e= - v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) - * pm_incinerationRate(t,regi) + v37_incineratedPlastics(t,regi,entySe,entyFe,emiMkt) * v37_regionalWasteIncinerationCCSshare(t,regi) ; -*' calculate carbon contained in non-incinerated plastics -*' this is used in emissions accounting to subtract the carbon that gets -*' sequestered in plastic products -q37_nonIncineratedPlastics(t,regi,sefe(entySe,entyFe),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) - =e= - v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) - * (1 - pm_incinerationRate(t,regi)) - ; - *' calculate flow of carbon contained in chemical feedstock with unknown fate *' it is assumed that this carbon is re-emitted in the same timestep if cm_feedstockEmiUnknownFate is enabled (=on) q37_feedstockEmiUnknownFate(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - vm_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) + v37_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) =e= $ifthen.cm_feedstockEmiUnknownFate not "%cm_feedstockEmiUnknownFate%" == "off" ( - v37_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * (1 - s37_plasticsShare) ) $else.cm_feedstockEmiUnknownFate @@ -350,6 +347,53 @@ $else.cm_feedstockEmiUnknownFate $endIf.cm_feedstockEmiUnknownFate ; +*' sum feedstocks emission balance up in order not to clutter the core +q37_feedstocksEmiBalance(t,regi,emi,emiMkt) .. + vm_feedstocksEmiBalance(t,regi,emi,emiMkt) + =e= + !! non energy emi from chem sector (process emissions from feedstocks): + + sum((entyFE2sector2emiMkt_NonEn(entyFe,sector,emiMkt), + se2fe(entySe,entyFe,te)), + vm_demFeNonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) + * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + ) + !! substract carbon from non-fossil origin contained in plastics that don't + !! get incinerated ("plastic removals") + - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + )$( sameas(emi,"co2") ) + !! substract carbon from non-fossil origin contained in plastics that don't + !! get incinerated ("plastic removals") + + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), + v37_incineratedPlastics(t,regi,entySe,entyFe,emiMkt) + )$( sameas(emi,"co2") ) + !! add fossil emissions from chemical feedstock with unknown fate + + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te)), + v37_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) + )$( sameas(emi,"co2") ) +; + +*' sum feedstocks incineration emissions up in order not to clutter the core; +*' separate from the other feedstock emission balance, as it is accounted as energy-related +q37_wasteIncinerationEmiBalance(t,regi,emiTe(enty),emiMkt) .. + vm_wasteIncinerationEmiBalance(t,regi,enty,emiMkt) + =e= + !! add fossil emissions from plastics incineration without CCS. + + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$( entySeFos(entySe) ), + v37_incinerationEmi(t,regi,entySe,entyFe,emiMkt) + )$( sameas(enty,"co2") ) + !! substract carbon from non-fossil origin contained in plastics that + !! get incinerated with CCS + - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), + vm_incinerationCCS(t,regi,entySe,entyFe,emiMkt) + )$( sameas(enty,"co2") ) +; + *** --------------------------------------------------------------------------- *** 2. Process-Based *** --------------------------------------------------------------------------- From 19d4b29c0f3914ad6f6d795566ca925525f612f7 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Mon, 13 Jan 2025 12:01:59 +0100 Subject: [PATCH 4/4] restructure chemical feedstock equations with respect to process emissions, non-incinerated plastics emissions and non-plastic waste emissions --- core/equations.gms | 4 +- main.gms | 8 +- .../37_industry/subsectors/declarations.gms | 16 +++- modules/37_industry/subsectors/equations.gms | 85 ++++++++++--------- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index fe8c65989..706a3216b 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -630,9 +630,9 @@ q_emiAllMkt(t,regi,emi,emiMkt) .. + vm_emiCdr(t,regi,emi)$( sameas(emi,"co2") AND sameas(emiMkt,"ETS") ) !! Exogenous emissions + pm_emiExog(t,regi,emi)$( sameas(emiMkt,"other") ) - !! emission balance of carbon feedstocks contained in chemicals. + !! emissions of carbon feedstocks contained in chemicals that are not energy-related, !! can be positive (fossil, emitted) or negative (non-fossil, stored in products) - + vm_feedstocksEmiBalance(t,regi,emi,emiMkt) + + vm_emiFeedstockNoEnergy(t,regi,emi,emiMkt) ; diff --git a/main.gms b/main.gms index 9fe3a07e1..b0d329ca9 100755 --- a/main.gms +++ b/main.gms @@ -1186,6 +1186,10 @@ parameter *' * so for small regions learning is very slow. This is a very pessimistic interpretation of 'no learning spillovers', *' * as every region has to climb up the global learning curve all by itself. *' * In combination with endogenous carbon pricing (e.g., in NDC), the deactivated Learningspillover will lead to higher overall carbon prices. Can be solved by setting carbonprice to exogenous (config). +parameter + cm_nonPlasticFeedstockEmiShare "Share of non-plastic carbon that gets emitted, rest is stored permanently, [share]" +; + cm_nonPlasticFeedstockEmiShare = 1; !! def 1 = all carbon in non-plastics gets emitted *' *' *' @@ -1745,10 +1749,6 @@ $setglobal cm_wasteIncinerationCCSshare off !! def = off *** cm_wastelag, does waste from plastics lag ten years behind plastics *** production, or not? $setglobal cm_wastelag NO !! def = NO !! regexp = YES|NO -*** cm_feedstockEmiUnknownFate, account for chemical feedstock emissions with unknown fate -*** off: assume that these emissions are trapped and do not account for total anthropogenic emissions -*** on: account for chemical feedstock emissions with unknown fate as re-emitted to the atmosphere -$setglobal cm_feedstockEmiUnknownFate off !! def = off *** cm_feShareLimits <- "off" # def <- "off", limit the electricity final energy share to be in line with the industry maximum electrification levels (60% by 2050 in the electric scenario), 10% lower (=50% in 2050) in an increased efficiency World, or 20% lower (40% in 2050) in an incumbents future (incumbents). The incumbents scenario also limits a minimal coverage of buildings heat provided by gas and liquids (25% by 2050). $setglobal cm_feShareLimits off !! def = off *** VRE potential switches diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 590f926ec..1425093a7 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -89,7 +89,6 @@ Positive Variables v37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" !! feedstocks - v37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in feedstocks with unknown fate (not plastics)(assumed to go back into the atmosphere) [GtC]" v37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" vm_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "CCS from incineration of plastic waste [GtC]" v37_incineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics that are not incinerated [GtC]" @@ -97,8 +96,8 @@ Positive Variables v37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" v37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastic waste [GtC]" v37_regionalWasteIncinerationCCSshare(tall,all_regi) "Share of waste incineration that is captured [%]" - vm_feedstocksEmiBalance(tall,all_regi,all_enty,all_emiMkt) "Sum of chemical feedstock related emissions (positive and negative) that are accounted as non-energy, i.e. non-waste-incineration [GtC]" vm_wasteIncinerationEmiBalance(tall,all_regi,all_enty,all_emiMkt) "Sum of plastics waste incineration related emissions (positive and negative) [GtC]" + v37_emiChemicalsProcess(ttot,all_regi,all_enty,all_emiMkt) "Chemical process emissions, so far only CO2 emissions [GtC]" !! process-based implementation vm_outflowPrc(tall,all_regi,all_te,opmoPrc) "Production volume of processes in process-based model [Gt/a]" @@ -108,6 +107,13 @@ Positive Variables vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" ; +Variables +!! feedstocks +vm_emiFeedstockNoEnergy(ttot,all_regi,all_enty,all_emiMkt) "Emissions from feedstocks that are not accounted as energy-related emissions, so far only CO2 emissions [GtC]" +v37_emiNonFosNonIncineratedPlastics(ttot,all_regi,all_enty,all_emiMkt) "Negative CO2 emissions from non-fossil carbon in non-incinerated plastics [GtC]" +v37_emiNonPlasticWaste(ttot,all_regi,all_enty,all_emiMkt) "Emissions from non-plastic waste, so far only CO2 emissions [GtC]" +; + Equations $ifthen.no_calibration "%CES_parameters%" == "load" !! CES_parameters q37_energy_limits(ttot,all_regi,all_in) "thermodynamic/technical limit of energy use" @@ -129,11 +135,13 @@ $endif.no_calibration q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" q37_incinerationCCS(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon captured from plastics that are incinerated [GtC]" q37_incineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" - q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" q37_feedstocksShares(ttot,all_regi,all_enty,all_enty,all_emiMkt) "identical fossil/biomass/synfuel shares for FE and feedstocks" - q37_feedstocksEmiBalance(tall,all_regi,all_enty,all_emiMkt) "sum feedstocks emission balance up in order not to clutter the core" q37_wasteIncinerationEmiBalance(tall,all_regi,all_enty,all_emiMkt) "sum feedstocks incineration emissions up in order not to clutter the core" + q37_emiChemicalsProcess(ttot,all_regi,all_enty,all_emiMkt) "calculate chemicals process emissions" + q37_emiNonFosNonIncineratedPlastics(ttot,all_regi,all_enty,all_emiMkt) "calculate negative emissions from non-fossil non-incinerated plastics" + q37_emiNonPlasticWaste(ttot,all_regi,all_enty,all_emiMkt) "calculate emissions from non-plastic waste" + q37_emiFeedstockNoEnergy(ttot,all_regi,all_enty,all_emiMkt) "calculate total emissions from feedstocks that are not accounted as energy-related emissions" !! process-based implementation q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index b4df7bcfb..b57cb2491 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -261,6 +261,7 @@ q37_feedstocksShares(t,regi,entySe,entyFe,emiMkt)$( *' Calculate mass of carbon contained in chemical feedstocks +*' (not including carbon that gets lost as chemical process emissions) q37_FeedstocksCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) @@ -283,6 +284,7 @@ q37_plasticsCarbon(t,regi,sefe(entySe,entyFe),emiMkt)$( *' 10-year steps allocate averge of 2055 and 2060 to 2070, unless `cm_wastelag` *' is `NO`, in which case waste is incurred in the same period plastics are *' produced +*** TODO: is there a specific reason that this equation only starts in 2015? (at least if wastelag is off, it can start in 2005, right?) q37_plasticWaste(ttot,regi,sefe(entySe,entyFe),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) AND ttot.val ge max(2015, cm_startyear) ) .. @@ -329,53 +331,60 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( * v37_regionalWasteIncinerationCCSshare(t,regi) ; -*' calculate flow of carbon contained in chemical feedstock with unknown fate -*' it is assumed that this carbon is re-emitted in the same timestep if cm_feedstockEmiUnknownFate is enabled (=on) -q37_feedstockEmiUnknownFate(t,regi,sefe(entySe,entyFe),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - v37_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) + +*' calculate chemical process emissions as carbon that does not end up in product but is emitted during conversion processes +q37_emiChemicalsProcess(t,regi,emi,emiMkt).. + v37_emiChemicalsProcess(t,regi,emi,emiMkt) =e= -$ifthen.cm_feedstockEmiUnknownFate not "%cm_feedstockEmiUnknownFate%" == "off" - ( - v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) - * (1 - s37_plasticsShare) + sum((entyFE2sector2emiMkt_NonEn(entyFe,sector,emiMkt), + se2fe(entySe,entyFe,te)), + vm_demFeNonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) + * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) ) -$else.cm_feedstockEmiUnknownFate - 0 -$endIf.cm_feedstockEmiUnknownFate ; -*' sum feedstocks emission balance up in order not to clutter the core -q37_feedstocksEmiBalance(t,regi,emi,emiMkt) .. - vm_feedstocksEmiBalance(t,regi,emi,emiMkt) +*' calculate negative emissions from non-fossil carbon in plastics +*' that do not get incinerated ("plastic removals") +q37_emiNonFosNonIncineratedPlastics(t,regi,emi,emiMkt).. + v37_emiNonFosNonIncineratedPlastics(t,regi,emi,emiMkt) =e= - !! non energy emi from chem sector (process emissions from feedstocks): - + sum((entyFE2sector2emiMkt_NonEn(entyFe,sector,emiMkt), - se2fe(entySe,entyFe,te)), - vm_demFeNonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) - * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) - ) - !! substract carbon from non-fossil origin contained in plastics that don't - !! get incinerated ("plastic removals") - - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), - v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) - )$( sameas(emi,"co2") ) - !! substract carbon from non-fossil origin contained in plastics that don't - !! get incinerated ("plastic removals") - + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), +*' substract all non-fossil plastics carbon + - v37_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) +*' add non-fossil incinerated plastics carbon + + v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) + * pm_incinerationRate(t,regi) + )$( sameas(emi,"co2") ) +; + +*' calculate emissions from non-plastic waste +q37_emiNonPlasticWaste(t,regi,emi,emiMkt).. + v37_emiNonPlasticWaste(t,regi,emi,emiMkt) + =e= + ( sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$(entySeFos(entySe)), +*' fossil carbon in non-plastic waste that gets emitted to the atmosphere + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * (1 - s37_plasticsShare) * cm_nonPlasticFeedstockEmiShare) + - sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), - v37_incineratedPlastics(t,regi,entySe,entyFe,emiMkt) - )$( sameas(emi,"co2") ) - !! add fossil emissions from chemical feedstock with unknown fate - + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - se2fe(entySe,entyFe,te)), - v37_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) - )$( sameas(emi,"co2") ) +*' non-fossil carbon in non-plastic waste that does not get emitted to the atmosphere (i.e. is stored permanently) + v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt) * (1 - s37_plasticsShare) * (1 - cm_nonPlasticFeedstockEmiShare) ) + )$( sameas(emi,"co2") ) +; + +*' sum all emissions from feedstocks that are not accounted as energy-related emissions +*' (i.e. no combustion or combustion without energy recovery) +*** TODO: Waste CO2 Emissions outside the energy sector would need to be accounted to ESR instead of ETS? +q37_emiFeedstockNoEnergy(t,regi,emi,emiMkt).. + vm_emiFeedstockNoEnergy(t,regi,emi,emiMkt) + =e= + v37_emiChemicalsProcess(t,regi,emi,emiMkt) + + v37_emiNonFosNonIncineratedPlastics(t,regi,emi,emiMkt) + + v37_emiNonPlasticWaste(t,regi,emi,emiMkt) ; -*' sum feedstocks incineration emissions up in order not to clutter the core; -*' separate from the other feedstock emission balance, as it is accounted as energy-related +*' sum feedstocks incineration emissions up, accouned as energy-related emissions q37_wasteIncinerationEmiBalance(t,regi,emiTe(enty),emiMkt) .. vm_wasteIncinerationEmiBalance(t,regi,enty,emiMkt) =e=