Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

restructure chemical feedstock emissions balancing #1829

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
15 changes: 5 additions & 10 deletions core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -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"

***----------------------------------------------------------------------------------------
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -417,19 +417,14 @@ 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"

*** ES layer variables
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"
Expand Down
33 changes: 8 additions & 25 deletions core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -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)
)
;
Expand Down Expand Up @@ -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))
)
)
)
Expand Down Expand Up @@ -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") )
Expand Down Expand Up @@ -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)
;


Expand Down Expand Up @@ -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)
)
Expand Down
8 changes: 4 additions & 4 deletions main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -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
*'
*'
*'
Expand Down Expand Up @@ -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
Expand Down
63 changes: 33 additions & 30 deletions modules/37_industry/fixed_shares/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
26 changes: 22 additions & 4 deletions modules/37_industry/subsectors/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -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]"
Expand All @@ -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"
Expand All @@ -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"
Expand Down
Loading
Loading