How do I add a new grid?

Support for several grids are hardwired in the CESM1 release. "create_newcase -l" provides a current listing of supported "out-of-the-box" grids. In general, CESM grids are associated with a specific combination of atmosphere, land, and ocean/ice grids using a particular naming convention like f19_g16 for the f19 atm/lnd grid combined with the g16 ocn/ice grid. The f19 atm/lnd grid is the shortname for the 1.9x2.5 finite volume dycore grid. The g16 ocn/ice grid is the shortname for the gx1v6 one-degree displaced pole grid. To add a new grid, just a few things need to be done. First, create both an individual long and shortname for the individual grid (ie. f19=1.9x2.5) and for the grid combination (ie. f19_g16). Then add that grid to the config_grid.xml file. Next, update individual components to support those new grids. This usually begins with the components template file, but may also require source code modifications in some cases. More details are provided below.

The most difficult issue associated with adding a new grid is generating the required grid files for components and generating any new mapping files required by the coupler. On some level, the best advice is to mimic datasets that already exist for other grids for your grid. That means, produce new datasets that follow the formatting standard. CESM has some tools to help with this, and they should be outlined in each components' documentation. There is specific process for generating mapping file in CESM. To learn more about this process, contact CESM directly.

To add a new grid, edit the scripts/ccsm_utils/config_grid.xml and add the specific individual grids in the first section with their nx and ny sizes. The add the grid combination as a section below specifying the individual grids for each component, the mapping filenames, and other information. Just follow an example of an existing grid definition. Once this is complete, the grid will be "supported" in the CESM scripts and cases can be created with it.

The next step is to add support for the new grids in the components. This would generally be done initially in the component template files, models/*/*/bld/*.template . Each component handles this differently, so it's up to the user to decide which components need updates and how to best implement the update. As part of the template update, new grid files and input datasets may have been generated. These need to be added to each component on an individual basis.