Versions Compared

Key

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

Document issues with our mapping file generation tool chain at high resolution. Instructions on using MBtempest: Offline remapping workflow with mbtempest

Status

For PG2 grids, we will mapping FV-FV. For monotone conservative linear maps, the only choice is cell integrated using a piecewise constant reconstruction. Options for producing these maps include ESMF, TempestRemap (TR), Moab with TR agorithms (MBTR) and NCO. All codes produce similar max and l2 errors when evaluated with the analytic vortex test field.

...

SE GLL to SE GLL

These mapping files are mostly used to generate initial conditions. Remapping the cam.i file from a spunup NE30 simulation will generate a reasonably well spunup initial condition file for higher resolutions.

...

The TR improvements suggest we should take another look at “mono” maps for MPAS/EAM coupling. For these maps, testing reported on Transition to TempestRemap for Atmosphere grids recommended using the transpose of the np4->MPAS mono map. So we test the original map here:

...

Note3: for TR FV to FV maps, the --mono options are ignored. monotone conservative maps are constructed using --in_np 1 (piecewise constant reconstruction). higher order maps (--in_np 2) are not monotone.

  • ncremap build built in FV to FV map file generator

    • oRRS18to6 → ne256pg2 status: GOOD

      • ~3min with 4 threads on Cori frontend node

      • Weights are good. row sum and conservation error: 6e-13

    • oRRS18to6 → ne1024pg2

      • ~40 min on Compy with 4 threads. 1.5 h on Cori-Haswell node

      • Weights are good. row sum error 2e-12, conservation error 1e-12

  • TR “mono” . (TR from TR from with new --correct_areas option)

    • oRRS18to6 → ne256pg2 status: GOOD

      • 2.5h on Anvil (single processor)

      • Weights are good. Row sums error: 7e-16. Conservation error 7e-16

      • vortex test field l2/max error: 3.6145e-05 4.3881e-04

    • oRRS18to6 → ne512pg2: status GOOD

      • ~9h to compute overlap map

      • weights: good. row sum error: 7e-16. Conservation error 7e-16

      • vortex:     l2, linf: 1.7867e-04 2.2985e-03

    • oRRS18to6 → ne1024pg2: status: GOOD

      • 15.5h on Anvil, using 20GB

      • weights: good. row sum error: 4e-16. conservation error: 1e15

  • MBTR “mono”. Status: NOT USABLE

    • oRRS18to6 → ne256pg2

    • Weights are good, but 316 MPAS grid points have weight=0. This is incorrect and corrupts other diagnostics.

  • ESMF “aave”

    • oRRS18to6 → ne256pg2. Status: GOOD

      • weights are good. row sum max 8.5e-12. Conservation error 1.5e-11

      • vortex test field l2/max error: 3.6144e-05 4.3881e-04

    • oRRS18to6 → ne512pg2. Status: GOOD

      • weights are good. row sum error 3e-11. conservation error 1e-11

      • vortex:     l2, linf: 1.7866e-04 2.2985e-03

    • oRRS18to6 → ne1024pg2. Status: NOT USABLE

      • 35min on Cori Haswell node

      • ( /global/project/projectdirs/acme/taylorm/mapping/map_oRRS18to6v3_to_ne1024pg2_aave.nc.BAD )

      • weights are bad: max 2.6, row sum max 3.0. conservation error 4e-4

      • same issue with ESMF v8.

...

  • MBTR FV->FV error - missing source points. It appears MBTR maps have a similar loss of precision as TR maps, but this could be corrupted du to the missing source points.

  • MBTR SE->SE: montone weights are bad, either NaN or >1

  • ESMF “aave” and “bilin” maps are good up to ne512pg2, but both produce too large weights with ne1024pg2 (both SE->SE and FV->SE)

  • AnalyzeMap (Added in TR as of )

    • request: add min/max of map file frac_a, frac_b data to output

    • request: check for NaNs when printing weight min/max

    • for non global (MPAS) source grid, prints tens of thousands of useless consistency warnings

    ncremap option is missing global attributes needed by CIME’s domain generation code. they can be added via:
    • ncatted -a grid_file_src,global,a,c,"$target" $mapname
      ncatted -a grid_file_dst,global,a,c,"$atm_scrip" $mapname

...

Command line options used:

Produce pg2 SE template files: (need utilities from TR New versions required:

  • TR: code from or later

...

  • NCO 4.9.2-alpha05 or newer

Code Block
#atm grid
set NE=1024
set atmgridnp4 = TEMPEST_NE${NE}.g
set atmgrid = TEMPEST_NE${NE}pg2.g               # used by TR, MBTR
set atm_scrip = TEMPEST_NE${NE}pg2.scrip.nc      # used by ESMF, ncremap
# option "--alt" now the default and has to be removed from newer TR versions:   
GenerateCSMesh --res $NE --out_format Netcdf4 --file $atmgridnp4                  
GenerateVolumetricMesh --in $atmgridnp4 --out $atmgrid --np 2 --uniform                 
ConvertExodusToSCRIP --in $atmgrid --out $atm_scrip   

# ocean grid:
set target = ocean.oRRS18to6v3.scrip.181106.nc      

...

Code Block
# NCREMAP:
set mapname = map_oRRS18to6v3_to_ne${NE}pg2_nco.nc
ncremap -6 --thr_nbr=4 --grd_src=$target  --grd_dst=$atm_scrip  --map=$mapname              
ncatted -a grid_file_src,global,a,c,"$target" $mapname
ncatted -a grid_file_dst,global,a,c,"$atm_scrip" $mapname

#ESMF:
set mapname = map_oRRS18to6v3_to_ne${NE}pg2_aave.nc
srun -N 1 -c 4 -C haswell ESMF_RegridWeightGen -s $target -d $atm_scrip -i --src_regional \
  --method conserve --netcdf4 -w $mapname
  
#TR:
set mapname = map_oRRS18to6v3_to_ne${NE}pg2_mono.nc
GenerateOverlapMesh --b $atmgrid --a $target --out overlap.g
GenerateOfflineMap --out_mesh $atmgrid  --in_mesh $target --ov_mesh overlap.g \
 --in_type fv --in_np 1 --out_type fv --out_double --out_format Netcdf4 \
  --correct_areas  --out_map $mapname

To check maps, use “ncks --chk_map”:

  • weights: verify that all weights are between [0,1], none of them are NaNs.

  • row sums: The row sum consistency check measures the ability of the map to preserve the constant function.

    • ocean->atm maps: max value should be close to 1.0. min value will be between [0..1] at land and fractional land points. Error reported above is from the max value.

    • atm->ocean maps: min/max value should be close to 1.0 for all rows with nonzero weights (since atmosphere grid is global)

    • atm->atm maps: min/max values should be close to 1.0

  • area weighted column sums: this measures if the map is conservative.

    • ocean->atm maps: area_b weighted column sum should equal area_a for all columns.

    • atm->ocean maps: area_b weighted column sum should equal area_a at all ocean points, and be between [0,1] at fractional (coastline) points.

    • atm->atm maps: equal for all columns.

Older versions of ncremap option is missing global attributes needed by CIME’s domain generation code. they can be added via:

  • ncatted -a grid_file_src,global,a,c,"$target" $mapname
    ncatted -a grid_file_dst,global,a,c,"$atm_scrip" $mapname