grad_latlon_cfd
Compute the meridional and zonal gradients of a variable on a global or limited area rectilinear grid.
Available in version 6.4.0 and later.
Prototype
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" ; This library is automatically loaded
; from NCL V6.2.0 onward.
; No need for user to explicitly load.
function grad_latlon_cfd (
z : numeric, ; float, double, integer only
lat [*] : numeric,
lon [*] : numeric,
cyclic [1] : logical,
opt [1] : logical
)
return_val [dimsizes(z)] : float or double
Arguments
zVariable of 2-to-4 dimensions. The two rightmost dimensions must ve (...,lat,lon). Some examples: (lat,lon), (time,lat,lon), (lev,lat,lon), (time,lev,lat,lon). Missing values are allowed.
latA one-dimensional array containing the latitudes in degrees north. These need not be equally spaced. For example they can be gaussian latitudes.
lonA one-dimensional array containing the longitudes in degrees east. These must be in increasing order and must be equally spaced.
cyclicTrue: z treated as cyclic in lon and the end values and all the returned values will be calculated via centered differences. False: q NOT treated as cyclic in lon and the end values will use a one-sided difference scheme for the end points. z should not include a cyclic point.
optCurrently not used. Set to False.
Return value
A variable of type list. It contains two arrays. Element [0] contains the meridional gradient and element [1] contains the zonal gradient. These elements will be the same size and shape as z. The output will be double if z is of type double. If present, meta data will be returned.
Description
See Also
gradsg, gradsf, center_finite_diff_n, advect_variable
Examples
A 'worked' example which compares the results between gradients using "spherical harmonics and centered finite differences is available here.
Example 1
Given a scalar array T on a global rectilinear grid, compute the latitudinal and longitudinal derivatives. The returned variable contains two components: [0]=meridional; [1] zonal.
gradLatLon = grad_latlon_cfd (T, T&lat T&lon, True, False)
T_grad_lat = gradLatLon[0] ; for clarity; explicitly extract variables from returned 'list'
T_grad_lon = gradLatLon[1]
delete(gradLatLon)
; replace the generic attributes with more specific attributes
T_grad_lon@long_name = "longitudinal gradient (derivative)"
T_grad_lat@long_name = "latitudinal gradient (derivative)"
T_grad_lat@units = "K/m"
T_grad_lon@units = "K/m"
Example 2
Given a scalar array SST on a global rectilinear grid, compute the latitudinal and longitudinal derivatives. The returned variable contains two components: [0]=meridional; [1] zonal. Here, the SST have missing values over land.
gradLatLon = grad_latlon_cfd (SST, SST&lat SST&lon, True, False)
SS_grad_lat = gradLatLon[0] ; for clarity; explicitly extract variables from returned 'list'
SS_grad_lon = gradLatLon[1]
delete(gradLatLon)
; replace the generic attributes with more specific attributes
SST_grad_lon@long_name = "longitudinal gradient"
SST_grad_lat@long_name = "latitudinal gradient"
if (isatt(SST,"units")) then
SST_grad_lat@units = SST@units+"/m"
else
SST_grad_lat@units = "C/m"
end if