
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