GEOS-Chem v8-02-01
Contents
- 1 Overview
- 2 1-year benchmarks
- 3 Previous issues now resolved in v8-02-01
- 3.1 Output selected tracers only for dry and wet deposition, convection and rain diagnotics
- 3.2 On-the-fly regridding for 0.5x0.667 nested grids
- 3.3 Bug with EMEP ship emissions for nested grids
- 3.4 Bug in sulfate_mod.f to turn off biomass emissions
- 3.5 Minor error in gamap_mod.f
- 3.6 Bug fix for Streets emissions on 0.5x0.666 nested grid
- 4 Outstanding Issues in v8-02-01
Overview
CHEMISTRY RELEASE date May 26, 2009.
- Previous version:GEOS-Chem v8-01-04
- Next version: GEOS-Chem v8-02-02
What's new in this version
Contains everything v8-01-04, plus the following:
- Glyoxal chemistry (May Fu) (NOTE: This is an option which is turned off by default)
- Updated photolysis cross-sections and quantum yields to FAST-JX (Jingqiu Mao)
- Updated reaction rates (Jingqiu Mao, Dylan Millet, Palmer group @ U. Edinburgh)
- HO2 uptake (Lyatt Jaeglé)
- Updated dust single scattering albedo (Randall Martin)
1-year benchmarks
Run0
Three GEOS-Chem model versions were compared to each other:
Color | Quantity Plotted | Met Field Type | Anthro Emissions | Photolysis Mechanism |
Chemical Mechanism |
Annual Mean OH [105 molec/cm3] |
---|---|---|---|---|---|---|
Red | v8-01-04 Run1 | GEOS-5 4x5 version 5.0.1 w/ "quick fix" for optical depth spinup: 2005 run: 2005 |
GEIA/Piccot EDGAR emissions EMEP European emissions BRAVO Mexican emissions David Streets 2006 emissions CAC Canadian emissions EPA/NEI99 with ICARTT fix EDGAR ship emissions ARCTAS ship SO2 emissions Anthro scale year 2005 |
"old" jv_spec.dat | Mostly unchanged from v5-07-08 except for a few revisions |
10.294 |
Green | v8-01-04 Run2 | GEOS-5 4x5 version 5.1.0, "reprocessed" met fields spinup: 2004 run: 2005 |
" " | " " | " " | 11.099 |
Blue | v8-02-01 Run0 | " " | " " | "updated" jv_spec.dat | "updated" chemical mechanism (cf. J. Mao, D. Millet, T-M. Fu, Palmer Group @ U. Edinburgh) |
11.812 |
Black | Observations |
SUMMARY:
- v8-01-04 Run2 vs. v8-01-04 Run1 is a clean comparison between the GEOS-5.0.1 and GEOS-5.1.0 met products.
- v8-02-01 Run0 vs. v8-01-04 Run2 is a clean validation for the new chemistry mechanism, photolysis rates, and other updates that were added into v8-02-01.
- All runs used the same:
- A.T.E. Algorithm = RPMARES
- Advection routine: "new" tpcore
- Biogenic emissions: "new" MEGAN AEF's for isoprene
- GFED2 biomass emissions
- Aircraft NOx emissions
- Approximate random cloud overlap option in photolysis
We have archived the files for v8-02-01-geos5-Run0 into TARBALL (i.e. tar.gz) format to save disk space. To download the TARBALL containing all relevant files, type:
ftp ftp.as.harvard.edu get gcgrid/geos-chem/1yr_benchmarks/v8-02-01/v8-02-01-geos5-Run0.tar.gz
And then to extract the data, type:
tar xvzf v8-02-01-geos5-Run0.tar.gz
The comparison plots will be in located in the output/pdf folder.
--Bob Yantosca (talk) 15:42, 20 June 2017 (UTC)
Previous issues now resolved in v8-02-01
The following user-reported bugs have now been corrected in v8-02-01:
Output selected tracers only for dry and wet deposition, convection and rain diagnotics
NOTE: We are phasing out binary punch diagnostics output GEOS-Chem v11-01, in favor of netCDF output.
Mike Barkley wrote:
- Hi all,
- I've noticed for several of the diagnostics that when the ctm.bpch file is produced all the possible tracers are always written irrespective of whether or not you have only specified certain ones in the input.geos file.
- For example, for dry deposition one might want only: NO2, O3, PAN, HNO3, H2O2, PMN, PPN, R4N2, CH2O & N2O5. In which case the settings would be in input.geos:
ND44: Drydep flx/vel : 1 1 2 3 7 8 15 16 17 20 22
- However, if you run the model (I used 4x5 resolution, ifort v10 compiler,4 cores) ALL the dry deposition species are dumped out.
- This error also occurs for the following diagnostics:
1) ND17 & ND18 2) ND37: Updraft scav frac : 20 7 8 20 24
- For these species it only outputs tracer numbers: 30028, 30029 & 30041 and the tracer names are not written out to the bpch file (I use gamap v2.12) ??
3) ND38 & ND39
Claire Carouge wrote:
- Hi Mike,
- The code that writes the diagnostics you've indicated was not taking into account the specified list of tracers. So all tracers were always written in ctm.bpch.
- For ND37, the selection of tracers was badly done.
- To correct this, you only need to make changes in the file diag3.f.
- For diagnostic ND37, you need to change the lines :
DO M = 1, TMAX(37) N = TINDEX(37,M) ! Cycle if N is too high IF ( N > NMAX ) CYCLE ! Tracer number NN = GET_WETDEP_IDWETD( N ) DO L = 1, LD37 ARRAY(:,:,L) = AD37(:,:,L,M) / SCALECONV ENDDO
- by:
! Get actual # of soluble tracers NMAX = GET_WETDEP_NSOL() ! Loop over soluble tracers DO N = 1, NMAX ! Tracer number NN = GET_WETDEP_IDWETD( N ) ! To output only the species asked in input.geos ! (ccc, 5/15/09) MM = 1 MMB = 0 DO WHILE ( MMB /= NN .AND. MM <= TMAX(37) ) MMB = TINDEX(37,MM) MM = MM + 1 ENDDO IF ( MMB /= NN ) CYCLE DO L = 1, LD37 ARRAY(:,:,L) = AD37(:,:,L,N) / SCALECONV ENDDO
- For each diagnostic ND17, ND18, ND38, ND39 and ND44, you need to add the following lines :
! To output only the species asked in input.geos ! (ccc, 5/15/09) MM = 1 MMB = 0 DO WHILE ( MMB /= NN .AND. MM <= TMAX(17) ) MMB = TINDEX(17,MM) MM = MM + 1 ENDDO IF ( MMB /= NN ) CYCLE
- These lines have to be added between the line initializing NN and the lines populating the ARRAY variable. See how it's done in ND37 (upper in this email) for an example. You need to change the index in TMAX and TINDEX to match the diagnostic number.
- The diagnostic ND44 writes two different categories to ctm.bpch, 'DRYD-FLX' and 'DRYD-VEL'. There is one loop over the tracers for each category so you need to add the previous lines of code into each loop. Other diagnostics write two categories to ctm.bpch but they are written in the same tracer loop, so it is enough to add the previous lines of code only once.
--Ccarouge 09:49, 19 May 2009 (EDT)
On-the-fly regridding for 0.5x0.667 nested grids
NOTE: Module regrid_1x1_mod.F was removed from GEOS-Chem v10-01 and higher versions.
Win Trivitayanurak wrote:
- Hi,
- this is a follow up to the data regridding problem that I ahve discussed with Philippe the other day. The problem was that, for my China nested-grid 0.5x0.667 simulation, the subroutine DO_THE_REGRIDDING in regrid_1x1_mod.f previously did not have the case for nested-grid 0.5x0.667. Therefore, I wrote a new subroutine called REGRID_05x0666_NESTED and added the call for it inside the existing subroutine DO_THE_REGRIDDING. This should work just fine w/ a N.America nested-grid 0.5x0.667 simulation too but will halt the run if used for running other region, which only makes sense. Please see in the attached file.
The regrid_1x1_mod.f file given by Win was included in GEOS-Chem v8-02-01.
--Ccarouge 15:50, 7 May 2009 (EDT)
--Bob Yantosca (talk) 20:34, 13 April 2016 (UTC)
Bug with EMEP ship emissions for nested grids
This update was introduced in emfossil.f in GEOS-Chem v8-02-01.
NOTE: routine emfossil.F was removed from GEOS-Chem v10-01 and higher versions. Emissions in these versions are now handled by HEMCO.
Please see this wiki post for a description of an error in the EMEP European anthropogenic emissions for nested-grid simulations.
--Bob Y. 11:54, 20 December 2012 (EST)
Bug in sulfate_mod.f to turn off biomass emissions
NOTE: This code was removed from GEOS-Chem v10-01 and higher versions. Emissions in these versions are now handled by HEMCO.
Win Trivitayanurak wrote:
- In subroutine EMISSSULFATE inside sulfate_mod.f, there should be the switch LBIOMASS to check if the GET_BIOMASS SO2 and GET_BIOMASS_NH3 should be called or not. Before this fix, the code leaves no choice to cleanly turn off biomass burning emission completely because these two calls would occur everytime it is a new month. Please see the attached file in the mentioned subroutine where I commented.
The modifications to sulfate_mod.f file given by Win are now implemented in v8-02-01.
--Ccarouge 15:50, 7 May 2009 (EDT)
Minor error in gamap_mod.f
Noelle Selin wrote:
- In my testing/debugging, the compiler found another problem: in gamap_mod, line 1313 and forward (init_tracerinfo):
DO T = 1, N_TRACERS ! Store quantities for each tracer NAME (T,45) = TRACER_NAME(T) FNAME(T,45) = TRIM( NAME(T,45) ) // ' tracer' MOLC (T,45) = INT( TRACER_COEFF(T,1) ) SCALE(T,45) = 1.0e+9 INDEX(T,45) = N
- The error pulled was that N did not have a previous value. Should it be T? (I changed it to T and it seemed OK...but again it's gamap_mod so it doesn't seem like a big deal).
Philippe Le Sager wrote:
- yes, it should be T. We recently found about that when debugging for Jenny, and we already put it in the next version being tested now.
--Bob Y. 12:28, 6 May 2009 (EDT)
Bug fix for Streets emissions on 0.5x0.666 nested grid
NOTE: This code was removed from GEOS-Chem v10-01 and higher versions. The Streets emissions are now handed by HEMCO.
We found the v8-01-04 of Geos-Chem doesn't read the correct Streets emission files for the 0.5x0.666 nested grid over China. Right now it would read Streets emissions at 1x1 resolution and regrid them.
To correct it, you need to change :
! Read David Streets' emisisons over China / SE ASia IF ( LSTREETS .and. ITS_A_NEW_MONTH() ) THEN CALL EMISS_STREETS_ANTHRO ENDIF
by :
! Read David Streets' emisisons over China / SE ASia IF ( LSTREETS .and. ITS_A_NEW_MONTH() ) THEN #if defined(GRID05x0666) CALL EMISS_STREETS_ANTHRO_05x0666 #else CALL EMISS_STREETS_ANTHRO #endif ENDIF
in emission_mod.f for every call to EMISS_STREETS_ANTHRO. I.e in the case of full chemistry, offline aerosol, tagged CO, CH4, CO2 and offline H2/HD.
In streets_anthro_mod.f, in the subroutine emiss_streets_anthro_05x0666, you need to change all the lines :
CALL READ_STREETS(...
by :
CALL READ_STREETS_05x0666(...
WARNING : make sure to change the calls to READ_STREETS only in the emiss_streets_anthro_05x0666 subroutine and NOT in emiss_streets_anthro.
--Ccarouge 15:30, 11 March 2009 (EDT)
--Bob Yantosca (talk) 20:32, 13 April 2016 (UTC)
Outstanding Issues in v8-02-01
Bug with ND52 diagnostic
NOTE: We are phasing out binary punch diagnostics output GEOS-Chem v11-01, in favor of netCDF output.
The ND52 diagnostic for gamma(HO2) doesn't work if you ask to output a subset of levels. You need to add a check on the levels when calculating AD52. You need to change the following lines in calcrate.f:
IF ( ND52 > 0 ) THEN ! Archive gamma HO2 in AD52 AD52(IX,IY,IZ) = & AD52(IX,IY,IZ) + DUMMY3(KLOOP) ENDIF
by
IF ( ND52 > 0 ) THEN ! Archive gamma HO2 in AD52 IF ( IZ <= LD52 ) THEN AD52(IX,IY,IZ) = & AD52(IX,IY,IZ) + DUMMY3(KLOOP) ENDIF ENDIF
This bug was solved in v8-02-02.
--Ccarouge 16:51, 16 June 2009 (EDT)
Bug with PRIVATE declaration in sulfate_mod.f
In SRCNH3 (in sulfate_mod.f), please replace the PRIVATE declaration line 4939 :
!$OMP+PRIVATE( I, J )
with the PRIVATE declaration :
!$OMP+PRIVATE( I, J, AREA_CM2, EPA_AN, EPA_BF, CAC_AN )
and in SRCSO4 please change the PRIVATE declaration in line 4690 from:
!$OMP+PRIVATE( I, J, AREA_CM2, EPA_AN, EPA_BF )
to
!$OMP+PRIVATE( I, J, AREA_CM2, EPA_AN, EPA_BF, CAC_AN )
In both cases the CAC_AN variable has to be added to the PRIVATE declaration.
--Ccarouge 10:22, 28 May 2009 (EDT)
Bug with online 2ndary aerosol
Replace line 412 of aerosol_mod.f:
IF ( IDTSOAM ) THEN
with:
IF ( IDTSOAM > 0 ) THEN
This is a bug in GEOS-Chem v8-02-01 release. However, it is more of a matter of Fortran style. The expression in parentheses in the IF statement should be a logical expression and not an integer expression, as is the case above. Some compilers (e.g. PGI) will always choke on this. However, other compilers (e.g. IFORT) will evaluate the expression as TRUE if the integer IDTSOAM is nonzero. This will be fixed in the following release.
--phs 09:56, 28 May 2009 (EDT)
--Bob Y. 10:46, 28 May 2009 (EDT)
Typo in HO2 uptake
Jingqiu Mao found a typo in the function calculating HO2 uptake by aerosols. This function was added in v8-02-01 and thus the typo only affects v8-02-01 and v8-02-02.
In calcrate.f, line 1338 (v8-02-01) or line 1423 (v8-02-02) there is a misplaced space. Please change:
kaq = ( k1 * (A1 - 1.d0) + k 2) / (A1**2)
by
kaq = ( k1 * (A1 - 1.d0) + k2) / (A1**2)
--Ccarouge 17:41, 9 June 2009 (EDT)