Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In order to adapt this to the physgrid we need to use an additional command to subdivided subdivide these elements into the number of FV cells we want. Similar to the example given above is that when mapping between grids we would need to indicate to TempestRemap that these "elements" are actually finite volume cells with a special flag (see mapping section below).

So if we want an ne30pg3 ne30pg2 file, and we initially created an ne30 exodus files file with this command:

${tempest_root}/bin/GenerateCSMesh --alt --res 30 --file ${output_root}/ne30.g

...

${tempest_root}/bin/GenerateVolumetricMesh --in ${output_root}/ne30.g --out ${output_root}/ne30pg3ne30pg2.g --np 3 --uniform

Generating a Scrip File

For mapping GLL grids without TempestRemap (or plotting GLL grid data) we need to "re-interpret" the representation of data on the GLL grid into a finite volume grid. Step #2 in the step-by-step guide discusses how to do this with the "dual grid" approach. It's worth noting that this is not a visually accurate representation of the data, but the area of the FV cells produced by the dual grid are consistent with the GLL weights so that spatial sums and averages can be computed in an intuitive way. Another caveat of the dual grid method is that the generation of the scrip grid description file requires an iterative process that can can take a very long time for large grids.

An advantage of the physgrid is that we don't have to worry about this nonsense because the data is naturally represented by finite volumes. There's a simple TempestRemap command that can quickly convert from exodus to scrip file types using the following command:

${tempest_root}/bin/ConvertExodusToSCRIP --in ne30pg3.g --out ne30pg3_scrip.nc

...

2 --uniform

Mapping Files

The "ncremap -P mwf" procedure encapsulates several commands to generate all the required map files for a run without the physgrid, but since these commands are specific to using the spectral element grid, we need different commands when using the physgrid. We can implement a comparable procedure in ncremap if we want by submitting a PR to the NCO repository.

The example below shows the commands needed to generate all mapping files for a tri-grid configuration with the atmosphere on the ne30pg2 grid. Note that this example of wrapping TempestRemap with ncremap assumes the mapping algorithm for TempestRemap. For more control over this, and to use the latest recommended maps for mapping between each component, see Recommended Mapping Procedures for E3SM Atmosphere Grids:

atm_grid_file=ne30pg2.g
ocn_grid_file=ocean.oEC60to30v3.scrip.181106.nc
lnd_grid_file=SCRIPgrid_0.5x0.5_nomask_c110308.nc
atm_name=ne30pg2
ocn_name=oEC60to30v3
lnd_name=r05
alg_name=mono

map_opts='--in_type fv --in_np 1 --out_type fv --out_np 1 --out_format Classic'
date=200110
ncremap -a tempest --src_grd=$ocn_grid_file --dst_grd=$atm_grid_file -m map_${ocn_name}_to_${atm_name}_${alg_name}.${date}.nc -W $$map_opts
ncremap -a tempest --src_grd=$atm_grid_file --dst_grd=$ocn_grid_file -m map_${atm_name}_to_${ocn_name}_${alg_name}.${date}.nc -W $$map_opts --a2o
ncremap -a tempest --src_grd=$lnd_grid_file --dst_grd=$atm_grid_file -m map_${lnd_name}_to_${atm_name}_${alg_name}.${date}.nc -W $$map_opts 
ncremap -a tempest --src_grd=$atm_grid_file --dst_grd=$lnd_grid_file -m map_${atm_name}_to_${lnd_name}_${alg_name}.${date}.nc -W $$map_opts 
ncremap -a tempest --src_grd=$lnd_grid_file --dst_grd=$ocn_grid_file -m map_${lnd_name}_to_${ocn_name}_${alg_name}.${date}.nc -W $$map_opts --a2o
ncremap -a tempest --src_grd=$ocn_grid_file --dst_grd=$lnd_grid_file -m map_${ocn_name}_to_${lnd_name}_${alg_name}.${date}.nc -W $$map_opts 


The path to these files needs to be added to the appropriate section of cime/config/e3sm/config_grids.xml.

...

No change in the procedure for generating domain files except that the physgrid grid and mapping files described above need to be used because the physics grid is used when communicating with the coupler, which is primarily where the domain files are needed. 

Topography

There was much discussion about how to handle topography with the new physgrid. The dynamics requires a smoothed topography on the GLL grid, but the physics parameterization for turbulent mountain stress operates on the physics grid, so the initial question was which grid should the input topography be on? PR's #3267 and #3406 introduced a new file format for topography and related tools that allow a better consistency between the representation of topography on both grids. Specifically, there are two new tools to support this new treatment of topography for the physgrid.

