-
Notifications
You must be signed in to change notification settings - Fork 165
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
Issue with units of O3 loss in tagged simulation #2094
Comments
Thanks for the reminder @ncolombi! I'll work on getting this into the no-diff-to-benchmark branch, so that it can go into version 14. |
Thanks Bob! |
Thanks for tagging me. I believe previous GC (before 12.0.0 or so) used this kind of different units for Ox_prod and Ox_loss, which could produce the correct result. #973 also reported similar bug and fixed it by outputting different unit of Ox_loss. |
Question for you @xpye98 @ncolombi: In !====================================================================
! HISTORY (aka netCDF diagnostics)
!
! Prod and loss of families or species [molec/cm3/s]
!
! NOTE: KppId is the KPP ID # for each of the prod and loss
! diagnostic species. This is the value used to index the
! KPP "C" array (in module gckpp_Global.F90).
!====================================================================
! Chemical loss of species or families [molec/cm3/s]
IF ( State_Diag%Archive_Loss ) THEN
DO S = 1, State_Diag%Map_Loss%nSlots
KppId = State_Diag%Map_Loss%slot2Id(S)
State_Diag%Loss(I,J,L,S) = C(KppID) / DT
ENDDO
ENDIF for each of the loss families that are defined in that is Because We could also add a Also I'm thinking to add this to a different diagnostic, as the |
Hi Bob, I believe you would need to divide LOx by the mass of the Ox family (not just the mass of O3). @xpye98 does that in his flexchem_mod.F90 (from version 13) in lines 1111-1289:
@xpye98, let me know if I misinterpreted anything here. |
@yantosca @ncolombi Outputting just PO3 and LO3 (not Ox family) to KPP won't work. Actually we've tried this before and got very strange results. The primary formation pathway of O3 is NO2 -> O3 + NO and the primary loss is O3 photolysis. Considering only O3 will get very high PO3 and LO3, and somehow will break the tagO3 simulation. Scientifically, it is also meaningful to consider Ox family to avoid fast reactions between O3 and NOx. But this is just my opinion and might need further test. |
@yantosca Also, I'm more curious of why at the very beginning we used different units for prod and loss in previous GC versions. Is this the only way we can tag correctly? |
I think it may just be due to historical code. In older versions you had to use bpch diagnostic output to archive the tagO3 but we removed that in favor of the netCDF History diagnostics. Also, the tagO3 simulation has probably been a bit stale (until you and others have recently started looking into it). Thanks for bringing this all up, we'll get it fixed! |
Hi Melissa,
Apologies for the late response, but it is correct that this issue is not
yet resolved-thanks for reopening and let me know if you need any
clarifications about the issue!
Thanks,
Nadia
…On Fri, Feb 9, 2024 at 2:54 PM Melissa Sulprizio ***@***.***> wrote:
Reopened #2094 <#2094>.
—
Reply to this email directly, view it on GitHub
<#2094 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANIHFE2YKRA244RO4RV6JTTYS2LHRAVCNFSM6AAAAABBKSBE6GVHI2DSMVQWIX3LMV45UABCJFZXG5LFIV3GK3TUJZXXI2LGNFRWC5DJN5XDWMJRG43DENZYG4ZDCOI>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Hello,
@xpye98 and I have previously reported issues with the tagged O3 run in GEOS-Chem version 13 and 14. The fix in #1109 corrected the issues involved with unit conversion from archived Prod/Loss of O3 (units of molec/cm3/s). P(O3) and L(O3) are now both converted from molec/cm3/s to units of kilograms (kg) in tagged_o3_mod.F90 and concentration of O3 is calculated in lines 397 and 461 as shown below:
In the second equation, where each term is in units of kilograms, as long as LO3_kg is greater than PO3_kg at a given timestep, the SpcConc will have a value of zero, which is what I see in my 14.2.0 simulation for all tagged species (zero everywhere). @xpye98 has corrected this issue in his v13.2.1 run by modifying the tagged_o3_mod.F90 file as such:
In this case, LO3 has been changed to units of [1] and multiplied by SpcConc [kg], which fixes the issue. Since the SpcConc has an initial value of 0, this means that P(O3) will always be greater than LO3*SpcConc, and SpcConc will slowly reach a steady state concentration after some spin up. Outputting LO3 in units of [1] rather than [kg] requires dividing L(O3) by Ox mass in the fullchem_mod.F90 file. Is there anyway we can incorporate this fix in the next release of version 14?
The text was updated successfully, but these errors were encountered: