ESCOMP / CAM

Community Atmosphere Model
77 stars 140 forks source link

MA chemistry scheme (waccm_ma_mam4) needs O3S #793

Closed nadavis-ncar closed 1 year ago

nadavis-ncar commented 1 year ago

What is the feature/what would you like to discuss?

The MA chemistry scheme (waccm_ma_mam4) is missing O3S. This scheme is used when running WACCM, but without the need for tropospheric organic/volatile species. See https://bb.cgd.ucar.edu/cesm/threads/o3s-and-e90-tracers-in-cam-chem.4432/#post-48843. It is currently available for the waccm_tsmlt_mam4 scheme. A number of community users are interested in this, and I can't see why it shouldn't be available for the simplified MA scheme.

O3S was previously added to the TSMLT scheme, see below from the Changelog: Tag name: cam6_1_009 Originator(s): fvitt Date: 20 Dec 2018 One-line Summary: Add O3S diagnostic chemical tracer

Purpose of changes:

Add O3S diagnostic chemical tracer to chemistry mechanisms: . waccm_tsmlt_mam4 . trop_strat_mam4_vbs . trop_strat_mam4_vbsext

Is there anyone in particular you want to be part of this conversation?

No response

Will this change (regression test) answers?

No

Will you be implementing this enhancement yourself?

No

fvitt commented 1 year ago

@nadavis-ncar How urgent is this request? I am trying to get a sense of priorities.

We should probably get updates from the Chemistry Cafe to include O3S in the chemical mechanisms. @lkemmons ?

lkemmons commented 1 year ago

Since this is just adding a species, without any reactions, I have manually edited a new file: /glade/u/home/emmons/mechanisms/version_2022dec/MZ319b_MA_MAM5_O3S_20221220.in If users want O3S in older versions they just need to modify their chem_mech.in to have: 1) In the solution section: O3S -> O3, 2) In the Implicit section: O3S

nadavis-ncar commented 1 year ago

Thanks Louisa - I’ll make a copy and forward this solution to Sean.

Francis, since it’s not a bug (and this temp fix is easy) I’d say the priority is low; we just need to get it into the next release.

-Nick

On Apr 25, 2023, at 1:14 PM, Louisa Emmons @.***> wrote:

 Since this is just adding a species, without any reactions, I have manually edited a new file: /glade/u/home/emmons/mechanisms/version_2022dec/MZ319b_MA_MAM5_O3S_20221220.in If users want O3S in older versions they just need to modify their chem_mech.in to have:

In the solution section: O3S -> O3, In the Implicit section: O3S — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.

fvitt commented 1 year ago

@dkinnison @tilmes @lkemmons Loss rate of ozone in the troposphere is needed for the computation of O3S. Does this look reasonable for the WACCM MA chemistry?

O3S_Loss = 2.0*O_O3 + O1D_H2O + HO2_O3 + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 
           2.0*CLO_O + 2.0*jcl2o2 + 2.0*CLO_CLOa +  2.0*CLO_CLOb + 2.0*BRO_CLOb + 
           2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3
fvitt commented 1 year ago

@lkemmons Is there a reason to include O3S in the Implicit solver group rather than the Explicit group in the mechanism input file? Including O3S in the Implicit group causes roundoff level changes to solultions of the mixing ratios. If we move O3S to the Explicit solver than the results will be bit-for-big unchanged. O3S is advanced in via the code block:

    if ( o3_ndx > 0 .and. o3s_ndx > 0 ) then
       o3s_loss = rate_diags_o3s_loss( reaction_rates, vmr, ncol )
       do i = 1,ncol
          vmr(i,1:troplev(i),o3s_ndx) = vmr(i,1:troplev(i),o3_ndx)
          vmr(i,troplev(i)+1:pver,o3s_ndx) = vmr(i,troplev(i)+1:pver,o3s_ndx) * exp(-delt*o3s_loss(i,troplev(i)+1:pver))
       end do
       call outfld( 'O3S_LOSS',  o3s_loss,  ncol ,lchnk )
    end if
dkinnison commented 1 year ago

I don't see a reason to include O3S in the implicit solver.

dkinnison commented 1 year ago

For O3S_Loss...

O3S_Loss = 2.0O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0NO2_O + 2.0jno3_b + 2.0CLO_O + 2.0jcl2o2 + 2.0CLO_CLOa + 2.0CLO_CLOb + 2.0BRO_CLOb + 2.0BRO_CLOc + 2.0BRO_BRO + 2.0BRO_O + CLO_HO2 + BRO_HO2 + C3H6_O3 + .9ISOP_O3 + C2H4_O3 + .8MVK_O3 + 0.8MACR_O3 + MTERP_O3 + BCARY_O3

This is probably more complete than it needs to be - but, it will accurately represent the trop. and UT loss rate.

dkinnison commented 1 year ago

One note: We should check that O3S tropospheric loss (C3H6_O3 + .9ISOP_O3 + C2H4_O3 + .8MVK_O3 + 0.8MACR_O3 + MTERP_O3 + BCARY_O3) are in the chemical mechanism.

fvitt commented 1 year ago

@dkinnison These reactions are not included in the MA mechanism:

C3H6_O3 + .9*ISOP_O3 + C2H4_O3 + .8*MVK_O3 + 0.8*MACR_O3 + MTERP_O3 + BCARY_O3
dkinnison commented 1 year ago

Sorry Francis... for the MA mechanism... O3S_Loss = 2.0O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0NO2_O + 2.0jno3_b + 2.0CLO_O + 2.0jcl2o2 + 2.0CLO_CLOa + 2.0CLO_CLOb + 2.0BRO_CLOb + 2.0BRO_CLOc + 2.0BRO_BRO + 2.0BRO_O + CLO_HO2 + BRO_HO2 + S_O3

NOTE: the S + O3 => SO + O2 should be a loss off odd-oxygen too.

seand13 commented 1 year ago

The solution proposed by lkemmons on April 25 did not work for me. Are those two lines the only thing that has to be changed?

fvitt commented 1 year ago

@seand13,

In addition to O3S added to the chemistry mechanism, the following needs to be added to the namelist:

&rxn_rate_diags_nl
 rxn_rate_sums          = 'O3S_Loss = 2.0*O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + ',
         '2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3'
/

The needed changes are in cam tag cam6_3_120. I might be easier to use this tag.