Documentation of get_ubtp


Global Index (short | long) | Local contents | Local Index (short | long)


Function Synopsis

[udtdx, vdtdy, lat_out, lon_out, depth_out] = ...

Help text


  [ubtp, vbtp, lat_out, lon_out, depth_out] = ...
          get_ubar_gradtprime(pcs, lims, nfrm, tim, lev);


Cross-Reference Information

This function calls This function is called by

Listing of function get_ubtp

function [udtdx, vdtdy, lat_out, lon_out, depth_out] = ...
          get_ubar_gradtprime(pcs, lims, nfrm, tim, lev);

%lims = [117.5 169 7.5 24];
if nargin == 1;
  lims = [110 300 -60 60]; nfrm = 6; tim = 101:550; lev = 1;
elseif nargin == 2;
  nfrm = 6; tim = 101:550; lev = 1;
elseif nargin == 3;
  tim = 101:550; lev = 1;
elseif nargin == 4;
  lev = 1;
end

if length(lev) > 1; 
  error('Single levels only')
end;

cdtem = ['cd ' eval('pwd')];

cd /home/disk/hayes2/dvimont/csiro/data

%  First, get ubar and vbar

[ubar, ue] = getnc('u', 'ue', lims, lev, tim);
[latu, lonu, depthu] = getll('u', lims);
[ntim, nlat, nlon] = size(ue);
ue = (ue(:,1:(nlat-1),:) + ue(:,2:nlat,:))/2;
ubar = ubar + ue;
clear ue;

ubar = squeeze(mean2(ubar))/100;

[vbar, ve] = getnc('v', 've', lims, lev, tim);
[ntim, nlat, nlon] = size(ve);
ve = (ve(:,:,1:(nlon-1)) + ve(:,:,2:nlon))/2;
vbar = vbar + ve;
clear ve;

vbar = squeeze(mean2(vbar))/100;

%  Now get tprime

temp = getnc('temp', lims, lev, tim);
[latt, lont, deptht] = getll('temp', lims);
[temp, tbar] = remove_mean(temp);
[ntim, nlev, nlat, nlon] = size(temp);

%  Assume PCS are sent in the command line

%cd /home/disk/hayes2/dvimont/csiro/matlab_data/Heat_Content
%load LP10_L1-7_CEOF.mat; tit = 'Lowpass Filtered Data ( > 10 Years )';
%load HP8_L1-7_CEOF.mat; tit = 'Highpass Filtered Data ( < 8 Years )';
%load RAW_L1-7_CEOF.mat; tit = 'Unfiltered Data';

%  Get regressions

if isreal(pcs);
  treg = regress_eof(temp, pcs, nfrm);
else
  treg = regress_ceof(temp, pcs, nfrm);
end

%  Get dtdx and dtdy

[nfrm, nlat, nlon] = size(treg);
global DEGREE RADIAN RADUS

ty = (treg(:,:,1:(nlon-1)) + treg(:,:,2:nlon))/2;
tx = (treg(:,1:(nlat-1),:) + treg(:,2:nlat,:))/2;
clear dtdy dtdx j
for i = 1:nfrm;
  [dtdy(i,:,:) temlat] = sph_grady1(squeeze(ty(i,:,:)), RADIAN*latt, RADIAN*lonu, 0);
  [dtdx(i,:,:) temlon] = sph_gradx1(squeeze(tx(i,:,:)), RADIAN*latu, RADIAN*lont, 0);
end

%  Get ubar*dtdx and vbar*dtdy

for i = 1:nfrm;
  udtdx(i,:,:) = squeeze(dtdx(i,:,:)) .* ubar;
  vdtdy(i,:,:) = squeeze(dtdy(i,:,:)) .* vbar;
end


lat_out = latu;
lon_out = lonu;
depth_out = depthu(lev);

eval(cdtem);