diff --git a/core/declarations.gms b/core/declarations.gms index a9b53180f..c93c45e41 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -44,10 +44,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" ***---------------------------------------------------------------------------------------- @@ -382,7 +382,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" @@ -417,11 +417,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" @@ -429,7 +424,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" $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" diff --git a/core/equations.gms b/core/equations.gms index 216f1b455..706a3216b 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) - ) + !! 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_emiFeedstockNoEnergy(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/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/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..1425093a7 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -87,10 +87,17 @@ 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_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_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]" @@ -100,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" @@ -120,10 +134,14 @@ $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_incineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [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_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 44c861b56..b57cb2491 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) .. *' accounting and calculating plastics production q37_demFeFeedstockChemIndst(t,regi,entyFe,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)), @@ -240,7 +240,7 @@ q37_feedstocksLimit(t,regi,entySe,entyFe,emiMkt)$( AND entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. 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 @@ -250,10 +250,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) ) @@ -261,11 +261,12 @@ 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) + 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) ; @@ -274,7 +275,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 ; @@ -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) ) .. @@ -301,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)) ; @@ -316,36 +327,78 @@ 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) +*' 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 +; + +*' 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= + sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), +*' 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) ), +*' 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, accouned as energy-related emissions +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") ) ; *** ---------------------------------------------------------------------------