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

Subtract emissions from natural gas for DAC from emiTeMkt #1589

Draft
wants to merge 4 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,7 @@ vm_co2CCS(ttot,all_regi,all_enty,all_enty,all_te,rlf) "all different ccs.

vm_co2capture(ttot,all_regi,all_enty,all_enty,all_te,rlf) "all captured CO2. [GtC/a]"
v_co2capturevalve(ttot,all_regi) "CO2 emitted right after capture [GtC/a] (in q_balCCUvsCCS to account for different lifetimes of capture and CCU/CCS te and capacities)"
v_share_CCS_CCO2(ttot, all_regi) "Share of captured CO2 that is stored"

v_prodUe (ttot,all_regi,all_enty,all_enty,all_te) "Useful energy production [TWa]"

Expand Down Expand Up @@ -501,6 +502,7 @@ q_emiAllMkt(ttot,all_regi,all_enty,all_emiMkt) "total regional emissions f
q_transCCS(ttot,all_regi,all_enty,all_enty,all_te,all_enty,all_enty,all_te,rlf) "transformation equation for ccs"
q_limitCapCCS(ttot,all_regi,all_enty,all_enty,all_te,rlf) "capacity constraint for ccs"
q_limitCCS(all_regi,all_enty,all_enty,all_te,rlf) "ccs constraint for sequestration alternatives"
q_share_CCS_CCO2(ttot, all_regi) "share of captured CO2 that is stored"

q_emiCdrAll(ttot,all_regi) "summing over all CDR emissions"

Expand Down
33 changes: 21 additions & 12 deletions core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -608,6 +608,9 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt) ..
+ sum(teCCU2rlf(te2,rlf),
vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") )
)$(sameas(emiMkt,"ETS"))
!! CCU from captured non-atmospheric CO2 from CDR activities (e.g., natural gas for DAC heat)
- vm_co2capture_cdr_energy(t, regi)
$(sameas(enty, "co2") AND sameas(emiMkt, "ETS"))
;

***--------------------------------------------------
Expand Down Expand Up @@ -719,26 +722,32 @@ q_emiMac(t,regi,emiMac) ..
)
;

***--------------------------------------------------
*' Share of captured CO2 that is stored
***--------------------------------------------------
q_share_CCS_CCO2(t, regi)..
v_share_CCS_CCO2(t, regi) * sum(teCCS2rlf(te, rlf), vm_co2capture(t, regi, "cco2", "ico2", "ccsinje", rlf))
=e=
sum(teCCS2rlf(te, rlf), vm_co2CCS(t, regi, "cco2", "ico2", te, rlf))
;


***--------------------------------------------------
*' All CDR emissions summed up
***--------------------------------------------------
q_emiCdrAll(t,regi)..
vm_emiCdrAll(t,regi)
=e= !! BECC + DACC
(sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail(t,regi,enty,enty2,te,enty3))
+ sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,"cco2","ico2","ccsinje",rlf)))
!! scaled by the fraction that gets stored geologically
* (sum(teCCS2rlf(te,rlf),
vm_co2CCS(t,regi,"cco2","ico2",te,rlf)) /
(sum(teCCS2rlf(te,rlf),
vm_co2capture(t,regi,"cco2","ico2","ccsinje",rlf))+sm_eps))
=e=
!! BECC + DACC (scaled by the fraction that gets stored geologically)
(sum(emiBECCS2te(enty,enty2,te,enty3), vm_emiTeDetail(t,regi,enty,enty2,te,enty3))
- vm_emiCdrTeDetail(t, regi, "dac")
) * v_share_CCS_CCO2(t, regi)
!! net negative emissions from co2luc
- p_macBaseMagpieNegCo2(t,regi)
!! negative emissions from the cdr module that are not stored geologically
- (vm_emiCdr(t,regi,"co2") + sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,"cco2","ico2","ccsinje",rlf)))
!! negative emissions from the CDR module that are not stored geologically
- (vm_emiCdr(t, regi, "co2") + vm_emiCdrTeDetail(t, regi, "dac"))
;


