Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
d70c19b
Addition of multiphase sulfate chemistry according to https://doi.org…
Jul 15, 2025
d9cfd2b
Addition of multiphase sulfate chemistry according to https://doi.org…
Jul 15, 2025
c30d879
Addition of multiphase sulfate chemistry according to https://doi.org…
Jul 15, 2025
14eaf54
Edits to original pull request.
Sep 8, 2025
cbf7ec1
Rename State_Chm%Isorrop* fields to State_Chm%Ate*'
yantosca Feb 11, 2026
9241f03
Rebuilt multiphase sulfate in fullchem mechanism w/ KPP 3.3.0
yantosca Feb 11, 2026
2d6da95
Use DSTbin1..7 instead of DST1..4 in fullchem_HetStateFuncs.f90
yantosca Feb 11, 2026
4c6ea01
Remove 0.7 factor for dust in fullchem_SulfurChemFuncs.F90
yantosca Feb 20, 2026
771e432
Add Travis et al 2025 comment to KPP equation files
yantosca Mar 2, 2026
8bea76e
Removed dummy prod/loss species from species_database.yml
yantosca Mar 2, 2026
5abb36d
Fixed typos in fullchem_HetStateFuncs.F90
yantosca Mar 2, 2026
5038f81
Add Travis2025 comments to additional rxns in fullchem/custom eqn files
yantosca Mar 2, 2026
3c33244
Pass extra species id flags to fullchem_SetStateHet
yantosca Apr 2, 2026
06923e2
Added PHMSAQ and PHMSMP to the species_database.yml file
yantosca Apr 2, 2026
3a124ac
Replace "ISORROP" to "ATE" in Get_Metadata_State_Chm
yantosca Apr 2, 2026
c6ea95b
Edit new rate law functions for clarity
yantosca Apr 2, 2026
774855f
Prevent div-by-zero in fullchem_SetStateHet for multiphase sulfate chem
yantosca Apr 3, 2026
dfbfe39
Rename CRITRH, CRITRH2 parameters in fullchem_RateLawFuncs.F90
yantosca Apr 3, 2026
3981fe2
Typo fix: "*" should be "**" in SetStateHet routine
yantosca Apr 7, 2026
fb015f4
In SetStateHet, use HENRY_CR and HENRY_K0 to get Henry's parameters
yantosca Apr 7, 2026
c37d460
Add numerical optimizations to routine SetStateHet
yantosca Apr 8, 2026
315e83a
Added extra species flags to the stub routine for SetStateHet
yantosca Apr 8, 2026
3201575
Bug fix: Pass IONIC to MACH_HETP_MAIN_15Cases for APM simulations
yantosca Apr 9, 2026
61d99ad
Add ionic strength variable to call to HETP in APM simulations
yantosca Apr 9, 2026
28a2fc4
Now copy an APM restart file into run directories
yantosca Apr 10, 2026
669cb41
Merge PR #3202 (Add multiphase sulfate, cf Travis et al 2025)
yantosca Apr 22, 2026
a56c0e9
Adding stratospheric adjustment capability to GCClassic.
cbarker211 Aug 7, 2024
5c94599
Floating point bug fix.
cbarker211 Aug 8, 2024
c82fff3
Move array alloc/dealloc for strat-adjusted rf to routines in main.F90
cbarker211 Aug 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Added PSO4AQ and PH2SO4 as a product to certain reactions; see `KPP/fullchem/CHANGELOG_fullchem.md`
- Added methanediol (MDL) as a transported gas-phase species and to the KPP fullchem and custom mechanisms
- Added routine `Cloud_CH2O_MDL` in `KPP/fullchem/fullchem_SulfurChemFuncs.F90`
- Added multiphase sulfate chemistry and cloud Hplus diagnostic for Travis et al. (2025)
- Added `IONIC` output argument in calls to HETP driver routine `MACH_HETP_Main15Cases`
- Added APM restart file paths to `run/shared/download_data.yml`
- Added the option to use stratospheric-adjusted radiative forcing with RRTMG in GC-Classic

