Difference between revisions of "Running GCHP: Configuration"

From Geos-chem
Jump to: navigation, search
(Run Configuration Options)
m
 
(115 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
----
 +
<span style="color:crimson;font-size:120%">'''The GCHP documentation has moved to https://gchp.readthedocs.io/.''' The GCHP documentation on http://wiki.seas.harvard.edu/ will stay online for several months, but it is outdated and no longer active!</span>
 +
----
 +
 
__FORCETOC__
 
__FORCETOC__
'''''[[GCHP_Basic_Example_Run|Previous]] | [[GEOS-Chem_HP_Output_Data| Next]] | [[Getting_Started_With_GCHP|User Manual Home]] | [[GEOS-Chem_HP|GCHP Home]]'''''
+
'''''[[Running_GCHP:_Basics|Previous]] | [[GCHP_Output_Data| Next]] | [[Getting Started with GCHP]] | [[GCHP Main Page]]'''''
 
#[[GCHP_Hardware_and_Software_Requirements|Hardware and Software Requirements]]
 
#[[GCHP_Hardware_and_Software_Requirements|Hardware and Software Requirements]]
#[[Downloading_GCHP|Downloading Source Code]]
 
#[[Obtaining_a_GCHP_Run_Directory|Obtaining a Run Directory]]
 
 
#[[Setting_Up_the_GCHP_Environment|Setting Up the GCHP Environment]]
 
#[[Setting_Up_the_GCHP_Environment|Setting Up the GCHP Environment]]
 +
#[[Downloading_GCHP|Downloading Source Code and Data Directories]]
 
#[[Compiling_GCHP|Compiling]]
 
#[[Compiling_GCHP|Compiling]]
#[[GCHP_Basic_Example_Run|Basic Example Run]]
+
#[[Obtaining_a_GCHP_Run_Directory|Obtaining a Run Directory]]
#<span style="color:blue">'''Configuring a Run'''</span>
+
#[[Running_GCHP:_Basics|Running GCHP: Basics]]
#[[GEOS-Chem_HP_Output_Data|Output Data]]
+
#<span style="color:blue">'''Running GCHP: Configuration'''</span>
 +
#[[GCHP_Output_Data|Output Data]]
 
#[[Developing_GCHP|Developing GCHP]]
 
#[[Developing_GCHP|Developing GCHP]]
 
#[[GCHP_Run_Configuration_Files|Run Configuration Files]]
 
#[[GCHP_Run_Configuration_Files|Run Configuration Files]]
Line 15: Line 19:
 
== Overview ==
 
== Overview ==
  
All default GCHP run directories are set up to run at c24 resolution with 0.25x0.325 GEOS-FP meteorology, 6 cores, and 1 node. This is the simplest possible run and a good test case for your initial setup. However, you will want to change these settings, and potentially several others, for your research runs. This page goes over how to do this.
+
All GCHP run directories have default simulation-specific run-time settings that are set when you create a run directory. You will likely want to change these settings. This page goes over how to do this.
  
GCHP has several configuration files, most of which end in suffix ".rc". Rather than update many files, some of which contain redundant information, we instead use utility shell script <tt>runConfig.sh</tt> to set most options in a single location. Sourcing the file automatically updates other configuration files prior to the run and eliminates the need for remembering what to update and where. However, it is important to note that that doing this will overwrite settings in other configuration files. You therefore should never manually update other configuration files unless you know the specific option is not available for setting in <tt>runConfig.sh</tt>.
+
== Configuration files ==
  
All sample run scripts include sourcing <tt>runConfig.sh</tt>. When <tt>runConfig.sh</tt> is sourced it prints out information on what settings are being changed to what value and in what file. Typically this information will be stored in output log <tt>runConfig.log</tt> or it will be printed to your job scheduler log file.
+
GCHP is controlled using a set of configuration files that are included in the GCHP run directory. Files include:
 +
#[[GCHP_Run_Configuration_Files#CAP.rc|CAP.rc]]
 +
#[[GCHP_Run_Configuration_Files#ExtData.rc|ExtData.rc]]
 +
#[[GCHP_Run_Configuration_Files#GCHP.rc|GCHP.rc]]
 +
#[[GCHP_Run_Configuration_Files#input.geos|input.geos]]
 +
#[[GCHP_Run_Configuration_Files#HEMCO_Config.rc|HEMCO_Config.rc]]
 +
#[[GCHP_Run_Configuration_Files#HEMCO_Diagn.rc|HEMCO_Diagn.rc]]
 +
#[[GCHP_Run_Configuration_Files#input.nml|input.nml]]
 +
#[[GCHP_Run_Configuration_Files#HISTORY.rc|HISTORY.rc]]
  
You generally will not need to know more about the GCHP configuration files beyond what is listed on this page. However, for more detailed information about the configuration files used by GCHP see the last section of this user manual which includes a list and description of all contents as well as a more detailed display of what <tt>runConfig.sh</tt> is actually doing.  
+
Several run-time settings must be set consistently across multiple files. Inconsistencies may result in your program crashing or yielding unexpected results. To avoid mistakes and make run configuration easier, bash shell script <tt>runConfig.sh</tt> is included in all run directories to set the most commonly changed config file settings from one location. Sourcing this script will update multiple config files to use values specified in file.
  
If there is something you want to configure in your GCHP run that is not described on this page please contact the GEOS-Chem Support Team with feedback.
+
Sourcing <tt>runConfig.sh</tt> is done automatically prior to running GCHP if using any of the example run scripts, or you can do it at the command line. Information about what settings are changed and in what files are standard output of the script. To source the script, type the following:
  
== Re-using a Run Directory ==
+
source runConfig.sh
  
=== Archiving a Run ===
+
You may also use it in silent mode if you wish to update files but not display settings on the screen:
  
One of the benefits of GCHP relative to GEOS-Chem Classic is that you can reuse a run directory for different grid resolutions and meteorology sources without recompiling. This comes with the perils of losing your old work. To mitigate this issue there is utility shell script <tt>archiveRun.sh</tt> to archive output and configuration files from your last run within a subdirectory in the run directory. All you need to do is pass a non-existent subdirectory name of your choosing where the files should be stored. Here is an example:
+
  source runConfig.sh --silent
  
./archiveRun.sh c48_test
+
While using <tt>runConfig.sh</tt> to configure common settings makes run configure much simpler, it comes with a major caveat. If you manually edit a config file setting that is also set in <tt>runConfig.sh</tt> then your manual update will be overrided via string replacement. Please get very familiar with the options in <tt>runConfig.sh</tt> and be conscientious about not updating the same setting elsewhere.
  
The following output is then printed to screen to show you exactly what is being archived and where:
+
You generally will not need to know more about the GCHP configuration files beyond what is listed on this page. However, for a comprehensive description of all configuration files used by GCHP see the last section of this user manual.
  
Archiving files...
+
== Commonly Changed Run Options ==
-> c48_test/build/lastbuild
+
-> c48_test/build/compile.log
+
-> c48_test/config/input.geos
+
-> c48_test/config/CAP.rc
+
-> c48_test/config/ExtData.rc
+
-> c48_test/config/fvcore_layout.rc
+
-> c48_test/config/GCHP.rc
+
-> c48_test/config/HEMCO_Config.rc
+
-> c48_test/config/HEMCO_Diagn.rc
+
-> c48_test/config/HISTORY.rc
+
-> c48_test/restarts/gcchem_internal_checkpoint_c24.nc
+
-> c48_test/logs/compile.log
+
-> c48_test/logs/gchp.log
+
-> c48_test/logs/HEMCO.log
+
-> c48_test/logs/PET00000.GEOSCHEMchem.log
+
-> c48_test/logs/runConfig.log
+
-> c48_test/logs/slurm-50168021.out
+
-> c48_test/run/runConfig.sh
+
-> c48_test/run/gchp.run
+
-> c48_test/run/gchp.ifort17_openmpi_odyssey.bashrc
+
Warning: *.multirun.sh not found
+
Complete!
+
  
There is a file structure within the archive directory automatically set up to store files of various typed (e.g. logs files in the logs subdirectory). This particular archived run was a single segment run (single job) which is why there is a warning about a multirun file being missing. This can be ignored.
+
=== Compute Configuration ===
  
=== Cleaning the Run Directory ===
+
==== Set Number of Nodes and Cores ====
  
If you do not want to save your last run you can discard its remnants by doing "make cleanup_output". All sample bashrc files have an alias for this, "mco", to make it easier to do. Here is an example of output printed when cleaning the run directory:
+
To change the number of nodes and cores for your run you must update settings in two places: (1) <tt>runConfig.sh</tt>, and (2) your run script. The <tt>runConfig.sh</tt> file contains detailed instructions on how to set resource parameter options and what they mean. Look for the <tt>Compute Resources</tt> section in the script. Update your resource request in your run script to match the resources set in <tt>runConfig.sh</tt>.
  
rm -f /n/home08/elundgren/GC/testruns/12.0.0/Aug01/gchp_RnPbBe/OutputDir/*.nc4
+
It is important to be smart about your resource allocation. To do this it is useful to understand how GCHP works with respect to distribution of nodes and cores across the grid. At least one unique core is assigned to each face on the cubed sphere, resulting in a constraint of at least six cores to run GCHP. The same number of cores must be assigned to each face, resulting in another constraint of total number of cores being a multiple of six. Communication between the cores occurs only during transport processes.  
rm -f trac_avg.*
+
rm -f tracerinfo.dat
+
rm -f diaginfo.dat
+
rm -f cap_restart
+
rm -f gcchem*
+
rm -f *.rcx
+
rm -f *~
+
rm -f gchp.log
+
rm -f HEMCO.log
+
rm -f PET*.log
+
rm -f runConfig*log
+
rm -f multirun.log
+
rm -f logfile.000000.out
+
rm -f slurm-*
+
rm -f 1
+
rm -f EGRESS
+
  
=== Rerunning Without Cleaning ===
+
While any number of cores is valid as long as it is a multiple of six (although there is an upper limit per resolution), you will typically start to see negative effects due to excessive communication if a core is handling less than around one hundred grid cells or a cluster of grid cells that are not approximately square. You can determine how many grid cells are handled per core by analyzing your grid resolution and resource allocation. For example, if running at C24 with six cores each face is handled by one core (6 faces / 6 cores) and contains 576 cells (24x24). Each core therefore processes 576 cells. Since each core handles one face, each core communicates with four other cores (four surrounding faces). Maximizing squareness of grid cells per core is done automatically within <tt>runConfig.sh</tt> if variable <tt>NXNY_AUTO</tt> is set to <tt>ON</tt>.
  
You can reuse a run directory without cleaning it and without archiving your last run. Files will generally simply be replaced by files generated in the next run. This will work okay with one exception. The output <tt>cap_restart</tt> file must be removed prior to subsequent runs if you are starting a run from scratch. The <tt>cap_restart</tt> file contains a date and time string for the end of your last run. GCHP will attempt to start your next run at this date and time if the file is present. This is useful for splitting up a run into multiple jobs but is generally not desirable. Therefore you should always delete <tt>cap_restart</tt> before a new run. This is included in all sample run scripts except the multi-run run script which has special handling of the file.
+
Further discussion about domain decomposition is in <tt>runConfig.sh</tt> section <tt>Domain Decomposition</tt>.
  
== Pre-run Checklist ==
+
==== Split a Simulation Into Multiple Jobs ====
  
Prior to running GCHP, run through the following checklist to ensure everything is set up properly.
+
There is an option to split up a single simulation into separate serial jobs. To use this option, do the following:
#Your run directory contains the executable <tt>geos</tt>.
+
#All symbolic links are present in your run directory and point to a valid path. These include <tt>TileFiles</tt>, <tt>MetDir</tt>, <tt>MainDataDir</tt>, <tt>ChemDataDir</tt>, <tt>CodeDir</tt>, and an initial restart file.
+
#The input meteorology resolution in <tt>ExtData.rc</tt> (inspect with "grep MetDir ExtData.rc") and <tt>MetDir</tt> (inspect with "file MetDir") are as you intend.
+
#File <tt>runConfig.sh</tt> has all run settings that you intend to use.
+
#The restart file grid resolution matches the cubed sphere resolution set in <tt>runConfig.sh</tt>
+
#You have a run script.
+
#The resource allocation in <tt>runConfig.sh</tt> and your run script are consistent.
+
#The run script sources the bashrc file that you used for compiling GCHP.
+
#You have archived your last run using <tt>archiveRun.sh</tt> or you have discarded it by cleaning your run directory with "make cleanup_output" (alias "mco")
+
  
== Run Configuration Options ==
+
#Update <tt>runConfig.sh</tt> with your full simulation (all runs) start and end dates, and the duration per segment (single run). Also update the number of runs options to reflect to total number of jobs that will be submitted (<tt>NUM_RUNS</tt>). Carefully read the comments in <tt>runConfig.sh</tt> to ensure you understand how it works.
 +
#Optionally turn on monthly diagnostic (<tt>Monthly_Diag</tt>). Only turn on monthly diagnostics if your run duration is monthly.
 +
#Use <tt>gchp.multirun.run</tt> as your run script, or adapt it if your cluster does not use SLURM. It is located in the <tt>runScriptSamples</tt> subdirectory of your run directory. As with the regular <tt>gchp.run</tt>, you will need to update the file with compute resources consistent with <tt>runConfig.sh</tt>.  '''Note that you should not submit the run script directly.''' It will be done automatically by the file described in the next step.
 +
#Use <tt>gchp.multirun.sh</tt> to submit your job, or adapt it if your cluster does not use SLURM. It is located in the <tt>runScriptSamples</tt> subdirectory of your run directory. For example, to submit your series of jobs, type: <code>./gchp.multirun.sh</code>
  
=== Set Number of Nodes and Cores ===
+
There is much documentation in the headers of both <tt>gchp.multirun.run</tt> and <tt>gchp.multirun.sh</tt> that is worth reading and getting familiar with, although not entirely necessary to get the multi-run option working. If you have not done so already, it is worth trying out a simple multi-segmented run of short duration to demonstrate that the multi-segmented run configuration and scripts work on your system. For example, you could do a 3-hour simulation with 1-hour duration and number of runs equal to 3.
  
To change the number of nodes and cores for your run you must update settings in two places: (1) <tt>runConfig.sh</tt>, and (2) your run script. The <tt>runConfig.sh</tt> file contains detailed instructions on how to set resource parameter options as show below.
+
The multi-run script assumes use of SLURM, and a separate SLURM log file is created for each run. There is also log file called <code>multirun.log</code> with high-level information such as the start, end, duration, and job ids for all jobs submitted. If a run fails then all scheduled jobs are cancelled and a message about this is sent to that log file. Inspect this and your other log files, as well as output in the <tt>OutputDir/</tt> directory prior to using for longer duration runs.
  
[[File:gchp Compute_resources.png|Compute resources section of runConfig.sh]]
+
==== Change Domains Stack Size ====
  
The sample SLURM run script will assign GCHP run resources based on settings in <tt>runConfig.sh</tt>. However, you must request the same number of nodes in your run script as in <tt>runConfig.sh</tt>. You may request additional cores and full memory per node to maximize available memory per core. For example, the below settings request 32 cores per node (entire nodes) and all memory per node. However, further down in the script only 16 cores per node are allocated for the GCHP run, consistent with the settings in the example of <tt>runConfig.sh</tt> above.
+
For runs at very high resolution or small number of processors you may run into a domains stack size error. This is caused by exceeding the domains stack size memory limit set at run-time and the error will be apparent from the message in your log file. If this occurs you can increase the domains stack size in file <tt>input.nml</tt>. The default is set to 20000000.
  
[[File:gchp Slurm.png|Compute resources section of runConfig.sh]]
+
=== Basic Run Settings ===
  
It is important to be smart about your resource allocation. To do this it is useful to understand how GCHP works with respect to distribution of nodes and cores across the grid. At least one unique core is assigned to each face on the cubed sphere, resulting in a constraint of at least six cores to run GCHP. The same number of cores must be assigned to each face, resulting in another constraint of total number of cores being a multiple of six. Communication between the cores occurs only during transport processes.
+
==== Set Cubed Sphere Grid Resolution ====
  
While any number of cores is valid as long as it is a multiple of six, you will typically start to see negative effects due to excessive communication if a core is handling less than around one hundred grid cells or a cluster of grid cells that are not approximately square. You can determine how many grid cells are handled per core by analyzing your grid resolution and resource allocation. For example, if running at C24 with six cores each face is handled by one core (6 faces / 6 cores) and contains 576 cells (24x24). Each core therefore processes 576 cells. Since each core handles one face, each core communicates with four other cores (four surrounding faces).
+
GCHP uses a cubed sphere grid rather than the traditional lat-lon grid used in GEOS-Chem Classic. While regular lat-lon grids are typically designated as ΔLat ⨉ ΔLon (e.g. 4⨉5), cubed sphere grids are designated by the side-length of the cube. In GCHP we specify this as CX (e.g. C24 or C180). The simple rule of thumb for determining the roughly equivalent lat-lon resolution for a given cubed sphere resolution is to divide the side length by 90. Using this rule you can quickly match C24 with about 4x5, C90 with 1 degree, C360 with quarter degree, and so on.
  
You can configure approximately how the cores are assigned to grid cell geometry by using the NX and NY configuration variables in GCHP as shown above. But what is this actually doing? Imagine lining up the six face grids adjacent to each other to get a single rectangular array. The rectangle will have N grid cells width (e.g. 24 if a C24 grid), and 6N grid cells height (since 6 faces). NX is the number of segments the width N is broken into for core distribution. NY is the number of segments the height 6N is broken into and must always be a multiple of six. NX * NY is always the total number of cores.  
+
To change your grid resolution in the run directory edit the <tt>CS_RES</tt> integer parameter in <tt>runConfig.sh</tt> section <tt>Internal Cubed Sphere Resolution</tt> to the cube side length you wish to use. To use a uniform global grid resolution make sure that <tt>STRETCH_GRID</tt> is set to <tt>OFF</tt>.
  
For the case of a six core run, NX is equal to 1 and NY is equal to 6. This is because the entire N grid cells width is handled by 1 core (NX) and the 6N grid cells height is handled by 6 cores (NY), or one per face. If you instead wanted each face to be handled by four cores, and further constrain each core to handle one face quadrant, you would set NX equal to two and NY equal to twelve. A simple way of thinking about this is that core distribution across each face is with geometry NX x NY/6. In this last example that would be equivalent to 2x2.
+
==== Set Stretch Grid Resolution ====
  
=== Set Cubed Sphere Grid Resolution ===
+
GCHP has the capability to run with a stretched grid, meaning one portion of the globe is stretched to fine resolution. Set stretched grid parameter in <tt>runConfig.sh</tt> section <tt>Internal Cubed Sphere Resolution</tt>. See instructions in that section of the file.
  
GCHP uses a cubed sphere grid rather than the traditional lat-lon grid used in GEOS-Chem Classic. While regular lat-lon grids are typically designated as ΔLat ⨉ ΔLon (e.g. 4⨉5), cubed sphere grids are designated by the side-length of the cube. In GCHP we specify this as CX (e.g. C24 or C180). The simple rule of thumb for determining the roughly equivalent lat/lon for a given cubed sphere resolution is to divide the side length by 90.  Using this rule you can quickly match C24 with 4x5, C90 with 1 degree, C360 with quarter degree, and so on.
+
==== Turn On/Off Model Components ====
  
To change your grid resolution in the run directory edit the "CS_RES" integer parameter in <tt>runConfig.sh</tt> to the cube side-length you wish to use.
+
You can toggle all primary GEOS-Chem components, including type of mixing, from within <tt>runConfig.sh</tt>. The settings in that file will update <tt>input.geos</tt> automatically. Look for section <tt>Turn Components On/Off, and other settings in input.geos</tt>. Other settings in this section beyond component on/off toggles using CH4 emissions in UCX, and initializing stratospheric H2O in UCX.
  
[[File:gchp Cs_res.png|Set cubed sphere resolution by specifying integer number of sides per face in runConfig.sh]]
+
==== Change Model Timesteps ====
  
=== Change Input Meteorology Grid Resolution and/or Source ===
+
Model timesteps, both chemistry and dynamic, are configured within <tt>runConfig.sh</tt>. They are set to match GEOS-Chem Classic default values for low resolutions for comparison purposes but can be updated, with caution. Timesteps are automatically reduced for high resolution runs. Read the documentation in <tt>runConfig.sh</tt> section <tt>Timesteps</tt> for setting them.
  
Changing input meteorology requires two updates: (1) redefine the <tt>MetDir</tt> symbolic link to point to the appropriate source directory, and (2) update all meteorology paths and filenames in <tt>ExtData.rc</tt>. Currently only GEOS-FP and MERRA2 meteorology are supported in GCHP. Be sure that you have data available at the grid resolution you wish to run at for the time period you plan on simulating. See the primary GEOS-Chem wiki page for information on meteorology data available.
+
==== Set Simulation Start and End Dates ====
  
=== Change Your Initial Restart File ===
+
Set simulation start and end in <tt>runConfig.sh</tt> section <tt>Simulation Start, End, Duration, # runs</tt>. Read the comments in the file for a complete description of the options. Typically a "CAP" runtime error indicates a problem with start, end, and duration settings. If you encounter an error with the words "CAP" near it then double-check that these settings make sense.
  
All GCHP run directories come with symbolic links to initial restart files for commonly used cubed sphere resolutions. The appropriate restart file is automatically chosen based on the cubed sphere resolution you set in <tt>runConfig.sh</tt>. All of the restart files are simply GEOS-Chem Classic restart files regridded to the cubed sphere.
+
=== Inputs ===
  
[[File:gchp Restart.png|The restart filename is set automatically in runConfig.sh, but you may overwrite it manually]]
+
==== Change Initial Restart File ====
  
You may over-write the default restart file with your own by specifying the restart filename in <tt>runConfig.sh</tt>. Beware that it is your responsibility to make sure it is the proper grid resolution. Publicly available tools for regridding are listed in the GCHP Output Files page of this user manual.
+
All GCHP run directories come with symbolic links to initial restart files for commonly used cubed sphere resolutions. The appropriate restart file is automatically chosen based on the cubed sphere resolution you set in <tt>runConfig.sh</tt>.
  
Unlike GEOS-Chem Classic, HEMCO restart files are not used in GCHP. HEMCO restart variables may be included in the initial species restart file, or they may be excluded and HEMCO will start with default values. GCHP initial restart files that come with the run directories do not include HEMCO restart variables unless "HEMCO" appears in the filename. This is only the case for the benchmark restart files used for the 1-year benchmark simulation that relies on a valid spin-up.
+
You may overwrite the default restart file with your own by specifying the restart filename in <tt>runConfig.sh</tt> section <tt>Initial Restart File</tt>. Beware that it is your responsibility to make sure it is the proper grid resolution.
  
=== Output Restart Files at Regular Frequency ===
+
Unlike GEOS-Chem Classic, HEMCO restart files are not used in GCHP. HEMCO restart variables may be included in the initial species restart file, or they may be excluded and HEMCO will start with default values. GCHP initial restart files that come with the run directories do not include HEMCO restart variables, but all output restart files do.
  
While most of the GCHP run-time options are set from <tt>runConfig.sh</tt>, the option for outputting restart files beyond the usual end-of-run restart file is not. This is simply because the default setting of every 30 days is usually adequate. To change this frequency, update the HHmmSS string for "RECORD_FREQUENCY" in file <tt>GCHP.rc</tt>. Minutes and seconds must each be two digits but hours can be more than two.
+
==== Turn On/Off Emissions Inventories ====
  
[[File:gchp Regular_restarts.png|Set RECORD_FREQUENCY in GCHP.rc to output regular "checkpoint" files that can be used as restarts]]
+
Because file I/O impacts GCHP performance it is a good idea to turn off file read of emissions that you do not need. You can turn emissions inventories on or off the same way you would in GEOS-Chem Classic, by setting the inventories to true or false at the top of configuration file <tt>HEMCO_Config.rc</tt>. All emissions that are turned off in this way will be ignored when GCHP uses <tt>ExtData.rc</tt> to read files, thereby speeding up the model.
  
=== Turn On/Off Model Components ===
+
For emissions that do not have an on/off toggle at the top of the file, you can prevent GCHP from reading them by commenting them out in <tt>HEMCO_Config.rc</tt>. No updates to <tt>ExtData.rc</tt> would be necessary. If you alternatively comment out the emissions in <tt>ExtData.rc</tt> but not <tt>HEMCO_Config.rc</tt> then GCHP will fail with an error when looking for the file information.
  
You can toggle all primary GEOS-Chem components, including type of mixing, from within <tt>runConfig.sh</tt>. The settings in that file will update <tt>input.geos</tt> automatically.
+
Another option to skip file read for certain files is to replace the file path in <tt>ExtData.rc</tt> with <tt>/dev/null</tt>. However, if you want to turn these inputs back on at a later time you should preserve the original path by commenting out the original line.  
  
[[File:gchp Components.png|Turn on and off components from runConfig.sh rather than input.geos]]
+
==== Add New Emissions Files ====
  
=== Change Model Timesteps ===
+
There are two steps for adding new emissions inventories to GCHP:
 +
#Add the inventory information to <tt>HEMCO_Config.rc</tt>.
 +
#Add the inventory information to <tt>ExtData.rc</tt>.
  
Model timesteps, both chemistry and dynamic, are configured within <tt>runConfig.sh</tt>. They are set to match GEOS-Chem Classic default values for comparison purposes but can be updated, with caution. Read the documentation in <tt>runConfig.sh</tt> for setting them to be fully aware of recommended settings and their implications.
+
To add information to <tt>HEMCO_Config.rc</tt>, follow the same rules as you would for [[The_HEMCO_User%27s_Guide|adding a new emission inventory to GEOS-Chem Classic]]. Note that not all information in <tt>HEMCO_Config.rc</tt> is used by GCHP. This is because HEMCO is only used by GCHP to handle emissions after they are read, e.g. scaling and applying hierarchy. All functions related to HEMCO file read are skipped. This means that you could put garbage for the file path and units in <tt>HEMCO_Config.rc</tt> without running into problems with GCHP, as long as the syntax is what HEMCO expects. However, we recommend that you fill in <tt>HEMCO_Config.rc</tt> in the same way you would for GEOS-Chem Classic for consistency and also to avoid potential format check errors.
  
[[File:gchp Timesteps.png|Read the notes on timesteps within runConfig.sh prior to changing]]
+
Staying consistent with the information that you put into <tt>HEMCO_Config.rc</tt>, add the inventory information to <tt>ExtData.rc</tt> following the guidelines listed at the top of the file and using existing inventories as examples. You can ignore all entries in <tt>HEMCO_Config.rc</tt> that are copies of another entry since putting these in <tt>ExtData.rc</tt> would result in reading the same variable in the same file twice. HEMCO interprets the copied variables, denoted by having dashes in the <tt>HEMCO_Config.rc</tt> entry, separate from file read.
  
=== Set Simulation Start and End Dates ===
+
A few common errors encountered when adding new input emissions files to GCHP are:
  
Set simulation start and end in <tt>runConfig.sh</tt>.
+
#Your input file contains integer values. Beware that the MAPL I/O component in GCHP does not read or write integers. If your data contains integers then you should reprocess the file to contain floating point values instead.
 +
#Your data latitude and longitude dimensions are in the wrong order. Lat must always come before lon in your inputs arrays, a requirement true for both GCHP and GEOS-Chem Classic. For more information about this, see the [Preparing_data_files_for_use_with_HEMCO#Ordering_of_the_data|Preparing Data Files for Use with HEMCO wiki page]].
 +
#Your 3D input data are mapped to the wrong levels in GEOS-Chem (silent error). If you read in 3D data and assign the resulting import to a GEOS-Chem state variable such as State_Chm or State_Met, then you must flip the vertical axis during the assignment. See files <tt>Includes_Before_Run.H</tt> and setting State_Chm%Species in <tt>Chem_GridCompMod.F90</tt> for examples.
 +
#You have a typo in either <tt>HEMCO_Config.rc</tt> or <tt>ExtData.rc</tt>. Error in <tt>HEMCO_Config.rc</tt> typically result in the model crashing right away. Errors in <tt>ExtData.rc</tt> typically result in a problem later on during ExtData read. Always try running with the MAPL debug flags on <tt>runConfig.sh</tt> (maximizes output to <tt>gchp.log</tt>) and Warnings and Verbose set to 3 in <tt>HEMCO_Config.rc</tt> (maximizes output to <tt>HEMCO.log</tt>) when encountering errors such as this. Another useful strategy is to find config file entries for similar input files and compare them against the entry for your new file. Directly comparing the file metadata may also lead to insights into the problem.
  
[[File:gchp Start_end.png|Set simulation start, end, and duration within runConfig.sh rather than input.geos]]
+
=== Outputs ===
  
There is also a "Duration" field in the file which must be set to reflect how long your run will last. If your end date is earlier than your start date plus duration then your GCHP run will fail. If your end date is later than your start date plus duration then your job will not make it to your configured end date; it will end at start date plus duration. If your end date is multiple durations past your start date then subsequent job submissions will start where your last run ended, so long as you do not delete file <tt>cap_restart</tt>. That file contains a new start string that will always be used if the file is present. You can take advantage of this file for splitting up a long simulation into multiple jobs. See further down on this page for automation of this task built into the run directory.
+
==== Output Diagnostics Data on a Lat-Lon Grid ====
  
Typically a "CAP" error indicates a problem with start, end, and duration settings. If you encounter an error with the words "CAP" near it then double-check that these settings make sense.
+
See documentation in the <tt>HISTORY.rc</tt> config file for instructions on how to output diagnostic collection on lat-lon grids.
  
=== Turn On/Off Diagnostics ===
+
==== Output Restart Files at Regular or Irregular Frequency ====
  
All GCHP run directories have four collections on by default: time-averaged species concentrations, instantaneous species concentrations, time-averaged meteorology, and instantaneous meteorology. All species are enabled while only a subset of meteorology variables are enabled. There are several other collections already implemented but they are off by default for the standard and benchmark simulations, and on by default for the RnPbBe simulation.
+
The MAPL component in GCHP has the option to output restart files (also called checkpoint files) prior to run end. The frequency of restart file write may be at regular time intervals (regular frequency) or at specific programmed times (irregular frequency). These periodic output restart files contain the date and time in their filenames.
  
To turn collections on or off, comment ("#") collection names in the "COLLECTIONS" list at the top of file <tt>HISTORY.rc</tt>.  
+
Enabling this feature is a good idea if you plan on doing a long simulation and you are not splitting your run into multiple jobs. If the run crashes unexpectedly then you can restart mid-run rather than start over from the beginning.
  
[[File:gchp Collections.png]]
+
Update settings for checkpoint restart outputs in <tt>runConfig.sh</tt> section <tt>Output Restarts</tt>. Instructions for configuring both regular and irregular frequency restart files are included in the file.
  
Once a collection is turned on, you can comment diagnostics within it further down in the file by searching for the collection name with ".fields" suffix. Be aware that you cannot comment out the diagnostic that appears on the same line as the fields keyword. If you wish to suppress that specific diagnostic then move it to the next line and replace it with a diagnostic that you want to output.
+
==== Turn On/Off Diagnostics ====
  
[[File:gchp History.png|gchp History.png]]
+
To turn diagnostic collections on or off, comment ("#") collection names in the "COLLECTIONS" list at the top of file <tt>HISTORY.rc</tt>. Collections cannot be turned on/off from <tt>runConfig.sh</tt>.
  
=== Set Diagnostic Frequency, Duration, and Mode ===
+
==== Set Diagnostic Frequency, Duration, and Mode ====
  
All diagnostic collections that come with the run directory have frequency, duration, and mode defined within <tt>runConfig.sh</tt>. With the exception of SpeciesConc_inst and StateMet_inst, all collections are time-averaged (mode) with frequency and duration set to the simulation length you specified in <tt>CopyRunDirs.input</tt> when creating the run directory. Any of these defaults can be over-written by editing <tt>runConfig.sh</tt>. Be aware that manual updates of <tt>HISTORY.rc</tt> will be over-written by <tt>runConfig.sh</tt> settings.
+
All diagnostic collections that come with the run directory have frequency, duration, and mode auto-set within <tt>runConfig.sh</tt>. The file contains a list of time-averaged collections and instantaneous collections, and allows setting a frequency and duration to apply to all collections listed for each. See section <tt>Output Diagnostics</tt> within <tt>runConfig.sh</tt>. To avoid auto-update of a certain collection, remove it from the list in <tt>runConfig.sh</tt>. If adding a new collection, you can add it to the file to enable auto-update of frequency, duration, and mode.
  
[[File:gchp Diag_freq_dur_mode.png|Set default diagnostic frequency, duration, and mode in runConfig.sh]]
+
==== Add a New Diagnostics Collection ====
  
[[File:gchp Diag_defaults.png|Default diagnostic collection settings can easily be changed in runConfig.sh]]
+
Adding a new diagnostics collection in GCHP is the same as for GEOS-Chem Classic netcdf diagnostics. You must add your collection to the collection list in <tt>HISTORY.rc</tt> and then define it further down in the file. Any 2D or 3D arrays that are stored within GEOS-Chem objects State_Met, State_Chm, or State_Diag, may be included as fields in a collection. State_Met variables must be preceded by "Met_", State_Chm variables must be preceded by "Chem_", and State_Diag variables should not have a prefix. See the <tt>HISTORY.rc</tt> file for examples.
  
=== Add a New Diagnostics Collection ===
+
Once implemented, you can either incorporate the new collection settings into <tt>runConfig.sh</tt> for auto-update, or you can manually configure all settings in <tt>HISTORY.rc</tt>. See the <tt>Output Diagnostics</tt> section of <tt>runConfig.sh</tt> for more information.
  
Adding a new diagnostics collection in GCHP is the same as for GEOS-Chem Classic netcdf diagnostics. You must add your collection to the collection list in <tt>HISTORY.rc</tt> and then define it further down in the file. Any 2D or 3D arrays that are stored within State_Met, State_Chm, or State_Diag, and that are successfully incorporated into the GEOS-Chem Registry may be included as fields in a collection. State_Met variables must be preceded by "met_", State_Chm variables must be preceded by "chm_", and State_Diag variables should not have a prefix. See <tt>GeosCore/state_diag_mod.F90</tt> for examples of how existing State_Diag arrays are implemented.
+
==== Generate Monthly Mean Diagnostics ====
 
+
Once implemented, you can either incorporate the new collection settings into <tt>runConfig.sh</tt> for auto-update, or you can manually configure all settings in <tt>HISTORY.rc</tt>.
+
 
+
=== Split a Simulation Into Multiple Jobs ===
+
 
+
There is an option to split up a single simulation into separate serial jobs. To use this option, do the following:
+
 
+
#Update <tt>runConfig.sh</tt> with your full simulation (all runs) start and end dates, and the duration per segment (single run). Also update the number of runs options to reflect to total number of jobs that will be submitted. Carefully read these parts of <tt>runConfig.sh</tt> to ensure you understand how it works.
+
#Use <tt>gchp.multirun.run</tt> as your run script, or adapt it if your cluster does not use SLURM. As with the regular <tt>gchp.run</tt>, you will need to update the file with compute resources consistent with <tt>runConfig.sh</tt> and with your local bashrc. It is located in the <tt>runScriptSamples</tt> subdirectory of your run directory. Note that you should not submit the run script directly. It will be done automatically by the file described in the next step.
+
#Use <tt>gchp.multirun.sh</tt> to submit your job, or adapt it if your cluster does not use SLURM. It is located in the <tt>runScriptSamples</tt> subdirectory of your run directory.
+
 
+
There is much documentation in the headers of both <tt>gchp.multirun.run</tt> and <tt>gchp.multirun.sh</tt> that is worth reading and getting familiar with. If you have not done so already, it is worth trying out a simple multi-segmented run of short duration to demonstrate that the multi-segmented run configuration and scripts work on your system. For example, you could do a 3 hour simulation with 1 hour duration and number of runs equal to 3.
+
 
+
Besides the regular GCHP log file, which will be appended to for each consecutive run, there will be a "multirun.log" file with high-level information such as the start, end, duration, and job ids for all jobs submitted. Inspect this and your other log files, as well as output in the <tt>OutputDir/</tt> directory prior to using for longer duration runs.
+
 
+
=== Generate Monthly Mean Diagnostics ===
+
  
 
There is an option to automatically generate monthly diagnostics by submitting month-long simulations as separate jobs. Splitting up the simulation into separate jobs is a requirement for monthly diagnostics because MAPL History requires a fixed number of hours set for diagnostic frequency and file duration. The monthly mean diagnostic option automatically updates <tt>HISTORY.rc</tt> diagnostic settings each month to reflect the number of days in that month taking into account leap years.  
 
There is an option to automatically generate monthly diagnostics by submitting month-long simulations as separate jobs. Splitting up the simulation into separate jobs is a requirement for monthly diagnostics because MAPL History requires a fixed number of hours set for diagnostic frequency and file duration. The monthly mean diagnostic option automatically updates <tt>HISTORY.rc</tt> diagnostic settings each month to reflect the number of days in that month taking into account leap years.  
  
To use the monthly diagnostics option, first read and follow instructions for splitting a simulation into multiple jobs (see section above). Prior to submitting your run, enable monthly diagnostics in <tt>gchp.multirun.run</tt> by searching for variable "Monthly_Diag" and changing its value from 0 to 1. Be sure to read the documentation surrounding the monthly diagnostic option in that file to be sure you understand what you are doing and are meeting all the requirements.
+
To use the monthly diagnostics option, first read and follow instructions for splitting a simulation into multiple jobs (see separate section on this page). Prior to submitting your run, enable monthly diagnostics in <tt>runConfig.sh</tt> by searching for variable "Monthly_Diag" and changing its value from 0 to 1. Be sure to always start your monthly diagnostic runs on the first day of the month.
  
=== Debug Using Maximum Print Output ===
+
=== Debugging ===
  
Besides compiling with "make compile_debug", there are a few run settings you can configure to boost your chance of successful debugging. All of them involve sending additional print statements to the log files.
+
==== Enable Maximum Print Output ====
#Change "ND70" in input.geos from 0 to 1 to turn on extra GEOS-Chem print statements in the main log file.
+
#Set the "DEBUG" variable in <tt>runConfig.sh</tt> to a number greater than 0 to turn on extra MAPL print statements. The higher the number the more prints will be sent to the log (and the slower your run will be). Usually 20 is sufficient, although you can go higher.
+
#Set the "Verbose" and "Warnings" settings in <tt>HEMCO_Config.rc</tt> to maximum values of 3 to send the maximum number of prints to <tt>HEMCO.log</tt>.
+
  
[[File:gchp Debug.png|MAPL debug setting in runConfig.sh]]
+
Besides compiling with <tt>CMAKE_BUILD_TYPE=Debug</tt>, there are a few settings you can configure to boost your chance of successful debugging. All of them involve sending additional print statements to the log files.
 +
#Set <tt>Turn on debug printout?</tt> in <tt>input.geos</tt> to <tt>T</tt> to turn on extra GEOS-Chem print statements in the main log file.
 +
#Set <tt>MAPL_EXTDATA_DEBUG_LEVEL</tt> in <tt>runConfig.sh</tt> to <tt>1</tt> to turn on extra MAPL print statements in ExtData, the component that handles input.
 +
#Set the <tt>Verbose</tt> and <tt>Warnings</tt> settings in <tt>HEMCO_Config.rc</tt> to maximum values of 3 to send the maximum number of prints to <tt>HEMCO.log</tt>.
  
 
None of these options require recompiling. Be aware that all of them will slow down your simulation. Be sure to set them back to the default values after you are finished debugging.
 
None of these options require recompiling. Be aware that all of them will slow down your simulation. Be sure to set them back to the default values after you are finished debugging.
  
=== Change Domains Stack Size ===
 
 
For runs at very high resolution or small number of processors you may run into a domains stack size error. This is caused by exceeding the domains stack size memory limit set at run-time and the error will be apparent from the message in your log file. If this occurs you can increase the domains stack size in file <tt>input.nml</tt>. The default is set to 20000000.
 
 
=== Turn Off MAPL Timers and Memory Logging ===
 
 
Your GCHP log file will includes timing and memory information by default, and this is usually a good thing. If for some reason you want to turn these features off you can do so in file <tt>CAP.rc</tt>. Search for "MAPL_ENABLE_TIMERS" and "MAPL_ENABLE_MEMUTILS" and simply change "YES" to "NO".
 
 
=== Turn On/Off Emissions Inventories===
 
 
Because file I/O impacts GCHP performance it is a good idea to turn of file read of emissions that you do not need. You can turn emissions inventories on or off the same way you would in GEOS-Chem Classic, by setting the inventories to true or false at the top of configuration file <tt>HEMCO_Config.rc</tt>. All emissions that are turned off in this way will be ignored when GCHP uses <tt>ExtData.rc</tt> to read files, thereby speeding up the model.
 
 
For emissions that do not have an on/off toggle at the top of the file, you can prevent GCHP from reading them by commenting them out in <tt>HEMCO_Config.rc</tt>. No updates to <tt>ExtData.rc</tt> would be necessary. If you alternatively comment out the emissions in <tt>ExtData.rc</tt> but not <tt>HEMCO_Config.rc</tt> then GCHP will fail with an error when looking for the file information.
 
 
Another option to skip file read for certain files is to replace the file path in <tt>ExtData.rc</tt> with <tt>/dev/null</tt>. However, if you want to turn these inputs back on at a later time you should preserve the original path in a comment.
 
  
 
----------------------------------------
 
----------------------------------------
  
'''''[[GCHP_Basic_Example_Run|Previous]] | [[GEOS-Chem_HP_Output_Data| Next]] | [[Getting_Started_With_GCHP|User Manual Home]] | [[GEOS-Chem_HP|GCHP Home]]'''''
+
'''''[[Running_GCHP:_Basics|Previous]] | [[GCHP_Output_Data| Next]] | [[Getting Started with GCHP]] | [[GCHP Main Page]]'''''

Latest revision as of 15:41, 8 December 2020


The GCHP documentation has moved to https://gchp.readthedocs.io/. The GCHP documentation on http://wiki.seas.harvard.edu/ will stay online for several months, but it is outdated and no longer active!



Previous | Next | Getting Started with GCHP | GCHP Main Page

  1. Hardware and Software Requirements
  2. Setting Up the GCHP Environment
  3. Downloading Source Code and Data Directories
  4. Compiling
  5. Obtaining a Run Directory
  6. Running GCHP: Basics
  7. Running GCHP: Configuration
  8. Output Data
  9. Developing GCHP
  10. Run Configuration Files


Overview

All GCHP run directories have default simulation-specific run-time settings that are set when you create a run directory. You will likely want to change these settings. This page goes over how to do this.

Configuration files

GCHP is controlled using a set of configuration files that are included in the GCHP run directory. Files include:

  1. CAP.rc
  2. ExtData.rc
  3. GCHP.rc
  4. input.geos
  5. HEMCO_Config.rc
  6. HEMCO_Diagn.rc
  7. input.nml
  8. HISTORY.rc

Several run-time settings must be set consistently across multiple files. Inconsistencies may result in your program crashing or yielding unexpected results. To avoid mistakes and make run configuration easier, bash shell script runConfig.sh is included in all run directories to set the most commonly changed config file settings from one location. Sourcing this script will update multiple config files to use values specified in file.

Sourcing runConfig.sh is done automatically prior to running GCHP if using any of the example run scripts, or you can do it at the command line. Information about what settings are changed and in what files are standard output of the script. To source the script, type the following:

source runConfig.sh

You may also use it in silent mode if you wish to update files but not display settings on the screen:

source runConfig.sh --silent

While using runConfig.sh to configure common settings makes run configure much simpler, it comes with a major caveat. If you manually edit a config file setting that is also set in runConfig.sh then your manual update will be overrided via string replacement. Please get very familiar with the options in runConfig.sh and be conscientious about not updating the same setting elsewhere.

You generally will not need to know more about the GCHP configuration files beyond what is listed on this page. However, for a comprehensive description of all configuration files used by GCHP see the last section of this user manual.

Commonly Changed Run Options

Compute Configuration

Set Number of Nodes and Cores

To change the number of nodes and cores for your run you must update settings in two places: (1) runConfig.sh, and (2) your run script. The runConfig.sh file contains detailed instructions on how to set resource parameter options and what they mean. Look for the Compute Resources section in the script. Update your resource request in your run script to match the resources set in runConfig.sh.

It is important to be smart about your resource allocation. To do this it is useful to understand how GCHP works with respect to distribution of nodes and cores across the grid. At least one unique core is assigned to each face on the cubed sphere, resulting in a constraint of at least six cores to run GCHP. The same number of cores must be assigned to each face, resulting in another constraint of total number of cores being a multiple of six. Communication between the cores occurs only during transport processes.

While any number of cores is valid as long as it is a multiple of six (although there is an upper limit per resolution), you will typically start to see negative effects due to excessive communication if a core is handling less than around one hundred grid cells or a cluster of grid cells that are not approximately square. You can determine how many grid cells are handled per core by analyzing your grid resolution and resource allocation. For example, if running at C24 with six cores each face is handled by one core (6 faces / 6 cores) and contains 576 cells (24x24). Each core therefore processes 576 cells. Since each core handles one face, each core communicates with four other cores (four surrounding faces). Maximizing squareness of grid cells per core is done automatically within runConfig.sh if variable NXNY_AUTO is set to ON.

Further discussion about domain decomposition is in runConfig.sh section Domain Decomposition.

Split a Simulation Into Multiple Jobs

There is an option to split up a single simulation into separate serial jobs. To use this option, do the following:

  1. Update runConfig.sh with your full simulation (all runs) start and end dates, and the duration per segment (single run). Also update the number of runs options to reflect to total number of jobs that will be submitted (NUM_RUNS). Carefully read the comments in runConfig.sh to ensure you understand how it works.
  2. Optionally turn on monthly diagnostic (Monthly_Diag). Only turn on monthly diagnostics if your run duration is monthly.
  3. Use gchp.multirun.run as your run script, or adapt it if your cluster does not use SLURM. It is located in the runScriptSamples subdirectory of your run directory. As with the regular gchp.run, you will need to update the file with compute resources consistent with runConfig.sh. Note that you should not submit the run script directly. It will be done automatically by the file described in the next step.
  4. Use gchp.multirun.sh to submit your job, or adapt it if your cluster does not use SLURM. It is located in the runScriptSamples subdirectory of your run directory. For example, to submit your series of jobs, type: ./gchp.multirun.sh

There is much documentation in the headers of both gchp.multirun.run and gchp.multirun.sh that is worth reading and getting familiar with, although not entirely necessary to get the multi-run option working. If you have not done so already, it is worth trying out a simple multi-segmented run of short duration to demonstrate that the multi-segmented run configuration and scripts work on your system. For example, you could do a 3-hour simulation with 1-hour duration and number of runs equal to 3.

The multi-run script assumes use of SLURM, and a separate SLURM log file is created for each run. There is also log file called multirun.log with high-level information such as the start, end, duration, and job ids for all jobs submitted. If a run fails then all scheduled jobs are cancelled and a message about this is sent to that log file. Inspect this and your other log files, as well as output in the OutputDir/ directory prior to using for longer duration runs.

Change Domains Stack Size

For runs at very high resolution or small number of processors you may run into a domains stack size error. This is caused by exceeding the domains stack size memory limit set at run-time and the error will be apparent from the message in your log file. If this occurs you can increase the domains stack size in file input.nml. The default is set to 20000000.

Basic Run Settings

Set Cubed Sphere Grid Resolution

GCHP uses a cubed sphere grid rather than the traditional lat-lon grid used in GEOS-Chem Classic. While regular lat-lon grids are typically designated as ΔLat ⨉ ΔLon (e.g. 4⨉5), cubed sphere grids are designated by the side-length of the cube. In GCHP we specify this as CX (e.g. C24 or C180). The simple rule of thumb for determining the roughly equivalent lat-lon resolution for a given cubed sphere resolution is to divide the side length by 90. Using this rule you can quickly match C24 with about 4x5, C90 with 1 degree, C360 with quarter degree, and so on.

To change your grid resolution in the run directory edit the CS_RES integer parameter in runConfig.sh section Internal Cubed Sphere Resolution to the cube side length you wish to use. To use a uniform global grid resolution make sure that STRETCH_GRID is set to OFF.

Set Stretch Grid Resolution

GCHP has the capability to run with a stretched grid, meaning one portion of the globe is stretched to fine resolution. Set stretched grid parameter in runConfig.sh section Internal Cubed Sphere Resolution. See instructions in that section of the file.

Turn On/Off Model Components

You can toggle all primary GEOS-Chem components, including type of mixing, from within runConfig.sh. The settings in that file will update input.geos automatically. Look for section Turn Components On/Off, and other settings in input.geos. Other settings in this section beyond component on/off toggles using CH4 emissions in UCX, and initializing stratospheric H2O in UCX.

Change Model Timesteps

Model timesteps, both chemistry and dynamic, are configured within runConfig.sh. They are set to match GEOS-Chem Classic default values for low resolutions for comparison purposes but can be updated, with caution. Timesteps are automatically reduced for high resolution runs. Read the documentation in runConfig.sh section Timesteps for setting them.

Set Simulation Start and End Dates

Set simulation start and end in runConfig.sh section Simulation Start, End, Duration, # runs. Read the comments in the file for a complete description of the options. Typically a "CAP" runtime error indicates a problem with start, end, and duration settings. If you encounter an error with the words "CAP" near it then double-check that these settings make sense.

Inputs

Change Initial Restart File

All GCHP run directories come with symbolic links to initial restart files for commonly used cubed sphere resolutions. The appropriate restart file is automatically chosen based on the cubed sphere resolution you set in runConfig.sh.

You may overwrite the default restart file with your own by specifying the restart filename in runConfig.sh section Initial Restart File. Beware that it is your responsibility to make sure it is the proper grid resolution.

Unlike GEOS-Chem Classic, HEMCO restart files are not used in GCHP. HEMCO restart variables may be included in the initial species restart file, or they may be excluded and HEMCO will start with default values. GCHP initial restart files that come with the run directories do not include HEMCO restart variables, but all output restart files do.

Turn On/Off Emissions Inventories

Because file I/O impacts GCHP performance it is a good idea to turn off file read of emissions that you do not need. You can turn emissions inventories on or off the same way you would in GEOS-Chem Classic, by setting the inventories to true or false at the top of configuration file HEMCO_Config.rc. All emissions that are turned off in this way will be ignored when GCHP uses ExtData.rc to read files, thereby speeding up the model.

For emissions that do not have an on/off toggle at the top of the file, you can prevent GCHP from reading them by commenting them out in HEMCO_Config.rc. No updates to ExtData.rc would be necessary. If you alternatively comment out the emissions in ExtData.rc but not HEMCO_Config.rc then GCHP will fail with an error when looking for the file information.

Another option to skip file read for certain files is to replace the file path in ExtData.rc with /dev/null. However, if you want to turn these inputs back on at a later time you should preserve the original path by commenting out the original line.

Add New Emissions Files

There are two steps for adding new emissions inventories to GCHP:

  1. Add the inventory information to HEMCO_Config.rc.
  2. Add the inventory information to ExtData.rc.

To add information to HEMCO_Config.rc, follow the same rules as you would for adding a new emission inventory to GEOS-Chem Classic. Note that not all information in HEMCO_Config.rc is used by GCHP. This is because HEMCO is only used by GCHP to handle emissions after they are read, e.g. scaling and applying hierarchy. All functions related to HEMCO file read are skipped. This means that you could put garbage for the file path and units in HEMCO_Config.rc without running into problems with GCHP, as long as the syntax is what HEMCO expects. However, we recommend that you fill in HEMCO_Config.rc in the same way you would for GEOS-Chem Classic for consistency and also to avoid potential format check errors.

Staying consistent with the information that you put into HEMCO_Config.rc, add the inventory information to ExtData.rc following the guidelines listed at the top of the file and using existing inventories as examples. You can ignore all entries in HEMCO_Config.rc that are copies of another entry since putting these in ExtData.rc would result in reading the same variable in the same file twice. HEMCO interprets the copied variables, denoted by having dashes in the HEMCO_Config.rc entry, separate from file read.

A few common errors encountered when adding new input emissions files to GCHP are:

  1. Your input file contains integer values. Beware that the MAPL I/O component in GCHP does not read or write integers. If your data contains integers then you should reprocess the file to contain floating point values instead.
  2. Your data latitude and longitude dimensions are in the wrong order. Lat must always come before lon in your inputs arrays, a requirement true for both GCHP and GEOS-Chem Classic. For more information about this, see the [Preparing_data_files_for_use_with_HEMCO#Ordering_of_the_data|Preparing Data Files for Use with HEMCO wiki page]].
  3. Your 3D input data are mapped to the wrong levels in GEOS-Chem (silent error). If you read in 3D data and assign the resulting import to a GEOS-Chem state variable such as State_Chm or State_Met, then you must flip the vertical axis during the assignment. See files Includes_Before_Run.H and setting State_Chm%Species in Chem_GridCompMod.F90 for examples.
  4. You have a typo in either HEMCO_Config.rc or ExtData.rc. Error in HEMCO_Config.rc typically result in the model crashing right away. Errors in ExtData.rc typically result in a problem later on during ExtData read. Always try running with the MAPL debug flags on runConfig.sh (maximizes output to gchp.log) and Warnings and Verbose set to 3 in HEMCO_Config.rc (maximizes output to HEMCO.log) when encountering errors such as this. Another useful strategy is to find config file entries for similar input files and compare them against the entry for your new file. Directly comparing the file metadata may also lead to insights into the problem.

Outputs

Output Diagnostics Data on a Lat-Lon Grid

See documentation in the HISTORY.rc config file for instructions on how to output diagnostic collection on lat-lon grids.

Output Restart Files at Regular or Irregular Frequency

The MAPL component in GCHP has the option to output restart files (also called checkpoint files) prior to run end. The frequency of restart file write may be at regular time intervals (regular frequency) or at specific programmed times (irregular frequency). These periodic output restart files contain the date and time in their filenames.

Enabling this feature is a good idea if you plan on doing a long simulation and you are not splitting your run into multiple jobs. If the run crashes unexpectedly then you can restart mid-run rather than start over from the beginning.

Update settings for checkpoint restart outputs in runConfig.sh section Output Restarts. Instructions for configuring both regular and irregular frequency restart files are included in the file.

Turn On/Off Diagnostics

To turn diagnostic collections on or off, comment ("#") collection names in the "COLLECTIONS" list at the top of file HISTORY.rc. Collections cannot be turned on/off from runConfig.sh.

Set Diagnostic Frequency, Duration, and Mode

All diagnostic collections that come with the run directory have frequency, duration, and mode auto-set within runConfig.sh. The file contains a list of time-averaged collections and instantaneous collections, and allows setting a frequency and duration to apply to all collections listed for each. See section Output Diagnostics within runConfig.sh. To avoid auto-update of a certain collection, remove it from the list in runConfig.sh. If adding a new collection, you can add it to the file to enable auto-update of frequency, duration, and mode.

Add a New Diagnostics Collection

Adding a new diagnostics collection in GCHP is the same as for GEOS-Chem Classic netcdf diagnostics. You must add your collection to the collection list in HISTORY.rc and then define it further down in the file. Any 2D or 3D arrays that are stored within GEOS-Chem objects State_Met, State_Chm, or State_Diag, may be included as fields in a collection. State_Met variables must be preceded by "Met_", State_Chm variables must be preceded by "Chem_", and State_Diag variables should not have a prefix. See the HISTORY.rc file for examples.

Once implemented, you can either incorporate the new collection settings into runConfig.sh for auto-update, or you can manually configure all settings in HISTORY.rc. See the Output Diagnostics section of runConfig.sh for more information.

Generate Monthly Mean Diagnostics

There is an option to automatically generate monthly diagnostics by submitting month-long simulations as separate jobs. Splitting up the simulation into separate jobs is a requirement for monthly diagnostics because MAPL History requires a fixed number of hours set for diagnostic frequency and file duration. The monthly mean diagnostic option automatically updates HISTORY.rc diagnostic settings each month to reflect the number of days in that month taking into account leap years.

To use the monthly diagnostics option, first read and follow instructions for splitting a simulation into multiple jobs (see separate section on this page). Prior to submitting your run, enable monthly diagnostics in runConfig.sh by searching for variable "Monthly_Diag" and changing its value from 0 to 1. Be sure to always start your monthly diagnostic runs on the first day of the month.

Debugging

Enable Maximum Print Output

Besides compiling with CMAKE_BUILD_TYPE=Debug, there are a few settings you can configure to boost your chance of successful debugging. All of them involve sending additional print statements to the log files.

  1. Set Turn on debug printout? in input.geos to T to turn on extra GEOS-Chem print statements in the main log file.
  2. Set MAPL_EXTDATA_DEBUG_LEVEL in runConfig.sh to 1 to turn on extra MAPL print statements in ExtData, the component that handles input.
  3. Set the Verbose and Warnings settings in HEMCO_Config.rc to maximum values of 3 to send the maximum number of prints to HEMCO.log.

None of these options require recompiling. Be aware that all of them will slow down your simulation. Be sure to set them back to the default values after you are finished debugging.



Previous | Next | Getting Started with GCHP | GCHP Main Page