Versions Compared

Key

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

...

For ESMF maps, we previously recommend bilinear maps for upscaling and aave for downscaling.  All the TempestRemap algorithms recommended here should work well for either upscaling or downscaling.  The choice depends mostly on the tradeoff between monotonicity and accuracy:  

  1. SE → Lat/Lon:   "intbilin"
    1. "intbilin" if exact conservation is not needed.
    2. "mono" if exact conservation is needed and 1st order accurate is ok (i.e. for downscaling).    

...

  1. Some compsets use ESMF bilinear maps for state variables The bilinear algorithm introduces aliasing artifacts when mapping from a high-resolution to low-resolution region (downscaling).  Some v1 compsets already use TR high-order for atm2ocn maps, which avoid this issue.    
  2. We currently use ESMF conservative maps for fluxes. This algorithm uses piecewise-constant finite volume reconstruction. These maps are good for downscaling, but will produce blocky artifacts when upscaling. 
  3. ESMF conservative maps for spectral element grids requires us to first generate a "dual grid" that puts a finite volume around each spectral element node.  Constructing this dual grid requires running a Matlab tool that uses Newton iteration to find the dual grid. For a high-resolution grid, this procedure can take several days.  (For information on the dual grid, see CAM-SE Atmosphere Grid Overview (EAM & CAM)).  The dual grid is contained in the SCRIP format metadata file.  
  4. TR algorithms natively support finite element grids, do not require the SCRIP dual grid, and give more accurate results when remapping to/from a spectral element atmosphere grid.
  5. TR algorithm recommended for state variables is automatically downscaling, so can always be used when mapping from high-res to low-res grids.
  6. Inline mapping: TempestRemap algorithms are part of the MOAB coupler, making it possible to eliminate mapping files and have them computed as needed.
  7. Land/Ocean Mask consistency:   The flux ocn2atm map is used to define the land/ocean mask on the atmosphere grid. All other ocn2atm maps (state and vectors) must have the same range as the map uses for fluxes.  That is, if a point on the atmosphere grid receives ocean data from the flux map, it must also receive ocean data from all other maps.  The aave and bilinear maps do not have the same range, and thus if an aave map is used for fluxes, it must be used for all other ocn2atm maps.   We speculate that TR maps all have the same range and thus we can use high order maps for ocn2atm state and vectors.   

...

SE =  Atmosphere spectral element dycore mesh ( CAM-SE Atmosphere Grid Overview (EAM & CAM) ). Usually in "np4" configuration where each element has a 4x4 array of GLL nodes.   

...

  • SE→SE mono (conservative, monotone, 1st order)
    • ./GenerateOfflineMap --in_mesh $atmgrid --out_mesh $atmgrid2 --ov_mesh overlap_mesh.g --in_type cgll --in_np 4  --out_type cgll --out_np 4 --mono --correct_areas --out_map map_atmgrid_to_atmgrid2_mono.nc
  • SE→FV mono (conservative, monotone, 1st order)
    • ./GenerateOfflineMap --in_mesh $atmgrid --out_mesh $ocngrid --ov_mesh overlap_mesh.g --in_type cgll --in_np 4  --out_type fv  --mono --correct_areas --out_map map_atm2ocn_mono.nc
  • SE→FV intbilin (nonconservative, monotone, higher order)
    • ./GenerateOfflineMap --in_mesh $atmgrid --out_mesh $ocngrid --ov_mesh overlap_mesh.g --in_type cgll --in_np 4  --out_type fv --mono3 --noconserve --correct_areas --out_map map_atm2ocn_intbilin.nc
  • SE→FV highorder. (conservative, nonmonotone)
    • ./GenerateOfflineMap --in_mesh $atmgrid --out_mesh $ocngrid --ov_mesh overlap_mesh.g --in_type cgll --in_np 4  --out_type fv --correct_areas --out_map map_atm2ocn_highorder.nc
  • FV→SE monotr (conservative, monotone, 1st order)
    • The transpose of the SE→FV mono map: 
    • ./GenerateTransposeMap --in map_atm2ocn_mono.nc --out map_ocn2atm_monotr.nc
  • FV→SE highorder (conservative, non-monotone)
    • ./GenerateOfflineMap --in_mesh $ocngrid --out_mesh $atmgrid --ov_mesh overlap_mesh.g --in_type fv --in_np 2 --out_type cgll --out_np 4  --out_map map_ocn2atm_highorder.nc
    • Does Do these maps need "–correct_areas" ?
  • FV→SE mono (conservative, monotone, 1st order)
    • ./GenerateOfflineMap --in_mesh $ocngrid --out_mesh $atmgrid --ov_mesh overlap_mesh.g --in_type fv --in_np 1 --out_type cgll --out_np 4 --out_map map_ocn2atm_mono.nc
    • Does Do these maps need "–correct_areas" ?
  • FV→SE intbilintr  (nonconservative, nonmonotone, higher order)
    • The transpose of the SE→FV intbilin map.  No negative weights, but weights can be larger than 1.   
    • ./GenerateTransposeMap --in map_atm2ocn_intbilin.nc --out map_ocn2atm_intbilintr.nc
  • FV→FV aave (conservative, monotone, 1st order)
    • The classic cell integrated piecewise constant map.  Equivalent to the ESMF "aave" map and NCO's built in map.  
    • ./GenerateOfflineMap --in_mesh $ocngrid --out_mesh $atmgrid --ov_mesh overlap_mesh.g --in_type fv --in_np 1 --out_type fv --out_np 1 -correct_areas  --out_map map_ocn2atm_mono.nc
  • FV→FV highorder (conservative, non-monotone, high order)
    • ./GenerateOfflineMap --in_mesh $atmgrid --out_mesh $ocngrid --ov_mesh overlap_mesh.g  --in_np 2 --in_type fv  --out_type fv  --out_np 1 -correct_areas --out_map map_atm2ocn_highorder.nc
    • --in_np 2 means all the nearest neighbor cells will be used for a higher order reconstruction of the source data, which will then be integrated over the target cell.  Unlike the SE case, no mass matrix is used for an FV target grid, and thus --out_np is ignored (and will always be 1 internally).  
    • NOTE:  Check the min/max of the weights - if the values are far outside the "[0,1]" interval, may need more coefficients for Vandermonde inverse near poles: In the TR source code, edit LinearRemapFV.cpp: nRequiredFaceSetSize = 2*nCoefficients. 

...