### Changed
- Renamed `State_Chm%Isorrop*` fields to `State_Chm%Ate*` (aerosol thermodynamical equilibrium), as ISORROPIA is no longer used
- Updated routine `fullchem_SetStateHet` to accept `id_DSTbin{1..7}`, `id_pFe`, `id_SO2`, and `id_SO4` as arguments
- Renamed `CRITRH` to `RH_35_PERCENT` and `CRITRH2` to `RH_50_PERCENT` in `KPP/fullchem/fullchem_RateLawFuncs.F90`
- Added DSTbin{1..7}, SO2, SO4, and pFE species ID flags to the `SetStateHet` routine in `KPP/fullchem_HetStateFuncs.F90` and `KPP/stubs/stub_fullchem_HetStateFuncs.F90`
- Updated `run/shared/download_data.py` and `run/shared/setupForRestarts.sh` to read APM restart file paths

## [14.7.1] - 2026-04-08
### Added
Expand Down
51 changes: 28 additions & 23 deletions GeosCore/aerosol_thermodynamics_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
REAL(f8) :: HETP_HCl, HETP_Na, HETP_Ca, HETP_K
REAL(f8) :: HETP_Mg, HETP_H, HETP_OH, HETP_LWC
REAL(f8) :: HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg
REAL(f8) :: HETP_frSO4, HETP_num
REAL(f8) :: HETP_frSO4, HETP_num, HETP_IONIC

! Strings
CHARACTER(LEN=15) :: SCASI
Expand Down Expand Up @@ -268,14 +268,15 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &

! Zero State_Chm arrays to avoid leftover values from hanging
! around between calls -- especially up near the tropopause
State_Chm%IsorropAeropH = 0.0_fp
State_Chm%IsorropHplus = 0.0_fp
State_Chm%IsorropAeroH2O = 0.0_fp
State_Chm%IsorropSulfate = 0.0_fp
State_Chm%IsorropNitrate = 0.0_fp
State_Chm%IsorropBisulfate = 0.0_fp
State_Chm%IsorropChloride = 0.0_fp

State_Chm%AteAeropH = 0.0_fp
State_Chm%AteHplus = 0.0_fp
State_Chm%AteAeroH2O = 0.0_fp
State_Chm%AteSulfate = 0.0_fp
State_Chm%AteNitrate = 0.0_fp
State_Chm%AteBisulfate = 0.0_fp
State_Chm%AteChloride = 0.0_fp
State_Chm%AteIONIC = 0.0_fp
State_Chm%AteOH = 0.0_fp
! First-time initialization
IF ( FIRST ) THEN

Expand Down Expand Up @@ -492,7 +493,7 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
!$OMP PRIVATE( HETP_HCl, HETP_Na, HETP_Ca, HETP_K ) &
!$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC ) &
!$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg ) &
!$OMP PRIVATE( HETP_frSO4, HETP_num ) &
!$OMP PRIVATE( HETP_frSO4, HETP_num, HETP_IONIC ) &
!$OMP COLLAPSE( 3 ) &
!$OMP SCHEDULE( DYNAMIC, 8 )
DO L = 1, State_Grid%NZ
Expand Down Expand Up @@ -818,14 +819,15 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
! For safety
GAS = 0.0d0
AERLIQ = 0.0d0
OTHER = 0.0d0
Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), &
WI(6), WI(7), WI(8), TEMPI, RHI, &
HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, &
HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, &
HETP_HCl, HETP_Na, HETP_Ca, HETP_K, &
HETP_Mg, HETP_H, HETP_OH, HETP_LWC, &
HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, &
HETP_frSO4, HETP_num )
HETP_frSO4, HETP_IONIC, HETP_num )
! Spoof ISORROPIA outputs which are still used
GAS(1) = HETP_NH3
GAS(2) = HETP_HNO3
Expand All @@ -838,7 +840,8 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
AERLIQ( 5) = HETP_SO4
AERLIQ( 6) = HETP_HSO4
AERLIQ( 7) = HETP_NO3
AERLIQ( 8) = HETP_LWC
AERLIQ( 8) = HETP_LWC
OTHER( 5) = HETP_IONIC
! WT is used below but is identical to WI for a forward case
WT(:) = WI(:)