The tools are motivated by the following considerations: Both the dycore and the physics parameterizations require surface geopotential (topography) phi_s. Thus, there a number of requirements.

  1. The dycore needs these data at GLL points, and the physics needs them at FV cell centers.
  2. We require that the map of the GLL phi_s data be equal to the FV phi_s data.
  3. We want to run HOMME's smoother on GLL phi_s.
  4. We do not want to use the GLL dual grid, which requires using an unscalable tool; we want to use only the FV dual grid, which can be created using, e.g., TempestRemap in a matter of seconds.

To fulfill these requirements, we introduce a new topography file format that has all data at FV points and, in addition, phi_s at the GLL points.

The first tool is a simple converter, for convenience. The input is an old GLL topography file. The output is a topography file in the new GLL-physgrid format. SGH, SGH30, LANDFRAC, and LANDM_COSLAT are not quite as good as with second tool, but this converter works in one step:

Code Block
$ cat input.nl
&ctl_nl
ne = 30
/
&vert_nl
/
&analysis_nl
tool = 'topo_convert'
infilenames = 'USGS-gtopo30_ne30np4_16xdel2-PFC-consistentSGH.nc', 'USGS-gtopo30_ne30np4pg2_16xdel2-PFC-consistentSGH_converted'
/

mpirun -np 8 homme_tool < input.nl

homme_tool is an executable in ${homme_build}/src/tool/homme_tool produced in a standard configuration and build of standalone homme.

The second tool provides the best-quality GLL-physgrid file. It has five steps, illustrated for the case of ne30pg2:

TempestRemap:

...

languagetext

...

Generating a Scrip File

For mapping GLL grids without TempestRemap (or plotting GLL grid data) we need to "re-interpret" the representation of data on the GLL grid into a finite volume grid. Step #2 in the step-by-step guide discusses how to do this with the "dual grid" approach. It's worth noting that this is not a visually accurate representation of the data, but the area of the FV cells produced by the dual grid are consistent with the GLL weights so that spatial sums and averages can be computed in an intuitive way. Another caveat of the dual grid method is that the generation of the scrip grid description file requires an iterative process that can can take a very long time for large grids.

An advantage of the physgrid is that we don't have to worry about this nonsense because the data is naturally represented by finite volumes. There's a simple TempestRemap command that can quickly convert from exodus to scrip file types using the following command:

${tempest_root}/bin/

...

cube_to_target, run 1:

Code Block
languagetext
${e3sm_root}/components/cam/tools/topo_tool/cube_to_target \
  --target-grid topo2/ne30pg4_scrip.nc \
  --input-topography topo2/USGS-topo-cube3000.nc \
  --output-topography topo2/ne30pg4_c2t_topo.nc

These warnings appear to be innocuous:

Code Block
languagetext
sum of weights is negative - negative area? -1.8651290104823655E-009 675 3000

homme_tool:

Code Block
languagetext
$ cat input.nl
&ctl_nl
ne = 30
smooth_phis_numcycle = 16
smooth_phis_nudt = 28e7
hypervis_scaling = 0 
hypervis_order = 2
se_ftype = 2 ! actually output NPHYS; overloaded use of ftype
/
&vert_nl
/
&analysis_nl
tool = 'topo_pgn_to_smoothed'
infilenames = 'ne30pg4_c2t_topo.nc', 'ne30np4pg2_smoothed_phis'
/

mpirun -np 8 ./homme_tool < input.nl

cube_to_target, run 2:

Code Block
languagetext
${e3sm_root}/components/cam/tools/topo_tool/cube_to_target \
  --target-grid ne30pg2_scrip.nc \
  --input-topography USGS-topo-cube3000.nc \
  --smoothed-topography ne30np4pg2_smoothed_phis1.nc \
  --output-topography USGS-gtopo30_ne30np4pg2_16xdel2.nc

ncks

Code Block
languagetext
ncks -A ne30np4pg2_smoothed_phis1.nc USGS-gtopo30_ne30np4pg2_16xdel2.nc

USGS-gtopo30_ne30np4pg2_16xdel2.nc is the final GLL-physgrid topography file.

ConvertExodusToSCRIP --in ne30pg2.g --out ne30pg2_scrip.nc

The resulting scrip file can be used for mapping with ESMF or plotting physgrid data on the native grid. 

Topography

Several modifications to the topography generation are needed to support PG2 grids.  Complete details are given in the V2 (and later) instructions under

Atmospheric Topography Generation

Regional Refinement

Regionally refined grids require no special steps when using the physgrid because the regional refinement happens at the element level, and the physgrid only changes the physics column arrangement within the element.  Note however that the input namelist for homme_tool will need to specify ne = 0 and mesh_file for RRM grids.

Steps to Interpolate Between Grids

...