Difference between revisions of "MERRA implementation details"

From Geos-chem
Jump to: navigation, search
(Required coding changes in GEOS-Chem)
(GeosCore directory)
Line 73: Line 73:
 
#*MERRA uses the same convection routine (NFCLDMX) as GEOS-5
 
#*MERRA uses the same convection routine (NFCLDMX) as GEOS-5
 
#dust_dead_mod.f
 
#dust_dead_mod.f
#*Assign parameter FLX_MSS_FDG_FCT = 4.9d-4 for both MERRA and GEOS-5.  (NOTE: We may need to eventually rescale this.)
+
#*Assign parameter FLX_MSS_FDG_FCT = 4.9d-4 for both MERRA and GEOS-5.  '''''(NOTE: We may need to eventually rescale this.)'''''
 
#fast_j.f
 
#fast_j.f
 
#*Do cloud overlapping for MERRA the same way as for GEOS-5
 
#*Do cloud overlapping for MERRA the same way as for GEOS-5
 
#gamap_mod.f
 
#gamap_mod.f
#*Define CMFMC field w/ same units as GEOS-5
+
#*Define units of CMFMC field w/ same units as GEOS-5
 +
#global_ch4_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#global_hno3_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#global_o3_mod.f
 +
#*Rewrote logic of #if block, now treat MERRA in the same way as GEOS-5
 +
#input_mod.f
 +
#*READ_SIMULATION_MENU: Read value for MERRA_DIR from <tt>input.geos</tt> file
 +
#land_mercury_mod.f
 +
#*Added <tt>#elif defined( MERRA )</tt> section to all #if blocks.  For now, treat MERRA in the same way as for GEOS-5.
 +
#lightning_nox_mod.f
 +
#*LIGHTNING: Eliminate the shallow-cloud inhibititon trap for MERRA, as we already do for GEOS-5
 +
#*GET_OTD_LIS_SCALE: Compute ANN_AVG_FLASHRATE for MERRA in the same way as for GEOS-5.  '''''(NOTE: We may have to rescale this in the future.)'''''
 +
#main.f
 +
#*Read RH from disk, in the same way as for GEOS-5. '''''(NOTE: MERRA RH is a 6-hr instantaneous field; GEOS-5 RH is 6-hr average field.)'''''
 +
#mercury_mod.f
 +
#*Added &nbsp;&nbsp;<tt>#elif defined( MERRA )</tt>&nbsp;&nbsp; section to all #if blocks.  For now, treat MERRA in the same way as for GEOS-5.
 +
#nei2005_anthro_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#schem.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#tagged_co_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#*upbdflx_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
#vdiff_mod.f90
 +
#*Added &nbsp;&nbsp;<tt>#elif defined( MERRA )</tt>&nbsp;&nbsp; section to all #if blocks.  For now, treat MERRA in the same way as for GEOS-5.
 +
#wetscav_mod.f
 +
#*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
 
 +
--[[User:Bmy|Bob Y.]] 13:41, 16 August 2010 (EDT)
  
 
== Outstanding issues ==
 
== Outstanding issues ==

Revision as of 17:41, 16 August 2010

NOTE: Page under construction!

On this page we list the necessary modifications to GEOS-Chem for MERRA compatibility.

Overview

The GMAO MERRA data product is a 30-year reanalysis done with the GEOS-5.2.0 assimilation system. Therefore, within GEOS-Chem we can (for the most part) treat MERRA in the same way as we do for the GEOS-5 meteorology.

However, in order to reduce the volume of data produced (and for other technical concerns), GMAO chose to reduce the vertical and/or horizontal resolution of some important MERRA data fields. Also, some MERRA data fields have different units than in the GEOS-5 product. Because of this, some additional special handling may be required within GEOS-Chem.

Key similarities

The following aspects of MERRA are identical to the GEOS-5 operational data product.

  1. The MERRA high-resolution grid (0.5° x 0.666°) is identical to that of GEOS-5.
  2. The MERRA vertical grid (72 hybrid levels) is identical to that of GEOS-5.

Key differences