Expand Down Expand Up @@ -954,15 +957,15 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
IF ( AERLIQ(8) < 1e-18_fp ) THEN
! Aerosol is dry so HPLUSTEMP and PH_SAV are undefined
! We force HPLUSTEMP to 1d20 (hotp, ccc, 12/18/09)
! Force IsorropAeropH to 20e0 (X. Wang, 6/27/19)
! Force AteAeropH to 20e0 (X. Wang, 6/27/19)
!HPLUSTEMP = 1e+20_fp
HPLUSTEMP = 1.0e-30_fp
SULFTEMP = 1.0e-30_fp
BISULTEMP = 1.0e-30_fp
NITRTEMP = 1.0e-30_fp
CLTEMP = 1.0e-30_fp
!State_Chm%IsorropAeropH(I,J,L,N) = -999e+0_fp
State_Chm%IsorropAeropH(I,J,L,N) = 20.0_fp
!State_Chm%AteAeropH(I,J,L,N) = -999e+0_fp
State_Chm%AteAeropH(I,J,L,N) = 20.0_fp
ELSE
HPLUSTEMP = AERLIQ(1) / AERLIQ(8) * 1.0e+3_fp / 18.0_fp
SULFTEMP = AERLIQ(5) / AERLIQ(8) * 1.0e+3_fp / 18.0_fp
Expand All @@ -971,19 +974,21 @@ SUBROUTINE DO_ATE( Input_Opt, State_Chm, State_Diag, &
CLTEMP = AERLIQ(4) / AERLIQ(8) * 1.0e+3_fp / 18.0_fp

! Use SAFELOG10 to prevent NAN
State_Chm%IsorropAeropH(I,J,L,N)=-1.0_fp*SAFELOG10(HPLUSTEMP)
State_Chm%AteAeropH(I,J,L,N)=-1.0_fp*SAFELOG10(HPLUSTEMP)
ENDIF

! Additional Info
State_Chm%IsorropHplus(I,J,L,N) = MAX(HPLUSTEMP, 1e-30_fp)
State_Chm%IsorropAeroH2O(I,J,L,N) = MAX((AERLIQ(8)*18e+6_fp),1e-30_fp) ! mol/m3 -> ug/m3
State_Chm%IsorropNitrate(I,J,L,N) = MAX(NITRTEMP, 1e-30_fp)
State_Chm%IsorropChloride(I,J,L,N)= MAX(CLTEMP, 1e-30_fp)
State_Chm%AteHplus(I,J,L,N) = MAX(HPLUSTEMP, 1e-30_fp)
State_Chm%AteAeroH2O(I,J,L,N) = MAX((AERLIQ(8)*18e+6_fp),1e-30_fp) ! mol/m3 -> ug/m3
State_Chm%AteNitrate(I,J,L,N) = MAX(NITRTEMP, 1e-30_fp)
State_Chm%AteChloride(I,J,L,N)= MAX(CLTEMP, 1e-30_fp)
IF (N==1) THEN
State_Chm%IsorropSulfate(I,J,L) = MAX(SULFTEMP, 1e-30_fp)
State_Chm%IsorropBisulfate(I,J,L)= MAX(BISULTEMP, 1e-30_fp)
State_Chm%AteSulfate(I,J,L) = MAX(SULFTEMP, 1e-30_fp)
State_Chm%AteBisulfate(I,J,L)= MAX(BISULTEMP, 1e-30_fp)
State_Chm%AeroH2O(I,J,L,1+NDUST) = AERLIQ(8) * 18e+0_fp ! mol/m3 -> g/m3

State_Chm%AteIONIC(I,J,L) = max(OTHER(5), 1e-30_fp) ! mol/m3
State_Chm%AteOH(I,J,L) = max(OTHER(4), 1E-30_fp) ! mol/m3

NUM_SAV = ( Spc(id_NH3 )%Conc(I,J,L) / 17.0_fp &
+ Spc(id_NH4 )%Conc(I,J,L) / 18.0_fp &
+ Spc(id_SALA)%Conc(I,J,L) * 0.3061_fp / 23.0_fp )
Expand Down
116 changes: 86 additions & 30 deletions GeosCore/apm_driv_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -510,7 +510,7 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
REAL*8 :: HETP_HCl, HETP_Na, HETP_Ca, HETP_K
REAL*8 :: HETP_Mg, HETP_H, HETP_OH, HETP_LWC
REAL*8 :: HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg
REAL*8 :: HETP_frSO4, HETP_num
REAL*8 :: HETP_frSO4, HETP_num, HETP_IONIC

!--------------------------------------------------------------------------
! These do not appear to be used anymore (bmy, 6/18/19)
Expand Down Expand Up @@ -723,24 +723,25 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
!$OMP END PARALLEL DO

if(IFDOISRP==1.or.IFDOISRP==2.or.IFDOISRP==3.or.IFDOISRP==4)then
!******* DO ISORROPIA *******
!$OMP PARALLEL DO &
!$OMP DEFAULT( SHARED ) &
!$OMP PRIVATE( I, J, L, N, WI, WT, GAS1, TEMPI )&
!$OMP PRIVATE( RHI, VOL, TSO4, TNH3, TNA, TCL, ANO3, GNO3 ) &
!$OMP PRIVATE( TCA, TMG, TK, SCASI ) &
!$OMP PRIVATE( TNO3, AERLIQ, OTHER, TNH4, TNIT ) &
!$OMP PRIVATE( TSO4COAT ,DNH3MAX ) &
!$OMP PRIVATE( TH2O, XM,VRATIO) &
!$OMP PRIVATE( SO4_bin_sum, SEA_bin_sum) &
!$OMP PRIVATE( HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 ) &
!$OMP PRIVATE( HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl ) &
!$OMP PRIVATE( HETP_HCl, HETP_Na, HETP_Ca, HETP_K ) &
!$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC ) &
!$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg ) &
!$OMP PRIVATE( HETP_frSO4, HETP_num ) &
!$OMP COLLAPSE( 3 ) &
!$OMP SCHEDULE( DYNAMIC, 8 )
!******* DO AEROSOL THERMODYNAMICAL EQUILIBRIUM *******
!$OMP PARALLEL DO &
!$OMP DEFAULT( SHARED ) &
!$OMP PRIVATE( I, J, L, M )&
!$OMP PRIVATE( N, WI, WT, GAS1 )&
!$OMP PRIVATE( TEMPI, RHI, VOL, TSO4 )&
!$OMP PRIVATE( TNH3, TNA, TCL, ANO3 )&
!$OMP PRIVATE( GNO3, TCA, TMG, TK )&
!$OMP PRIVATE( TNO3, AERLIQ, OTHER, TNH4 )&
!$OMP PRIVATE( TNIT, TSO4COAT, DNH3MAX, TH2O )&
!$OMP PRIVATE( XM, VRATIO, SO4_bin_sum, SEA_bin_sum )&
!$OMP PRIVATE( HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4 )&
!$OMP PRIVATE( HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl )&
!$OMP PRIVATE( HETP_HCl, HETP_Na, HETP_Ca, HETP_K )&
!$OMP PRIVATE( HETP_Mg, HETP_H, HETP_OH, HETP_LWC )&
!$OMP PRIVATE( HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg )&
!$OMP PRIVATE( HETP_frSO4, HETP_num, HETP_IONIC )&
!$OMP COLLAPSE( 3 )&
!$OMP SCHEDULE( DYNAMIC, 8 )
DO L = 1, State_Grid%NZ
DO J = 1, State_Grid%NY
DO I = 1, State_Grid%NX
Expand Down Expand Up @@ -852,18 +853,73 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
WI(7) = MAX( TK, CONMIN )
WI(8) = MAX( TMG, CONMIN )

