Photolysis mechanism

From Geos-chem
Revision as of 19:16, 11 April 2014 by Yanko (Talk | contribs) (GEOS-Chem v9-02)

Jump to: navigation, search

This page describes some of the updates to the FAST-J photolysis mechanism, as is currently implemented in GEOS-Chem.

Input files for FAST-J

The following input files are required for the FAST-J photolysis mechanism:

This file is where you specify each of the FAST-J photolysis species. Each species is mapped to a corresponding entry of the GEOS-Chem chemical mechanism.
This file specifies the reference O3 climatology for FAST-J. NOTE: GEOS-Chem will overwrite this reference climatology with TOMS/SBUV data for those months and locations where such data exists.
This file is where the various quantum yields and aerosol cross-sections are specified.

Modifications for the grid-independent model

This update was tested in the 1-month benchmark simulation v9-01-03k and approved on 27 Apr 2012.

For the grid-independent model, it was necessary to convert ASCII data files to netCDF format to allow for more efficient I/O. Bob Yantosca has converted the jv_atms.dat file to netCDF format, and has introduced code to read the netCDF equivalent file into GEOS-Chem. This file is available at:

--Melissa Payer 15:41, 21 June 2012 (EDT)

Overhead TOMS/SBUV merged O3 columns

GEOS-Chem v9-02

This update was tested in the 1-month benchmark simulation v9-02m and approved on 30 Jul 2013. This update is included in Adjoint v35d.

Jenny Fisher has updated to TOMS overhead O3 columns to account for years through December 2010. The data files are available at:

You can download these directories with anonymous FTP or the Wget utility. For instructions, please see Chapter 2.4, Downloading the GEOS-Chem shared data directories in the GEOS-Chem Online User's Guide.

Modifications to subroutine READ_TOMS in toms_mod.F include changing the directory name and updating the final year from 2008 to 2010.

Prevent 0.5 x 0.667 nested grid simulations from crashing when reading TOMS data

Update 05 Mar 2014: Jintai Lin provided a permanent solution for this issue, which will be applied in GEOS-Chem v10-01. For more information, see this wiki post.

This issue was resolved in the GEOS-Chem v9-02 public release (01 Mar 2014).

Luke Schiferl wrote:

I am attempting to run the standard nested NA 0.5x0.667 grid for v9-02. However, I'm missing the updated TOMS directory which is called, TOMS_201203, and the run crashes. Updated files are available on the Harvard ftp for 2x2.5 and 1x1, but not 0.5x0.667_NA.

As a temporary solution to prevent the nested grid simulation from crashing, we have added the fixes below to GeosCore/toms_mod.F. We will use the older TOMS data in TOMS_200906 for the 0.5x0.667 nested grid simulations for now, until the data in TOMS_201203 can be regridded.

      ! Define filename (with replaceable tokens)
#if   !defined( GCAP )

#if defined( GRID4x5 ) || defined( GRID2x25 ) || defined( GRID025x03125 )
      FILENAME = 'TOMS_201203/TOMS_O3col_YYYY.' // GET_NAME_EXT_2D() //
     &           '.'                            // GET_RES_EXT()
      FILENAME = 'TOMS_200906/TOMS_O3col_YYYY.' // GET_NAME_EXT_2D() //
     &           '.'                            // GET_RES_EXT()

      FILENAME = 'TOMS_200701/TOMS_O3col_YYYY.' // GET_NAME_EXT_2D() //
     &           '.'                            // GET_RES_EXT()

and at the top of the module:

#if defined( GRID4x5 ) || defined( GRID2x25 ) || defined( GRID025x03125 )

--Melissa Payer 14:01, 20 March 2012 (EDT)

Now use MAP_A2A to regrid 1x1 TOMS O3 to model resolution

This update was tested in the 1-month benchmark simulation v10-01b and approved on 06 Mar 2014.

Jintai Lin wrote:

With the update, the code basically reads the TOMS files on geos.1x1 grid,and then regrid to 4x5, 2x2.5 or 0.5x0.667. This ensures that all three resolutions start from the same TOMS files, and also that the 0.5x0.667 resolution model has the TOMS data. Currently, the directory TOMS_201203/ containing new TOMS data is missing for the nested resolution model.

Code modifications apply to routine READ_TOMS (found in module GeosCore/toms_mod.F):


     REAL*4             :: ARRAY1x1(I1x1,J1x1,1)
     REAL*8             :: INGRID (I1x1,J1x1)

#if   !defined( GCAP )

     ! Define filename (with replaceable tokens)
