Difference between revisions of "MERRA implementation details"

From Geos-chem
Jump to: navigation, search
(GeosTomas directory)
 
(48 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''''NOTE: Information subject to change!'''''
+
[[Image:Obsolete.jpg]]
 +
 
 +
<span style="color:red">'''''The [[MERRA]] reanalysis product ceased in early 2016 and is now obsolete.  We recommend that you use either [[GEOS-FP]], which is the current operational GMAO met data product, or [[MERRA-2]], which is the current GMAO reanalysis product.  MERRA will be de-supported in [[GEOS-Chem v11-02]].'''''</span>
  
 
On this page we list the necessary modifications to GEOS-Chem for MERRA compatibility.
 
On this page we list the necessary modifications to GEOS-Chem for MERRA compatibility.
Line 7: Line 9:
 
The [[MERRA|GMAO MERRA data product]] is a 30-year reanalysis done with the [http://acmg.seas.harvard.edu/geos/wiki_docs/geos5/GEOS-5.2.0-File_Specification.pdf 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|GEOS-5 meteorology]].
 
The [[MERRA|GMAO MERRA data product]] is a 30-year reanalysis done with the [http://acmg.seas.harvard.edu/geos/wiki_docs/geos5/GEOS-5.2.0-File_Specification.pdf 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|GEOS-5 meteorology]].
  
However, in order to reduce the volume of data produced (and for other technical concerns), GMAO chose to reduce the [[MERRA#MERRA grid structure|vertical and/or horizontal resolution]] of some important MERRA data fields.  Also, some [[List of MERRA met fields|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.
+
However, in order to reduce the volume of data produced (and for other technical concerns), GMAO chose to reduce the [[MERRA#MERRA grid structure|vertical and/or horizontal resolution]] of some important [[List of MERRA met fields|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 to GEOS-5 ===
+
The table below compares many features of GEOS-FP with other met field products.
  
The following aspects of MERRA are identical to the [[GEOS-5]] operational data product.
+
{| border=1 cellspacing=0 cellpadding=5
 +
|-bgcolor="#CCCCCC"
 +
!width="250px"|Feature
 +
!width="200px"|[[MERRA-2]]
 +
!width="200px"|[[GEOS-FP]]
 +
!bgcolor="#CCFFFF" width="200px"|[[MERRA]]
 +
!width="200px"|[[GEOS-5]]
  
# The MERRA high-resolution grid ([http://acmg.seas.harvard.edu/geos/doc/man/appendix_2.html#A2.6 0.5&deg; x 0.666&deg;]) is identical to that of GEOS-5.  
+
|-valign="top"
# The MERRAvertical grid ([http://acmg.seas.harvard.edu/geos/doc/man/appendix_3.html#A3.5 72 hybrid levels]) is identical to that of GEOS-5.
+
|Native vertical grid
# By and large, the same data fields that were in the GEOS-5 product are also contained in MERRA.
+
|
 +
*0.5&deg; lat x 0.625&deg; lon
 +
|
 +
*0.25&deg; lat x 0.3125&deg; lon
 +
|bgcolor="#CCFFFF"|
 +
*0.5&deg; lat x 0.667&deg; lon
 +
**(surface fields)
 +
*1&deg; lat  x 1.25&deg; lon
 +
**(most 3D fields)
 +
*1.25&deg; x 1.25&deg; lon
 +
**(moist quantities)
 +
|
 +
*0.5&deg; lat x 0.667&deg; lon
  
=== Key differences from GEOS-5 ===
+
|-valign="top"
 +
|Native horizontal grid
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*72 hybrid levels
 +
|
 +
*Same as MERRA
 +
 
 +
|-valign="top"
 +
|Time-invariant fields
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*FRLAKE
 +
*FRLAND
 +
*FRLANDIC(E)
 +
*FROCEAN
 +
*PHIS
 +
|
 +
*Same as MERRA
 +
 
 +
|-valign="top"
 +
|Time archiving: surface fields
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*A1 (1-hr time average)
 +
|
 +
*A3 (6-hr time average)
 +
 
 +
|-valign="top"
 +
|Time archiving: 3D fields
 +
|
 +
*A3 (3-hr time averaged)
 +
*I3 (3-hr instantaneous)
 +
|
 +
*A3 (3-hr time averaged)
 +
*I3 (3-hr instantaneous)
 +
|bgcolor="#CCFFFF"|
 +
*A3 (3-hr time average)
 +
*I6 (6-hour instantaneous)
 +
|
 +
*A6 (6-hr time average) and
 +
*I6 (6-hr instantaneous)
 +
 
 +
|-valign="top"
 +
|Timestamps
 +
|
 +
*[[MERRA-2#MERRA-2_time_archiving|See this wiki page]]
 +
|
 +
*[[GEOS-FP#GEOS-FP_time_archiving|See this wiki page]]
 +
|bgcolor="#CCFFFF"|
 +
*[[MERRA#MERRA_time_archiving|See this wiki page]]
 +
|
 +
*[[MERRA#MERRA_time_archiving|See this wiki page]]
 +
 
 +
|-valign="top"
 +
|Precipitation fields
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*DQRCU, DQRLSAN,
 +
*PFICU, PFILSAN,
 +
*PFLCU, PFLLSAN,
 +
*REEVAPCN, REEVAPLSAN
 +
|
 +
*DQIDTMST
 +
*DQLDTMST
 +
*DQVDTMST
 +
*MOISTQ = DQIDTMST + DQLDTMST + DQVDTMST
 +
 
 +
|-valign="top"
 +
|Temperature
 +
|
 +
*Same as MERRA
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*T [K]
 +
*A3 (6-hr time average)
 +
|
 +
*Same as MERRA
 +
*A6 (6-hr time average)
 +
 
 +
|-valign="top"
 +
|Relative humidity
 +
|
 +
*Same as MERRA
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA
 +
*A3 (3-hr time average)
 +
|bgcolor="#CCFFFF"|
 +
*RH [1]
 +
*I3 (6-hr instantaneous)
 +
|
 +
*Same as MERRA
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Specific humidity
 +
|
 +
*Same as MERRA
 +
*I3 (3-hr instantaneous)
 +
|
 +
*Same as MERRA
 +
*I3 (3-hr instantaneous)
 +
|bgcolor="#CCFFFF"|
 +
*QV [kg kg<sup>-1</sup>]
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Vertical pressure velocity
 +
|
 +
*Same as MERRA
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA
 +
*A3 (3-hr time average)
 +
|bgcolor="#CCFFFF"|
 +
*OMEGA [Pa s<sup>-1</sup>]
 +
*I6 (6-hr instantaneous)
 +
|
 +
*Same as MERRA
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Ertel potential vorticity
 +
|
 +
*Same as MERRA
 +
*I3 (3-hr instantaneous)
 +
|
 +
*Same as MERRA
 +
*I3 (3-hr instantaneous)
 +
|bgcolor="#CCFFFF"|
 +
*PV [K m<sup>2</sup> kg<sup>-1</sup> s<sup>-1</sup>]
 +
*I6 (6-hr instantaneous)
 +
|
 +
*Same as MERRA
 +
*A6 (3-hr time-average)
 +
 
 +
|-valign="top"
 +
|Snow mass
 +
|
 +
*Same as MERRA
 +
*Same as MERRA
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
*Same as MERRA
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*SNOMAS [kg/m2]
 +
*A1 (3-hr time average)
 +
*[[List_of_MERRA_met_fields#SNOMAS|Missing coverage at poles is now corrected, as per MERRA]]
 +
|
 +
*SNOMAS [m]
 +
*A3 (3-hr time average)
 +
 
 +
|-valign="top"
 +
|Sea level pressure
 +
|
 +
*SLP [Pa]
 +
*A1 (1-hr time average)
 +
*Converted to hPa when read from disk
 +
|
 +
*SLP [hPa]
 +
*A1 (1-hr time average)
 +
|bgcolor="#CCFFFF"|
 +
*SLP [hPa]
 +
*A1 (1-hr time average)
 +
|
 +
*SLP [hPa]
 +
*I6 (3-hr instantaneous)
 +
 
 +
|-valign="top"
 +
|Surface pressure
 +
|
 +
*PS [Pa]
 +
*I3 (3-hr instantaneous)
 +
*Converted to hPa when read from disk
 +
|
 +
*PS [hPa]
 +
*I3 (3-hr instantaneous)
 +
|bgcolor="#CCFFFF"|
 +
*PS [hPa]
 +
*I6 (6-hr instantaneous)
 +
|
 +
*PS [hPa]
 +
*I6 (3-hr instantaneous)
 +
 
 +
|-valign="top"
 +
|Tropopause pressure
 +
|
 +
*TROPPT [Pa]
 +
*A1 (1-hr time average)
 +
*Converted to hPa when read from disk
 +
|
 +
*TROPPT [hPa]
 +
*A1 (1-hr time average)
 +
|bgcolor="#CCFFFF"|
 +
*TROPPT [hPa]
 +
*A1 (1-hr time average)
 +
|
 +
*TROPP [hPa]
 +
*A3 (3-hr time average)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem convection routine
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*<tt>DO_MERRA_CONVECTION</tt><br>(in <tt>convection_mod.F</tt>)
 +
|
 +
*<tt>NFCLDMX</tt><br>(in <tt>convection_mod.F</tt>)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem wet deposition routine
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*<tt>WETDEP_MERRA</tt><br>(<tt>wetscav_mod.F</tt>)
 +
|
 +
*<tt>WETDEP</tt><br>(<tt>wetscav_mod.F</tt>)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem transport routine
 +
|
 +
*Same as MERRA
 +
|
 +
*Same as MERRA
 +
|bgcolor="#CCFFFF"|
 +
*<tt>TPCORE_FVDAS</tt><br>(<tt>tpcore_fvdas_mod.F90</tt>)
 +
|
 +
*Same as MERRA
 +
 
 +
|-valign="top"
 +
|File format read by GEOS-Chem
 +
|
 +
*netCDF-4
 +
|
 +
*netCDF-3
 +
|bgcolor="#CCFFFF"|
 +
*binary
 +
|
 +
*binary
 +
 
 +
|}
  
The following aspects of MERRA differ from the GEOS-5 operational data product:
+
NOTES:
 +
# Most of the relevant MERRA 3-D data for GEOS-Chem are only available at [http://acmg.seas.harvard.edu/geos/doc/archive/man.v10-01/appendix_2.html#GMAO_1x125 1&deg; x 1.25&deg; horizontal resolution].
 +
# [[List of MERRA met fields#SNOMAS|SNOMAS (snow mass)]] in MERRA was missing coverage over Antarctica and Greenland (this has been corrected for).
 +
# Many of the precipitation fields (e.g. DQIDTMST, DQVDTMST, DQLDTMST, etc.) are saved on a 1.25&deg; x 1.25&deg; x 42 pressure levels instead of 72 hybrid levels.  P -> hybrid interpolation is necessary.
  
# The [[MERRA#MERRA time archiving|MERRA temporal resolution]] differs from GEOS-5 as follows:
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 19:05, 17 August 2015 (UTC)
#* 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 [[List of MERRA met fields|individual MERRA met fields]]:
+
#* Most of the releveant MERRA 3-D data for GEOS-Chem are only available at [http://acmg.seas.harvard.edu/geos/doc/man/appendix_2.html#A2.4 1&deg; x 1.25&deg; horizontal resolution].
+
#* OMEGA, PV, RH are 6-hr instantaneous data in MERRA but are 6-hr averaged data in GEOS-5
+
#* [http://acmg.seas.harvard.edu/geos/wiki_docs/merra/SNOMAS_plots.pdf 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&deg; x 1.25&deg; 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 ==
 
== Required coding changes in GEOS-Chem ==
Line 116: Line 396:
 
|convection_mod.f
 
|convection_mod.f
 
|
 
|
*In routine DO_CONVECTION: Call the same convection routine (NFCLDMX) for MERRA as is done for GEOS-5
+
*In routine DO_CONVECTION: Call <tt>DO_MERRA_CONVECTION</tt> from within a parallel loop
 +
*Add new routine <tt>DO_MERRA_CONVECTION</tt>, based on the column code
 
|-
 
|-
 
|dao_mod.f
 
|dao_mod.f
Line 132: Line 413:
 
|depo_mercury_mod.f
 
|depo_mercury_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 )
+
*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 
|-
 
|-
 
|diag3.f
 
|diag3.f
 
|
 
|
*Modify ND67 diagnostic to divide by proper # of increments (i.e. every 3 hours)
+
*Modify ND66 diagnostic to divide by proper # of increments (i.e. every 3 hours)
*Modify ND66 diagnostic to divide by proper # of increments (i.e. every hour)
+
*Modify ND67 diagnostic to divide by proper # of increments (i.e. every hour)
 
|-
 
|-
 
|dust_mod.f
 
|dust_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>
 
*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
 +
*Convert SNOMAS from mm H2O to m H2O in SRC_DUST_DEAD
 
|-
 
|-
 
|dust_dead_mod.f
 
|dust_dead_mod.f
Line 153: Line 435:
 
|gamap_mod.f
 
|gamap_mod.f
 
|
 
|
*In routine INIT_TRACERINFO: Define units of CMFMC field w/ same units as GEOS-5
+
*In routine INIT_TRACERINFO:  
 +
*#Define units of CMFMC field w/ same units as GEOS-5
 +
*#For ND28 diagnostic, only print out SOA tracers to "tracerinfo.dat" if LSOA=T
 
|-
 
|-
 
|global_ch4_mod.f
 
|global_ch4_mod.f
Line 166: Line 450:
 
|
 
|
 
*Rewrote logic of #if block, now treat MERRA in the same way as GEOS-5
 
*Rewrote logic of #if block, now treat MERRA in the same way as GEOS-5
 +
|-
 +
|initialize.f
 +
|
 +
*Now also reset the counter for A1 timesteps by calling routine&nbsp;&nbsp;<tt>SET_CT_A1( RESET=.TRUE. )</tt>&nbsp;&nbsp; from time_mod.f
 
|-
 
|-
 
|input_mod.f
 
|input_mod.f
 
|
 
|
 
*In routine READ_SIMULATION_MENU: Read value for MERRA_DIR from <tt>input.geos</tt> file
 
*In routine READ_SIMULATION_MENU: Read value for MERRA_DIR from <tt>input.geos</tt> file
 +
*In routine READ_EMISSIONS_MENU: Turn off LMEGANMONO when LMEGAN is turned off
 
|-
 
|-
 
|land_mercury_mod.f
 
|land_mercury_mod.f
Line 183: Line 472:
 
|
 
|
 
*Added dependencies for merra_cn_mod.f
 
*Added dependencies for merra_cn_mod.f
 +
*Added dependencies for merra_a1_mod.f
 +
*Added dependencies for merra_a3_mod.f
 +
*Added dependencies for merra_i6_mod.f
 
|-
 
|-
 
|main.f
 
|main.f
Line 198: Line 490:
 
*#For all other met data: define DAY_DIM parameter = 8 for 3-hourly temperature data
 
*#For all other met data: define DAY_DIM parameter = 8 for 3-hourly temperature data
 
*In routine INIT_MEGAN:
 
*In routine INIT_MEGAN:
*#For MERRA only: call routines OPEN_MERRA_A3_FIELDS and READ_MERRA_A3_FIELDS every hour
+
*#For MERRA only: call routines OPEN_MERRA_A1_FIELDS and READ_MERRA_A1_FIELDS every hour
 
*#For all other met data: call routines OPEN_A3_FIELDS and READ_A3_FIELDS every 3 hours
 
*#For all other met data: call routines OPEN_A3_FIELDS and READ_A3_FIELDS every 3 hours
 +
*#Now only read NUM_DAYS of initial sfc temp data instead of 15 days
 
|-
 
|-
 
|mercury_mod.f
 
|mercury_mod.f
Line 226: Line 519:
 
|-
 
|-
 
|schem.f
 
|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>
 +
|-
 +
|sulfate_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>
 
*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
 
|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>
 +
|-
 +
|tracer_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>
 
*Change instances of <tt>#if defined( GEOS_5 )</tt>&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;<tt>#if defined( GEOS_5 ) || defined( MERRA )</tt>
Line 243: Line 544:
 
|wetscav_mod.f
 
|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>
+
*We are rewriting this module to implement a [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep_algorithms_merra_v2.pdf new wet scavenging algorithm].  The new algorithm will define the preciptation parameters directly from the MERRA met fields, rather than using the existing parameterization.
 
|}
 
|}
  
Line 255: Line 556:
 
!Modifications made
 
!Modifications made
 
|-
 
|-
| &nbsp;
+
|Makefile
| &nbsp;
+
|
 
+
*Added dependencies for merra_cn_mod.f
 +
*Added dependencies for merra_a1_mod.f
 +
*Added dependencies for merra_a3_mod.f
 +
*Added dependencies for merra_i6_mod.f
 +
|-
 +
|diag3.f
 +
|
 +
*Modify ND66 diagnostic to divide by proper # of increments (i.e. every 3 hours)
 +
*Modify ND67 diagnostic to divide by proper # of increments (i.e. every hour)
 +
|-
 +
|dust_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>
 +
|-
 +
|gamap_mod.f
 +
|
 +
*In routine INIT_TRACERINFO:
 +
*#Define units of CMFMC field w/ same units as GEOS-5
 +
*#For ND28 diagnostic, only print out SOA tracers to "tracerinfo.dat" if LSOA=T
 +
|-
 +
|input_mod.f
 +
|
 +
*In routine READ_SIMULATION_MENU: Read value for MERRA_DIR from <tt>input.geos</tt> file
 +
*In routine READ_EMISSIONS_MENU: Turn off LMEGANMONO when LMEGAN is turned off
 +
|-
 +
|sulfate_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>
 +
|-
 +
|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.]] 11:18, 25 August 2010 (EDT)
+
--[[User:Bmy|Bob Y.]] 11:07, 23 September 2010 (EDT)
  
 
== Resolved issues ==
 
== Resolved issues ==
  
== Outstanding issues ==
+
=== Fractional sea ice ===
 +
 
 +
In order to preserve some information about sea ice leads during the regridding process, we have binned the fractional sea ice coverage into deciles (0-10%, 10-20% ... 90-100% coverage) and saved those as separate fields in the MERRA data archive for GEOS-Chem.  Please see [[List of MERRA met fields#Fractional sea ice|this wiki post]] for more information.
 +
 
 +
=== SNOMAS ===
 +
 
 +
The SNOMAS (snow depth) field in MERRA differs from that in GEOS-5.  It appears that in GEOS-5 a default snow mass value was applied to grid boxes that had > 90% land ice coverage.  This was not done in MERRA.  Bob Yantosca [[List of MERRA met fields#SNOMAS|has implemented an algorithm]] to adjust the MERRA SNOMAS field to be backwards-compatible with GEOS-5.
 +
 
 +
=== Dust emissions ===
 +
 
 +
The dust emissions in GEOS-Chem rely on "tunable parameters" to scale the dust emissions to a specified total.  This is because the dust emissions are very highly dependent on the surface winds, and a small difference in winds (e.g. from GEOS-5 to MERRA) can cause a huge difference in dust emission flux.
 +
 
 +
[mailto:t.d.fairlie@nasa.gov Duncan Fairlie] supplied us with updated tuning parameters for dust.  In routine <tt>DST_MBL</tt> (in <tt>dust_dead_mod.f</tt>), we have added the following code:
 +
 
 +
      !----------------------------------------------------------------
 +
      ! Based on results from MERRA 4x5 for years 2004-2005:
 +
      !
 +
      !  (GEOS-5 - MERRA)/GEOS-5 * 100  is 26.9% in each size bin.
 +
      !
 +
      ! We need to scale to the parameter FLX_MSS_FDG_FCT to make the
 +
      ! dust emissions consistent.  Consequently, to bring MERRA 4x5
 +
      ! dust emissions up to GEOS-5 levels, we need to DIVIDE the
 +
      ! FLX_MSS_FDG_FCT used for GEOS-5 by (1. - 0.269) = 0.731.
 +
      !
 +
      !    -- Duncan Fairlie (t.d.fairlie@nasa.gov), 29 Oct 2010
 +
      !----------------------------------------------------------------
 +
      REAL*8,  PARAMETER    :: FLX_MSS_FDG_FCT = 7.0d-4 / 0.731d0
 +
 
 +
--[[User:Bmy|Bob Y.]] 16:23, 13 April 2011 (EDT)
  
 
=== Lightning ===
 
=== Lightning ===
  
For the time being, GEOS-Chem/MERRA will read in the same the OTD/LIS redistribution factors as for GEOS-5MERRA is based on GEOS-5.2.0, so this should be OK for a first-cut.
+
[mailto:ltmurray@seas.harvard.edu Lee Murray] has provided us with updated OTD/LIS redistribution factors for the MERRA 4x5 met fieldsThese were implemented into [[GEOS-Chem v9-01-01]], along with some [http://seas.harvard.edu/~ltmurray/LNOx.v9-01-01.Release.Notes.pdf important updates to the lightning NOx parameterization].
  
However, for proper treatment, the OTD/LIS redistribution factors for MERRA will be rescaled for the entire OTD/LIS observation period.  This cannot be done until we have processed and regridded several years of MERRA met data.
+
--[[User:Bmy|Bob Y.]] 16:23, 13 April 2011 (EDT)
  
 
=== Wet deposition and scavenging ===
 
=== Wet deposition and scavenging ===
  
We are currently looking into how some of the MERRA precipitation fields can be used to improve the existing [[Wet deposition|GEOS-Chem wet scavenging algorithm]].
+
Helen Amos and Bess Corbitt have implemented an [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/v9-01-01_wetdep.pdf updated algorithm for wet scavenging] that takes advantage of the new precipitation fields from the MERRA data archive.  This was included in [[GEOS-Chem v9-01-01]].
 +
 
 +
--[[User:Bmy|Bob Y.]] 16:23, 13 April 2011 (EDT)
 +
 
 +
=== Remove negative values from MERRA QI, QL fields  ===
 +
 
 +
<span style="color:green">'''''NOTE: This fix was included in [[GEOS-Chem v9-02 benchmark history#v9-02p|GEOS-Chem v9-02p]].'''''</span>
 +
 
 +
We now reset negative numbers in the <tt>QI</tt> and <tt>QL</tt> fields to zero, to avoid anomalous behavior elsewhere.  These are mixing ratios and should not really be negative.  Small negatives (typically of order <tt>-4.0e-27</tt>) may have entered through the regridding process. 
 +
 
 +
We added this code to routine <tt>READ_A3</tt> in <tt>GeosCore/merra_a3_mod.F</tt>:
 +
 
 +
      ! Reset negatives to zero in QI, QL fields (bmy, 9/5/13)
 +
      WHERE( QI < 0d0 ) QI = 0d0
 +
      WHERE( QL < 0d0 ) QL = 0d0
 +
 
 +
This error condition was caught by the [[Debugging with the GEOS-Chem unit tester|GEOS-Chem unit tester]] when compiling with option <tt>FPE=yes</tt>.
 +
 
 +
--[[User:Bmy|Bob Y.]] 15:31, 12 September 2013 (EDT)
 +
 
 +
=== Call WASHOUT from DO_MERRA_CONVECTION with proper time variable ===
 +
 
 +
<span style="color:green">'''''NOTE: This fix was included in [[GEOS-Chem v9-02 benchmark history#v9-02p|GEOS-Chem v9-02p]].'''''</span>
 +
 
 +
In routine <tt>DO_MERRA_CONVECTION</tt> (in module <tt>GeosCore/convection_mod.F</tt>), we now call routine <tt>WASHOUT</tt> with time variable <tt>SDT</tt> instead of<tt>DT</tt>.  Variable <tt>DT</tt> was apparently declared but uninitialized, which caused a floating-point invalid situation. 
 +
 
 +
We modified the code as follows:
 +
 
 +
          ! Call WASHOUT to compute the fraction of tracer lost
 +
                  ! to washout in grid box (I,J,K)
 +
                  CALL WASHOUT( I, J, K,  IC,      BXHEIGHT(K),
 +
!-----------------------------------------------------------------------------
 +
! Prior to 9/4/13:
 +
! Bug fix: need to call WASHOUT with SDT instead of DT, since DT is a typo.
 +
! There is no variable DT defined in this routine.  This error was found by
 +
! compiling with FPE=yes. (bmy, 9/4/13)
 +
!    &                          T(K),      QDOWN,    DT, 
 +
!-----------------------------------------------------------------------------
 +
      &                          T(K),      QDOWN,    SDT, 
 +
      &                          F_WASHOUT, H2O2s(K), SO2s(K),
 +
      &                          WASHFRAC,  AER,      State_Met,
 +
      &                          State_Chm                        )
 +
 
 +
This error condition was caught by the [[Debugging with the GEOS-Chem unit tester|GEOS-Chem unit tester]] when compiling with option <tt>FPE=yes</tt>.
 +
 
 +
--[[User:Bmy|Bob Y.]] 15:29, 12 September 2013 (EDT)
 +
 
 +
== Outstanding issues ==
  
 
=== Acetone ocean source ===
 
=== Acetone ocean source ===
 +
 +
<span style="color:red">'''''NOTE: This fix was rendered obsolete in 2011 when we added the Emily Fischer's updates for the ocean source and sink for acetone (cf. Emily Fischer) into [[GEOS-Chem_v9-01-03_benchmark_history#v9-01-03b|GEOS-Chem v9-01-03b]].'''''</span>
  
 
As a first cut, the ocean source of acetone for MERRA (computed in routine <tt>OCEAN_SOURCE_ACET</tt> in <tt>acetone_mod.f</tt>) is computed in the same way as for GEOS-5.  The following #if block was based on the GEOS-5 code:
 
As a first cut, the ocean source of acetone for MERRA (computed in routine <tt>OCEAN_SOURCE_ACET</tt> in <tt>acetone_mod.f</tt>) is computed in the same way as for GEOS-5.  The following #if block was based on the GEOS-5 code:
Line 295: Line 704:
 
At some point we may need to rescale this.  However this cannot be done until we have sufficient MERRA met fields processed and regridded.
 
At some point we may need to rescale this.  However this cannot be done until we have sufficient MERRA met fields processed and regridded.
  
--[[User:Bmy|Bob Y.]] 15:03, 16 August 2010 (EDT)
+
--[[User:Bmy|Bob Y.]] 16:24, 13 April 2011 (EDT)

Latest revision as of 14:38, 19 June 2019

Obsolete.jpg

The MERRA reanalysis product ceased in early 2016 and is now obsolete. We recommend that you use either GEOS-FP, which is the current operational GMAO met data product, or MERRA-2, which is the current GMAO reanalysis product. MERRA will be de-supported in GEOS-Chem v11-02.

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.

The table below compares many features of GEOS-FP with other met field products.

Feature MERRA-2 GEOS-FP MERRA GEOS-5
Native vertical grid
  • 0.5° lat x 0.625° lon
  • 0.25° lat x 0.3125° lon
  • 0.5° lat x 0.667° lon
    • (surface fields)
  • 1° lat x 1.25° lon
    • (most 3D fields)
  • 1.25° x 1.25° lon
    • (moist quantities)
  • 0.5° lat x 0.667° lon
Native horizontal grid
  • Same as MERRA
  • Same as MERRA
  • 72 hybrid levels
  • Same as MERRA
Time-invariant fields
  • Same as MERRA
  • Same as MERRA
  • FRLAKE
  • FRLAND
  • FRLANDIC(E)
  • FROCEAN
  • PHIS
  • Same as MERRA
Time archiving: surface fields
  • Same as MERRA
  • Same as MERRA
  • A1 (1-hr time average)
  • A3 (6-hr time average)
Time archiving: 3D fields
  • A3 (3-hr time averaged)
  • I3 (3-hr instantaneous)
  • A3 (3-hr time averaged)
  • I3 (3-hr instantaneous)
  • A3 (3-hr time average)
  • I6 (6-hour instantaneous)
  • A6 (6-hr time average) and
  • I6 (6-hr instantaneous)
Timestamps
Precipitation fields
  • Same as MERRA
  • Same as MERRA
  • DQRCU, DQRLSAN,
  • PFICU, PFILSAN,
  • PFLCU, PFLLSAN,
  • REEVAPCN, REEVAPLSAN
  • DQIDTMST
  • DQLDTMST
  • DQVDTMST
  • MOISTQ = DQIDTMST + DQLDTMST + DQVDTMST
Temperature
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • T [K]
  • A3 (6-hr time average)
  • Same as MERRA
  • A6 (6-hr time average)
Relative humidity
  • Same as MERRA
  • A3 (3-hr time average)
  • Same as MERRA
  • A3 (3-hr time average)
  • RH [1]
  • I3 (6-hr instantaneous)
  • Same as MERRA
  • A6 (6-hr time-averaged)
Specific humidity
  • Same as MERRA
  • I3 (3-hr instantaneous)
  • Same as MERRA
  • I3 (3-hr instantaneous)
  • QV [kg kg-1]
  • A3 (3-hr time average)
  • Same as MERRA
  • A6 (6-hr time-averaged)
Vertical pressure velocity
  • Same as MERRA
  • A3 (3-hr time average)
  • Same as MERRA
  • A3 (3-hr time average)
  • OMEGA [Pa s-1]
  • I6 (6-hr instantaneous)
  • Same as MERRA
  • A6 (6-hr time-averaged)
Ertel potential vorticity
  • Same as MERRA
  • I3 (3-hr instantaneous)
  • Same as MERRA
  • I3 (3-hr instantaneous)
  • PV [K m2 kg-1 s-1]
  • I6 (6-hr instantaneous)
  • Same as MERRA
  • A6 (3-hr time-average)
Snow mass
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • Same as MERRA
  • SNOMAS [m]
  • A3 (3-hr time average)
Sea level pressure
  • SLP [Pa]
  • A1 (1-hr time average)
  • Converted to hPa when read from disk
  • SLP [hPa]
  • A1 (1-hr time average)
  • SLP [hPa]
  • A1 (1-hr time average)
  • SLP [hPa]
  • I6 (3-hr instantaneous)
Surface pressure
  • PS [Pa]
  • I3 (3-hr instantaneous)
  • Converted to hPa when read from disk
  • PS [hPa]
  • I3 (3-hr instantaneous)
  • PS [hPa]
  • I6 (6-hr instantaneous)
  • PS [hPa]
  • I6 (3-hr instantaneous)
Tropopause pressure
  • TROPPT [Pa]
  • A1 (1-hr time average)
  • Converted to hPa when read from disk
  • TROPPT [hPa]
  • A1 (1-hr time average)
  • TROPPT [hPa]
  • A1 (1-hr time average)
  • TROPP [hPa]
  • A3 (3-hr time average)
GEOS-Chem convection routine
  • Same as MERRA
  • Same as MERRA
  • DO_MERRA_CONVECTION
    (in convection_mod.F)
  • NFCLDMX
    (in convection_mod.F)
GEOS-Chem wet deposition routine
  • Same as MERRA
  • Same as MERRA
  • WETDEP_MERRA
    (wetscav_mod.F)
  • WETDEP
    (wetscav_mod.F)
GEOS-Chem transport routine
  • Same as MERRA
  • Same as MERRA
  • TPCORE_FVDAS
    (tpcore_fvdas_mod.F90)
  • Same as MERRA
File format read by GEOS-Chem
  • netCDF-4
  • netCDF-3
  • binary
  • binary

NOTES:

  1. Most of the relevant MERRA 3-D data for GEOS-Chem are only available at 1° x 1.25° horizontal resolution.
  2. SNOMAS (snow mass) in MERRA was missing coverage over Antarctica and Greenland (this has been corrected for).
  3. 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.

--Bob Y. (talk) 19:05, 17 August 2015 (UTC)

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

File Modifications made
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/ directory:

File Modifications made
bpch2_mod.f
  • In routine GET_MODELNAME: Add "MERRA_47L" and "MERRA" modelnames to the #if block
  • In routine GET_NAME_EXT: Return grid name "geos5" for MERRA fields
directory_mod.f
  • Added MERRA_DIR variable for MERRA met fields
file_mod.f
  • Add IU_A1 parameter for logical unit # of MERRA 1hr time avg'd data
  • In routine CLOSE_FILES: Now close the IU_A1 logical unit #
pressure_mod.f
  • In routine GET_PRESSURE: Compute PEDGE for MERRA in the same way as for GEOS-5
  • In routine INIT_PRESSURE: Initialize Ap and Bp for MERRA in the same way as for GEOS-5
time_mod.f
  • Add variable CT_A1
  • Add routines SET_CT_A1 and GET_CT_A1
  • Add routine ITS_TIME_FOR_A1
  • Update comments in various places
transfer_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )

GeosCore directory

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

File Modifications made
acetone_mod.f
  • In routine OCEAN_SOURCE_ACET: Compute the ocean source of acetone for MERRA in the same way as for GEOS-5.
    (NOTE: We may need to eventually rescale this.)
convection_mod.f
  • In routine DO_CONVECTION: Call DO_MERRA_CONVECTION from within a parallel loop
  • Add new routine DO_MERRA_CONVECTION, based on the column code
dao_mod.f
  • Add the following allocatable arrays for MERRA: DQRCU, DQRLSAN, FRSEAICE, FRSNO, PFICU, PFILSAN, PFLCU, PFLLSAN, PREANV, PRELSC, RH1, RH2, REEVAPCN, REEVAPLS, SEAICE{00..90}
  • In routine COPY_I6_FIELDS: Rewrote #if block for clarity; Now copy MERRA RH fields
  • In routine INIT_DAO: Initialize MERRA met field arrays
  • In routine IS_ICE: Changed #if block line to #elif defined( GEOS_4 ) || defined( GEOS_5 ) || defined( MERRA )
  • In routine IS_LAND: Changed #if block line to #elif defined( GEOS_4 ) || defined( GEOS_5 ) || defined( MERRA )
  • In routine IS_NEAR: Rewrote logic of #if block for clarity
  • In routine IS_WATER: Changed #if block line to #elif defined( GEOS_4 ) || defined( GEOS_5 ) || defined( MERRA )
  • In routine INTERP: Rewrite #if block logic for clarity
  • In routine CLEANUP_DAO: Deallocate MERRA met field arrays
depo_mercury_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
diag3.f
  • Modify ND66 diagnostic to divide by proper # of increments (i.e. every 3 hours)
  • Modify ND67 diagnostic to divide by proper # of increments (i.e. every hour)
dust_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
  • Convert SNOMAS from mm H2O to m H2O in SRC_DUST_DEAD
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
  • In routine INIT_TRACERINFO:
    1. Define units of CMFMC field w/ same units as GEOS-5
    2. For ND28 diagnostic, only print out SOA tracers to "tracerinfo.dat" if LSOA=T
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
initialize.f
  • Now also reset the counter for A1 timesteps by calling routine  SET_CT_A1( RESET=.TRUE. )   from time_mod.f
input_mod.f
  • In routine READ_SIMULATION_MENU: Read value for MERRA_DIR from input.geos file
  • In routine READ_EMISSIONS_MENU: Turn off LMEGANMONO when LMEGAN is turned off
land_mercury_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
lightning_nox_mod.f
  • In routine LIGHTNING: Eliminate the shallow-cloud inhibititon trap for MERRA, as we already do for GEOS-5
  • In routine 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.)
Makefile
  • Added dependencies for merra_cn_mod.f
  • Added dependencies for merra_a1_mod.f
  • Added dependencies for merra_a3_mod.f
  • Added dependencies for merra_i6_mod.f
main.f
  • Rewrote #if block logic where met fields are read in from disk
  • 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.)
  • Now calls routines from merra_cn_mod.f, merra_a1_mod.f, merra_a3_mod.f, merra_i6_mod.f to read in met data
  • Now compute lightning emissions every 3 hours (immediately after reading in the A3 fields).
megan_mod.f
  • At top of module:
    1. Move the #include "CMN_SIZE" declaration to top of module
    2. For MERRA only: define DAY_DIM parameter = 24 for hourly temperature data
    3. For all other met data: define DAY_DIM parameter = 8 for 3-hourly temperature data
  • In routine INIT_MEGAN:
    1. For MERRA only: call routines OPEN_MERRA_A1_FIELDS and READ_MERRA_A1_FIELDS every hour
    2. For all other met data: call routines OPEN_A3_FIELDS and READ_A3_FIELDS every 3 hours
    3. Now only read NUM_DAYS of initial sfc temp data instead of 15 days
mercury_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
merra_a1_mod.f
  • New module. Reads in the MERRA 1-hour time-averaged (aka "A1") fields from disk.
merra_a3_mod.f
  • New module. Reads in the MERRA 3-hour time-averaged (aka "A3") fields from disk.
merra_cn_mod.f
  • New module. Reads in the MERRA constant (aka "CN") fields from disk.
merra_i6_mod.f
  • New module. Reads in the MERRA 6-hour instantaneous (aka "I6") fields from disk.
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 )
sulfate_mod.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 )
tracer_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
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
wetscav_mod.f
  • We are rewriting this module to implement a new wet scavenging algorithm. The new algorithm will define the preciptation parameters directly from the MERRA met fields, rather than using the existing parameterization.

GeosTomas directory

The following modifications for MERRA were made in the GeosTomas/ directory:

File Modifications made
Makefile
  • Added dependencies for merra_cn_mod.f
  • Added dependencies for merra_a1_mod.f
  • Added dependencies for merra_a3_mod.f
  • Added dependencies for merra_i6_mod.f
diag3.f
  • Modify ND66 diagnostic to divide by proper # of increments (i.e. every 3 hours)
  • Modify ND67 diagnostic to divide by proper # of increments (i.e. every hour)
dust_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
gamap_mod.f
  • In routine INIT_TRACERINFO:
    1. Define units of CMFMC field w/ same units as GEOS-5
    2. For ND28 diagnostic, only print out SOA tracers to "tracerinfo.dat" if LSOA=T
input_mod.f
  • In routine READ_SIMULATION_MENU: Read value for MERRA_DIR from input.geos file
  • In routine READ_EMISSIONS_MENU: Turn off LMEGANMONO when LMEGAN is turned off
sulfate_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )
wetscav_mod.f
  • Change instances of #if defined( GEOS_5 )   to   #if defined( GEOS_5 ) || defined( MERRA )

--Bob Y. 11:07, 23 September 2010 (EDT)

Resolved issues

Fractional sea ice

In order to preserve some information about sea ice leads during the regridding process, we have binned the fractional sea ice coverage into deciles (0-10%, 10-20% ... 90-100% coverage) and saved those as separate fields in the MERRA data archive for GEOS-Chem. Please see this wiki post for more information.

SNOMAS

The SNOMAS (snow depth) field in MERRA differs from that in GEOS-5. It appears that in GEOS-5 a default snow mass value was applied to grid boxes that had > 90% land ice coverage. This was not done in MERRA. Bob Yantosca has implemented an algorithm to adjust the MERRA SNOMAS field to be backwards-compatible with GEOS-5.

Dust emissions

The dust emissions in GEOS-Chem rely on "tunable parameters" to scale the dust emissions to a specified total. This is because the dust emissions are very highly dependent on the surface winds, and a small difference in winds (e.g. from GEOS-5 to MERRA) can cause a huge difference in dust emission flux.

Duncan Fairlie supplied us with updated tuning parameters for dust. In routine DST_MBL (in dust_dead_mod.f), we have added the following code:

     !----------------------------------------------------------------
     ! Based on results from MERRA 4x5 for years 2004-2005:
     !
     !   (GEOS-5 - MERRA)/GEOS-5 * 100  is 26.9% in each size bin.
     !
     ! We need to scale to the parameter FLX_MSS_FDG_FCT to make the 
     ! dust emissions consistent.  Consequently, to bring MERRA 4x5 
     ! dust emissions up to GEOS-5 levels, we need to DIVIDE the 
     ! FLX_MSS_FDG_FCT used for GEOS-5 by (1. - 0.269) = 0.731.
     !
     !    -- Duncan Fairlie (t.d.fairlie@nasa.gov), 29 Oct 2010
     !----------------------------------------------------------------
     REAL*8,  PARAMETER     :: FLX_MSS_FDG_FCT = 7.0d-4 / 0.731d0

--Bob Y. 16:23, 13 April 2011 (EDT)

Lightning

Lee Murray has provided us with updated OTD/LIS redistribution factors for the MERRA 4x5 met fields. These were implemented into GEOS-Chem v9-01-01, along with some important updates to the lightning NOx parameterization.

--Bob Y. 16:23, 13 April 2011 (EDT)

Wet deposition and scavenging

Helen Amos and Bess Corbitt have implemented an updated algorithm for wet scavenging that takes advantage of the new precipitation fields from the MERRA data archive. This was included in GEOS-Chem v9-01-01.

--Bob Y. 16:23, 13 April 2011 (EDT)

Remove negative values from MERRA QI, QL fields

NOTE: This fix was included in GEOS-Chem v9-02p.

We now reset negative numbers in the QI and QL fields to zero, to avoid anomalous behavior elsewhere. These are mixing ratios and should not really be negative. Small negatives (typically of order -4.0e-27) may have entered through the regridding process.

We added this code to routine READ_A3 in GeosCore/merra_a3_mod.F:

      ! Reset negatives to zero in QI, QL fields (bmy, 9/5/13)
      WHERE( QI < 0d0 ) QI = 0d0
      WHERE( QL < 0d0 ) QL = 0d0

This error condition was caught by the GEOS-Chem unit tester when compiling with option FPE=yes.

--Bob Y. 15:31, 12 September 2013 (EDT)

Call WASHOUT from DO_MERRA_CONVECTION with proper time variable

NOTE: This fix was included in GEOS-Chem v9-02p.

In routine DO_MERRA_CONVECTION (in module GeosCore/convection_mod.F), we now call routine WASHOUT with time variable SDT instead ofDT. Variable DT was apparently declared but uninitialized, which caused a floating-point invalid situation.

We modified the code as follows:

	           ! Call WASHOUT to compute the fraction of tracer lost
                  ! to washout in grid box (I,J,K)
                  CALL WASHOUT( I, J, K,   IC,       BXHEIGHT(K), 
!-----------------------------------------------------------------------------
! Prior to 9/4/13:
! Bug fix: need to call WASHOUT with SDT instead of DT, since DT is a typo.
! There is no variable DT defined in this routine.  This error was found by
! compiling with FPE=yes. (bmy, 9/4/13)
!     &                          T(K),      QDOWN,    DT,   
!-----------------------------------------------------------------------------
     &                          T(K),      QDOWN,    SDT,   
     &                          F_WASHOUT, H2O2s(K), SO2s(K), 
     &                          WASHFRAC,  AER,      State_Met,
     &                          State_Chm                         )

This error condition was caught by the GEOS-Chem unit tester when compiling with option FPE=yes.

--Bob Y. 15:29, 12 September 2013 (EDT)

Outstanding issues

Acetone ocean source

NOTE: This fix was rendered obsolete in 2011 when we added the Emily Fischer's updates for the ocean source and sink for acetone (cf. Emily Fischer) into GEOS-Chem v9-01-03b.

As a first cut, the ocean source of acetone for MERRA (computed in routine OCEAN_SOURCE_ACET in acetone_mod.f) is computed in the same way as for GEOS-5. The following #if block was based on the GEOS-5 code:

#elif defined( MERRA )

      !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      !%%% NOTE: Treat MERRA in the same way as GEOS-5, although    %%%
      !%%% we may want to rescale this in the future (bmy, 8/13/10) %%%
      !%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#if defined( GRID4x5 )
      REAL*8, PARAMETER :: SCALE_FACTOR = 0.9551d0   ! MERRA 4x5
#elif defined( GRID2x25 )
      REAL*8, PARAMETER :: SCALE_FACTOR = 0.2212d0   ! MERRA 2x25
#endif

At some point we may need to rescale this. However this cannot be done until we have sufficient MERRA met fields processed and regridded.

--Bob Y. 16:24, 13 April 2011 (EDT)