dtcenter / MET

Model Evaluation Tools
https://dtcenter.org/community-code/model-evaluation-tools-met
Apache License 2.0
74 stars 22 forks source link

Enhance MET's regrid dictionary to add reinterpolation methods using point2grid #2658

Open AliciaBentley-NOAA opened 10 months ago

AliciaBentley-NOAA commented 10 months ago

Describe the New Feature

ADDED CONTEXT: In conjunction with #2859, this issue seeks out a path to ingest tripolar projection datasets through MET. In particular, this issue deals with verifying tripolar projected datasets (such as RTOFS) on a polar stereographic projection (or any other supported projection) using interpolation methods. Currently MET is unable to process a tripolar projection that is not CF-compliant; CF-compliant netCDF files can utilize the point2grid tool to achieve interpolation.

On investigation, the CICE dataset (and other NOAA tripolar datasets) are not CF-compliant and will require additional methods added to point2grid for interpolation (which is being enhanced via #2857).

The work on this issue would expand the interpolation access from point2grid to the regrid dictionary available in grid-to-grid verification tools including Grid-Stat and MODE. This will require a call to the point2grid logic in the regrid dictionary that can properly assess an input forecast file and determine if it is one of the supported tripolar formats. If it is, the regrid dictionary will employ the proper logic to interpolate the tripolar grid into the desired projection.

ORIGINAL ISSUE: We would like MET to be able to read in tripolar grids. The Real-Time Ocean Forecast System (RTOFS), for example, uses a tripolar grid. Tripolar grids are a 'composite of two grids connected along a specified "join" latitude' . In a tripolar grid, there is a bipolar grid on one side (north or south) of the "join latitude" and a single pole grid on the other side. For RTOFS, this join latitude is 47°N. North of 47°N is an Arctic bipolar grid and south of 47°N is a Mercator projection (see attached figure). Tripiolar grids are designed to mitigate the convergence of longitudes at the North Pole.

Note: WCOSS2 does not allow xESMF, so any functionality built can not use xESMF.

References: Environmental Modeling Center: "About Global RTOFS". https://polar.ncep.noaa.gov/global/about/ Geophysical Fluid Dynamics Laboratory: "A Guide to Grid Coupling in FMS". https://www.gfdl.noaa.gov/guide-to-grid-coupling-in-fms/ Murray, R. J., 1996: Explicit generation of orthogonal grids for ocean models. Journal of Computational Physics, 126, 251-273. [link to PDF]

72092322-50985100-32cf-11ea-9ed6-5f6118db28ed

image

Acceptance Testing

Current RTOFS files can be downloaded from: https://nomads.ncep.noaa.gov/pub/data/nccf/com/rtofs/prod/rtofs.YYYYMMDD/rtofs_glo_2ds_f000_ice.nc (Please check this file is the correct one with Bob Grumbine, and I can edit as needed.) If MET can read in and display a graphic of the contents of a tripolar grid, I think we'll be all set.

Time Estimate

Estimate the amount of work required here. I can't give an estimate for how much work this is for DTC. My hope is that because this was once covered by two closed MET issues (using tools that we can't use on WCOSS2) that we might not be starting from scratch and this will take less time than thought. Closed MET issues: https://github.com/dtcenter/MET/issues/1231 and https://github.com/dtcenter/MET/issues/1345

Sub-Issues

Consider breaking the new feature down into sub-issues.

Relevant Deadlines

EVSv2- with development to begin in early 2024.

Funding Source

2799991

Define the Metadata

Assignee

Labels

Projects and Milestone

Define Related Issue(s)

Consider the impact to the other METplus components.

New Feature Checklist

See the METplus Workflow for details.

JohnHalleyGotway commented 8 months ago

EMC would like to test GFS GEFS ocean HR runs on a tri-polar grid. Recommend talking to @AliciaBentley-NOAA or @GwenChen-NOAA.

hsoh-u commented 6 months ago

Python embedding requires the xesmf package. The bilinear is applied for METplus test case:

https://github.com/dtcenter/METplus/blob/main_v5.1/parm/use_cases/model_applications/marine_and_cryosphere/PlotDataPlane_obsHYCOM_coordTripolar/read_tripolar_grid.py

import xesmf as xe

# create output grid using lat/lon bounds of data outside boundary
out_grid = xe.util.grid_2d(0,
                           360,
                           LONGITUDE_SPACING,
                           lat_min,
                           lat_max,
                           LATITUDE_SPACING)

# create regridder using cropped data and output grid
# NOTE: this creates a temporary file in the current directory!
# consider supplying path to file in tmp directory using filename arg
# set reuse_weights=True to read temporary weight file if it exists
regridder = xe.Regridder(xr_out_bounds,
                         out_grid,
                         'bilinear',
                         ignore_degenerate=True,
                         reuse_weights=True,
                         filename=weight_file)
AliciaBentley-NOAA commented 6 months ago

After months of back and forth with NCO in previous years, it was determined that xESMF is not allowed on WCOSS2. We need to use a different approach to do this. Thanks for the suggestion!