Skip to content

Commit

Permalink
Fix minor issues in FAST-JX photolysis (and update version to 12.3.2)
Browse files Browse the repository at this point in the history
(1) The species DHDC is listed in the FJX_j2j.dat file, but species
    DHDN was flagged as the photolyzing species in the GEOS-Chem
    species database.  This has now been fixed as follows:

    (a) Removed Is_Photolysis=T line from the DHDN species database
        entry and added it to the DHDC species database entry
        (in module Headers/species_database_mod.F90)

    (b) Changed the tracerinfo.dat metadata for the ND22 diagnostic
        from DHDN to DHDC in GeosCore/gamap_mod.F)

(2) There were duplicate entries (#21, #101) for ClNO2 in the input
    file ExtData/CHEM_INPUTS/FAST_JX/v2018-09/FJX_j2j.dat.  We have
    fixed this issue as follows:

    (a) Created a new file with the duplicate entry #101 removed:
        ExtData/CHEM_INPUTS/FAST_JX/v2019-04/FJX_j2j.dat

    (b) Copied all of the other FAST-JX input files from the v2018-09
        to the v2019-04 folder, from which they are now read.

    (c) Changed JVN_ from 130 to 129 in Headers/CMN_FJX_MOD.F.
        This parameter specifies the number of photolyzing species.

(3) Also changed the GEOS_Chem version number to 12.3.2 in the
    file GeosCore/gc_classic_version.H.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
  • Loading branch information
yantosca committed Apr 10, 2019
1 parent b2fb3ec commit fcd0cfb
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 43 deletions.
64 changes: 36 additions & 28 deletions GeosCore/fast_jx_mod.F
Expand Up @@ -1762,6 +1762,7 @@ SUBROUTINE INIT_FJX( am_I_Root, Input_Opt,
! 29 Dec 2017 - C. Keller - Print mapping on root CPU only
! 19 Sep 2018 - M. Sulprizio - Read .dat files from data directories instead
! of run directories
! 10 Apr 2019 - R. Yantosca - Now read data from FAST_JX/v2019-04 folder
!EOP
!------------------------------------------------------------------------------
!BOC
Expand Down Expand Up @@ -1819,7 +1820,7 @@ SUBROUTINE INIT_FJX( am_I_Root, Input_Opt,
JXUNIT = findFreeLUN()
! Define data directory for FAST-JX input
DATA_DIR = TRIM( Input_Opt%CHEM_INPUTS_DIR )//'FAST_JX/v2018-09/'
DATA_DIR = TRIM( Input_Opt%CHEM_INPUTS_DIR )//'FAST_JX/v2019-04/'
!=====================================================================
! Read in fast-J X-sections (spectral data)
Expand Down Expand Up @@ -1887,6 +1888,7 @@ SUBROUTINE INIT_FJX( am_I_Root, Input_Opt,
! Read in photolysis rates used in chemistry code and mapping onto
! FJX J's CTM call: read in J-values names and link to fast-JX names
!=====================================================================
!### bmy debug, read locally
FILENAME = TRIM( DATA_DIR ) // 'FJX_j2j.dat'

! Echo info
Expand Down Expand Up @@ -2444,6 +2446,7 @@ SUBROUTINE RD_AOD( NJ1, am_I_Root, Input_Opt )
! 23 Mar 2018 - E. Lundgren - Pass Input_Opt to Calc_AOD
! 19 Sep 2018 - M. Sulprizio - Read .dat files from data directories instead
! of run directories
! 10 Apr 2019 - R. Yantosca - Now read data from FAST_JX/v2019-04 folder
!EOP
!------------------------------------------------------------------------------
!BOC
Expand All @@ -2469,7 +2472,7 @@ SUBROUTINE RD_AOD( NJ1, am_I_Root, Input_Opt )
LBRC = Input_Opt%LBRC
! Define data directory for FAST-JX input
DATA_DIR = TRIM( Input_Opt%CHEM_INPUTS_DIR )//'FAST_JX/v2018-09/'
DATA_DIR = TRIM( Input_Opt%CHEM_INPUTS_DIR )//'FAST_JX/v2019-04/'
! IMPORTANT: aerosol_mod.F and dust_mod.F expect aerosols in this order
DATA SPECFIL /"so4.dat","soot.dat","org.dat",
Expand Down Expand Up @@ -3638,6 +3641,11 @@ SUBROUTINE PHOTO_JX( U0, REFLB, P_COL,
! are handled in routine PHOTRATE_ADJ
! Hardcode ZPJ indices based on valued from FJX_j2j.dat
! for now (mps, 3/15/16)
!
! NOTE: Updated to remove duplicate ClNO2 entry #101,
! This reduces the # of photolyzed species from 130 to 129.
! Entries 102-130 are now renumbered as 101-129.
! (bmy, 4/10/19)
AD22(ILON,ILAT,L, 1) = AD22(ILON,ILAT,L, 1) + ! JNO2
& ZPJ(L,11,ILON,ILAT)
AD22(ILON,ILAT,L, 2) = AD22(ILON,ILAT,L, 2) + ! JHNO3
Expand Down Expand Up @@ -3699,23 +3707,23 @@ SUBROUTINE PHOTO_JX( U0, REFLB, P_COL,
AD22(ILON,ILAT,L,28) = AD22(ILON,ILAT,L,28) + ! JGLYC
& ZPJ(L,68,ILON,ILAT)
AD22(ILON,ILAT,L,29) = AD22(ILON,ILAT,L,29) + ! JPIP
& ZPJ(L,106,ILON,ILAT)
& ZPJ(L,105,ILON,ILAT)
AD22(ILON,ILAT,L,30) = AD22(ILON,ILAT,L,30) + ! JIPMN
& ZPJ(L,107,ILON,ILAT)
& ZPJ(L,106,ILON,ILAT)
AD22(ILON,ILAT,L,31) = AD22(ILON,ILAT,L,31) + ! JETHLN
& ZPJ(L,107,ILON,ILAT)
AD22(ILON,ILAT,L,32) = AD22(ILON,ILAT,L,32) + ! JDHDC
& ZPJ(L,108,ILON,ILAT)
AD22(ILON,ILAT,L,32) = AD22(ILON,ILAT,L,32) + ! JDHDN
& ZPJ(L,109,ILON,ILAT)
AD22(ILON,ILAT,L,33) = AD22(ILON,ILAT,L,33) + ! JHPALD
& ZPJ(L,110,ILON,ILAT)
& ZPJ(L,109,ILON,ILAT)
AD22(ILON,ILAT,L,34) = AD22(ILON,ILAT,L,34) + ! JISN1
& ZPJ(L,111,ILON,ILAT)
& ZPJ(L,110,ILON,ILAT)
AD22(ILON,ILAT,L,35) = AD22(ILON,ILAT,L,35) + ! JMONITS
& ZPJ(L,112,ILON,ILAT)
& ZPJ(L,111,ILON,ILAT)
AD22(ILON,ILAT,L,36) = AD22(ILON,ILAT,L,36) + ! JMONITU
& ZPJ(L,113,ILON,ILAT)
& ZPJ(L,112,ILON,ILAT)
AD22(ILON,ILAT,L,37) = AD22(ILON,ILAT,L,37) + ! JHONIT
& ZPJ(L,114,ILON,ILAT)
& ZPJ(L,113,ILON,ILAT)
! lei, 05/15/17 - added new halogen species below
IF ( IS_HALOGENS ) THEN
AD22(ILON,ILAT,L,38) = AD22(ILON,ILAT,L,38) + ! JCH3Br
Expand All @@ -3725,9 +3733,9 @@ SUBROUTINE PHOTO_JX( U0, REFLB, P_COL,
AD22(ILON,ILAT,L,40) = AD22(ILON,ILAT,L,40) + ! JCH2Br2
& ZPJ(L,55,ILON,ILAT)
AD22(ILON,ILAT,L,41) = AD22(ILON,ILAT,L,41) + ! JCH2IBr
& ZPJ(L,126,ILON,ILAT)
& ZPJ(L,125,ILON,ILAT)
AD22(ILON,ILAT,L,42) = AD22(ILON,ILAT,L,42) + ! JIBr
& ZPJ(L,129,ILON,ILAT)
& ZPJ(L,128,ILON,ILAT)
AD22(ILON,ILAT,L,43) = AD22(ILON,ILAT,L,43) + ! JCl2
& ZPJ(L,22,ILON,ILAT)
AD22(ILON,ILAT,L,44) = AD22(ILON,ILAT,L,44) + ! JClO
Expand Down Expand Up @@ -3762,37 +3770,37 @@ SUBROUTINE PHOTO_JX( U0, REFLB, P_COL,
AD22(ILON,ILAT,L,58) = AD22(ILON,ILAT,L,58) + ! JH1211
& ZPJ(L,51,ILON,ILAT)
AD22(ILON,ILAT,L,59) = AD22(ILON,ILAT,L,59) + ! JClOO
& ZPJ(L,102,ILON,ILAT)
& ZPJ(L,101,ILON,ILAT)
AD22(ILON,ILAT,L,60) = AD22(ILON,ILAT,L,60) + ! JCH2Cl2
& ZPJ(L,45,ILON,ILAT)
AD22(ILON,ILAT,L,61) = AD22(ILON,ILAT,L,61) + ! JCH2ICl
& ZPJ(L,125,ILON,ILAT)
& ZPJ(L,124,ILON,ILAT)
AD22(ILON,ILAT,L,62) = AD22(ILON,ILAT,L,62) + ! JICl
& ZPJ(L,130,ILON,ILAT)
& ZPJ(L,129,ILON,ILAT)
AD22(ILON,ILAT,L,63) = AD22(ILON,ILAT,L,63) + ! JI2
& ZPJ(L,115,ILON,ILAT)
& ZPJ(L,114,ILON,ILAT)
AD22(ILON,ILAT,L,64) = AD22(ILON,ILAT,L,64) + ! JHOI
& ZPJ(L,116,ILON,ILAT)
& ZPJ(L,115,ILON,ILAT)
AD22(ILON,ILAT,L,65) = AD22(ILON,ILAT,L,65) + ! JIO
& ZPJ(L,117,ILON,ILAT)
& ZPJ(L,116,ILON,ILAT)
AD22(ILON,ILAT,L,66) = AD22(ILON,ILAT,L,66) + ! JOIO
& ZPJ(L,118,ILON,ILAT)
& ZPJ(L,117,ILON,ILAT)
AD22(ILON,ILAT,L,67) = AD22(ILON,ILAT,L,67) + ! JINO
& ZPJ(L,119,ILON,ILAT)
& ZPJ(L,118,ILON,ILAT)
AD22(ILON,ILAT,L,68) = AD22(ILON,ILAT,L,68) + ! JIONO
& ZPJ(L,120,ILON,ILAT)
& ZPJ(L,119,ILON,ILAT)
AD22(ILON,ILAT,L,69) = AD22(ILON,ILAT,L,69) + ! JIONO2
& ZPJ(L,121,ILON,ILAT)
& ZPJ(L,120,ILON,ILAT)
AD22(ILON,ILAT,L,70) = AD22(ILON,ILAT,L,70) + ! JI2O2
& ZPJ(L,122,ILON,ILAT)
& ZPJ(L,121,ILON,ILAT)
AD22(ILON,ILAT,L,71) = AD22(ILON,ILAT,L,71) + ! JCH3I
& ZPJ(L,123,ILON,ILAT)
& ZPJ(L,122,ILON,ILAT)
AD22(ILON,ILAT,L,72) = AD22(ILON,ILAT,L,72) + ! JCH2I2
& ZPJ(L,124,ILON,ILAT)
& ZPJ(L,123,ILON,ILAT)
AD22(ILON,ILAT,L,73) = AD22(ILON,ILAT,L,73) + ! JI2O4
& ZPJ(L,127,ILON,ILAT)
& ZPJ(L,126,ILON,ILAT)
AD22(ILON,ILAT,L,74) = AD22(ILON,ILAT,L,74) + ! JI2O3
& ZPJ(L,128,ILON,ILAT)
& ZPJ(L,127,ILON,ILAT)
AD22(ILON,ILAT,L,75) = AD22(ILON,ILAT,L,75) + ! JH1301
& ZPJ(L,53,ILON,ILAT)
AD22(ILON,ILAT,L,76) = AD22(ILON,ILAT,L,76) + ! JH2402
Expand Down
2 changes: 1 addition & 1 deletion GeosCore/gamap_mod.F
Expand Up @@ -5494,7 +5494,7 @@ SUBROUTINE INIT_TRACERINFO( am_I_Root, Input_Opt, State_Chm, RC )
CASE( 31 )
NAME(T,22) = 'JETHLN'
CASE( 32 )
NAME(T,22) = 'JDHDN'
NAME(T,22) = 'JDHDC'
CASE( 33 )
NAME(T,22) = 'JHPALD'
CASE( 34 )
Expand Down
2 changes: 1 addition & 1 deletion GeosCore/gc_classic_version.H
Expand Up @@ -13,4 +13,4 @@
! Z = updated for patches that do not break backwards compatibility
! with run directories from the last benchmarked version X.Y.0.
!-----------------------------------------------------------------------
GC_CLASSIC_VERSION = '12.3.1'
GC_CLASSIC_VERSION = '12.3.2'
19 changes: 7 additions & 12 deletions Headers/CMN_FJX_MOD.F
Expand Up @@ -41,7 +41,13 @@ MODULE CMN_FJX_MOD

INTEGER :: JVL_ ! Vertical levels for J-values

INTEGER, PARAMETER :: JVN_ = 130 ! Max number of J-values
!----------------------------------------------------------------------
! NOTE: In GC 12.3.2, it was discovered that ClNO2 was listed twice
! in FJX_j2j.dat. We have since removed the duplicate ClNO2 entry,
! which reduces the # of photolyzed species by 1, from 130 to 129.
! (bmy, 4/10/19)
INTEGER, PARAMETER :: JVN_ = 129 ! Max number of J-values
!----------------------------------------------------------------------

INTEGER :: AN_ ! # of separate aerosols per layer
! Now set in Init_CMN_FJX below
Expand Down Expand Up @@ -258,11 +264,6 @@ MODULE CMN_FJX_MOD
INTEGER, PARAMETER :: NRAA = 7 !number of aer sizes in LUT
INTEGER, PARAMETER :: NALBD = 2
INTEGER, PARAMETER :: NEMISS = 16
!------------------------------------------------------------------------------
! Prior to 11/6/18:
! Moved to Input_Opt (bmy, 11/6/18)
! INTEGER, PARAMETER :: NSPECRADMENU = 11!number of choices for RT flux
!------------------------------------------------------------------------------

! Now set the following in Init_CMN_FJX below (mps, 1/3/18)
INTEGER :: NSPAA !number of species in LUT
Expand Down Expand Up @@ -298,12 +299,6 @@ MODULE CMN_FJX_MOD
!coefficients for interpolation of wavelength (and for RT too)
REAL*8 :: ACOEF_WV(3),BCOEF_WV(3),CCOEF_WV(3)
REAL*8 :: ACOEF_RTWV(3),BCOEF_RTWV(3),CCOEF_RTWV(3)
!------------------------------------------------------------------------------
! Prior to 11/6/18:
! Moved to Input_Opt (bmy, 11/6/18)
! INTEGER :: LSPECRADMENU(NSPECRADMENU) !indices for number of species
! ! on input menu
!------------------------------------------------------------------------------
INTEGER, ALLOCATABLE :: SPECMASK(:) !list of binary switches for different
!species flux output

Expand Down
7 changes: 6 additions & 1 deletion Headers/species_database_mod.F90
Expand Up @@ -493,6 +493,7 @@ SUBROUTINE Spc_Info( am_I_Root, iName, Input_Opt, &
! 14 Sep 2018 - C. Keller - Created standalone subroutine so that species
! info can be queried independently.
! 23 Oct 2018 - R. Yantosca - Cosmetic changes (consistent indentation)
! 10 Apr 2019 - R. Yantosca - DHDC should photolyze, not DHDN
!EOP
!------------------------------------------------------------------------------
!BOC
Expand Down Expand Up @@ -1211,12 +1212,17 @@ SUBROUTINE Spc_Info( am_I_Root, iName, Input_Opt, &
#endif

CASE( 'DHDC' )
! NOTE: DHDC should photolyze, since this is from Chris Chan
! Miller's 2017 mechanism. But we had inadvertently flagged
! DHDN as the photolyzing species instead of DHDC. This is
! now fixed (kbates, bmy, 4/10/19)
FullName = 'Dihydroxyperoxide dicarbonyl'
Formula = 'C5H8O6'
MW_g = 164.0_fp
Is_Gas = T
Is_Drydep = F
Is_Wetdep = F
Is_Photolysis = T

CASE( 'DHDN' )
! DHDN uses the same DD_F0 and DD_Hstar_old values as ISOPN
Expand All @@ -1227,7 +1233,6 @@ SUBROUTINE Spc_Info( am_I_Root, iName, Input_Opt, &
Is_Gas = T
Is_Drydep = T
Is_Wetdep = T
Is_Photolysis = T
DD_F0 = 1.0_fp
DD_Hstar_Old = 2.00e+6_fp
Henry_K0 = 2.00e+6_f8
Expand Down

0 comments on commit fcd0cfb

Please sign in to comment.