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

atmospheric chemistry reaction rate (r_lch4 and r_lco_h) output zero in e3smv3 master #6711

Closed
jinboxie opened this issue Oct 27, 2024 · 8 comments · Fixed by #6713
Closed
Assignees

Comments

@jinboxie
Copy link
Contributor

jinboxie commented Oct 27, 2024

It is found that the current version of e3smv3 master has not been able to output the content of reaction rate for ch4 and co_h. The outputs are zero, and we are unable to output the need variable for simulation.
The mechanism is still in atmospheric chemistry chem_mech_in, but we may be meeting some problems with diagnostic output of these variables.
The problem is latest version of e3smv3 master, and is tested to be there as of the 0305 version of e3sm v3 master (maint 3.0).

        float r_lch4(time, lev, ncol) ;
                r_lch4:mdims = 1 ;
                r_lch4:units = "molecules/cm3/sec" ;
                r_lch4:long_name = "reaction rate" ;
                r_lch4:cell_methods = "time: mean" ;
        float r_lco_h(time, lev, ncol) ;
                r_lco_h:mdims = 1 ;
                r_lco_h:units = "molecules/cm3/sec" ;
                r_lco_h:long_name = "reaction rate" ;
                r_lco_h:cell_methods = "time: mean" ;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
[lco_h]      CO + OH -> H                                   ; 1.500E-13,  0
[lch4]       CH4LNZ + OH -> CH3O2 + H2O                     ; 2.450E-12, -1775
@tangq
Copy link
Contributor

tangq commented Oct 27, 2024

@jinboxie , CO and CH4LNZ happen to be solved by the explicit solver. You may try

  1. output r_lo3_oh (i.e., R(OH+O3))
  2. If r_lo3_oh looks okay, it will narrow down the problem to explicit solver. Then, comparing the mo_exp_sol.F90 between master and this version (/lcrc/group/e3sm/ac.zke/E3SM_models/UCI_branch_09142022/E3SM/components/eam/src/chemistry/mozart/mo_exp_sol.F90) might provide some clues. The latter one doesn't have the r_lch4 issue.

@tangq
Copy link
Contributor

tangq commented Oct 27, 2024

@jinboxie , some additional info that might be helpful:
Reaction rates like r_lch4 are output by chemistry/mozart/rate_diags.F90 with the variable rate_names.

@jinboxie
Copy link
Contributor Author

jinboxie commented Oct 27, 2024

@wlin7 @tangq It seems the output is impacted by the flag
history_gaschmbudget_2D = .true.
history_gaschmbudget_2D_levels = .true.
the results can be output when these flags are opened.

@tangq
Copy link
Contributor

tangq commented Oct 28, 2024

@jinboxie , the reaction rates output shouldn't be affected by these budget flags.

The return on this line should be changed to cycle, so the outfld call will be done for all reaction rates but skip the section between L129 and L169 end do. Tagging @hsiangheleellnl to confirm if this change is intended.

https://github.com/E3SM-Project/E3SM/blob/master/components/eam/src/chemistry/mozart/rate_diags.F90#L129

@jinboxie , can you test after changing return to cycle, both setting these two flags to true and false give the correct reaction rates outputs? Thanks.

@tangq
Copy link
Contributor

tangq commented Oct 28, 2024

@jinboxie , another (and cleaner, better) way is to change https://github.com/E3SM-Project/E3SM/blob/master/components/eam/src/chemistry/mozart/rate_diags.F90#L129 to

if ( history_UCIgaschmbudget_2D .or. history_UCIgaschmbudget_2D_levels) then
and add end if below L168.

@wlin7, @jinboxie , which way do you perfer? I like the explicit if...end if statement as it clearly controls the scope of these two flags.

@jinboxie
Copy link
Contributor Author

jinboxie commented Oct 28, 2024

@wlin7 @tangq it is confirmed that cycle does not work (it gets stuck on simulation), but if....endif does. This can be output without the need for flags.

@tangq
Copy link
Contributor

tangq commented Oct 28, 2024

@jinboxie , that's good. Can you submit a PR to fix this bug?

@jinboxie
Copy link
Contributor Author

@wlin7 @tangq @hsiangheleellnl Plz refer to the current PR #6713

wlin7 added a commit that referenced this issue Nov 21, 2024
… (PR #6716)

The chemistry reaction rate of r_lch4 and r_lco_h are output as 0 due to
a bug in the output of chemistry file, when no chemistry output flags are set.
The bug is fixed by modifying the if clause in the code.

Fixes #6711

[BFB]
wlin7 added a commit that referenced this issue Nov 21, 2024
Chemistry output bug fix

Due to a bug in the output of the chemistry reaction rate,
the r_lch4 and r_lco_h are output as 0 when no chemistry output
flags are set. The bug is fixed by modifying the if clause in the code.

Fixes #6711

[BFB]
@wlin7 wlin7 closed this as completed in b6e16c6 Nov 22, 2024
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 a pull request may close this issue.

3 participants