! Zero variables for safety's sake
GAS1 = 0.0d0
AERLIQ = 0.0d0
HETP_SO4 = 0.0d0
HETP_HSO4 = 0.0d0
HETP_CaSO4 = 0.0d0
HETP_NH4 = 0.0d0
HETP_NH3 = 0.0d0
HETP_NO3 = 0.0d0
HETP_HNO3 = 0.0d0
HETP_Cl = 0.0d0
HETP_HCl = 0.0d0
HETP_Na = 0.0d0
HETP_Ca = 0.0d0
HETP_K = 0.0d0
HETP_Mg = 0.0d0
HETP_H = 0.0d0
HETP_OH = 0.0d0
HETP_LWC = 0.0d0
HETP_frNa = 0.0d0
HETP_frCa = 0.0d0
HETP_frK = 0.0d0
HETP_frMg = 0.0d0
HETP_frSO4 = 0.0d0
HETP_IONIC = 0.0d0
HETP_num = 0.0d0

! Perform aerosol thermodynamic equilibrium
! For safety
GAS = 0.0d0
AERLIQ = 0.0d0
Call MACH_HETP_Main_15Cases( WI(2), WI(3), WI(4), WI(1), WI(5), &
WI(6), WI(7), WI(8), TEMPI, RHI, &
HETP_SO4, HETP_HSO4, HETP_CaSO4, HETP_NH4, &
HETP_NH3, HETP_NO3, HETP_HNO3, HETP_Cl, &
HETP_HCl, HETP_Na, HETP_Ca, HETP_K, &
HETP_Mg, HETP_H, HETP_OH, HETP_LWC, &
HETP_frNa, HETP_frCa, HETP_frK, HETP_frMg, &
HETP_frSO4, HETP_num )
Call MACH_HETP_Main_15Cases( &
!
! --- Inputs ---
TS = WI(2), &
TA = WI(3), &
TN = WI(4), &
TNa = WI(1), &
TCl = WI(5), &
TCa = WI(6), &
TK = WI(7), &
TMg = WI(8), &
temp = TEMPI, &
rh = RHI, &
!
! --- Outputs ---
SO4 = HETP_SO4, &
HSO4 = HETP_HSO4, &
CaSO4 = HETP_CaSO4, &
NH4 = HETP_NH4, &
NH3 = HETP_NH3, &
NO3 = HETP_NO3, &
HNO3 = HETP_HNO3, &
Cl = HETP_Cl, &
HCl = HETP_HCl, &
Na = HETP_Na, &
Ca = HETP_Ca, &
K = HETP_K, &
Mg = HETP_Mg, &
H = HETP_H, &
OH = HETP_OH, &
LWC = HETP_LWC, &
frNa = HETP_frNa, &
frCa = HETP_frCa, &
frK = HETP_frK, &
frMg = HETP_frMg, &
frSO4 = HETP_frSO4, &
IONIC = HETP_IONIC, &
case_number = HETP_num )