!     FILENAME = 'TOMS_201203/TOMS_O3col_YYYY.' // GET_NAME_EXT_2D() //
!    &           '.'                            // GET_RES_EXT()
     ! Regrid from the files on geos.1x1 grid -- Lin_20140305
     FILENAME = 'TOMS_201203/TOMS_O3col_YYYY.geos.1x1'

     ! Replace YYYY token with current year

     ! Now prefix the data directory

     ! Echo filename
     WRITE( 6, 110 ) TRIM( FILENAME )
110  FORMAT( '     - READ_TOMS: Reading ', a )

     ! Regrid from 1x1 to model resolution

     ! File with lat/lon edges for regridding
    &             'MAP_A2A_Regrid_201203/'

     ! TOMS O3 columns
     ! Read data
    &                 XTAU,      I1x1,      J1x1,
    &                 1,         ARRAY1x1,  QUIET=.TRUE. )

     ! Regrid to current model resolution
     INGRID = ARRAY1x1(:,:,1)
    &                    INGRID,     TOMS,  IS_MASS=0,
    &                    netCDF=.TRUE.              )

     ! d(TOMS)/dT (1st half of month)

      ! Read data
    &                 XTAU,      I1x1,      J1x1, 
    &                 1,         ARRAY1x1,  QUIET=.TRUE. )

     ! Regrid to current model resolution
     INGRID = ARRAY1x1(:,:,1)
    &                    INGRID,     DTOMS1,  IS_MASS=0,
    &                    netCDF=.TRUE.              )

     ! d(TOMS)/dT (2nd half of month)

      ! Read data: 
    &                 XTAU,      I1x1,      J1x1,
    &                 1,         ARRAY1x1,  QUIET=.TRUE. )

     ! Regrid to current model resolution
     INGRID = ARRAY1x1(:,:,1)
    &                    INGRID,     DTOMS2,  IS_MASS=0,
    &                    netCDF=.TRUE.              )


--Melissa Sulprizio 10:44, 5 March 2014 (EST)

Bug fix for determining when to use TOMS O3 columns

This update will be tested in the 1-month benchmark simulation v9-02c.

It was discovered after the GEOS-Chem v9-02 public release that Input_Opt%USE_O3_FROM_MET might not be set properly for simulations using GEOS-5 meteorology, so TOMS O3 columns might not be used. Traditionally, we use TOMS data when the simulation year is less than the last year of available TOMS data (currently 2010). In v9-02, the code to determine Input_Opt%USE_O3_FROM_MET was moved from subroutine GET_OVERHEAD_O3_FOR_FASTJ to the initialization stage at the top of main.F. In its new location, the variable YEAR was not defined properly and so Input_Opt%USE_O3_FROM_MET could be incorrect. To fix this issue, we have moved the code for determining Input_Opt%USE_O3_FROM_MET to just after the call to subroutine READ_MET_FIELDS.

        !          ****** R E A D   M E T   F I E L D S ******
        !    For clarity, we have split off the code that reads met 
        !    fields into the internal subroutine READ_MET_FIELDS.
        !    Lightning NOx emissions are also computed at the same
        !    time when A3 or A6 met fields are read from disk.

#if   defined( GEOS_5 )

        ! When TOMS data is not available, then we will use
        ! the O3 columns directly from the met fields.  
        ! Currently, this is only done for GEOS-5 met.
           Input_Opt%USE_O3_FROM_MET = .TRUE.
           Input_Opt%USE_O3_FROM_MET = .FALSE.

#elif defined( GEOS_FP )

        ! For GEOS-FP met, always use the O3 columns
        ! from the A1 met field files (bmy, 11/14/13)
        Input_Opt%USE_O3_FROM_MET = .TRUE.

        ! When TOMS data is not available, then we will use
        ! the TOMS data from the last valid year.  This is
        ! done for all met field products other than GEOS-5.
        Input_Opt%USE_O3_FROM_MET = .FALSE.


--Melissa Sulprizio 11:53, 11 March 2014 (EDT)

GEOS-Chem v8-01-04

Bob Yantosca has updated the TOMS overhead O3 columns to account for years 2006 and 2007. The data files are available at:

cd pub/geos-chem/data/GEOS_2x2.5/TOMS_200701/
get TOMS_O3col_2006.geos.2x25
get TOMS_O3col_2007.geos.2x25
cd pub/geos-chem/data/GEOS_4x5/TOMS_200701/
get TOMS_O3col_2006.geos.4x5
get TOMS_O3col_2007.geos.4x5