The following aspects of MERRA differ from the GEOS-5 operational data product:

  1. The MERRA temporal resolution differs from GEOS-5 as follows:
    • Surface data: hourly averages (MERRA) vs. 3-hour averages (GEOS-5)
    • 3-D data: 3-hour averages (MERRA) vs. 6-hour averages (GEOS-5)
  2. Differences in individual MERRA met fields:
    • Most of the releveant MERRA 3-D data for GEOS-Chem are only available at 1° x 1.25° horizontal resolution.
    • OMEGA, PV, RH are 6-hr instantaneous data in MERRA but are 6-hr averaged data in GEOS-5
    • SNOMAS (snow mass) has units of kg/m2 in MERRA but mm in GEOS-5
    • Many of the precipitation fields (e.g. DQIDTMST, DQVDTMST, DQLDTMST, etc.) are saved on a 1.25° x 1.25° x 42 pressure levels instead of 72 hybrid levels. P -> hybrid interpolation is necessary.
    • The MERRA fields FRLAKE, FRLAND, FRLANDIC, FROCEAN, PHIS are time-invariant.

Required coding changes in GEOS-Chem

As noted in the section above, the similarities between GEOS-5 and MERRA (especially of the vertical grids) means that in most cases we can just treat MERRA in the same way as for GEOS-5. In many areas of the code, the coding changes are straightforward and simply involve an extension of C-preprocessor statements such as:

#if defined( GEOS_5 )

to

#if defined( GEOS_5 ) || defined( MERRA ) 

In other areas of GEOS-Chem the changes are more involved. Below we provide a description of the areas of GEOS-Chem that were modified for MERRA:

Headers directory

The following modifications for MERRA were made in the Headers/ subdirectory:

  1. define.h
    • Add a new C-preprocessor switch named "MERRA".
  2. CMN_SIZE:
    • Added size parameters for MERRA 4 x 5 and MERRA 2 x 2.5 grids.

GeosUtil directory

The following modifications for MERRA were made in the GeosUtil/ subdirectory:

  1. bpch2_mod.f
    • GET_MODELNAME: Add "MERRA_47L" and "MERRA" modelnames to the #if block
    • GET_NAME_EXT: Return grid name "geos5" for MERRA fields
  2. directory_mod.f
    • Added MERRA_DIR variable for MERRA met fields
  3. pressure_mod.f
    • GET_PRESSURE: Compute PEDGE for MERRA in the same way as for GEOS-5
    • INIT_PRESSURE: Initialize Ap and Bp for MERRA in the same way as for GEOS-5
  4. transfer_mod.f
    • Collapse vertical levels in the stratosphere for MERRA in the same way as for GEOS-5

GeosCore directory

The following modifications for MERRA were made in the GeosCore/ subdirectory:

  1. convection_mod.f
    • MERRA uses the same convection routine (NFCLDMX) as GEOS-5
  2. dust_dead_mod.f
    • Assign parameter FLX_MSS_FDG_FCT = 4.9d-4 for both MERRA and GEOS-5. (NOTE: We may need to eventually rescale this.)
  3. fast_j.f
    • Do cloud overlapping for MERRA the same way as for GEOS-5
  4. gamap_mod.f
    • Define units of CMFMC field w/ same units as GEOS-5
  5. global_ch4_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  6. global_hno3_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  7. global_o3_mod.f
    • Rewrote logic of #if block, now treat MERRA in the same way as GEOS-5
  8. input_mod.f
    • READ_SIMULATION_MENU: Read value for MERRA_DIR from input.geos file
  9. land_mercury_mod.f
    • Added #elif defined( MERRA ) section to all #if blocks. For now, treat MERRA in the same way as for GEOS-5.
  10. lightning_nox_mod.f
    • LIGHTNING: Eliminate the shallow-cloud inhibititon trap for MERRA, as we already do for GEOS-5
    • GET_OTD_LIS_SCALE: Compute ANN_AVG_FLASHRATE for MERRA in the same way as for GEOS-5. (NOTE: We may have to rescale this in the future.)
  11. main.f
    • Read RH from disk, in the same way as for GEOS-5. (NOTE: MERRA RH is a 6-hr instantaneous field; GEOS-5 RH is 6-hr average field.)
  12. mercury_mod.f
    • Added   #elif defined( MERRA )   section to all #if blocks. For now, treat MERRA in the same way as for GEOS-5.
  13. nei2005_anthro_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  14. schem.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  15. tagged_co_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
    • upbdflx_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  16. vdiff_mod.f90
    • Added   #elif defined( MERRA )   section to all #if blocks. For now, treat MERRA in the same way as for GEOS-5.
  17. wetscav_mod.f
    • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )

--Bob Y. 13:41, 16 August 2010 (EDT)

Outstanding issues