Global Index (short | long) | Local contents | Local Index (short | long)
[vor, lat2, lon2] = sph_curl ( u, v, lat, lon, wrap ) ;
function [ vor, lat2, lon2 ] = sph_curl ( u, v, lat, lon, wrap ) ; assume lon and lat specified in degree; see also : sph_grad, sph_curl, sph_curl, sph_gradx, sph_grady
This function calls | This function is called by |
---|---|
function [vor, lat2, lon2] = sph_curl ( u, v, lat, lon, wrap ) ; global RADUS RADIAN DEGREE if iselement(size(u), 1); u = squeeze(u); end; if iselement(size(v), 1); v = squeeze(v); end; if nargin < 5; wrap = 0; end [uy,ux] = size(u); [vy,vx] = size(v); nxy = length(lon)*length(lat); if ( uy*ux ~= nxy | vy*vx ~= nxy ); error ( 'dimension mismatch' ); end %-------------------------------------------------------- rx = lon * RADIAN; ry = lat * RADIAN; if wrap; rx2 = 0.5 * (rx + [rx(2:vx); 2*pi + rx(1)]); else rx2 = 0.5 * (rx(1:(ux-1)) + rx(2:ux)); end ry2 = 0.5 * (ry(1:(vy-1)) + ry(2:vy)); v2 = 0.5 * (v(1:(vy-1),:) + v(2:vy,:)); if wrap; u2 = 0.5 * (u + [u(:,2:ux) u(:,1)]); else u2 = 0.5 * (u(:,1:(ux-1)) + u(:,2:ux)); end [dudy, lat2] = sph_grady1(u2, ry, rx2, 1); [dvdx, lon2] = sph_gradx1(v2, ry2, rx, wrap); lon2 = lon2*DEGREE; lat2 = lat2*DEGREE; vor = dvdx - dudy;