! Spoof ISORROPIA outputs which are still used
GAS1(1) = HETP_NH3
GAS1(2) = HETP_HNO3
Expand Down
90 changes: 90 additions & 0 deletions GeosCore/flexgrid_read_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ MODULE FlexGrid_Read_Mod
PUBLIC :: FlexGrid_Read_A1
PUBLIC :: FlexGrid_Read_A1dyn
PUBLIC :: FlexGrid_Read_A3
PUBLIC :: FlexGrid_Read_Dyn
PUBLIC :: FlexGrid_Read_I1dyn_1
PUBLIC :: FlexGrid_Read_I1dyn_2
PUBLIC :: FlexGrid_Read_I3_1
Expand Down Expand Up @@ -1256,6 +1257,95 @@ END SUBROUTINE FlexGrid_Read_A3mstE
!------------------------------------------------------------------------------
!BOP
!
! !IROUTINE: FlexGrid_Read_Dyn
!
! !DESCRIPTION: Routine to read DynHeating variables and attributes
! from a NetCDF file containing 3-hr time-averaged (Dyn) data.
!
SUBROUTINE FlexGrid_Read_Dyn( YYYYMMDD, HHMMSS, Input_Opt, &
State_Grid, State_Met )
!
! !USES:
!
USE Input_Opt_Mod, ONLY : OptInput
USE State_Grid_Mod, ONLY : GrdState
USE State_Met_Mod, ONLY : MetState
USE Get_Met_Mod
!
! !INPUT PARAMETERS:
!
INTEGER, INTENT(IN) :: YYYYMMDD ! GMT date in YYYY/MM/DD format
INTEGER, INTENT(IN) :: HHMMSS ! GMT time in hh:mm:ss format
TYPE(OptInput), INTENT(IN) :: Input_Opt ! Input Options object
TYPE(GrdState), INTENT(IN) :: State_Grid ! Grid State object
!
! !INPUT/OUTPUT PARAMETERS:
!
TYPE(MetState), INTENT(INOUT) :: State_Met ! Meteorology State object
!
! !REVISION HISTORY:
! 14 Mar 2024 - C. Barker - Initial version
! See https://github.com/geoschem/geos-chem for complete history
!EOP
!------------------------------------------------------------------------------
!BOC
!
! !LOCAL VARIABLES:
!
! Scalars
INTEGER :: t_index ! Time index
CHARACTER(LEN=16) :: stamp ! Time and date stamp
CHARACTER(LEN=255) :: v_name ! netCDF variable name
CHARACTER(LEN=255) :: errMsg ! Error message
CHARACTER(LEN=255) :: caller ! Name of this routine

