Change the vertical resolution

Note, these instructions are only valid for the 2018 CESM2 release. If you wish to run the Held-Suarez configuration prior to the CESM2 release, please contact Isla Simpson (

The dry dynamical core is supported out of the box at three resolutions T42L30, T85L30 and T85L60 but it can be set up to run at any desired vertical resolution. The following example describes how to configure the dry dynamical core to run with user defined vertical levels. The case described is that of 40 evenly spaced sigma levels, but the same steps can be followed for any arbitrary vertical resolution. The only exception is that the upper most level must not be identically zero, it should be set to a very small value instead.

Step 1: Create an initial condition file with the required vertical resolution

NCL scripts that can be used to create an initial condition file can be downloaded here. See also the instructions for changing the initial conditions. The main script is makeic.ncl and this uses levels that are defined in levels.ncl. The case of 40 evenly spaced sigma levels is already set up in these scripts and can be used by setting nlev=40 in makeic.ncl. Users can modify these scripts to generate initial condition files with a different number and/or spacing of the vertical levels.

Step 2: Set up the Held-Suarez case

Set up the Held-Suarez case at the required horizontal resolution by following step 1 in the instructions for the default Held-Suarez configuration. Note that if you want to run at e.g., T42 resolution you can set up the case as for the T42L30 configuration but then override the default number of levels by following the instructions below.

Step 3: Change the vertical resolution

At the configure stage you must tell the model how many levels you are wanting to use. This can be done by modifying CAM_CONFIG_OPTS in env_build.xml. By default, when using the FHS94 compset, the only configure option set in CAM_CONFIG_OPTS is -phys held_suarez which sets the physics option to be Held-Suarez. You must also set the number of levels, which for the case of 40 levels can be done with the following xmlchange command:

xmlchange --append --file env_build.xml --id CAM_CONFIG_OPTS --val="-nlev=40"

For a different number of vertical levels, replace 40 with the desired number

You must also point toward your initial condition file that contains the required vertical levels. This can be done by setting the namelist parameter ncdata in user_nl_cam e.g.,


where myfilepath points toward the new initial condition file.