Difference between revisions of "MERRA-2 implementation details"

From Geos-chem
Jump to: navigation, search
(GeosUtil directory)
 
(93 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Image:Page is under construction.jpg]]
+
== Overview ==
 +
 
 +
[[MERRA-2]] is the newest reanalysis meteorological data product from [http://gmao.gsfc.nasa.gov NASA/GMAO].  It is created with the NASA/GMAO GEOS Data Assimilation System (aka GEOS-DAS), [https://gmao.gsfc.nasa.gov/GMAO_products/NRT_products.php version 5.12.4].  Overall, the structure of MERRA-2 is very similar to the GMAO "forward processing" data product, which we refer to as [[GEOS-FP]].  Therefore, within GEOS-Chem we can (for the most part) treat MERRA-2 in the same way as we do for the GEOS_FP.
 +
 
 +
For more information about MERRA-2, please see these resources:
 +
 
 +
*[[MERRA-2|''MERRA-2'' page on the GEOS-Chem wiki]]
 +
*[[List of MERRA-2 met fields|List of MERRA-2 met fields used for GEOS-Chem]]
 +
*[https://gmao.gsfc.nasa.gov/GMAO_products/reanalysis_products.php Version history of GMAO reanalysis products]
 +
 
 +
=== Comparing MERRA-2 to other GMAO met data products ===
 +
 
 +
The table below compares many features of MERRA-2 with other GMAO met data products:
 +
 
 +
{| border=1 cellspacing=0 cellpadding=5
 +
|-bgcolor="#CCCCCC"
 +
!width="250px"|Feature
 +
!bgcolor="#CCFFFF" width="200px"|[[MERRA-2]]
 +
!width="200px"|[[GEOS-FP]]
 +
!width="200px"|[[MERRA]]
 +
!width="200px"|[[GEOS-5]]
 +
 
 +
|-valign="top"
 +
|Native vertical grid
 +
|bgcolor="#CCFFFF"|
 +
*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
 +
 
 +
|-valign="top"
 +
|Native horizontal grid
 +
|bgcolor="#CCFFFF"|
 +
*72 hybrid levels
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
 
 +
|-valign="top"
 +
|Time-invariant fields
 +
|bgcolor="#CCFFFF"|
 +
*FRLAKE
 +
*FRLAND
 +
*FRLANDIC(E)
 +
*FROCEAN
 +
*PHIS
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
 
 +
|-valign="top"
 +
|Time archiving: surface fields
 +
|bgcolor="#CCFFFF"|
 +
*A1 (1-hr time averaged)
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*A3 (6-hr time average)
 +
 
 +
|-valign="top"
 +
|Time archiving: 3D fields
 +
|bgcolor="#CCFFFF"|
 +
*A3 (3-hr time averaged)
 +
*I3 (3-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*A3 (3-hr time average)
 +
*I6 (6-hour instantaneous)
 +
|
 +
*A6 (6-hr time average) and
 +
*I6 (6-hr instantaneous)
 +
 
 +
|-valign="top"
 +
|Timestamps
 +
|bgcolor="#CCFFFF"|
 +
*[[MERRA-2#MERRA-2_time_archiving|See this wiki page]]
 +
|
 +
*[[GEOS-FP#GEOS-FP_time_archiving|See this wiki page]]
 +
|
 +
*[[MERRA#MERRA_time_archiving|See this wiki page]]
 +
|
 +
*[[MERRA#MERRA_time_archiving|See this wiki page]]
 +
 
 +
|-valign="top"
 +
|Precipitation fields
 +
|bgcolor="#CCFFFF"|
 +
*DQRCU, DQRLSAN,
 +
*PFICU, PFILSAN,
 +
*PFLCU, PFLLSAN,
 +
*REEVAPCN, REEVAPLSAN
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*DQIDTMST
 +
*DQLDTMST
 +
*DQVDTMST
 +
*MOISTQ = DQIDTMST + DQLDTMST + DQVDTMST
 +
 
 +
|-valign="top"
 +
|Temperature
 +
|bgcolor="#CCFFFF"|
 +
*T [K]
 +
*I3 (3-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*A3 (6-hr time average)
 +
|
 +
*Same as MERRA-2
 +
*A6 (6-hr time average)
 +
 
 +
|-valign="top"
 +
|Relative humidity
 +
|bgcolor="#CCFFFF"|
 +
*RH [1]
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*I3 (6-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Specific humidity
 +
|bgcolor="#CCFFFF"|
 +
*QV [kg kg<sup>-1</sup>]
 +
*I3 (3-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA-2
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Vertical pressure velocity
 +
|bgcolor="#CCFFFF"|
 +
*OMEGA [Pa s<sup>-1</sup>]
 +
*A3 (3-hr time average)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*I6 (6-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*A6 (6-hr time-averaged)
 +
 
 +
|-valign="top"
 +
|Ertel potential vorticity
 +
|bgcolor="#CCFFFF"|
 +
*PV [K m<sup>2</sup> kg<sup>-1</sup> s<sup>-1</sup>]
 +
*A1 (1-hr time average)
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*I6 (6-hr instantaneous)
 +
|
 +
*Same as MERRA-2
 +
*A6 (3-hr time-average)
 +
 
 +
|-valign="top"
 +
|Snow mass
 +
|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]]
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
*Same as MERRA-2
 +
|
 +
*SNOMAS [m]
 +
*A3 (3-hr time average)
 +
 
 +
|-valign="top"
 +
|Sea level pressure
 +
|bgcolor="#CCFFFF"|
 +
*SLP [Pa]
 +
*A1 (1-hr time average)
 +
*Converted to hPa when read from disk
 +
|
 +
*SLP [hPa]
 +
*Same as MERRA-2
 +
|
 +
*SLP [hPa]
 +
*Same as MERRA-2
 +
|
 +
*SLP [hPa]
 +
*I6 (3-hr instantaneous)
 +
 
 +
|-valign="top"
 +
|Surface pressure
 +
|bgcolor="#CCFFFF"|
 +
*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)
 +
 
 +
|-valign="top"
 +
|Tropopause pressure
 +
|bgcolor="#CCFFFF"|
 +
*TROPPT [Pa]
 +
*A1 (1-hr time average)
 +
*Converted to hPa when read from disk
 +
|
 +
*TROPPT [hPa]
 +
*Same as MERRA-2
 +
|
 +
*TROPPT [hPa]
 +
*Same as MERRA-2
 +
|
 +
*TROPP [hPa]
 +
*A3 (3-hr time average)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem convection routine
 +
|bgcolor="#CCFFFF"|
 +
*<tt>DO_MERRA_CONVECTION</tt><br>(in <tt>convection_mod.F</tt>)
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*<tt>NFCLDMX</tt><br>(in <tt>convection_mod.F</tt>)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem wet deposition routine
 +
|bgcolor="#CCFFFF"|
 +
*<tt>WETDEP_MERRA</tt><br>(<tt>wetscav_mod.F</tt>)
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*<tt>WETDEP</tt><br>(<tt>wetscav_mod.F</tt>)
 +
 
 +
|-valign="top"
 +
|GEOS-Chem transport routine
 +
|bgcolor="#CCFFFF"|
 +
*<tt>TPCORE_FVDAS</tt><br>(<tt>tpcore_fvdas_mod.F90</tt>)
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
|
 +
*Same as MERRA-2
 +
 
 +
|-valign="top"
 +
|File format read by GEOS-Chem
 +
|bgcolor="#CCFFFF"|
 +
*netCDF-4
 +
|
 +
*netCDF-3
 +
|
 +
*binary
 +
|
 +
*binary
 +
 
 +
|}
 +
 
 +
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 16:41, 17 August 2015 (UTC)
 +
 
 +
=== Timeline for integration into GEOS-Chem ===
 +
 
 +
==== Initial modifications ====
 +
 
 +
As of August 2015, we have [[#Required coding changes in GEOS-Chem|we have modified GEOS-Chem (as described below)]] so that it can be driven by the new [[MERRA-2|NASA/GMAO MERRA-2 reanalysis data product]].  These source code updates were validated
 +
with the 1-month benchmark simulation [[GEOS-Chem v11-01 benchmark history#v11-01c|v11-01c]] and approved on 14 Sept 2015.
 +
 
 +
Currently, several of the GEOS-Chem specialty simulations are already compatible with MERRA-2.  These include:
 +
 
 +
*[[CO2_simulation|CO2 simulation]]
 +
*[[CH4_simulation|CH4 simulation]]
 +
*[[Mercury|Hg simulation]] (but some tuning factors for nested grids are still needed)
 +
*[[POPs_simulation|POPs simulation]]
 +
*[[Rn-Pb-Be_simulation|Rn-Pb-Be simulation]]
 +
*[[Tagged_O3_simulation|Tagged O3 simulation]]
 +
 
 +
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:54, 18 August 2015 (UTC)
 +
 
 +
<span style="color:green">'''''UPDATE: [[GEOS-Chem v11-01]] and newer versions can now be driven by the MERRA-2 reanalysis field data product.'''''</span>
 +
 
 +
==== Modifications for the nested grid simulations ====
 +
 
 +
There were several modifications needed to run [[GEOS-Chem_nested_grid_simulations|nested grid simulations]] with MERRA-2. The source code updates for running MERRA-2 on the 0.5x0.625 nested NA and nested CH grids were included in [[GEOS-Chem v11-01#v11-01e|v11-01e]] (approved 04 Jan 2016).
 +
 
 +
The nested CH grid for MERRA-2 is defined as 10S to 55N and 60E to 150E. It therefore includes China, Southeast Asia, Japan, and India. In order to make it transparent to users that this domain has been expanded, the nested CH grid has been renamed to the nested AS grid for MERRA-2. This update was included in [[GEOS-Chem v11-01#v11-01h|v11-01h]] (approved 11 Oct 2016).
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 17:13, 14 December 2015 (UTC)
 +
 
 +
==== Modifications for the full-chemistry simulations ====
 +
 
 +
The various [[GEOS-Chem_chemistry_mechanisms#NOx-Ox-hydrocarbon-aerosol_chemistry_and_variants|"full-chemistry simulations"]] (i.e. those using the benchmark, UCX, SOA, and tropchem chemistry mechanisms) use emissions (e.g. lightning, dust) that have scale factors that must be tuned specifically for each met field product. The [[GEOS-Chem Support Team|GCST]] has computed the dust and lightning scale factors using MERRA-2 met fields for 2009&ndash;2014. These updates were included in [[GEOS-Chem v11-01#v11-01f|v11-01f]] (approved 16 Apr 2016).
 +
 
 +
When the entire MERRA-2 coverage period (1980&ndash;present) has been processed, the lightning and dust scale factors for MERRA-2 will be adjusted as needed.
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 21:08, 5 February 2016 (UTC)
  
 
== Required coding changes in GEOS-Chem ==
 
== Required coding changes in GEOS-Chem ==
 
   
 
   
As noted in the section above, the similarities between [[MERRA]] and [[GEOS-FP]] (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:
+
As noted in the section above, the similarities between [[MERRA-2]] and [[GEOS-FP]] (especially of the vertical grids) means that in most cases we can just treat MERRA-2 in the same way as for GEOS-FP.  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 ) || defined( MERRA )
+
  #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )
  
 
to  
 
to  
Line 11: Line 352:
 
  #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
 
  #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
  
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:
+
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-2:
  
 
=== Top-level directory ===
 
=== Top-level directory ===
 +
 +
The following modifications for [[MERRA-2]] were made in the root GEOS-Chem directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Modifications made
+
!width="825px"|Modifications made
|-
+
|-valign="top"
 
|Makefile_header.mk     
 
|Makefile_header.mk     
 
|
 
|
*If <tt>MET=merra2</tt> or <tt>MET=merra-2</tt> (case-insensitive), then the MERRA2 C-preprocessor switch will be activated (i.e. <tt>-DMERRA2</tt> will be added to the Makefile variable <tt>USER_DEFS</tt>).
+
*If <tt>MET=merra2</tt> or <tt>MET=merra-2</tt> (case-insensitive), then activate the <tt>MERRA2</tt> C-preprocessor switch
 +
**i.e. Add <tt>-DMERRA2</tt> to the Makefile variable <tt>USER_DEFS</tt>.
 +
*If <tt>GRID=05x0625</tt> is added, then activate the <tt>GRID05x0625</tt> C-preprocessor switch
 +
**i.e. Add <tt>-DGRID05x0625</tt> to the Makefile variable <tt>USER_DEFS</tt>.
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 20:43, 11 August 2015 (UTC)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 18:28, 12 August 2015 (UTC)
  
 
=== Headers directory ===
 
=== Headers directory ===
  
The following modifications for [[MERRA2]] were made in the <tt>Headers/</tt> directory:
+
The following modifications for [[MERRA-2]] were made in the <tt>Headers/</tt> directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Modifications made
+
!width="825px"|Modifications made
|-
+
|-valign="top"
 
|CMN_SIZE_mod.F     
 
|CMN_SIZE_mod.F     
 
|
 
|
*Added size parameters for GEOS-FP grids at 4&deg; x 5&deg; 2&deg; x 2.5&deg; and 0.25&deg; x 0.3125&deg; resolution
+
*Added size parameters for GEOS-FP grids at 4&deg; x 5&deg;, 2&deg; x 2.5&deg;, and 0.25&deg; x 0.3125&deg; resolution
|-
+
|-valign="top"
 
|gigc_input_opt_mod.F90     
 
|gigc_input_opt_mod.F90     
 
|
 
|
 
*Add <tt>MERRA2_DIR</tt> to the <tt>OptInput</tt> derived type
 
*Add <tt>MERRA2_DIR</tt> to the <tt>OptInput</tt> derived type
 
*Set <tt>Input_Opt%MERRA2_DIR = './'</tt> in routine <tt>Init_GIGC_Input_Opt</tt>
 
*Set <tt>Input_Opt%MERRA2_DIR = './'</tt> in routine <tt>Init_GIGC_Input_Opt</tt>
|-
+
|-valign="top"
 
|gigc_state_met_mod.F90     
 
|gigc_state_met_mod.F90     
|
 
 
|Multiple instances:
 
|Multiple instances:
 
*Now use: <tt>#if defined( GEOS_FP ) || defined( MERRA ) || defined( MERRA2 )</tt>
 
*Now use: <tt>#if defined( GEOS_FP ) || defined( MERRA ) || defined( MERRA2 )</tt>
Line 52: Line 397:
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 21:09, 11 August 2015 (UTC)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 18:28, 12 August 2015 (UTC)
  
 
=== GeosUtil directory ===
 
=== GeosUtil directory ===
  
The following modifications for GEOS-FP were made in the <tt>GeosUtil/</tt> directory:
+
The following modifications for [[MERRA-2]] were made in the <tt>GeosUtil/</tt> directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Modifications made
+
!width="825px"|Modifications made
 +
 
 
|-valign="top"
 
|-valign="top"
 
|bpch2_mod.F     
 
|bpch2_mod.F     
|  
+
|In routine GET_MODELNAME:  
In routine GET_MODELNAME:  
+
 
*Add <tt>MERRA2_47L</tt> and <tt>MERRA2</tt> modelnames to the <tt>#if</tt> block
 
*Add <tt>MERRA2_47L</tt> and <tt>MERRA2</tt> modelnames to the <tt>#if</tt> block
 
In routine GET_NAME_EXT:  
 
In routine GET_NAME_EXT:  
*Return grid name <tt>merra2</tt> for MERRA2 fields
+
*Return grid name <tt>merra2</tt> for MERRA-2 fields
 
In routine GET_NAME_EXT_2D:  
 
In routine GET_NAME_EXT_2D:  
 
*Now use <tt>#if defined( MERRA ) || defined( MERRA2 )
 
*Now use <tt>#if defined( MERRA ) || defined( MERRA2 )
 
In routine GET_RES_EXT:
 
In routine GET_RES_EXT:
 
*Return resolution string <tt>05x0625</tt> for 0.5&deg; x 0.625&deg; grids
 
*Return resolution string <tt>05x0625</tt> for 0.5&deg; x 0.625&deg; grids
|-valign="top"
+
 
|grid_mod.F
+
|
+
In routine COMPUTE_GRID:
+
*Overwrite YMID at poles for 0.25&deg; x 0.3125&deg; grids (+/- 89.3975)
+
*Define YMID_R_W for 0.25&deg; x 0.3125&deg; nested grids
+
In routine INIT_GRID:
+
*Define IIIPAR=1152 and JJJPAR=721 for 0.25&deg; x 0.3125&deg; global grid
+
 
|-valign="top"
 
|-valign="top"
 
|pressure_mod.F
 
|pressure_mod.F
|
+
|In routines GET_PEDGE and GET_PEDGE_FULLGRID:
In routines GET_PEDGE and GET_PEDGE_FULLGRID:
+
*Compute PEDGE for MERRA-2 in the same way as for GEOS-5, MERRA, and GEOS-FP
*Compute PEDGE for GEOS-FP in the same way as for GEOS-5 and MERRA
+
 
In routine INIT_PRESSURE:  
 
In routine INIT_PRESSURE:  
*Initialize Ap and Bp for GEOS-FP in the same way as for GEOS-5 and MERRA
+
*Initialize Ap and Bp for MERRA-2 in the same way as for GEOS-5, MERRA, and GEOS-FP
 +
 
 
|-valign="top"
 
|-valign="top"
 
|time_mod.F
 
|time_mod.F
|
+
|In routine GET_A1_TIME:
In routine GET_A1_TIME:
+
*Compute the <tt>DATE</tt> array for MERRA-2 the same way as is done for MERRA and GEOS-FP
*Compute the <tt>DATE</tt> array for GEOS-FP the same way as is done for MERRA.
+
 
 
|-valign="top"
 
|-valign="top"
 
|transfer_mod.F
 
|transfer_mod.F
|
+
|In routine INIT_TRANSFER:
 +
*Set <tt>L_COPY = 36</tt> for MERRA-2
 +
*Changed code to <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 
In several routines:
 
In several routines:
*Changed code to <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP || defined( MERRA2 )</tt>
+
*Changed code to <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] 13:55, 7 November 2013 (EST)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 20:33, 12 August 2015 (UTC)
  
 
=== GeosCore directory ===
 
=== GeosCore directory ===
  
The following modifications for GEOS-FP were made in the <tt>GeosCore/</tt> directory:
+
The following modifications for [[MERRA-2]] were made in the <tt>GeosCore/</tt> directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Modifications made
+
!width="825px"|Modifications made
|-
+
 
 +
|-valign="top"
 
|calcrate.F
 
|calcrate.F
 
|Multiple instances:
 
|Multiple instances:
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
|-
+
 
 +
|-valign="top"
 
|carbon_mod.F
 
|carbon_mod.F
 
|Multiple instances:
 
|Multiple instances:
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
|-
+
 
 +
|-valign="top"
 
|cldice_HbrHOBr_mod.F
 
|cldice_HbrHOBr_mod.F
 
|Multiple instances:
 
|Multiple instances:
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
|-
+
 
 +
|-valign="top"
 
|convection_mod.F
 
|convection_mod.F
|
+
|In routine DO_CONVECTION:
In routine DO_CONVECTION:
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
In routine DO_MERRA_CONVECTION:
*For GEOS-FP, PFICU and PFLCU fields are defined on level edges.  Pass the top edge value at each level (stored in local arrays T_PFICU and T_PFLCU) to DO_MERRA_CONVECTION.
+
*Changed code to <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt> where we set PFICU and PFLCU
*Add T_PFICU and T_PFLCU arrays to the PRIVATE statement of the OpenMP loop.
+
 
|-
+
|-valign="top"
 
|dao_mod.F
 
|dao_mod.F
|
+
|In routine COPY_I6_FIELDS:
In routine COPY_I6_FIELDS:
+
*Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Renamed this routine to COPY_I3_I6_FIELDS
+
*Added #if block for GEOS-FP met
+
In routines IS_ICE, IS_LAND, IS_NEAR, IS_WATER:
+
*Now use: <tt>#elif defined( GEOS_4 ) || defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
In routine INTERP:  
 
In routine INTERP:  
*Add #if block for GEOS-FP
+
*Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt>
|-
+
 
 +
|-valign="top"
 
|depo_mercury_mod.F
 
|depo_mercury_mod.F
|
+
|In routine ADD_Hg2_SNOWPACK
In routine ADD_Hg2_SNOWPACK
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
 +
|dao_mod.F
 +
|In routine COPY_I6_FIELDS:
 +
*Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt>
 +
In routine INTERP:
 +
*Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt>
 +
 
 +
|-valign="top"
 
|diag3.F
 
|diag3.F
|
+
|Multiple instances:
*Add SCALE_I3 counter for instantaneous met fields
+
*Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt>, etc.
*Modify ND66 diagnostic to divide by proper # of A3 increments (i.e. every 3 hours)
+
 
**With the exception of T, SPHU, which are I3 fields
+
|-valign="top"
*Modify ND67 diagnostic to divide by proper # of A1 increments (i.e. every hour)
+
**With the exception of CLDTOPS, which is an A3 field
+
|-
+
|dust_mod.F
+
|
+
In routine SRC_DUST_DEAD:
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
|-
+
 
|dust_dead_mod.F
 
|dust_dead_mod.F
|
+
|In routine DST_MBL:  
In routine DST_MBL:  
+
 
*For GEOS-FP, add a new value for parameter FLX_MSS_FDG_FCT.  The scale factor ensures that we get the same dust totals (w/in roundoff error) as for GEOS-5.
 
*For GEOS-FP, add a new value for parameter FLX_MSS_FDG_FCT.  The scale factor ensures that we get the same dust totals (w/in roundoff error) as for GEOS-5.
|-
+
 
|fast_j.F
+
|-valign="top"
|
+
|fast_jx_mod.F
 +
|In routine FAST_JX:
 
*Do cloud overlapping for GEOS-FP in the same way as for GEOS-5 and MERRA.   
 
*Do cloud overlapping for GEOS-FP in the same way as for GEOS-5 and MERRA.   
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
|-
+
 
 +
|-valign="top"
 
|gamap_mod.F
 
|gamap_mod.F
|
+
|In routine INIT_TRACERINFO:  
In routine INIT_TRACERINFO:  
+
 
*Changed code to: <tt>#elif defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
 
*Changed code to: <tt>#elif defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
|-
+
 
|geosfp_read_mod.F90
+
|-valign="top"
|
+
*Added this module w/ routines to read GEOS-FP met data (in netCDF format)
+
|-
+
 
|global_ch4_mod.F
 
|global_ch4_mod.F
|
+
|In routines WETLAND_EMIS and READ_COPROD:
In routines WETLAND_EMIS and READ_COPROD:
+
 
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
 
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
|-
+
 
|global_hno3_mod.F
+
|-valign="top"
|
+
In routine GET_GLOBAL_HNO3:
+
*Now use:<br><tt>#if defined( GEOS_3 ) || defined( GEOS_4 ) || defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
|-
+
|global_o3_mod.F
+
|
+
In routine GET_GLOBAL_O3
+
*Now use:: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
|-
+
|initialize.F
+
|
+
*Restructure USE statements for clarity
+
*Now also reset the counter for I3 timesteps by calling routine&nbsp;&nbsp;<tt>SET_CT_I3( RESET=.TRUE. )</tt>
+
|-
+
 
|input_mod.F
 
|input_mod.F
|
+
|In routine READ_SIMULATION_MENU:  
In routine READ_SIMULATION_MENU:  
+
*Now read value for <tt>Input_Opt%MERRA2_DIR</tt> from <tt>input.geos</tt>
*Read value for GEOS_FP_DIR from <tt>input.geos</tt> file and save into <tt>Input_Opt</tt>
+
*Also set <tt>Input_Opt%RES_DIR</tt> accordingly for 0.5&deg; x 0.625&deg; nested grids
*Set LUNZIP=.FALSE. for GEOS-FP met
+
*Set LUNZIP=.FALSE. for MERRA-2 met
 
In routine READ_CONVECTION_MENU:  
 
In routine READ_CONVECTION_MENU:  
*Change #if statement to allow non-local PBL mixing for GEOS-FP met data
+
*Change #if statement to allow non-local PBL mixing for MERRA-2 met data
In routine READ_EMISSIONS_MENU:
+
*Turn off LMEGANMONO when LMEGAN is turned off
+
 
In routine VALIDATE_DIRECTORIES:  
 
In routine VALIDATE_DIRECTORIES:  
*Error check GEOS_FP_DIR for start & end date
+
*Error check MERRA2_DIR for start & end date
|-
+
 
 +
|-valign="top"
 
|land_mercury_mod.F
 
|land_mercury_mod.F
 
|
 
|
 
In routines LAND_MERCURY_FLUX:
 
In routines LAND_MERCURY_FLUX:
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 
In routines SOILEMIS:
 
In routines SOILEMIS:
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Extend #if statement for variable SOIL_EMIS_FAC to get the code to compile w/o error.<br>'''''(NOTE: Team Hg: you will have to submit a proper value for this later.'''''
+
*Extend #if statement for variable SOIL_EMIS_FAC to get the code to compile w/o error.
|-
+
**<span style="color:red">Team Hg will need to supply an updated value later on.</span>
|lightning_nox_mod.F
+
 
|
+
|-valign="top"
In routine LIGHTNING:
+
*Eliminate the shallow-cloud inhibititon trap for GEOS-FP, as we already do for GEOS-5 and MERRA
+
In routine GET_OTD_LIS_SCALE:
+
*Now use updated values for <tt>ANN_AVG_FLASHRATE</tt> computed by Lee Murray (2013-11-07).
+
|-
+
|Makefile
+
|
+
*Added dependencies for new routines
+
*Added the following targets
+
**libnc: Compiles the code in the NcdfUtil directory and creates the <tt>libNcUtils.a</tt> library
+
**ncdfcheck: Compiles a program that will test the integrity of the netCDF library installation.
+
|-
+
 
|main.F
 
|main.F
|
+
|In main.F:
*Rewrote USE statements for clarity
+
*Changed code to <tt>if defined( GEOS_FP ) || defined( MERRA2 )</tt> where we define <tt>N_DYN_STEPS</tt>
*Added calls to routines from geosfp_read_mod.F
+
*Changed code to <tt>if defined( GEOS_FP ) || defined( MERRA2 )</tt> where we define <tt>Input_Opt%USE_O3_FROM_MET</tt>
*Split off the code that reads met fields into internal subroutines READ_INITIAL_MET_FIELDS and READ_MET_FIELDS, for clarity.
+
In included routine READ_INITIAL_MET_FIELDS:
*Renamed NN to NNN to avoid name confusion
+
*Added calls to routines from <tt>merra2_read_mod.F90</tt>
|-
+
In included routine READ_MET_FIELDS:
|megan_mod.F
+
*Added calls to routines from <tt>merra2_read_mod.F90</tt>
|
+
 
At top of module
+
|-valign="top"
*For MERRA and GEOS-FP met: define DAY_DIM parameter = 24 for hourly temperature data
+
*For all other met data: define DAY_DIM parameter = 8 for 3-hourly temperature data
+
In routine INIT_MEGAN:
+
*For MERRA and GEOS-FP met: define G4AHEAD = 003000
+
*Now call GEOS57_READ_A1 (from geosfp_read_mod.F90) to read surface temperature data
+
|-
+
 
|mercury_mod.F
 
|mercury_mod.F
 +
|In routine CHEMMERCURY:
 +
*Add placeholder <tt>K_RED_JNO2</tt> parameter for the 0.5&deg; x 0.625&deg; nested grids. 
 +
**For now use the same value as for the 0.5&deg; x 0.666&deg; grid. 
 +
**<span style="color:red">Team Hg will need to supply an updated value later on.</span>
 +
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 +
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 +
 +
|-valign="top"
 +
|merra2_read_mod.F90
 
|
 
|
In routine CHEM_Hg0_Hg2:
+
*Added this module w/ routines to read GEOS-FP met data (in netCDF format)
*In the block that computes LWC, changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*[[GEOS-FP_implementation_details#Modifications_to_reduce_the_number_of_times_netCDF_files_are_opened|Also added this modification to only open netCDF files once per day]], to reduce time spent in file I/O.
*In the block that computes Hg0 exchange, changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
|nei2005_anthro_mod.F
+
|
+
In routines EMISS_NEI2005_ANTHRO and EMISS_NEI_ANTHRO_05x0666:
+
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
|-
+
 
|ocean_mercury_mod.F
 
|ocean_mercury_mod.F
|
+
|Multiple instances:
Multiple instances:
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Now use: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
 
|planeflight_mod.F
 
|planeflight_mod.F
|
+
|In routine PLANEFLIGHT
In routine PLANEFLIGHT
+
*Now use: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Now use: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
 
|strat_chem_mod.F90
 
|strat_chem_mod.F90
|
+
|Multiple instances:
Multiple instances:
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
In routine DO_SYNOZ:
|-
+
*Add placeholder values for 0.5&deg; x 0.625&deg; grids
 +
 
 +
|-valign="top"
 
|sulfate_mod.F
 
|sulfate_mod.F
|
+
|In routine CHEM_SO2:
Multiple instances:
+
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
In routine INIT_SULFATE:
|-
+
*Changed code to: <tt>#if !defined( GEOS_5 ) && !defined( MERRA ) && !defined( GEOS_FP ) && !defined( MERRA2 )</tt>
 +
In routine SRCSFC30 (TOMAS-only):
 +
*Added a placeholder value for TSCALE for the 0.5&deg; x 0.625&deg; grids
 +
 
 +
|-valign="top"
 
|tagged_ox_mod.F
 
|tagged_ox_mod.F
|
+
|In routine GET_REGIONAL_POX:
Multiple instances:
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
 
|tpcore_bc_mod.F:
 
|tpcore_bc_mod.F:
|
+
|Multiple instances:
Multiple instances:
+
*Added MERRA-2 values for <tt>I1_BC_CH, I2_BC_CH, J1_BC_CH, J2_BC_CH</tt>  
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Added MERRA-2 values for <tt>I1_BC_EU, I2_BC_EU, J1_BC_EU, J2_BC_EU</tt>
|-
+
*Added MERRA-2 values for <tt>I1_BC_NA, I2_BC_NA, J1_BC_NA, J2_BC_NA</tt>  
|tropopause_mod.F:
+
 
|
+
|-valign="top"
Multiple instances:
+
*Now use: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
|-
+
 
|vdiff_mod.F90
 
|vdiff_mod.F90
|
+
|In routine VDIFFDR:
In routine VDIFFDR:
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
 
|-
+
|-valign="top"
 
|wetscav_mod.F
 
|wetscav_mod.F
|
+
|In routine DO_WETDEP:
In routines DO_WETDEP, DO_WASHOUT_ONLY
+
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt>
+
In routine DO_WASHOUT_ONLY::
 +
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 
In routine MAKE_QQ:
 
In routine MAKE_QQ:
*Add #if block for GEOS-FP met
+
*Changed code to: <tt>#defined( GEOS_FP ) || defined( MERRA2 )</tt>
*Refer to PFILSAN(I,J,L+1) and PFLLSAN(I,J,L+1), since these fields are defined on level edges
+
 
In routine RAINOUT:
 
In routine RAINOUT:
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )</tt>
+
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
  
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] 14:23, 7 November 2013 (EST)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 18:29, 12 August 2015 (UTC)
  
=== GeosApm directory ===
+
=== HEMCO/Core directory ===
  
The following modifications for GEOS-FP were made in the <tt>GeosTomas/</tt> directory:
+
The following modifications for MERRA-2 were made in the <tt>HEMCO/Core</tt> directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Modifications made
+
!width="825px"|Modifications made
|-
+
 
|Makefile
+
|-valign="top"
|
+
|hco_chartools_mod.F90
*Added dependencies for geos57_read_mod.F
+
|At the top of the module:
*Removed references to obsolete GEIA biogenic emissions
+
*Extend the <tt>#ifdef</tt> statement to add the parameter <tt>DEF_MET = 'merra2'</tt>
|-
+
*Extend the <tt>#ifdef</tt> statement to add the parameter <tt>DEF_RES = '05x0625'</tt>
|carbon_mod.F
+
 
|
+
|-valign="top"
*Synchronized with GeosCore/carbon_mod.F
+
|hco_interp_mod.F90
|-
+
|In routine MODLEV_INTERPOLATE:
|dao_mod.F
+
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
|
+
 
*Synchronized with GeosCore/dao_mod.F
+
|-
+
|dust_mod.F
+
|
+
*Synchronized with GeosCore/dust_mod.F
+
|-
+
|dust_dead_mod.F
+
|
+
*Synchronized with GeosCore/dust_dead_mod.F
+
|-
+
|main.F
+
|
+
*Synchronized with GeosCore/main.F
+
|-
+
|sulfate_mod.F
+
|
+
*Synchronized with GeosCore/sulfate_mod.F
+
|-
+
|wetscav_mod.F
+
|
+
*Synchronized with GeosCore/wetscav_mod.F
+
*NOTE: Needs validation by APM team
+
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] 13:49, 9 February 2012 (EST)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 18:28, 12 August 2015 (UTC)
  
=== NcdfUtil directory ===
+
=== HEMCO/Extensions directory ===
  
We have added the <tt>NcdfUtil/</tt> directory, which contains routines for netCDF file I/O.  These routines are based on the NcdfUtilities package by Bob Yantosca.  These are built when you compile GEOS-Chem with the <tt>NETCDF=yes</tt> Makefile option.
+
The following modifications for MERRA-2 were made in the <tt>HEMCO/Extensions</tt> directory:
  
 
{| border=1 cellspacing=0 cellpadding=5  
 
{| border=1 cellspacing=0 cellpadding=5  
 
|- bgcolor="#CCCCCC"
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="175px"|File
!width="800px"|Description
+
!width="825px"|Modifications made
|-
+
|Makefile
+
|GNU Makefile used to build the NcdfUtil code.
+
|-
+
|TestNcdfUtil.F90
+
|Test program to verify that the netCDF libraries were built properly.  (This is executed only when you issue a <tt>make ncdfcheck</tt> command.)
+
|-
+
|m_do_err_out.F90
+
|Routine to print out netCDF error messages.
+
|-
+
|m_netcdf_io_checks.F90
+
|Routines to check whether a netCDF file contains a specified variable or dimension.
+
|-
+
|m_netcdf_io_close.F90
+
|Routines to close a netCDF file.
+
|-
+
|m_netcdf_io_create.F90
+
|Routines used to open a netCDF file for output and to synchronize a netCDF file.
+
|-
+
|m_netcdf_io_define.F90
+
|Routines to define netCDF variables and attributes.  Use this when writing data to a netCDF file.
+
|-
+
|m_netcdf_io_get_dimlen.F90
+
|Routines to return dimension information from a netCDF file.
+
|-
+
|m_netcdf_io_handle_err.F90
+
|Routines for netCDF I/O error handling.
+
|-
+
|m_netcdf_io_open.F90
+
|Routines for opening a netCDF file for reading or for writing.
+
|-
+
|m_netcdf_io_read.F90
+
|Routines for reading variables (of INTEGER, REAL*4, REAL*8, and CHARACTER types) from a netCDF file.
+
|-
+
|m_netcdf_io_readattr.F90
+
|Routines for reading global and variable attributes (of INTEGER, REAL*4, REAL*8, and CHARACTER types) from a netCDF file.
+
|-
+
|m_netcdf_io_write.F90
+
|Routines for writing data to a netCDF file
+
|}
+
  
--[[User:Bmy|Bob Y.]] 10:34, 3 February 2012 (EST)
+
|-valign="top"
 +
|hcox_ch4wetland_mod.F90
 +
|In routine WETLAND_EMIS:
 +
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
  
=== NcdfUtil/perl subdirectory ===
+
|-valign="top"
 +
|hcox_dustdead_mod.F
 +
|In routine HCOX_DUSTDEAD_GETTUN:
 +
*Add values of <tt>FLX_MSS_FDG_FCT= -999</tt> for the MERRA-2 2&deg; x 2.5&deg; and 4&deg; x 5&deg; grids.
 +
**<span style="color:red">We will add the correct values once we can run simulations with at least a year of met data.</span>
  
In this directory, we have added scripts for automatically generating Fortran code with the proper calls from the NcdfUtilities package. We anticipate that this will be a convenience for GEOS-Chem users, as it will relieve some of the drudgery of writing these calls by hand.
+
|-valign="top"
 +
|hcox_lightnox_mod.F
 +
|In routine GET_OTD_LIS_SCALE:
 +
*Add placeholder values of <tt>ANN_AVG_FLASHRATE</tt> for the MERRA-2 0.5&deg; x 0.625&deg; grids.
 +
*Add placeholder values of <tt>BETA</tt> for the MERRA-2 2&deg; x 2.5&deg; and 4&deg; x 5&deg; grids.
 +
**<span style="color:red">We will add the correct values once we can run simulations with at least a year of met data.</span>
 +
 
 +
|-valign="top"
 +
|hcox_megan_mod.F
 +
|In routine GET_GAMMA_SM:
 +
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt>
 +
 
 +
|-valign="top"
 +
|hcox_tomas_dustdead_mod.F
 +
|In routine HCOX_TOMAS_DUSTDEAD_GETTUN:
 +
*Add placeholder values of <tt>FLX_MSS_FDG_FCT = -999</tt> for the MERRA-2 2&deg; x 2.5&deg; and 4&deg; x 5&deg; grids.
 +
**<span style="color:red">We will add the correct values once we can run simulations with at least a year of met data.</span>
  
{| border=1 cellspacing=0 cellpadding=5
 
|- bgcolor="#CCCCCC"
 
!width="175px"|File
 
!width="800px"|Description
 
|-
 
|StrTrim.pm
 
|Perl module used by the <tt>ncCode*</tt> scripts.  Contains routines for stripping withe space from strings.
 
|-
 
|ncCodeDef
 
|Perl script that generates Fortran code to open a netCDF file and define the various dimensions, variables, and attributes.
 
|-
 
|ncCodeWrite
 
|Perl script that will generate Fortran code to write data to a netCDF file.
 
|-
 
|ncCodeRead
 
|Perl script that will generate Fortran code to read data from a netCDF file.
 
|-
 
|nc_definitions.rc
 
|Generic input file used by the <tt>ncCode*</tt> scripts.  You can edit this.
 
|-
 
|definitions_cn.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#Constant_fields|GEOS-FP CN data]].
 
|-
 
|definitions_a1.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#A1 fields|GEOS-FP A1 data]].
 
|-
 
|definitions_a3cld.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#A3cld fields|GEOS-FP A3cld data]].
 
|-
 
|definitions_a3dyn.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#A3dyn fields|GEOS-FP A3dyn data]].
 
|-
 
|definitions_a3mstc.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#A3mstC fields|GEOS-FP A3mstC data]].
 
|-
 
|definitions_a3mste.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#A3mstE fields|GEOS-FP A3mstE data]].
 
|-
 
|definitions_i3.rc
 
|Customized version of <tt>nc_definitions.rc</tt> that will generate Fortran code for reading [[List of GEOS-FP met fields#I3 fields|GEOS-FP I3 data]].
 
 
|}
 
|}
  
--[[User:Bmy|Bob Y.]] 15:49, 12 May 2014 (EDT)
+
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 18:53, 12 August 2015 (UTC)
 +
 
 +
== Previous issues that are now resolved ==
 +
 
 +
=== Default timestep for MERRA-2 nested grid simulations ===
 +
 
 +
<span style="color:green">'''''The original update was included in [[GEOS-Chem v11-02#v11-02f|v11-02f]] (approved 17 May 2018). The final recommendation was included [[GEOS-Chem 12#12.0.0|GEOS-Chem 12.0.0]].'''''</span>
 +
 
 +
'''''Bram Maasakkers wrote:'''''
 +
 
 +
:Melissa Sulprizio and I have been working on the methane simulation with MERRA-2 and the nested North America grid at 0.5x0.625. During our initial simulations, we found very high values in the stratosphere, originating at the edges of the domain and showing a checkerboard-like pattern in the domain. It appears this is caused by a violation of the CFL condition in the stratosphere due to strong stratospheric winds in MERRA-2. When the condition is violated at the boundaries, it leads to an out-of-bounds error but even preventing an out-of-bounds error there by capping the array index doesn’t prevent the high concentrations from originating. It seems that this previously occurred for the GEOS-5 simulation but it did not seem to compromise simulation results significantly. For our purposes of comparing total column measurements of GOSAT to model output, it is a larger problem. We found it also occurs in the full-chem simulation, I’m attaching a plot of column ozone here to illustrate, the high values are only present in the stratospheric layers.
 +
 
 +
:I think that a variable timestep could be implemented to prevent this from happening. For now, we recommend using a 5/10 transport/chemistry timestep with MERRA-2 nested grid simulations instead of 10/20.
 +
 
 +
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 16:01, 17 May 2018 (UTC)
 +
 
 +
'''''Ke Li wrote:'''''
 +
 
 +
:The default time steps for nested tropchem simulation using MERRA2 are 5 mins for transport and 10 mins for chemistry. It took me about 2 days to run 1 months of simulation at the cost of 24 cpu. Now I change time steps to 10 mins for transport and 20 mins for chemistry,  and it costs 1.2 days to run 1 months of simulation at the cost of 24 cpu. The 5/20mins time step for a test simulation over Asia (Tropchem, MERRA-2, 24 CPUs) still costs about two days for one month of simulation. The cost time is estimated from that the test simulation has used 28.5 hours for 17.5 days of simulation, though it hasn’t finished.
 +
 
 +
'''''Lin Zhang wrote:'''''
 +
 
 +
:I am fine to use 10/20 mins time step as default which does not seem to affect the tropospheric simulation of air pollutants. We used to run GEOS-5 at 0.5 degree resolution with 10/20 mins, and tropospheric simulations were working well.
 +
 +
:We can also put a stop sign for CH4 and CO2 simulations to warn users changing time steps to 5/10 mins.
 +
 
 +
'''''Yuxuan Wang wrote:'''''
 +
 
 +
:I agree with Lin and would also opt for a 10/20 mins time step as the default for full-chemistry nested-grid simulation. The reason is exactly as Daniel said. The nested-grid model users are predominantly using the full-chemistry option and concerns with tropospheric or surface concentration. The specialty nested-grid simulations, such as tagged CO, methane and CO2, used to require a separate development and model tuning, as least during the past before the HEMCO era. As a continuation of that ‘tradition’,  the idea of putting a note or stop sign for the CH4 and CO2 nested-grid code should work well.
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 12:50, 30 July 2018 (UTC)
 +
 
 +
== Unresolved issues ==
 +
 
 +
=== PBL height ===
 +
 
 +
'''''[[User:Chris Holmes|Chris Holmes]] wrote:'''''
 +
 
 +
<blockquote>I’ve documented many cases in which the reported PBLH in MERRA2 does not align with the mixing height that an observer would diagnose from the MERRA2 vertical profiles of potential temperature and humidity. In my group we are diagnosing our own PBL heights for use in GEOS-Chem.</blockquote>
 +
 
 +
--[[User:Melissa Payer|Melissa Sulprizio]] ([[User talk:Melissa Payer|talk]]) 20:25, 30 May 2017 (UTC)

Latest revision as of 18:49, 28 May 2020

Overview

MERRA-2 is the newest reanalysis meteorological data product from NASA/GMAO. It is created with the NASA/GMAO GEOS Data Assimilation System (aka GEOS-DAS), version 5.12.4. Overall, the structure of MERRA-2 is very similar to the GMAO "forward processing" data product, which we refer to as GEOS-FP. Therefore, within GEOS-Chem we can (for the most part) treat MERRA-2 in the same way as we do for the GEOS_FP.

For more information about MERRA-2, please see these resources:

Comparing MERRA-2 to other GMAO met data products

The table below compares many features of MERRA-2 with other GMAO met data 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
  • 72 hybrid levels
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
Time-invariant fields
  • FRLAKE
  • FRLAND
  • FRLANDIC(E)
  • FROCEAN
  • PHIS
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
Time archiving: surface fields
  • A1 (1-hr time averaged)
  • Same as MERRA-2
  • Same as MERRA-2
  • A3 (6-hr time average)
Time archiving: 3D fields
  • A3 (3-hr time averaged)
  • I3 (3-hr instantaneous)
  • Same as MERRA-2
  • Same as MERRA-2
  • A3 (3-hr time average)
  • I6 (6-hour instantaneous)
  • A6 (6-hr time average) and
  • I6 (6-hr instantaneous)
Timestamps
Precipitation fields
  • DQRCU, DQRLSAN,
  • PFICU, PFILSAN,
  • PFLCU, PFLLSAN,
  • REEVAPCN, REEVAPLSAN
  • Same as MERRA-2
  • Same as MERRA-2
  • DQIDTMST
  • DQLDTMST
  • DQVDTMST
  • MOISTQ = DQIDTMST + DQLDTMST + DQVDTMST
Temperature
  • T [K]
  • I3 (3-hr instantaneous)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • A3 (6-hr time average)
  • Same as MERRA-2
  • A6 (6-hr time average)
Relative humidity
  • RH [1]
  • A3 (3-hr time average)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • I3 (6-hr instantaneous)
  • Same as MERRA-2
  • A6 (6-hr time-averaged)
Specific humidity
  • QV [kg kg-1]
  • I3 (3-hr instantaneous)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • A3 (3-hr time average)
  • Same as MERRA-2
  • A6 (6-hr time-averaged)
Vertical pressure velocity
  • OMEGA [Pa s-1]
  • A3 (3-hr time average)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • I6 (6-hr instantaneous)
  • Same as MERRA-2
  • A6 (6-hr time-averaged)
Ertel potential vorticity
  • PV [K m2 kg-1 s-1]
  • A1 (1-hr time average)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • I6 (6-hr instantaneous)
  • Same as MERRA-2
  • A6 (3-hr time-average)
Snow mass
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
  • 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]
  • Same as MERRA-2
  • SLP [hPa]
  • Same as MERRA-2
  • 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]
  • Same as MERRA-2
  • TROPPT [hPa]
  • Same as MERRA-2
  • TROPP [hPa]
  • A3 (3-hr time average)
GEOS-Chem convection routine
  • DO_MERRA_CONVECTION
    (in convection_mod.F)
  • Same as MERRA-2
  • Same as MERRA-2
  • NFCLDMX
    (in convection_mod.F)
GEOS-Chem wet deposition routine
  • WETDEP_MERRA
    (wetscav_mod.F)
  • Same as MERRA-2
  • Same as MERRA-2
  • WETDEP
    (wetscav_mod.F)
GEOS-Chem transport routine
  • TPCORE_FVDAS
    (tpcore_fvdas_mod.F90)
  • Same as MERRA-2
  • Same as MERRA-2
  • Same as MERRA-2
File format read by GEOS-Chem
  • netCDF-4
  • netCDF-3
  • binary
  • binary

--Bob Y. (talk) 16:41, 17 August 2015 (UTC)

Timeline for integration into GEOS-Chem

Initial modifications

As of August 2015, we have we have modified GEOS-Chem (as described below) so that it can be driven by the new NASA/GMAO MERRA-2 reanalysis data product. These source code updates were validated with the 1-month benchmark simulation v11-01c and approved on 14 Sept 2015.

Currently, several of the GEOS-Chem specialty simulations are already compatible with MERRA-2. These include:

--Bob Y. (talk) 14:54, 18 August 2015 (UTC)

UPDATE: GEOS-Chem v11-01 and newer versions can now be driven by the MERRA-2 reanalysis field data product.

Modifications for the nested grid simulations

There were several modifications needed to run nested grid simulations with MERRA-2. The source code updates for running MERRA-2 on the 0.5x0.625 nested NA and nested CH grids were included in v11-01e (approved 04 Jan 2016).

The nested CH grid for MERRA-2 is defined as 10S to 55N and 60E to 150E. It therefore includes China, Southeast Asia, Japan, and India. In order to make it transparent to users that this domain has been expanded, the nested CH grid has been renamed to the nested AS grid for MERRA-2. This update was included in v11-01h (approved 11 Oct 2016).

--Melissa Sulprizio (talk) 17:13, 14 December 2015 (UTC)

Modifications for the full-chemistry simulations

The various "full-chemistry simulations" (i.e. those using the benchmark, UCX, SOA, and tropchem chemistry mechanisms) use emissions (e.g. lightning, dust) that have scale factors that must be tuned specifically for each met field product. The GCST has computed the dust and lightning scale factors using MERRA-2 met fields for 2009–2014. These updates were included in v11-01f (approved 16 Apr 2016).

When the entire MERRA-2 coverage period (1980–present) has been processed, the lightning and dust scale factors for MERRA-2 will be adjusted as needed.

--Melissa Sulprizio (talk) 21:08, 5 February 2016 (UTC)

Required coding changes in GEOS-Chem

As noted in the section above, the similarities between MERRA-2 and GEOS-FP (especially of the vertical grids) means that in most cases we can just treat MERRA-2 in the same way as for GEOS-FP. 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 ) || defined( MERRA ) || defined( GEOS_FP )

to

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

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-2:

Top-level directory

The following modifications for MERRA-2 were made in the root GEOS-Chem directory:

File Modifications made
Makefile_header.mk
  • If MET=merra2 or MET=merra-2 (case-insensitive), then activate the MERRA2 C-preprocessor switch
    • i.e. Add -DMERRA2 to the Makefile variable USER_DEFS.
  • If GRID=05x0625 is added, then activate the GRID05x0625 C-preprocessor switch
    • i.e. Add -DGRID05x0625 to the Makefile variable USER_DEFS.

--Bob Y. (talk) 18:28, 12 August 2015 (UTC)

Headers directory

The following modifications for MERRA-2 were made in the Headers/ directory:

File Modifications made
CMN_SIZE_mod.F
  • Added size parameters for GEOS-FP grids at 4° x 5°, 2° x 2.5°, and 0.25° x 0.3125° resolution
gigc_input_opt_mod.F90
  • Add MERRA2_DIR to the OptInput derived type
  • Set Input_Opt%MERRA2_DIR = './' in routine Init_GIGC_Input_Opt
gigc_state_met_mod.F90 Multiple instances:
  • Now use: #if defined( GEOS_FP ) || defined( MERRA ) || defined( MERRA2 )

--Bob Y. (talk) 18:28, 12 August 2015 (UTC)

GeosUtil directory

The following modifications for MERRA-2 were made in the GeosUtil/ directory:

File Modifications made
bpch2_mod.F In routine GET_MODELNAME:
  • Add MERRA2_47L and MERRA2 modelnames to the #if block

In routine GET_NAME_EXT:

  • Return grid name merra2 for MERRA-2 fields

In routine GET_NAME_EXT_2D:

  • Now use #if defined( MERRA ) || defined( MERRA2 )

In routine GET_RES_EXT:

  • Return resolution string <tt>05x0625 for 0.5° x 0.625° grids
pressure_mod.F In routines GET_PEDGE and GET_PEDGE_FULLGRID:
  • Compute PEDGE for MERRA-2 in the same way as for GEOS-5, MERRA, and GEOS-FP

In routine INIT_PRESSURE:

  • Initialize Ap and Bp for MERRA-2 in the same way as for GEOS-5, MERRA, and GEOS-FP
time_mod.F In routine GET_A1_TIME:
  • Compute the DATE array for MERRA-2 the same way as is done for MERRA and GEOS-FP
transfer_mod.F In routine INIT_TRANSFER:
  • Set L_COPY = 36 for MERRA-2
  • Changed code to #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In several routines:

  • Changed code to #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

--Bob Y. (talk) 20:33, 12 August 2015 (UTC)

GeosCore directory

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

File Modifications made
calcrate.F Multiple instances:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
carbon_mod.F Multiple instances:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
cldice_HbrHOBr_mod.F Multiple instances:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
convection_mod.F In routine DO_CONVECTION:
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routine DO_MERRA_CONVECTION:

  • Changed code to #if defined( GEOS_FP ) || defined( MERRA2 ) where we set PFICU and PFLCU
dao_mod.F In routine COPY_I6_FIELDS:
  • Changed code to: #if defined( GEOS_FP ) || defined( MERRA2 )

In routine INTERP:

  • Changed code to: #if defined( GEOS_FP ) || defined( MERRA2 )
depo_mercury_mod.F In routine ADD_Hg2_SNOWPACK
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
dao_mod.F In routine COPY_I6_FIELDS:
  • Changed code to: #if defined( GEOS_FP ) || defined( MERRA2 )

In routine INTERP:

  • Changed code to: #if defined( GEOS_FP ) || defined( MERRA2 )
diag3.F Multiple instances:
  • Changed code to: #if defined( GEOS_FP ) || defined( MERRA2 ), etc.
dust_dead_mod.F In routine DST_MBL:
  • For GEOS-FP, add a new value for parameter FLX_MSS_FDG_FCT. The scale factor ensures that we get the same dust totals (w/in roundoff error) as for GEOS-5.
fast_jx_mod.F In routine FAST_JX:
  • Do cloud overlapping for GEOS-FP in the same way as for GEOS-5 and MERRA.
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
gamap_mod.F In routine INIT_TRACERINFO:
  • Changed code to: #elif defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )
global_ch4_mod.F In routines WETLAND_EMIS and READ_COPROD:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP )
input_mod.F In routine READ_SIMULATION_MENU:
  • Now read value for Input_Opt%MERRA2_DIR from input.geos
  • Also set Input_Opt%RES_DIR accordingly for 0.5° x 0.625° nested grids
  • Set LUNZIP=.FALSE. for MERRA-2 met

In routine READ_CONVECTION_MENU:

  • Change #if statement to allow non-local PBL mixing for MERRA-2 met data

In routine VALIDATE_DIRECTORIES:

  • Error check MERRA2_DIR for start & end date
land_mercury_mod.F

In routines LAND_MERCURY_FLUX:

  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routines SOILEMIS:

  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
  • Extend #if statement for variable SOIL_EMIS_FAC to get the code to compile w/o error.
    • Team Hg will need to supply an updated value later on.
main.F In main.F:
  • Changed code to if defined( GEOS_FP ) || defined( MERRA2 ) where we define N_DYN_STEPS
  • Changed code to if defined( GEOS_FP ) || defined( MERRA2 ) where we define Input_Opt%USE_O3_FROM_MET

In included routine READ_INITIAL_MET_FIELDS:

  • Added calls to routines from merra2_read_mod.F90

In included routine READ_MET_FIELDS:

  • Added calls to routines from merra2_read_mod.F90
mercury_mod.F In routine CHEMMERCURY:
  • Add placeholder K_RED_JNO2 parameter for the 0.5° x 0.625° nested grids.
    • For now use the same value as for the 0.5° x 0.666° grid.
    • Team Hg will need to supply an updated value later on.
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
merra2_read_mod.F90
ocean_mercury_mod.F Multiple instances:
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
planeflight_mod.F In routine PLANEFLIGHT
  • Now use: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
strat_chem_mod.F90 Multiple instances:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routine DO_SYNOZ:

  • Add placeholder values for 0.5° x 0.625° grids
sulfate_mod.F In routine CHEM_SO2:
  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routine INIT_SULFATE:

  • Changed code to: #if !defined( GEOS_5 ) && !defined( MERRA ) && !defined( GEOS_FP ) && !defined( MERRA2 )

In routine SRCSFC30 (TOMAS-only):

  • Added a placeholder value for TSCALE for the 0.5° x 0.625° grids
tagged_ox_mod.F In routine GET_REGIONAL_POX:
  • Now use: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
tpcore_bc_mod.F: Multiple instances:
  • Added MERRA-2 values for I1_BC_CH, I2_BC_CH, J1_BC_CH, J2_BC_CH
  • Added MERRA-2 values for I1_BC_EU, I2_BC_EU, J1_BC_EU, J2_BC_EU
  • Added MERRA-2 values for I1_BC_NA, I2_BC_NA, J1_BC_NA, J2_BC_NA
vdiff_mod.F90 In routine VDIFFDR:
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
wetscav_mod.F In routine DO_WETDEP:
  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routine DO_WASHOUT_ONLY::

  • Changed code to: #if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

In routine MAKE_QQ:

  • Changed code to: #defined( GEOS_FP ) || defined( MERRA2 )

In routine RAINOUT:

  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

--Bob Y. (talk) 18:29, 12 August 2015 (UTC)

HEMCO/Core directory

The following modifications for MERRA-2 were made in the HEMCO/Core directory:

File Modifications made
hco_chartools_mod.F90 At the top of the module:
  • Extend the #ifdef statement to add the parameter DEF_MET = 'merra2'
  • Extend the #ifdef statement to add the parameter DEF_RES = '05x0625'
hco_interp_mod.F90 In routine MODLEV_INTERPOLATE:
  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )

--Bob Y. (talk) 18:28, 12 August 2015 (UTC)

HEMCO/Extensions directory

The following modifications for MERRA-2 were made in the HEMCO/Extensions directory:

File Modifications made
hcox_ch4wetland_mod.F90 In routine WETLAND_EMIS:
  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
hcox_dustdead_mod.F In routine HCOX_DUSTDEAD_GETTUN:
  • Add values of FLX_MSS_FDG_FCT= -999 for the MERRA-2 2° x 2.5° and 4° x 5° grids.
    • We will add the correct values once we can run simulations with at least a year of met data.
hcox_lightnox_mod.F In routine GET_OTD_LIS_SCALE:
  • Add placeholder values of ANN_AVG_FLASHRATE for the MERRA-2 0.5° x 0.625° grids.
  • Add placeholder values of BETA for the MERRA-2 2° x 2.5° and 4° x 5° grids.
    • We will add the correct values once we can run simulations with at least a year of met data.
hcox_megan_mod.F In routine GET_GAMMA_SM:
  • Changed code to: #if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )
hcox_tomas_dustdead_mod.F In routine HCOX_TOMAS_DUSTDEAD_GETTUN:
  • Add placeholder values of FLX_MSS_FDG_FCT = -999 for the MERRA-2 2° x 2.5° and 4° x 5° grids.
    • We will add the correct values once we can run simulations with at least a year of met data.

--Bob Y. (talk) 18:53, 12 August 2015 (UTC)

Previous issues that are now resolved

Default timestep for MERRA-2 nested grid simulations

The original update was included in v11-02f (approved 17 May 2018). The final recommendation was included GEOS-Chem 12.0.0.

Bram Maasakkers wrote:

Melissa Sulprizio and I have been working on the methane simulation with MERRA-2 and the nested North America grid at 0.5x0.625. During our initial simulations, we found very high values in the stratosphere, originating at the edges of the domain and showing a checkerboard-like pattern in the domain. It appears this is caused by a violation of the CFL condition in the stratosphere due to strong stratospheric winds in MERRA-2. When the condition is violated at the boundaries, it leads to an out-of-bounds error but even preventing an out-of-bounds error there by capping the array index doesn’t prevent the high concentrations from originating. It seems that this previously occurred for the GEOS-5 simulation but it did not seem to compromise simulation results significantly. For our purposes of comparing total column measurements of GOSAT to model output, it is a larger problem. We found it also occurs in the full-chem simulation, I’m attaching a plot of column ozone here to illustrate, the high values are only present in the stratospheric layers.
I think that a variable timestep could be implemented to prevent this from happening. For now, we recommend using a 5/10 transport/chemistry timestep with MERRA-2 nested grid simulations instead of 10/20.

--Bob Yantosca (talk) 16:01, 17 May 2018 (UTC)

Ke Li wrote:

The default time steps for nested tropchem simulation using MERRA2 are 5 mins for transport and 10 mins for chemistry. It took me about 2 days to run 1 months of simulation at the cost of 24 cpu. Now I change time steps to 10 mins for transport and 20 mins for chemistry, and it costs 1.2 days to run 1 months of simulation at the cost of 24 cpu. The 5/20mins time step for a test simulation over Asia (Tropchem, MERRA-2, 24 CPUs) still costs about two days for one month of simulation. The cost time is estimated from that the test simulation has used 28.5 hours for 17.5 days of simulation, though it hasn’t finished.

Lin Zhang wrote:

I am fine to use 10/20 mins time step as default which does not seem to affect the tropospheric simulation of air pollutants. We used to run GEOS-5 at 0.5 degree resolution with 10/20 mins, and tropospheric simulations were working well.
We can also put a stop sign for CH4 and CO2 simulations to warn users changing time steps to 5/10 mins.

Yuxuan Wang wrote:

I agree with Lin and would also opt for a 10/20 mins time step as the default for full-chemistry nested-grid simulation. The reason is exactly as Daniel said. The nested-grid model users are predominantly using the full-chemistry option and concerns with tropospheric or surface concentration. The specialty nested-grid simulations, such as tagged CO, methane and CO2, used to require a separate development and model tuning, as least during the past before the HEMCO era. As a continuation of that ‘tradition’, the idea of putting a note or stop sign for the CH4 and CO2 nested-grid code should work well.

--Melissa Sulprizio (talk) 12:50, 30 July 2018 (UTC)

Unresolved issues

PBL height

Chris Holmes wrote:

I’ve documented many cases in which the reported PBLH in MERRA2 does not align with the mixing height that an observer would diagnose from the MERRA2 vertical profiles of potential temperature and humidity. In my group we are diagnosing our own PBL heights for use in GEOS-Chem.

--Melissa Sulprizio (talk) 20:25, 30 May 2017 (UTC)