! Saved scalars
INTEGER, SAVE :: lastDate = -1 ! Stores last YYYYMMDD value
INTEGER, SAVE :: lastTime = -1 ! Stores last hhmmss value

! Arrays
REAL*4 :: Q(State_Grid%NX,State_Grid%NY,State_Grid%NZ)

!======================================================================
! Skip if we have already read data for this date & time
!======================================================================
IF ( YYYYMMDD == lastDate .and. HHMMSS == lastTime ) THEN
stamp = TimeStamp_String( YYYYMMDD, HHMMSS )
WRITE( 6, 20 ) stamp
20 FORMAT( ' - FLEXGRID DynHeating met fields for ', a, &
' have been read already' )
RETURN
ENDIF

!======================================================================
! Get met fields from HEMCO
!======================================================================

! Read DynHeating
v_name = "DynHeating"
CALL Get_Met_3D( Input_Opt, State_Grid, Q, TRIM(v_name), t_index=1 )
State_Met%DynHeating = Q

! Echo info
stamp = TimeStamp_String( YYYYMMDD, HHMMSS )
WRITE( 6, 10 ) stamp
10 FORMAT( ' - Found all DynH met fields for ', a )

!======================================================================
! Cleanup and quit
!======================================================================

! Save date & time for next iteration
lastDate = YYYYMMDD
lastTime = HHMMSS

END SUBROUTINE FlexGrid_Read_Dyn
!EOC
!------------------------------------------------------------------------------
! GEOS-Chem Global Chemical Transport Model !
!------------------------------------------------------------------------------
!BOP
!
! !IROUTINE: FlexGrid_Read_I3_1
!
! !DESCRIPTION: Routine to read variables and attributes from a NetCDF
Expand Down
Loading