NOAA-GFDL / FMS

GFDL's Flexible Modeling System
Other
89 stars 132 forks source link

data_override support for masked and fractional regridding using conservative interpolation #1409

Open StevePny opened 8 months ago

StevePny commented 8 months ago

Is your feature request related to a problem? Please describe. When running fv3-shield and reading in ECMWF SST data using data_override, there are anomalies that show up near the coast lines. We need a method to ensure that SST fields from external sources (e.g. ECMWF, Navy, etc.) are appropriately mapped to the ocean grid used by fv3-shield and ideally are conservatively remapped. Similarly for skin temperature, which is defined everywhere (over sea,land,ice) but can have sharp gradients between land and ocean, needs to be mapped so that ocean points map to ocean points with the appropriate fractional weighting.

I assume that this feature is not currently available, because I see that the current interpolation options in data_override are bilinear and bicubic, e.g.: https://github.com/NOAA-GFDL/FMS/blob/0ede1852034847f0edaaa2027ecd5be526a131b1/data_override/include/data_override.inc#L417

Describe the solution you'd like It would be useful if fractional regridding is supported, where the ocean/land/ice fractions are used to ensure that ocean points are mapped to ocean points, sea ice points to sea ice points, and land point to land points, with the appropriate area-weighted integrals (this follows the spirit of issue #1399, which requests support for providing input regridding weights). Ideally, the regridding weights could still be pre-computed while the fractional weighting and land/sea/ice masks are applied within the model using fractions/masks in the input file and already defined within the model, as these can change over time.

Describe alternatives you've considered We have attempted to pre-compute regridding of external SSTs and skin temperature fields to the mosaic-defined multi-tile cubed sphere grid, with the intent to turn off interpolation in the data_override routine. This has not been successful yet, but we will continue to develop it as an option.

Additional context

Differences in 2m temperature in FV3-SHiELD between using NOAA SST ICs and ECMWF forecasted skin temp after 1 hour, showing artifacts near the coast: image

lharris4 commented 8 months ago

@StevePny Sorry again for the delay.

I don't believe that data_override is intended to be this sophisticated. if you wish to use skin temperature for both LST and SST, a better approach would be to first create separate land surface and sea surface temperature fields derived from skin temperature and using the input dataset's land-sea mask, and using some sort of extrapolation or filling technique to fill appropriate data over the ocean (for LST) or over land (for SST). You can then safely regrid these separate datasets onto the model grid in data_override without worrying about these big artifacts near the coastline.

Please let me know if this makes sense. I know this adds an extra step to the preprocessing (I believe chgres_cube does something similar) but is the simplest solution to this issue.

Thanks Lucas