GEOS-Chem v8-02-03

From Geos-chem
Revision as of 14:52, 20 July 2009 by Bmy (Talk | contribs) (Minor fixes in wet deposition)

Jump to: navigation, search

Overview

BETA RELEASE TBD -- still in testing

Will contain everything in GEOS-Chem v8-02-02, plus:

  • Kpp chemical solver package (Adrian Sandu group @ Virginia Tech group)
  • ICOADS ship emissions (Chulkyu Lee)
  • Use of GEOS-5 ozone columns (C. Carouge, still in validation)
  • Removal of support for obsolete SGI and COMPAQ compilers

Previous issues now resolved in v8-02-03

Format problem in planeflight_mod.f

Jingqiu Mao reported a problem in the plane.log output files, in which it looked like some tracers had abnormally large values.

Philippe Le Sager (plesager@seas.harvard.edu) wrote:

I found a solution. The problem is that Fortran output in ASCII switches between 2 formats:
   1.234E-12
   1.234-12
Correct, the E can disappear. And that confuses IDL. With the format specified by planeflight_mod.f (line 1237), it happens when the exponent is less than -100.
To keep the routine general, you can force the number of digit in the exponent with a 'e' in the format descriptor as follows:
   y = -1.233d-122
   write(6, '(es10.3)'   ), y   ! what is used now
   write(6, '(es11.3e3)' ), y   ! what we should use instead
   write(6, '(es12.3e4)' ), y
gives
   -1.233-122
   -1.233E-122
   -1.233E-0122
So replace (es10.3) with (es11.3e3) line 1237 of planeflight_mod.f and that should fix it.

--Bob Y. 11:35, 13 July 2009 (EDT)

Minor fixes in wet deposition

Bob Yantosca (yantosca@seas.harvard.edu) wrote:

(1) In subroutine RAINOUT (in wetscav_mod.f), I think we need to apply a separate conversion factor for NH3 (i.e. as is now done in subroutine COMPUTE_F). So we'd need to change the lines:
    REAL*8, PARAMETER    :: CONV = 8.27042925126d-1
to:
    ! CONV_H2O2 = 0.6 * SQRT( 1.9 ), used for the ice to gas ratio for H2O2
    ! 0.6 is ( sticking  coeff H2O2  / sticking  coeff  water )
    ! 1.9 is ( molecular weight H2O2 / molecular weight water )
    REAL*8, PARAMETER :: CONV_H2O2 = 8.27042925126d-1

    ! CONV_NH3 = 0.6 * SQRT( 0.9 ), used for the ice to gas ratio for NH3
    ! 0.6 is ( sticking  coeff  NH3 / sticking  coeff  water )
    ! 0.9 is ( molecular weight NH3 / molecular weight water )
    REAL*8, PARAMETER :: CONV_NH3  = 5.69209978831d-1
and then change these acccordingly:
    ELSE IF ( N == IDTH2O2 ) THEN

       ! Compute ice to gas ratio for H2O2 by co-condensation
       ! (Eq. 9, Jacob et al, 2000)
       IF ( C_H2O(I,J,L) > 0d0 ) THEN
          !------------------------------------------------------
          ! Prior to 7/20/09
          ! Now multiply by CONV_H2O2 (bmy, 7/20/09)
          !I2G = ( CLDICE(I,J,L) / C_H2O(I,J,L) ) * CONV
          !------------------------------------------------------
          I2G = ( CLDICE(I,J,L) / C_H2O(I,J,L) ) * CONV_H2O2
       ELSE
          I2G = 0d0
       ENDIF

    ...

    ELSE IF ( N == IDTNH3 ) THEN

       ! Compute ice to gas ratio for NH3 by co-condensation
       ! (Eq. 9, Jacob et al, 2000)
       IF ( C_H2O(I,J,L) > 0d0 ) THEN
          !--------------------------------------------------
          ! Prior to 7/20/09
          ! Now multiply by CONV_NH3 (bmy, 7/20/09)
          !I2G = ( CLDICE(I,J,L) / C_H2O(I,J,L) ) * CONV
          !--------------------------------------------------
          I2G = ( CLDICE(I,J,L) / C_H2O(I,J,L) ) * CONV_NH3
       ELSE
          I2G = 0d0
       ENDIF
Havala gave us the fix for separate CONV_H2O2 and CONV_NH3 factors for subroutine COMPUTE_F. But then we may have never thought to also apply this to subroutine RAINOUT, which subroutine, where the algorithm is similar. In any case, this is a simple fix.
(2) In subroutine COMPUTE_F, for NH3 we have:
          ! F is the fraction of NH3 scavenged out of the updraft
          ! (Eq. 2, Jacob et al, 2000)
          F(I,J,L) = 1d0 - EXP( -K * BXHEIGHT(I,J,L) / Vud(I,J) )
Note that BXHEIGHT(I,J,L) is used in the equation. However, almost all of the other non-aerosol tracers in COMPUTE_F use:
          ! Distance between grid box centers [m]
          TMP = 0.5d0 * ( BXHEIGHT(I,J,L-1) + BXHEIGHT(I,J,L) )

          ! F is the fraction of NH3 scavenged out of the updraft
          ! (Eq. 2, Jacob et al, 2000)
          F(I,J,L) = 1d0 - EXP( -K * TMP / Vud(I,J) )
So in other words TMP is the distance between grid box centers rather than the distance between grid box edges.
There is a comment:
   !  (7 ) Now set F=0 in the first level for all tracers.  Also now
   !        compute the distance between grid box centers and use that in
   !        in Eq. 10 from Jacob et al, 2000 to compute F. (hyl, bmy, 1/24/02)
It may have been that we just never switched BXHEIGHT to TMP in the IF block for NH3 tracer, I don't recall. It is probably not terrible as-is...but we may want to change that to be consistent w/ what is used for the other tracers.

Hongyu Liu (hyl@nianet.org) replied:

Regarding item (2) above, you're right that we need to be consistent throughout the code by using the distance between the grid centers. Using the BXHEIGHT makes almost no difference numerically, according to my test with radionuclide simulations conducted 10 years ago.

--Bob Y. 10:49, 20 July 2009 (EDT)

Minor fixes for IBM XLF compiler

Gabriel Morin (gabrielmorin@gmail.com) wrote:

In ocean_mercury_mod.f, replace line 491:
          EF     = MAX( (0.63 - 0.02 * TC), 0.0) ! keep export > 0
by the line:
          EF     = MAX( (0.63d0 - 0.02d0 * TC), 0.0d0) ! keep export > 0
In lightning_nox_mod.f, replace line 1441:
    CC = MAX( CCTHICK * 1d-3, 5.5 )
by the line:
    CC = MAX( CCTHICK * 1d-3, 5.5d0 )

--Bob Y. 11:35, 13 July 2009 (EDT)

Outstanding issues not yet resolved in v8-02-03

Description to follow