Also you will have to make a modification in the subroutine READ_TOMS in toms_mod.f. Replace the following lines:

     ! Use 2005 data after 2005
     IF ( YEAR > 2005 ) THEN
        WRITE( 6, 105 ) YEAR
        YEAR = 2005

with these lines:

     ! Use 2007 data after 2007
     IF ( YEAR > 2007 ) THEN
        WRITE( 6, 105 ) YEAR
        YEAR = 2007

This will make sure the code uses the files for 2006 and 2007.

Here is an excerpt from the README that describes the TOMS data set versions that we are currently using:

  Data source and version:

  1985 - 2005 are taken from:

    TOMS/SBUV MERGED TOTAL OZONE DATA, Version 8, Revision 3.
    Resolution:  5 x 10 deg.

    Contact person for the merged data product:
    Stacey Hollandsworth Frith (

  2006 and 2007 are taken from:

     Version 8 Merged Ozone Data Sets
     Revision 04
     LAST MODIFIED: 20 OCT 2008 

NOTE: This fix was introduced into version v8-01-04.

--Bob Y. 14:15, 24 March 2009 (EDT)

O1D reaction updated to JPL 2006

The rate constants in the "FAST-J" jv_atms.dat file have been updated by Lin Zhang.

These were the old values:

O3_1d  180 9.500E-01 9.330E-01 4.270E-01 6.930E-02 6.060E-02       0.0       0.0
O3_1d  260 9.500E-01 9.420E-01 4.890E-01 1.360E-01 7.110E-02       0.0       0.0
O3_1d  300 9.500E-01 9.550E-01 5.870E-01 2.370E-01 8.570E-02       0.0       0.0

which are now replaced by the new values from JPL 2006:

O3_1d  180 9.000E-01 9.000E-01 3.824E-01 8.092E-02 7.650E-02       0.0       0.0
O3_1d  260 9.000E-01 9.000E-01 4.531E-01 1.438E-01 7.654E-02       0.0       0.0
O3_1d  300 9.000E-01 9.000E-01 5.273E-01 2.395E-01 7.659E-02       0.0       0.0

Also the new file has the following header line (the O1D update is noted there):

jv_spec.dat:  FAST-J, std JPL 00 (mje 4/02) -- aer/dust (rvm, 3/02) -- O1D (lzh 5/06)

For more information, please contact Lin Zhang (

--Bob Y. 14:49, 14 January 2009 (EST)

Cloud overlap options in FAST-J

GEOS-Chem now has 3 cloud overlap options in the FAST-J photolysis mechanism:

Linear cloud overlap assumption

The linear cloud overlap option is the default in GEOS-Chem versions v8-01-01 and prior. The option is:

    Grid Box Optical depth = In-cloud optical depth * Cloud fraction.  

Approximate random overlap assumption

This approximate random overlap option was introduced into the standard code in GEOS-Chem v8-01-02:

    Grid Box Optical Depth = In-Cloud Optical Depth * ( Cloud Fraction )^1.5 

Maximum random overlap assumption

This maximum random overlap option is much more computationally intensive, and therefore is not used as the default option. However, if you wish to use this option, then manually edit the fast_j.f source code file such that OVERLAP = 3.

The Maximum-Random Overlap (MRAN) scheme assumes that clouds in adjacent layers are maximally overlapped to form a cloud block and that blocks of clouds separated by clear layers are randomly overlapped. A vertical profile of fractional cloudiness is converted into a series of column configurations with corresponding fractions see Liu et al., JGR 2006; hyl,3/3/04).

For more details about cloud overlap assumptions and their effect on photolysis frequencies and key oxidants in the troposphere, refer to the following articles:

  1. Liu, H., et al., Radiative effect of clouds on tropospheric chemistry in a global three-dimensional chemical transport model, J. Geophys. Res., 111, D20303, doi:10.1029/2005JD006403, 2006.
  2. Tie, X., et al., Effect of clouds on photolysis and oxidants in the troposphere, J. Geophys. Res., 108(D20), 4642, doi:10.1029/2003JD003659, 2003.
  3. Feng, Y., et al., Effects of cloud overlap in photochemical models, J. Geophys. Res., 109, D04310, doi:10.1029/2003JD004040, 2004.
  4. Stubenrauch, C.J., et al., Implementation of subgrid cloud vertical structure inside a GCM and its effect on the radiation budget, J. Clim., 10, 273-287, 1997.


Hongyu Liu wrote:

I have a comment about how the effect of cloud overlap in the vertical may be included in GEOS-Chem. The standard GEOS-Chem assumes linear scaling of cloud optical depth with cloud fraction in a grid box, i.e., the grid average cloud optical depth TAU' = TAU * f, where TAU is the COD in the cloudy portion of the grid and f is cloud fraction in the layer. This linear assumption (LIN) not only introduces a significant bias because of the nonlinear relationship between J-values and COD, but also is not consistent with the cloud-radiation interactions taking place in the original GEOS-DAS. Current GCMs or DAS usually use random overlap (RAN) or maximum-random overlap (MRAN) in their cloud-radiation packages.
Ideally, GEOS-Chem should use the same cloud overlap assumption as the one used in GEOS-DAS where TOA radiative fluxes have been validated against e.g. satellite observations. But the ("exact") random overlap and MRAN approaches are computationally expensive. Fortunately, the so-called "approximate" random overlap scheme [TAU' = TAU * f^(3/2) which is computationally cheap] has been demonstrated to be a good approximation to both the "exact" random overlap and MRAN calculations. For details, see my GEOS-Chem cloud paper (section 2.3 & Figures 8d,9d:
So, if we don't want to use any cloud overlap assumptions because of computational cost, the "approximate" random overlap seems a good option - it makes more sense physically and is more consistent with the mother GCM or DAS. Actually it has been used in the MOZART model for years [see Brasseur et al., 1998].
Hongyu Liu

For more information, please contact Hongyu Liu (

--Bob Y. 12:44, 23 May 2008 (EDT)

Updated aerosol optical properties

Please visit our new Aerosol optical properties wiki page for more information about:

  1. Description of aerosol optical properties in GEOS-Chem
  2. Aerosol optical properties update for v8-02-05
  3. Aerosol optical properties at high spectral resolution

--Bob Y. 11:07, 1 March 2010 (EST)

Scaling of AOD diagnostic output to other wavelengths

Colette Heald and Randall Martin have added a new capability to the GEOS-Chem v8-03-01 diagnostics that will facilitate comparing GEOS-Chem data to satellite observations. This was released as a patch shortly after the release of v8-03-01.

The aerosol optical depth (AOD) output computed by the following diagnostics:

  1. ND21 (output to the ctm.bpch file)
  2. ND48 (timeseries station data)
  3. ND49 (instantaneous timeseries output)
  4. ND50 (24-hr timeseries output)
  5. ND51 (satellite timeseries)
  6. ND51b (satellite timeseries)

can now be scaled from 400nm (i.e. the FAST-J wavelength) to any arbitrary wavelength. A new file, jv_spec_aod.dat, has now been added to all of the GEOS-Chem v8-03-01 run directories. This file can be edited to contain the optical parameters for the aerosols at the target wavelength. Currently the default jv_spec_aod.dat is set up to scale AOD output from 400nm to 550nm.

For more information, please see the Section 5.4.4 of the GEOS-Chem v8-03-01 User's Guide. This contains information about how to edit jv_spec_aod.dat for other wavelengths.

It is important to note that this capability does not change the scientific results of GEOS-Chem, but is just a new option for the diagnostic output.

--Bob Y. 16:10, 28 May 2010 (EDT)

Too many levels in photolysis code

The scattering module (OPMIE.f) for Fast-J requires many additional vertical levels. It happens that the limit (NL set in jv_mie.h) can be reached in some situations, causing the program to stop with a "Too many levels in photolysis code.." error message. Sometimes you can increase NL to solve the problem.

Now a new version of OPMIE.F is available, which still warns you if NL is reached, but works with that limit.

This can also be an indication that there may be a problem in your visual optical depths, dust emissions, or aerosol emissions. Dust and aerosol optical depths are computed from the concentration array STT. If for some reason you end up emitting too much aerosol or dust (i.e. a unit conversion error), then this will result in an abnormally high dust or aerosol optical depth. A very high optical depth will cause FAST-J to want to keep adding points to the Gaussian quadrature in OPMIE.F. You can get into a situation where the number of points that FAST-J wants to add is greater than the array parameter NL (it may want to add thousands of points!).

Therefore, if you encounter this type of error, it is a good idea to doublecheck your aerosol & dust emissions to make sure that the monthly and annual totals are reasonable.


  1. In GEOS-Chem v8-03-01 we have updated the NL parameter from 750 to 1500, which should prevent this error from happening in most circumstances.
  2. In GEOS-Chem v9-01-03, the NL parameter is now 2000 (which makes N__ = 4000).

--Bob Y. 14:36, 17 December 2012 (EST)