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

H2 effects on CH4 lifetime #758

Open
wants to merge 7 commits into
base: dev-h2
Choose a base branch
from
Open

H2 effects on CH4 lifetime #758

wants to merge 7 commits into from

Conversation

kdorheim
Copy link
Contributor

@kdorheim kdorheim commented Nov 26, 2024

NOTE: this PR is targeting the dev-h2 branch

This branch implements the H2 effects on CH4, it will close #749. We have added equation (5) into Hector to account for how $H_2$ interacts with OH, decreasing the amount of OH that can interact with $[CH_4]$. We derived the value for the $c_{H_2}$ from Bertagni et al. 2022.

Screenshot 2024-11-26 at 5 48 34 PM

Since we don't have $H_2$ emissions for the historical or future periods, we shouldn't see any changes in Hector results (Leeyabot or the old new tests). In order to get a feel for how this development affects Hector results I've included some results from emission impulse runs.



This first figure shows results from three Hector runs, a constant emission-driven run, and then two impulse runs varying in magnitude. It is intended to show how this model development cascades throughout the model. The pulse of $H_2$ emissions causes $\tau_{OH}$ (methane's lifetime with respect to OH) to change, which causes $[CH_4]$ to change, which is what we were expecting. Since in Hector the trop. $O_3$ burden and strat. $H_2O$ vapor radiative forcing computations are proportional to $[CH_4]$ the $H_2$ emissions pulse affects these variables as well.

Fig 1

This second figure demonstrates the sensitivity of impulse response to our new parameter $c_{H_2}$. As we would hope, increasing and decreasing this parameter changes the system response.

unnamed-chunk-15-1

In this third figure, we compare the RF response from unit emission of $CO_2$ and $H_2$ 100 years after the emissions impulse, which can be used to calculate the GWP100. Hector's GWP100 for H2 ~ 5.17 is consistent with the Sand et al. results included in Supplementary Table 6. Sand et al. found the GWP100 of hydrogen due to methane ranges from 4.9 to 5.7 with a model mean of 5.1, which is not too far off what we are getting from Hector at the moment!

unnamed-chunk-20-1

References

Bertagni, M. B., Pacala, S. W., Paulot, F., & Porporato, A. (2022). Risk of the hydrogen economy for atmospheric methane. Nature Communications, 13(1), 7706.

Sand, M., Skeie, R. B., Sandstad, M., Krishnan, S., Myhre, G., Bryant, H., Derwent, R., Hauglustaine, D., Paulot, F., Prather, M., & Stevenson, D. (2023). A multi-model assessment of the Global Warming Potential of hydrogen. Communications Earth & Environment, 4(1), 1–12.

Materials Used

PR-758.zip

@kdorheim kdorheim linked an issue Nov 26, 2024 that may be closed by this pull request
Copy link

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (d931a00).

@kdorheim
Copy link
Contributor Author

Some specific questions for @ssmithClimate & @bpbond

  • COEFF_H2() - do we like this function name for the H2 coefficient to be added to the OH lifetime equation? Do we think it is worth having it exposed as an R function? Or should it be something users would need to change in the ini file? Should we expose the other coefficient R bindings as well?
  • Right now in the oh_component.cpp all of the coefficients in what corresponds to equations (1-5) are undefined unitvals, is that okay? Or do we want to define them as something?

DESCRIPTION Show resolved Hide resolved
src/ch4_component.cpp Outdated Show resolved Hide resolved
src/oh_component.cpp Outdated Show resolved Hide resolved
@kdorheim kdorheim marked this pull request as ready for review November 26, 2024 23:42
Copy link

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (d931a00).

Copy link

github-actions bot commented Dec 2, 2024

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (d931a00).

@bpbond
Copy link
Member

bpbond commented Dec 3, 2024

  • COEFF_H2() - do we like this function name for the H2 coefficient to be added to the OH lifetime equation? Do we think it is worth having it exposed as an R function? Or should it be something users would need to change in the ini file? Should we expose the other coefficient R bindings as well?

Unless we reasonably expect that users will want to run sensitivity tests or otherwise manipulate these parameters, I'd vote to start with NOT exposing them via R or the INI file.

Name: COEFF_H2 is kind of generic; can we be more specific with this name?

  • Right now in the oh_component.cpp all of the coefficients in what corresponds to equations (1-5) are undefined unitvals, is that okay? Or do we want to define them as something?

When you say "undefined", you mean they have no units? That's OK, but if you know the associated units, we might as well include them for clarity.

Copy link
Member

@bpbond bpbond left a comment

Choose a reason for hiding this comment

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

Overall looks good! THANK YOU @kdorheim

DESCRIPTION Show resolved Hide resolved
inst/include/oh_component.hpp Outdated Show resolved Hide resolved
@@ -138,6 +138,7 @@ CNOX=0.0042 ; coefficent for NOX
CCO=-0.000105 ; coefficent for CO
CNMVOC=-0.000315 ; coefficent for NMVOC (non methane VOC)
CCH4=-0.32 ; coefficent for CH4
CH2=-0.00044625 ; coefficent for H2
Copy link
Member

Choose a reason for hiding this comment

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

Same spelling note; also, is there a reference/source for this value? If so please note it.

Copy link
Contributor

Choose a reason for hiding this comment

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

Was there some derivation needed for this, or was this coefficient in the right format from the original source? (And how similar were the coefficients for other emissions to the ones we are using now?)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Okay there was a derivation that was needed for this parameter, which will be described in detail in the manuscript associated with this work although that is a TBD, so I have included a TODO-H2 tag which is linked to the H2 project as a reminder to address this issue before merging into main or anything.

@ssmithClimate Could you elaborate on this a bit more? (And how similar were the coefficients for other emissions to the ones we are using now?) I am not sure if I understand what you are asking here. It is also unclear where the original coefficients came from @ssmithClimate do you know the source of those?

Copy link
Contributor

Choose a reason for hiding this comment

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

Sorry for the delay. The coefficients in hector now ultimately derive from this paper:
Wigley, T.M.L., Steven J. Smith, and M.J. Prather (2002) Radiative Forcing due to Reactive Gas Emissions. Journal of Climate 15(18), pp. 2690–2696

Although the hector paper quotes the source as :
Tanaka, K., Kriegler, E., Bruckner, T., Hooss, C., Knorr, W., and Raddatz, T.: Aggregated Carbon Cycle, Atmospheric Chemistry, and Climate Model (ACC2) – description of the forward and inverse models, 1–188, Max Planck Institute for Meteorology, Hamburg, Germany, 188, 2007.
(which is a more indirect reference)

So my question was - is the overall chemistry representation of the source we're drawing the H2 coefficients from is generally consistent with the chemistry representation used now in Hector. If not it's something to flag (e.g., means we ultimately might need to update more than H2) since the two things we're merging together are not entirely consistent with each other. (Given uncertainty its likely fine, but we would want to flag this at least.)

So the way I thought to evaluate that was to look if the relative magnitude of any common coefficients for the non-H2 components of the equations that were used in the H2 work we're using now and the original equation we use now in Hector were similar. For example is the ratio of the impact of NOx to impact of CH4 or NOx to CO in the original hector (e.g. Wigley et al, Tanaka et al) are similar to what's in the H2 papers we are citing (to the extent they contain these other effects).

For example, in hector we have something like this for the CH4 OH lifetime (Hartin et al. 2015):

ln(OH)t = −0.32(ln[CH4 ]t − ln[CH4 ]t 0 ) + 0.0042(E(NOx)t ) − (E(NOx)t0) − 0.000105(E(CO)t ) − (E(CO)t0) − 0.00315(E(VOC)t ) − (E(VOC)t0)

So the impact of NOx vs CO is: 0.0042 / 0.000105 = 40 times (on an emissions basis in this case). Or we could look at the relative impact of NOx to CH4 in this equation if that's what's common between what's in hector now and what is represented in the equations from the paper's we are drawing from for the new H2 components.

To do this we need to have both sets of equations cast into an equivalent form.

Copy link
Contributor

Choose a reason for hiding this comment

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

@kdorheim comments here!

src/oh_component.cpp Outdated Show resolved Hide resolved
tests/testthat/test-h2.R Show resolved Hide resolved
@ssmithClimate
Copy link
Contributor

@kdorheim - just a couple comments, this is great to see!

@kdorheim
Copy link
Contributor Author

kdorheim commented Dec 4, 2024

  • COEFF_H2() - do we like this function name for the H2 coefficient to be added to the OH lifetime equation? Do we think it is worth having it exposed as an R function? Or should it be something users would need to change in the ini file? Should we expose the other coefficient R bindings as well?

Unless we reasonably expect that users will want to run sensitivity tests or otherwise manipulate these parameters, I'd vote to start with NOT exposing them via R or the INI file.

Name: COEFF_H2 is kind of generic; can we be more specific with this name?

  • Right now in the oh_component.cpp all of the coefficients in what corresponds to equations (1-5) are undefined unitvals, is that okay? Or do we want to define them as something?

When you say "undefined", you mean they have no units? That's OK, but if you know the associated units, we might as well include them for clarity.

Okay I can remove the coeff from the R bindings but all of the coefficients have been defined in the ini file I think since V1

@bpbond
Copy link
Member

bpbond commented Dec 4, 2024

Okay I can remove the coeff from the R bindings but all of the coefficients have been defined in the ini file I think since V1

I'm confused; this may be easier to talk through in person. Anyway, H2_COEFF is fine if you want to keep it; we have plenty of other parameters whose function isn't immediately obvious from their name.

Copy link

github-actions bot commented Dec 4, 2024

Differences in Hector outputs

Hello, this is leeyabot!

The current pull request's outputs do not differ from 3.1.1 (d931a00).

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.

Enable Ch4 lifetime to vary with respect to H2 emissions
3 participants