MERRA-2 implementation details: Difference between revisions
Line 122: | Line 122: | ||
|-valign="top" | |-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 ) || defined( MERRA2 )</tt> | ||
|-valign="top" | |-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> | *Changed code to: <tt>#if defined( GEOS_FP ) || defined( MERRA2 )</tt> | ||
In routine INTERP: | In routine INTERP: | ||
Line 136: | Line 134: | ||
|-valign="top" | |-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 ) || defined( MERRA2 )</tt> | ||
|-valign="top" | |-valign="top" | ||
|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. | ||
Line 154: | Line 150: | ||
|-valign="top" | |-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> | ||
|-valign="top" | |-valign="top" | ||
| | |merra2_read_mod.F90 | ||
| | |*Added this module w/ routines to read GEOS-FP met data (in netCDF format) | ||
*Added this module w/ routines to read GEOS-FP met data (in netCDF format) | |||
|-valign="top" | |-valign="top" | ||
|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> | ||
|-valign="top" | |-valign="top" | ||
|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> | ||
* | *Also set <tt>Input_Opt%RES_DIR</tt> accordingly for 0.5° x 0.625° nested grids | ||
*Set LUNZIP=.FALSE. for | *Set LUNZIP=.FALSE. for MERRA2 met | ||
In routine READ_CONVECTION_MENU: | In routine READ_CONVECTION_MENU: | ||
*Change #if statement to allow non-local PBL mixing for | *Change #if statement to allow non-local PBL mixing for MERRA2 met data | ||
In routine VALIDATE_DIRECTORIES: | In routine VALIDATE_DIRECTORIES: | ||
*Error check | *Error check MERRA2_DIR for start & end date | ||
|-valign="top" | |-valign="top" | ||
Line 186: | Line 177: | ||
| | | | ||
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.<br>'''''(NOTE: Team Hg: you will have to submit a proper value for this later.''''' | ||
|-valign="top" | |-valign="top" | ||
|main.F | |main.F | ||
| | | | ||
*Added calls to routines from merra2_read_mod.F | |||
*Added calls to routines from | |||
|-valign="top" | |-valign="top" | ||
|mercury_mod.F | |mercury_mod.F | ||
| | |In routine CHEMMERCURY | ||
In routine | *Add placeholder <tt>K_RED_JNO2</tt> 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. <span style="color:red">Team Hg will need to supply an updated value.</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" | |-valign="top" | ||
|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> | ||
* | |||
|-valign="top" | |-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" | |-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° x 0.625° grids | |||
|-valign="top" | |-valign="top" | ||
|sulfate_mod.F | |sulfate_mod.F | ||
| | |In routine CHEM_SO2: | ||
*Changed code to: <tt>#if defined( GEOS_5 ) || defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</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° x 0.625° grids | |||
|-valign="top" | |-valign="top" | ||
Line 246: | Line 229: | ||
|tpcore_bc_mod.F: | |tpcore_bc_mod.F: | ||
|Multiple instances: | |Multiple instances: | ||
* | *Added MERRA2 placeholder values for <tt>I1_BC_CH, I2_BC_CH, J1_BC_CH, J2_BC_CH</tt> | ||
*Added MERRA2 placeholder values for <tt>I1_BC_EU, I2_BC_EU, J1_BC_EU, J2_BC_EU</tt> | |||
*Added MERRA2 placeholder values for <tt>I1_BC_NA, I2_BC_NA, J1_BC_NA, J2_BC_NA</tt> | |||
|-valign="top" | |-valign="top" | ||
|vdiff_mod.F90 | |vdiff_mod.F90 | ||
|In routine VDIFFDR: | |In routine VDIFFDR: | ||
*Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP )</tt> | *Changed code to: <tt>#if defined( MERRA ) || defined( GEOS_FP ) || defined( MERRA2 )</tt> | ||
|-valign="top" | |-valign="top" |
Revision as of 16:01, 12 August 2015
File:Page is under construction.jpg
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:
#if defined( GEOS_5 ) || defined( MERRA )
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:
Top-level directory
File | Modifications made |
---|---|
Makefile_header.mk |
|
--Bob Y. (talk) 21:25, 11 August 2015 (UTC)
Headers directory
The following modifications for MERRA2 were made in the Headers/ directory:
File | Modifications made |
---|---|
CMN_SIZE_mod.F |
|
gigc_input_opt_mod.F90 |
|
gigc_state_met_mod.F90 | Multiple instances:
|
--Bob Y. (talk) 21:26, 11 August 2015 (UTC)
GeosUtil directory
The following modifications for GEOS-FP were made in the GeosUtil/ directory:
File | Modifications made |
---|---|
bpch2_mod.F | In routine GET_MODELNAME:
In routine GET_NAME_EXT:
In routine GET_NAME_EXT_2D:
In routine GET_RES_EXT:
|
pressure_mod.F | In routines GET_PEDGE and GET_PEDGE_FULLGRID:
In routine INIT_PRESSURE:
|
time_mod.F | In routine GET_A1_TIME:
|
transfer_mod.F | In several routines:
|
--Bob Y. (talk) 21:40, 11 August 2015 (UTC)
GeosCore directory
The following modifications for GEOS-FP were made in the GeosCore/ directory:
File | Modifications made |
---|---|
calcrate.F | Multiple instances:
|
carbon_mod.F | Multiple instances:
|
cldice_HbrHOBr_mod.F | Multiple instances:
|
convection_mod.F | In routine DO_CONVECTION:
|
dao_mod.F | In routine COPY_I6_FIELDS:
In routine INTERP:
|
depo_mercury_mod.F | In routine ADD_Hg2_SNOWPACK
|
dust_dead_mod.F | In routine DST_MBL:
|
fast_jx_mod.F | In routine FAST_JX:
|
gamap_mod.F | In routine INIT_TRACERINFO:
|
merra2_read_mod.F90 | *Added this module w/ routines to read GEOS-FP met data (in netCDF format) |
global_ch4_mod.F | In routines WETLAND_EMIS and READ_COPROD:
|
input_mod.F | In routine READ_SIMULATION_MENU:
In routine READ_CONVECTION_MENU:
In routine VALIDATE_DIRECTORIES:
|
land_mercury_mod.F |
In routines LAND_MERCURY_FLUX:
In routines SOILEMIS:
|
main.F |
|
mercury_mod.F | In routine CHEMMERCURY
|
ocean_mercury_mod.F | Multiple instances:
|
planeflight_mod.F | In routine PLANEFLIGHT
|
strat_chem_mod.F90 | Multiple instances:
In routine DO_SYNOZ:
|
sulfate_mod.F | In routine CHEM_SO2:
In routine INIT_SULFATE:
In routine SRCSFC30 (TOMAS-only)
|
tagged_ox_mod.F | In routine GET_REGIONAL_POX:
|
tpcore_bc_mod.F: | Multiple instances:
|
vdiff_mod.F90 | In routine VDIFFDR:
|
wetscav_mod.F | In routines DO_WETDEP, DO_WASHOUT_ONLY
In routine MAKE_QQ:
In routine RAINOUT:
|