Closed sharonshen-wq closed 3 years ago
Thanks for writing @sharonshen-wq. The O3_PROD_LOSS data in the HEMCO/TAGGED_O3/v2014-09
folder is not the most recent P/L data, but is there to allow us to test the tagged O3 simulation.
It might be easiest to change the units of the O3_PROD and O3_LOSS to match what they are in the data files that you have prepared:
(((CHEMISTRY_INPUT
(((O3_PROD_LOSS
* O3_PROD $ROOT/TAGGED_O3/v2014-09/O3_PRODLOSS.$met.4x5.nc POX 2004/1-12/1-31/0 C xyz molec/cm3/s * - 1 1
* O3_LOSS $ROOT/TAGGED_O3/v2014-09/O3_PRODLOSS.$met.4x5.nc LOX 2004/1-12/1-31/0 C xyz molec/cm3/s * - 1 1
)))O3_PROD_LOSS
)))CHEMISTRY_INPUT
and then just convert units in the the tagged O3 module after these get read in:
! Evalulate O3 production from HEMCO
ALLOCATE( P24H(State_Grid%NX, State_Grid%NY, State_Grid%NZ), STAT=RC )
CALL GC_CheckVar( 'tagged_o3_mod.F: P24H', 0, RC )
IF ( RC /= GC_SUCCESS ) RETURN
P24H = 0.0_fp
CALL HCO_EvalFld( HcoState, 'O3_PROD', P24H, RC )
IF ( RC /= GC_SUCCESS ) THEN
ErrMsg = 'Cannot get pointer to O3_PROD!'
CALL GC_Error( ErrMsg, RC, ThisLoc )
RETURN
ENDIF
! Set pointer to O3 production
P24Hptr => P24H
! Evaluate O3 loss from HEMCO
ALLOCATE( L24H(State_Grid%NX, State_Grid%NY, State_Grid%NZ), STAT=RC )
CALL GC_CheckVar( 'tagged_o3_mod.F: L24H', 0, RC )
IF ( RC /= GC_SUCCESS ) RETURN
L24H = 0.0_fp
CALL HCO_EvalFld( HcoState, 'O3_LOSS', L24H, RC )
IF ( RC /= GC_SUCCESS ) THEN
ErrMsg = 'Cannot get pointer to O3_LOSS!'
CALL GC_Error( ErrMsg, RC, ThisLoc )
RETURN
ENDIF
! Change units here
We will try to update the units of the tagged O3 to be consistent with P/L rates that are saved from HISTORY. This will likely go into a 13.y.z release.
I will close out this issue for now. If you are still having problems, let me know and I can reopen this issue.
Hi, everyone, I use the 12.9.3 geoschem model to tag O3, the Prod_Ox and Loss_Ox generated by the standard simulation have units of molec cm-3 s-1, however, this version cannot convert the "molec cm-3 s-1" to the standard HEMCO units, as described in the hcoio_read_std_mod.F90
, so the tagged O3 simulation failed with the results in the output files showing -Infinityf; But, if I use the old O3 prod_loss rate file with the units of "kg/m3/s" and "1/m3/s", respectively, the simulation and the results were OK. So is there any code describe the relating unit conversion of molec cm-3 s-1 that I missed? Or I must calculate them myself?