GEOS-Chem v8-03-02

From Geos-chem
Jump to: navigation, search

Overview

BETA RELEASE -- 07 Sep 2010

What's new in this version

GEOS-Chem v8-03-02 contains the following major updates and improvements:

  1. Terrestrial and deep ocean mercury and updated mercury chemistry (N. Smith-Downey, E. Sunderland, C. Holmes)
  2. Updated CO2 simulation (R. Nassar)
  3. 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

Post-release patches

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

This code was removed from GEOS-Chem v10-01 and higher versions. All emissions are now handled by HEMCO.

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 GEOS-Chem v11-01, 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 )

with:

     ITS_TIME = ( INT( HR1 ) == 00 )

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").

--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:

--Bob Y. 12:58, 30 June 2010 (EDT)

Fix for EPA/NEI 2005 emissions

This code was removed from GEOS-Chem v10-01 and higher versions. All emissions are now handled by HEMCO.

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 GEOS-Chem v11-01, 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

NOTE: This edgar_mod.F was removed from GEOS-Chem v10-01 and higher versions. Emissions in these versions are now handled by HEMCO.

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)

Duplicated diagnostics

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.

This code was removed from GEOS-Chem v10-01 and higher versions. The HEMCO emissions component now processes all emissions.

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)