Difference between revisions of "MERRA implementation details"
(→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> to <tt>#if defined( GEOS_5 ) || defined( MERRA )</tt> | ||
+ | #global_hno3_mod.f | ||
+ | #*Change instances of <tt>#if defined( GEOS_5 )</tt> to <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 <tt>#elif defined( MERRA )</tt> 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> to <tt>#if defined( GEOS_5 ) || defined( MERRA )</tt> | ||
+ | #schem.f | ||
+ | #*Change instances of <tt>#if defined( GEOS_5 )</tt> to <tt>#if defined( GEOS_5 ) || defined( MERRA )</tt> | ||
+ | #tagged_co_mod.f | ||
+ | #*Change instances of <tt>#if defined( GEOS_5 )</tt> to <tt>#if defined( GEOS_5 ) || defined( MERRA )</tt> | ||
+ | #*upbdflx_mod.f | ||
+ | #*Change instances of <tt>#if defined( GEOS_5 )</tt> to <tt>#if defined( GEOS_5 ) || defined( MERRA )</tt> | ||
+ | #vdiff_mod.f90 | ||
+ | #*Added <tt>#elif defined( MERRA )</tt> 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> to <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.
Contents
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.
- The MERRA high-resolution grid (0.5° x 0.666°) is identical to that of GEOS-5.
- 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:
- 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)
- 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:
- define.h
- Add a new C-preprocessor switch named "MERRA".
- 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:
- 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
- directory_mod.f
- Added MERRA_DIR variable for MERRA met fields
- 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
- 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:
- convection_mod.f
- MERRA uses the same convection routine (NFCLDMX) as GEOS-5
- 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.)
- fast_j.f
- Do cloud overlapping for MERRA the same way as for GEOS-5
- gamap_mod.f
- Define units of CMFMC field w/ same units as GEOS-5
- global_ch4_mod.f
- Change instances of #if defined( GEOS_5 ) to #if defined( GEOS_5 ) || defined( MERRA )
- global_hno3_mod.f
- Change instances of #if defined( GEOS_5 ) to #if defined( GEOS_5 ) || defined( MERRA )
- 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 input.geos file
- 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.
- 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 #elif defined( MERRA ) section to all #if blocks. For now, treat MERRA in the same way as for GEOS-5.
- nei2005_anthro_mod.f
- Change instances of #if defined( GEOS_5 ) to #if defined( GEOS_5 ) || defined( MERRA )
- schem.f
- Change instances of #if defined( GEOS_5 ) to #if defined( GEOS_5 ) || defined( MERRA )
- 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 )
- vdiff_mod.f90
- Added #elif defined( MERRA ) section to all #if blocks. For now, treat MERRA in the same way as for GEOS-5.
- 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)