- 1 Overview
- 2 Previous issues now resolved in v8-03-02
- 2.1 Post-release patches
- 2.2 Patches from v8-03-01
- 2.3 Fix for EPA/NEI 2005 emissions
- 2.4 Minor fixes in gamap_mod.f
- 2.5 Bug fix for ND42 diagnostic and ISORROPIA II
- 2.6 Minor fix for AOD calculation
- 2.7 Avoid using unallocated arrays in edgar_mod.f
- 2.8 Transport fix for GEOS-5 nested grid simulations
- 2.9 TINY parameter in convection_mod.f
- 3 Outstanding issues not yet resolved in v8-03-02
BETA RELEASE -- 07 Sep 2010
What's new in this version
GEOS-Chem v8-03-02 contains the following major updates and improvements:
- Terrestrial and deep ocean mercury and updated mercury chemistry (N. Smith-Downey, E. Sunderland, C. Holmes)
- Updated CO2 simulation (R. Nassar)
- Liquid water content taken from GEOS-5 met fields (J. Fisher)
--Bob Y. 16:36, 7 September 2010 (EDT)
Previous issues now resolved in v8-03-02
We made a few important fixes to the release of v8-03-02 (but before the release of the next version, v9-01-01. You should update your GEOS-Chem v8-03-02 source code and run directories by doing a "Git pull" command. Please see our our wiki post about how to download updates from the Git repositories.
Fix for isoprene nitrates in globchem.dat
NOTE: SMVGEAR will be removed from GEOS-Chem v11-01 and higher versions once FlexChem is implemented.
Fabien Paulot discovered an error in the reaction for isoprene nitrates in globchem.dat for the SOA and standard simulations. This error has now been corrected. The updated files have been added to the Git repository for run directories.
Fix for KPP solver files
Mike Barkley noted that the KPP solver files in the KPP/standard/ and the KPP/SOA directories had to be rebuilt to incorporate the changes in the globchem.dat file. This was done on 17 Sep 10 and added to the GEOS-Chem Git repository as a patch (name "New KPP scheme for SOA and standard chemistry", tag "v8-03-02-Patch-KPP".
Parallelization problem in setemis.f
We found that a particular line of code in setemis.f was causing GEOS-Chem to scale poorly. As a result, when GEOS-Chem was running on 8 CPU's, it would scale as if it were only running on ~ 3 CPU's.
To solve the problem, we moved the offending line of code (which was added to scale NOx emissions) into a previous loop over grid boxes.
This fix was added to the GEOS-Chem Git repository on 12 Nov 2010 as a patch (name: "Parallelization problem in setemis.f", tag "v8-03-02-Patch-setemis").
ND49 file close error
NOTE: We are phasing out binary punch diagnostics output, in favor of netCDF output.
A GEOS-Chem user reported that the ND49 diagnostic timeseries files (e.g. tsYYYYMMDD.bpch) were not being closed properly. We fixed this by modifying the IF statement in the function ITS_TIME_TO_CLOSE_FILE (in diag49_mod.f) so that it would close the files at the correct time in the simulation.
We replaced the line:
ITS_TIME = ( INT( HR1 ) == 24 )
ITS_TIME = ( INT( HR1 ) == 00 )
--Bob Y. 10:15, 12 November 2010 (EST)
Patches from v8-03-01
The following bug fix patches are now standardized in v8-03-02:
- Patch to enable call to SOA_PARA_INIT
- Patch to fix declaration of IONIC in ISORROPIA II
- Patch to fix bug in Aromatic SOA
- Patch to scale AOD diagnostic output to other wavelengths
--Bob Y. 12:58, 30 June 2010 (EDT)
Fix for EPA/NEI 2005 emissions
Aaron van Donkelaar submitted updated EPA/NEI05 emissions files in order to fix abnormally low VOC emissions. This fix will be standardized in v8-03-02. Please see this wiki page for more information.
--Bob Y. 15:38, 12 July 2010 (EDT)
Minor fixes in gamap_mod.f
Prasad Kasibhatla reported a bug in gamap_mod.f that was caused by the definition of the parameters:
INTEGER, PARAMETER :: MAXDIAG = 70 INTEGER, PARAMETER :: MAXTRACER = 120
The problem is that when the actual number of tracers is increased beyond 120, this results in an array-out-of-bounds error.
The fix is to use the MAX_DIAG and MAX_TRACER parameters from the CMN_DIAG header file to define the MAXDIAG and MAXTRACER parameters in gamap_mod.f, as follows:
INTEGER, PARAMETER :: MAXDIAG = MAX_DIAG INTEGER, PARAMETER :: MAXTRACER = MAX_TRACER
and also to define MAX_TRACER (in the CMN_DIAG header file) as follows:
INTEGER, PARAMETER :: MAX_TRACER = NNPAR+6 ! For non-TOMAS simulations
The NNPAR+6 is required for compatibility with the ND09 diagnostic. Therefore, now whenever NNPAR is updated, the values of MAXTRACER and MAXDIAG in gamap_mod.f will also be updated.
--Bob Y. 14:35, 3 August 2010 (EDT)
Bug fix for ND42 diagnostic and ISORROPIA II
NOTE: We are phasing out binary punch diagnostics output, in favor of netCDF output.
Eric Sofen reported a minor bug fix for the ND42 diagnostic in isoropiaII_mod.f. The following line of code:
PH_SAV = -999d0
should have been:
PH_SAV(I,J,L) = -999d0
This only affects ND42 diagnostic output and not the computation of the ATE diagnostic.
--Bob Y. 14:42, 3 August 2010 (EDT)
Minor fix for AOD calculation
Aaron van Donkelaar wrote:
- I've come across a minor bug in the calculation of AOD within aerosol_mod.f. At around line 950, the lines:
! Loop over relative humidity bins DO R = 1, NRH ! Wet radius in "jv_spec.dat" RW(R) = RAA(4,IND(N)+R-1) ! Wet frac of aerosol FWET = (RW(R)**3 - RW(1)**3) / RW(R)**3 ! Extinction efficiency Q for each RH bin QW(R) = QAA(4,IND(N)+R-1)*FWET + QAA(4,IND(N))*(1.d0-FWET) ENDDO
- should be replaced with:
! Loop over relative humidity bins DO R = 1, NRH ! Wet radius in "jv_spec.dat" RW(R) = RAA(4,IND(N)+R-1) ! Extinction efficiency Q for each RH bin QW(R) = QAA(4,IND(N)+R-1) ENDDO
- As a result, the variable FWET is no longer used and no longer needs to be declared in routine RDAER.
- Basically the extinction efficiency for each RH bin is currently being calculated as the water volume-weighted average of each bin's RH and dry value, when the value corresponding to each bin's RH should simply be directly used. The implications should not be large (Colette estimated between 4-8%), but this ought to be corrected.
--Bob Y. 14:48, 3 August 2010 (EDT)
Avoid using unallocated arrays in edgar_mod.f
Joseph Enberg and Bob Yantosca found a minor bug in edgar_mod.f. The following ship emission arrays (which are not allocated if LEDGARSHP = .FALSE.) were being referenced regardless in the routine EDGAR_TOTAL_Tg in edgar_mod.f:
T_NOxSh = SUM( EDGAR_NOx_SHIP ) * ( 14d0/46d0 ) / 1d9 T_COSh = SUM( EDGAR_CO_SHIP ) / 1d9 T_SO2sh = SUM( EDGAR_SO2_SHIP ) * ( 32d0/64d0 ) / 1d9
The quickest fix was to place these arrays in an IF block to make sure they are only referenced if allocated:
IF ( LEDGARSHIP ) THEN T_NOxSh = SUM( EDGAR_NOx_SHIP ) * ( 14d0/46d0 ) / 1d9 T_COSh = SUM( EDGAR_CO_SHIP ) / 1d9 T_SO2sh = SUM( EDGAR_SO2_SHIP ) * ( 32d0/64d0 ) / 1d9 ELSE T_NOxSh = 0d0 T_COSh = 0d0 T_SO2Sh = 0d0 ENDIF
--Bob Y. 16:06, 4 August 2010 (EDT)
Transport fix for GEOS-5 nested grid simulations
Please see this wiki post for more information about a fix that affects the TPCORE advection with GEOS_5 0.5° x 0.666° nested grid simulations.
--Bob Y. 10:57, 17 September 2010 (EDT)
TINY parameter in convection_mod.f
In GEOS-Chem v8-03-01 and prior versions we have the following situation in routine NFCLDMX (convection_mod.f):
REAL*8, PARAMETER :: TINY = 1d-14 ... ! Add a check to set negative values in Q to TINY ! (ccc, 4/15/09) !$OMP PARALLEL DO !$OMP+DEFAULT( SHARED ) !$OMP+PRIVATE( N, L, J, I ) DO N = 1,NC DO L = 1,LLPAR DO J = 1,JJPAR DO I = 1,IIPAR Q(I,J,L,N) = MAX(Q(I,J,L,N),TINY) ENDDO ENDDO ENDDO ENDDO !$OMP END PARALLEL DO
TINY is also used in the routine to determine if there is sufficient cloud mass flux. However, using it to reset negative values may also indavertently reset values of tracers (such as Rn) which concentrations inherently lower than 1e-14 v/v.
The following fix was made in GEOS-Chem v8-03-02 and higher versions. We use a new parameter TINY2 that is used solely for the purpose of resetting negative values. TINY2 is set several orders of magnitude smaller:
REAL*8, PARAMETER :: TINY2 = 1d-30 ... ! Add a check to set negative values in Q to TINY ! (ccc, 4/15/09) !$OMP PARALLEL DO !$OMP+DEFAULT( SHARED ) !$OMP+PRIVATE( N, L, J, I ) DO N = 1,NC DO L = 1,LLPAR DO J = 1,JJPAR DO I = 1,IIPAR Q(I,J,L,N) = MAX(Q(I,J,L,N),TINY2) ENDDO ENDDO ENDDO ENDDO !$OMP END PARALLEL DO
Therefore, if you are using an earlier version of the code, we recommend making this fix.
--Bob Y. 16:10, 19 May 2011 (EDT)
Outstanding issues not yet resolved in v8-03-02
Incorrect units for SNOMAS in dust_mod.f
This issue has now been corrected in GEOS-Chem v9-01-01.
In GEOS-5, the snow height field SNOMAS was incorrectly reported as "m H2O", but was really "mm H2O". However, in the routine SRC_DUST_DEAD (dust_mod.f) we never made the corresponding change. Therefore the following fix will need to be placed into SRC_DUST_DEAD:
! Snow height [m H2O] #if defined( GEOS_5 ) || defined( MERRA ) !-------------------------------------------------------------- ! Prior to 9/3/10: ! SNOMAS in GEOS-5 was originally reported as m H2O but this ! was mis-lableled. Both GEOS-5 and MERRA SNOMAS field have ! units of liquid-equivalent mm H2O. Therefore, we need to ! divide by 1000 to convert mm to m. (bmy, 9/3/10) !SNW_HGT_LQD(I) = SNOMAS(I,J) !-------------------------------------------------------------- SNW_HGT_LQD(I) = SNOMAS(I,J) / 1000d0 #else SNW_HGT_LQD(I) = SNOW(I,J) / 1000d0 #endif
The MERRA SNOMAS field will also have units of "mm H2O", so it will use the same line of code.
--Bob Y. 15:49, 23 November 2011 (EST)
This issue has now been fixed in GEOS-Chem v9-01-01.
A problem where the ND14 and ND15 diagnostics seemingly appeared twice in the binary punch file output is not yet resolved in v8-03-02.
--Bob Y. 15:50, 23 November 2011 (EST)
Double counting biofuel emissions over Asia
This update was tested in the 1-month benchmark simulation v9-01-02s and approved on 5 Nov 2011.
Double counting of biofuel emissions over Asia happened when using Streets emissions between the years 2001 and 2005.
--Bob Y. 15:51, 23 November 2011 (EST)