NCL Home > Documentation > Functions > Regridding, CESM, Oceanography


Regrids a POP ocean model grid to another grid.


	procedure pop_remap (
		x_dst      [*] : numeric,  
		map_wts [*][*] : numeric,  
		dst_add    [*] : integer,  
		src_add    [*] : integer,  
		x_src      [*] : numeric   

	return_val  :  numeric



A one-dimensional array representing all points in the destination grid. The size is determined by the SCRIP software's variable dst_grid_dims. Must be the same type as x_src.


A two-dimensional array equal to the remapping weights. The dimension order is (num_links,num_wgts) using SCRIP nomenclature.


An one-dimensional array equal to the destination addresses.


An one-dimensional array equal to the source addresses.


A one-dimensional array representing all points in the source grid. Must be the same type as x_dst.


Regrids a POP ocean model grid to another grid using weights, source addresses and destination addresses from the SCRIP (Spherical Coordinate Remapping and Interpolation Package). Only users familiar with SCRIP should use this function.

This routine performs the appropriate first-order multiplication between the values in a one dimensional representation of the source grid and derived weights. The output is a one dimensional representation of the output grid.

ndtooned and onedtond can be used to perform the transformations between multi-dimensional arrays and one dimensional arrays.

It is the user's responsibility to read in the appropriate data from a SCRIP file.


Jones, Philip W. (1999): First and Second Order Conservative
Remapping Schemes for Grids in Spherical Coordinates.
Monthly Weather Review: v127 pp 2204-2210.

Jones, Philip W. (1998): A User's Guide for SCRIP: A Spherical
Coordinate Remapping and Interpolation Package. Version 1.2.
Los Alamos National Laboratory.

For more robust regridding, see the ESMF regridding examples, which show how to regrid data from and to rectilinear, curvilinear, or unstructured grids. Available in version 6.1.0 and later.

See Also



Example 1

Let represent the SCRIP file with the desired regridding information. Let XIN be the two-dimensional source grid and XOUT be the two-dimensional destination grid.

fP = addfile("","r")    ; SCRIP netCDF file

dim_x   = dimsizes( XIN )             ; XIN is the variable to be remapped     
nDx     = dimsizes( dim_x )           ; rank [# dimensions]
dim_src = fP->src_grid_dims           ; size source grid
                                      ; error check
if (dim_x(nDx-2).ne.dim_src(1) .or. dim_x(nDx-1).ne.dim_src(0)) then
    print (" Input grid and Remap sizes do not match")
end if

dst_add = fP->dst_address              ; destination grid [linear] 
src_add = fP->src_address              ; source grid [linear]
map_wts = fP->remap_matrix             ; wts 
dim_dst = fP->dst_grid_dims            ; size destination grid

mx      = dim_dst(0)                   ; output # elements in "x"
ny      = dim_dst(1)                   ; output # elements in "y"

xout_1D = new (ny*mx, typeof(XIN))    ; (temporary) return grid [1D]
xin_1D  = ndtooned ( XIN )            ; convert to 1D
pop_remap(xout_1D, map_wts, dst_add, src_add, xin_1D)

XOUT = onedtond(xout_1D, (/ny,mx/) )   ; new grid

delete(xout_1D)                        ; clean up