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

Peter Watson watson at atm.ox.ac.uk
Mon Aug 25 10:37:28 MDT 2014


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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140825/9bee0468/attachment.html 


More information about the ncl-talk mailing list