[ncl-talk] Regridding data on unstructured grid with ESMF_Regrid

Mary Haley haley at ucar.edu
Mon Aug 25 10:58:52 MDT 2014


Hi Peter,

You may have run into a bug that we fixed in the upcoming release of NCL.
I've attached a new "ESMF_regridding.ncl" script.  Try saving it to the
same directory as your script, and then comment out this line:

load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"

and add this line after or before it:

load "./ESMF_regridding.ncl"

I'm not entirely sure this will work, because you may need to have the
latest version of NCL to use this, but it's worth a try.

--Mary


On Mon, Aug 25, 2014 at 10:37 AM, Peter Watson <watson at atm.ox.ac.uk> wrote:

> Thanks for your help Dennis. I tried this again, this time providing the
> corner information as shown below, but got the same error message. My input
> netCDF file regrid_cons_rg.nc (note I changed the filename) is now
> structured as follows:
>
> netcdf regrid_cons_rg {
> dimensions:
>     space = 35718 ;
>     corner = 4 ;
>
> variables:
>     double data(space) ;
>     double lon1d(space) ;
>     double lat1d(space) ;
>     double corner_lons(space, corner) ;
>     double corner_lats(space, corner) ;
> }
>
> I added the corner_lons and corner_lats arrays, which define tessellating
> rectangular cells centred on each grid point (except at the northernmost
> and southernost latitudes, where the cells stretch to the pole). I
> transferred the file regrid_cons_rg.nc by ftp as before.
>
> The following lines of ncl:
>
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
> file_in=addfile("regrid_cons_rg.nc","r")
>
> data = file_in->data
> lats = file_in->lat1d
> lons = file_in->lon1d
> corner_lats = file_in->corner_lats
> corner_lons = file_in->corner_lons
>
> Opt=True
> Opt at SrcGridLat = lats
> Opt at SrcGridLon = lons
> Opt at SrcGridCornerLat = corner_lats
> Opt at SrcGridCornerLon = corner_lons
>
> Opt at DstGridType    = "5x5"
> Opt at ForceOverwrite   = True
> Opt at InterpMethod="conserve"
>
> Opt at DstLLCorner     = (/-85.0d, 0.0d /)
> Opt at DstURCorner     = (/ 85.0d, 355.0d /)
>
> Opt at Debug            = True
>
> data_latlon=ESMF_regrid(data,Opt)
>
>
> give the error:
>
> (0)    ESMF_regrid_gen_weights: 'ESMF_RegridWeightGen' was successful.
> (0)    ESMF_regrid_with_weights: regridding using interpolation weights ...
> (0)    ESMF_regrid_with_weights: warning: destination grid is not
> (0)        completely covered by the source grid. This is not an error.
> (0)        It just means your destination grid covers a larger area
> (0)        than your source grid.
> (0)    ESMF_regrid_with_weights: Source Grid:
> (0)                              rank:      1
> (0)                              dimensions: 71432
> (0)                              original source rank: 1
> (0)                              latitude min/max: -89.1415/89.1415
> (0)                              longitude min/max:0.375/358.5
> (0)    ESMF_regrid_with_weights: Destination Grid:
> (0)                              dimensions: 35 72
> (0)                              latitude min/max: -85/85
> (0)                              longitude min/max:0/355
>
> (0)    ESMF_regrid_with_weights: retrieving interpolation weights ...
> (0)    ESMF_regrid_with_weights: error: source data on the description
> (0)         file does not have proper dimensions.
>
>
> Is it possible to tell what is going wrong here? Or is there another way
> of doing this?
>
> Kind regards,
>
> Peter
>
>
> On Sat, Aug 23, 2014 at 3:28 AM, Dennis Shea <shea at ucar.edu> wrote:
>
>>  The attached works with the bilinear and patch methods. The conserve
>> method requires 'corner' information. NCL's implementation tries to derive
>> the corner info but is not always successful. I think that is what is
>> happening in your case. This will be looked at more when we get a chance.
>>
>>
>>
>>
>> On Thu, Aug 21, 2014 at 1:52 PM, Peter Watson <watson at atm.ox.ac.uk>
>> wrote:
>>
>>>     Dear fellow NCL users,
>>>
>>>  I am trying to do conservative regridding of precipitation data from a
>>> reduced Gaussian grid to a lat-lon grid using the ESMF_Regrid function in
>>> NCL 6.1.2, but I get an error that I do not understand. My input data is in
>>> a NetCDF file, with the precip data and the latitudes and longitudes of the
>>> grid points stored as 1D arrays. An ncdump -h of the input file gives:
>>>
>>> dimensions:
>>>     space = 35718 ;
>>> variables:
>>>     double data(space) ;
>>>     double lon1d(space) ;
>>>     double lat1d(space) ;
>>>
>>>
>>>  I use the following lines of NCL, based on the example script at
>>> http://www.ncl.ucar.edu/Applications/Templates/ESMF_unstruct_to_0.25deg.ncl
>>> :
>>>
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/esmf/ESMF_regridding.ncl"
>>>
>>> file_in=addfile("regrid_cons_irreg.nc","r")
>>> data = file_in->data
>>> lats = file_in->lat1d
>>> lons = file_in->lon1d
>>>
>>> Opt=True
>>> Opt at SrcGridLat         = lats
>>> Opt at SrcGridLon        = lons
>>> Opt at DstGridType      = "5x5"
>>> Opt at ForceOverwrite  = True
>>> Opt at InterpMethod     = "conserve"
>>> Opt at DstLLCorner      = (/-85.0d, 0.0d /)
>>> Opt at DstURCorner     = (/ 85.0d, 355.0d /)
>>>
>>> Opt at Debug            = True
>>>
>>> data_latlon=ESMF_regrid(data,Opt)
>>>
>>>  This gives the error:
>>>
>>> (0)    ESMF_regrid_with_weights: retrieving interpolation weights ...
>>> (0)    ESMF_regrid_with_weights: error: source data on the description
>>> (0)         file does not have proper dimensions.
>>>
>>>  I don't understand why this fails. Is there something wrong with how I
>>> am reading in the data and coordinates? Are there any conditions that need
>>> to be satisfied, like the coordinates increasing monotonically (mine do
>>> not)? If anyone has a script and NetCDF file for which this sort of
>>> regridding succeeds that they could let me see, then that would be very
>>> helpful.
>>>
>>>  Thanks very much for any help you can give.
>>>
>>>  Kind regards,
>>>
>>>  Peter Watson
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140825/a1709cb8/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ESMF_regridding.ncl
Type: application/octet-stream
Size: 140076 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140825/a1709cb8/attachment.obj 


More information about the ncl-talk mailing list