***------------------------------------------------------
*' Total regional emissions are the sum of emissions from technologies, MAC-curves, CDR-technologies and emissions that are exogenously given for REMIND.
***------------------------------------------------------
Expand Down Expand Up @@ -823,7 +832,7 @@ q_balcapture(t,regi,ccs2te(ccsCo2(enty),enty2,te)) ..
)
*** Carbon captured from CDR technologies in CDR module
+ sum(teCCS2rlf(te,rlf),
vm_ccs_cdr(t,regi,enty,enty2,te,rlf)
vm_co2capture_cdr(t,regi,enty,enty2,te,rlf)
)
*** Carbon captured from industry
+ sum(emiInd37,
Expand Down
2 changes: 1 addition & 1 deletion core/postsolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -798,7 +798,7 @@ o_capture_energy_other(ttot,regi,"co2")$(ttot.val ge 2005) =
***Carbon Management|Carbon Capture|Process|Direct Air Capture (Mt CO2/yr)
o_capture_cdr(ttot,regi,"co2")$(ttot.val ge 2005) =
sum(teCCS2rlf("ccsinje",rlf),
vm_ccs_cdr.l(ttot,regi,"cco2","ico2","ccsinje",rlf)
vm_co2capture_cdr.l(ttot,regi,"cco2","ico2","ccsinje",rlf)
)*o_emi_conv("co2");

***Carbon Management|Carbon Capture|Process|Industrial Processes (Mt CO2/yr)
Expand Down
6 changes: 3 additions & 3 deletions modules/33_CDR/portfolio/bounds.gms
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ if(card(te_used33) eq 0,
vm_emiCdr.fx(t,regi,"co2") = 0;
);

*** Fix CCS from CDR if there're no technologies that require CCS
*** Fix carbon capture from CDR if there're no technologies that require carbon capture
if(card(te_ccs33) eq 0,
vm_ccs_cdr.fx(t,regi,enty,enty2,te,rlf)$ccs2te(enty,enty2,te) = 0;
vm_co2capture_cdr.fx(t,regi,enty,enty2,te,rlf)$ccs2te(enty,enty2,te) = 0;
);

*** Fix negative emissions and FE demand to zero for all the technologies that are not used
Expand All @@ -31,7 +31,7 @@ vm_emiCdr.fx(t,regi,"co2")$(t.val lt 2025) = 0;
vm_omcosts_cdr.fx(t,regi)$((t.val lt 2025)) = 0;
vm_cap.fx(t,regi,"weathering",rlf)$(t.val lt 2025) = 0;
*** vm_cap for dac is fixed for t<2025 in core/bounds.gms (tech_stat eq 4)
vm_ccs_cdr.fx(t,regi,enty,enty2,te,rlf)$(ccs2te(enty,enty2,te) AND t.val lt 2025) = 0;
vm_co2capture_cdr.fx(t,regi,enty,enty2,te,rlf)$(ccs2te(enty,enty2,te) AND t.val lt 2025) = 0;


*** Set minimum DAC capacities (if available) to help the solver find the technology
Expand Down
4 changes: 3 additions & 1 deletion modules/33_CDR/portfolio/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ positive variables
v33_EW_onfield(ttot,all_regi,rlf,rlf) "amount of ground rock spread on fields in each timestep [Gt]"
v33_EW_onfield_tot(ttot,all_regi,rlf,rlf) "total amount of ground rock on fields, for each climate zone and transportation distance [Gt]"
v33_FEdemand(ttot,all_regi,all_enty,all_enty,all_te) "FE demand of each technology [TWa]"
vm_ccs_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "total emissions captured through technologies in the CDR module that enter the CCUS chain + captured emissions from associated FE demand [GtC / a]"
vm_co2capture_cdr_energy(ttot,all_regi) "carbon captured from FE demand [GtC / a]"
vm_co2capture_cdr(ttot,all_regi,all_enty,all_enty,all_te,rlf) "total emissions captured through technologies in the CDR module that enter the CCUS chain + captured emissions from associated FE demand [GtC / a]"
;

negative variables
Expand All @@ -34,6 +35,7 @@ equations
q33_demFeCDR(ttot,all_regi,all_enty) "CDR demand balance for final energy"
q33_emiCDR(ttot,all_regi) "aggregates the (negative) emissions captured by the CDR technologies"
q33_H2bio_lim(ttot,all_regi) "limits H2 from bioenergy to FE - H2 demand from CDR, i.e. no H2 from bioenergy for DAC"
q33_captured_energy_emi(ttot,all_regi) "calculates the captured carbon from FE emissions"
q33_DAC_emi(ttot,all_regi) "calculates amount of carbon captured by DAC"
q33_DAC_FEdemand(ttot,all_regi,all_enty) "calculates final energy demand from DAC"
q33_DAC_ccsbal(ttot,all_regi,all_enty,all_enty,all_te) "calculates CCS emissions from CDR technologies"
Expand Down
14 changes: 12 additions & 2 deletions modules/33_CDR/portfolio/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ q33_H2bio_lim(t,regi)..
vm_prodFe(t,regi,"seh2","feh2s","tdh2s") - sum(fe2cdr("feh2s",entyFe2,te_used33), v33_FEdemand(t,regi,"feh2s",entyFe2,te_used33))
;

***---------------------------------------------------------------------------
*' The amount of energy-related carbon from CDR activities,
*' the gas for DAC is assumed to be captured.
***---------------------------------------------------------------------------
q33_captured_energy_emi(t, regi)..
vm_co2capture_CDR_energy(t, regi)
=e=
(1 / pm_eta_conv(t,regi,"gash2c")) * fm_dataemiglob("pegas","seh2","gash2c","cco2") * sum(fe2cdr("fegas",entyFe2,te_used33), v33_FEdemand(t,regi,"fegas", entyFe2,te_used33))
;

***---------------------------------------------------------------------------
*' #### DAC equations

Expand All @@ -64,10 +74,10 @@ q33_DAC_emi(t,regi)..
*' assuming 90% capture rate.
***---------------------------------------------------------------------------
q33_DAC_ccsbal(t,regi,ccs2te(ccsCo2(enty),enty2,te))..
sum(teCCS2rlf(te,rlf), vm_ccs_cdr(t,regi,enty,enty2,te,rlf))
sum(teCCS2rlf(te,rlf), vm_co2capture_cdr(t,regi,enty,enty2,te,rlf))
=e=
- vm_emiCdrTeDetail(t,regi,"dac")
+ (1 / pm_eta_conv(t,regi,"gash2c")) * fm_dataemiglob("pegas","seh2","gash2c","cco2") * sum(fe2cdr("fegas",entyFe2,te_used33), v33_FEdemand(t,regi,"fegas", entyFe2,te_used33))
+ vm_co2capture_cdr_energy(t, regi)
;

***---------------------------------------------------------------------------
Expand Down