Skip to content

Create a new mesh and include it in rrfs‐workflow

Guoqing Ge edited this page Mar 8, 2026 · 1 revision

rrfs-workflow can run on different meshes (or domains).
By default, it provides conus3km, conus12km and na12km meshes on all supported platforms.

Besides the above default meshes, so far, it is known that users have been running the following domains, south3.5km, ea5km, ar3.5km, global-15-3km, eu12km, sf1km, etc.

1. add a new mesh into rrfs-workflow

To add a new domain in rrfs-workflow, one will need to prepare the following files under a directory named as ${MESH_NAME} and then link this directory to under FIXrrfs/:

${MESH_NAME}.grid.nc
${MESH_NAME}.static.nc
${MESH_NAME}.invariant.nc_L65_GFS
${MESH_NAME}.invariant.nc_L65_GEFS
${MESH_NAME}.ugwp_oro_data.nc
graphinfo/
    ${MESH_NAME}.graph.info
    ${MESH_NAME}.graph.info.${ranks}
    ......

NOTE: follow this wiki to generate static.nc, invariant.nc and bumploc files when needed.

If doing the ensemble bump localization in the 3DEnVAR part, add the following files:

bumploc/
    ${MESH_NAME}_L65_${ranks}_401km11levels/
    ${MESH_NAME}_L65_${ranks2}_401km11levels/
    ......

If doing 3DVAR using BUMPBEC, add the following files:

static_bec/
    ${MESH_NAME}_L65/

NOTE: replace ${MESH_NAME} with the actual value, ${ranks} with the number of MPI ranks, L65 with the actual vertical levels.

One can also add an optional misc to hold information relevant to this mesh, such as how this mesh is generated, etc.

In rrfs-workflow, need to add one section into config_resources/config.meshdep. Here is an example:

elif [[ ${MESH_NAME} == "ar3.5km" ]]; then
  export FCST_DT=25
  export FCST_SUBSTEPS=4
  export FCST_RADT=15
  export UPP_DOMAIN="ar."

  export MPASSIT_NX=6000
  export MPASSIT_NY=4800
  export MPASSIT_DX=3500.0
  export MPASSIT_REF_LAT=40.0
  export MPASSIT_REF_LON=-135.5

  # If using GSIBEC, need the following parameters
  export GSIBEC_NLAT=694
  export GSIBEC_NLON=885
  export GSIBEC_NORTH_POLE_LAT=49.987873
  export GSIBEC_NORTH_POLE_LON=44.500000
  export GSIBEC_LON_START=-27.757600
  export GSIBEC_LON_END=27.757600
  export GSIBEC_LAT_START=-21.760200
  export GSIBEC_LAT_END=21.760200

Note: Reference this page on how to generate the GSIBEC related parameters.

Here is an example of ar3.5km:

ar3.5km/
├── ar3.5km.grid.nc
├── ar3.5km.invariant.nc_L65_GEFS
├── ar3.5km.invariant.nc_L65_GFS
├── ar3.5km.static.nc
├── ar3.5km.ugwp_oro_data.nc
├── bumploc
│   ├── ar3.5km_L65_1000_401km11levels
│   │   ├── bumploc_nicas_local_001000-000001.nc
......
│   │   └── bumploc_nicas_local_001000-001000.nc
│   ├── ar3.5km_L65_1200_401km11levels
│   │   ├── bumploc_nicas_local_001200-000001.nc
......
│   │   └── bumploc_nicas_local_001200-001200.nc
│   ├── ar3.5km_L65_1600_401km11levels
│   │   ├── bumploc_nicas_local_001600-000001.nc
......
│   │   └── bumploc_nicas_local_001600-001600.nc
│   └── ar3.5km_L65_800_401km11levels
│       ├── bumploc_nicas_local_000800-000001.nc
......
│       └── bumploc_nicas_local_000800-000800.nc
├── graphinfo
│   ├── ar3.5km.graph.info
│   ├── ar3.5km.graph.info.part.1000
│   ├── ar3.5km.graph.info.part.1200
│   ├── ar3.5km.graph.info.part.1600
│   └── ar3.5km.graph.info.part.800
└── misc
    └── namelist.projections.ar3.5km

2. create a new regional mesh

2.1 Use create_region provided by the MPAS-Limited-Area utility.

This is to carve out a regional domain from an existing global mesh.
Example:
a. create a file custom.ps:
Here is the pts file used to generate the conus3km and conus12km domains:

Type: custom
Point: 38.5, -97.5
21.03, -122.82
47.94, -134.20
47.94, -60.80
21.03, -72.18

b. create_region custom.pts x1.4096002.grid.nc

2.2.1 Build the tool

git clone git@github.com:MPAS-Dev/MPAS-Tools.git
cd MPAS-Tools/mesh_tools/hex_projection/
make          # if missing nf-config, which means the loaded netcdf is not correct
cd ../../../mesh_generation
ln -snf ../MPAS-Tools/mesh_tools/hex_projection/project_hexes .

2.2.2 Configure namelist.projections

&mesh
  cell_spacing_km  = 3.5
  mesh_length_x_km = 6600,
  mesh_length_y_km = 5000,
  earth_radius_km  = 6370,
/
&projection
  projection_type = "lambert_conformal",
/
&lambert_conformal
  reference_longitude_degrees = -135.0
  standard_longitude_degrees = -135.0
  reference_latitude_degrees  = 40.0,
  standard_parallel_1_degrees = 50.0,
  standard_parallel_2_degrees = 30.0,
/

2.2.3 Run the executable

./project_hexes

Clone this wiki locally