Documentation of sph_curl1


Global Index (all files) (short | long) | Local Index (files in subdir) (short | long)


Function Synopsis

[vor, lat2, lon2] = sph_curl ( u, v, lat, lon, wrap ) ;

Help text

 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

Cross-Reference Information

This function calls

Listing of function sph_curl1

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;