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

Report ocean CDR #629

Merged
merged 9 commits into from
Aug 21, 2024
Merged

Report ocean CDR #629

merged 9 commits into from
Aug 21, 2024

Conversation

katarkow
Copy link
Contributor

@katarkow katarkow commented Jul 17, 2024

Ocean alkalinity enhancement (OAE) takes up CO2 into the ocean by spreading hydrated lime (Ca(OH)2) into the ocean. The amount of CO2 taken by the ocean can be found in vm_emiCdrTeDetail. Producing Ca(OH)2 from limestone (CaCO3) (a process called calcination) results in CO2, which is captured with a capture rate of 90%. The process can use gas (traditional calciner) or electricity/hydrogen (electric or novel calciner). The emissions from burning gas are also captured in the CDR module (similarly to gas used for DAC).

Due to <100% capture rate, there are unavoidable emissions (from gas and calcination) which get deduced from the CDR amount already in the CDR module.

vm_emiCdr(t,regi,"co2")
=e=
sum(te_used33, vm_emiCdrTeDetail(t,regi,te_used33))
+ (1 - s33_capture_rate) * (
    sum(te_ccs33, v33_co2emi_non_atm_gas(t, regi, te_ccs33))
    + sum(te_oae33, v33_co2emi_non_atm_calcination(t, regi, te_oae33))
)

The captured emissions (see eq below) end up either stored or released due to CCU.

sum(teCCS2rlf(te, rlf), vm_co2capture_cdr(t, regi, enty, enty2, te, rlf))
=e=
- vm_emiCdrTeDetail(t, regi, "dac")
+ s33_capture_rate * (
    sum(te_ccs33, v33_co2emi_non_atm_gas(t, regi, te_ccs33))
    + sum(te_oae33, v33_co2emi_non_atm_calcination(t, regi, te_oae33))
)

And that's where we were getting summation errors from (already for DAC only) since I split negative emissions from energy-related emissions. Here is my attempt to fix it. I know it's not perfect, but these emissions require refactoring anyway. For captured carbon from gas the CCU part of that is handled here and lands in Supply. I then add the CDR-related carbon on the supply side as well - gas to Emi|CO2|Energy|Supply|+|Gases w/ couple prod and calcination emissions which are basically fossil emissions to Emi|CO2|Energy|Supply|+|Solids w/ couple prod. This fixes the summation errors.

This PR introduces the following variables:

  • Final energy for OAE:
    FE|CDR|++|OAE, electric calciner
    FE|CDR|++|OAE, traditional calciner
    FE|CDR|OAE, electric calciner|+|Diesel
    FE|CDR|OAE, electric calciner|+|Electricity
    FE|CDR|OAE, electric calciner|+|Hydrogen
    FE|CDR|OAE, traditional calciner|+|Diesel
    FE|CDR|OAE, traditional calciner|+|Electricity
    FE|CDR|OAE, traditional calciner|+|Gases
  • Emissions
    Emi|CO2|CDR|OAE - like for DACCS, these are the emissions that are the gross emissions (uptake) - unavoidable
    Emi|CO2|Cumulated|CDR|OAE
    The following are added to check if all OAE-associated CO2 adds up (they are helpful for RESCUE):
    Emi|CO2|CDR|net OAE
    Emi|CO2|CDR|net OAE|+|Ocean Uptake
    Emi|CO2|CDR|net OAE|+|Released emissions
    Emi|CO2|CDR|net OAE|+|Unavoidable emissions
    Emi|CO2|CDR|net OAE|Ocean Uptake|+|electric calciner
    Emi|CO2|CDR|net OAE|Ocean Uptake|+|traditional calciner
    Emi|CO2|CDR|net OAE|Calcination emissions (this is a percentage of released + unavoidable and released + unavoidable = calcination + gas captured from energy for OAE)
  • Carbon Management
    Carbon Management|Carbon Capture|+|OAE calcination
    Carbon Management|Storage|+|OAE calcination
    Carbon Management|Carbon Capture|+|CDR energy - all the captured emissions from using gas for CDR, either DAC or OAE.

R/reportEmi.R Outdated Show resolved Hide resolved
R/reportEmi.R Outdated Show resolved Hide resolved
+ vm_emiCdrTeDetail[, , "dac"] * p_share_CCS
+ (vm_emiCdrTeDetail[, , "oae_ng"] + vm_emiCdrTeDetail[, , "oae_el"])
* (1 - s33_OAE_chem_decomposition * (1 - p_share_CCS))
) * GtC_2_MtCO2,
"Emi|CO2|+|non-BECCS CDR (Mt CO2/yr)")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

recalculate to account only for "net CDR". Use emiCDR?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I understand correctly, this variable should be negative emissions, so gross(ish) = gross - released CO2 that is unavoidable due to <100% capture rate. So it should be vm_emiCdr - vm_emiCdrTeDetail[, , "dac"] * (1 - p_share_CCS)

E.g.: Emi|GHG = Emi|CO2|+|Energy (952.393059421011) + Emi|CO2|+|Industrial Processes (18.70015799332) + Emi|CO2|+|Land-Use Change (38.7566666666702) + Emi|CO2|+|non-BECCS CDR (0) + Emi|GHG|+|CH4 (352.029277806816) + Emi|GHG|+|F-Gases (27.202629) + Emi|GHG|+|N2O (76.9251374089826)

R/reportEmi.R Outdated
# OAE process emissions
setNames(out[, , "Carbon Management|Carbon Capture|+|OAE calcination (Mt CO2/yr)"]
- out[, , "Carbon Management|Storage|+|OAE calcination (Mt CO2/yr)"],
"Emi|CO2|CDR|OAE|+|Calcination emissions (Mt CO2/yr)"),
Copy link
Contributor

@strefler strefler Jul 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add emissions that are not captured to the calcination emissions. Do we want subcategories of calcination emissions that are captured and re-emitted from burning synfuels, and emissions that are never captured?

Copy link
Contributor Author

@katarkow katarkow Aug 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created a new variable for this: Emi|CO2|CDR|net OAE|+|Unavoidable emissions (Mt CO2/yr)

R/reportEmi.R Outdated Show resolved Hide resolved
R/reportEmi.R Outdated Show resolved Hide resolved
@katarkow katarkow changed the title Ng el oae Report ocean CDR Aug 8, 2024
@katarkow katarkow marked this pull request as ready for review August 21, 2024 11:10
@katarkow katarkow merged commit 27632ce into pik-piam:master Aug 21, 2024
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants