
pop_remap
Regrids a POP ocean model grid to another grid.
Prototype
procedure pop_remap ( x_dst [*] : numeric, map_wts [*][*] : numeric, dst_add [*] : integer, src_add [*] : integer, x_src [*] : numeric ) return_val : numeric
Arguments
x_dst(output)
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.
dst_addAn one-dimensional array equal to the destination addresses.
src_addAn one-dimensional array equal to the source addresses.
x_srcA one-dimensional array representing all points in the source grid. Must be the same type as x_dst.
Description
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.
References
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
Examples
Example 1
Let Src_to_Dst.nc 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("Src_to_Dst.nc","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") exit 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 delete(xin_1D) delete(dst_add) delete(src_add) delete(map_wts)