Documentation of uprime_gradHCbar


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


Help text

  Start with u'dtbardx, v'dtbardy

Cross-Reference Information

This script calls

Listing of script uprime_gradHCbar


clear

biff = 7;
tim = 101:550;
ctlim = [110 300 -60 60];
lev = 1:biff;

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

%  First get tbar

filin = 'temp_A_L1-10.nc';
nc = netcdf(filin, 'nowrite');
  depth = nc{'depth'}(:);
  latt = nc{'latitude'}(:);
  lont = nc{'longitude'}(:);
  [xk, yk] = keep_var(ctlim, lont, latt);
  temp = nc{'temp'}(tim, lev, yk, xk);
  mv = nc{'temp'}.missing_value(:);
nc = close(nc);
temp(temp == mv) = NaN;
latt = latt(yk); lont = lont(xk);
temp = squeeze(mean2(temp));

%  Now get u' and v'

filin = 'ul_L1-10.nc';
nc = netcdf(filin, 'nowrite');
  latu = nc{'latitude'}(:);
  lonu = nc{'longitude'}(:);
  [xk, yk] = keep_var(ctlim, lonu, latu);
  u = nc{'u'}(tim,lev,yk,xk);
  mv = nc{'u'}.missing_value(:);
nc = close(nc);
u(u == mv) = NaN;
latu = latu(yk); lonu = lonu(xk);
[u, climu] = remove_mean(u/100);

filin = 'vl_L1-10.nc';
nc = netcdf(filin, 'nowrite');
  v = nc{'v'}(tim,lev,yk,xk);
  mv = nc{'v'}.missing_value(:);
nc = close(nc);
v(v == mv) = NaN;
[v, climv] = remove_mean(v/100);

u = squeeze(u); v = squeeze(v);
[ntim, nlev, nlat, nlon] = size(u);
depth = depth/100;

%  Load CPCs

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

lag = 0; lg = lag*pi/180; lg2 = 1;
num = 1; lind = 1;
nfrm = 6;

%  Store all regressions under one variable

[nlev, nlat, nlon] = size(squeeze(climu));
j = sqrt(-1);
timeseries = sqrt(2)*pcs(:,num)./std(pcs(:,num));
u = reshape(u, ntim, nlev*nlat*nlon);
v = reshape(v, ntim, nlev*nlat*nlon);
clear temtim ureg vreg
for i = 1:nfrm
  wgt = conj(exp(j * ((i-1) * pi/(lg2*nfrm) + lg) ));
  temtim(:,i) = squeeze(real(wgt .* timeseries));
  ureg(i, :) = temtim(:,i)' * u ./ ntim;
  vreg(i, :) = temtim(:,i)' * v ./ ntim;
end
ureg = reshape(ureg, nfrm, nlev, nlat, nlon);
vreg = reshape(vreg, nfrm, nlev, nlat, nlon);

%  Get dtdx and dtdy

[nlev, nlat, nlon] = size(temp);
global DEGREE RADIAN RADUS
clear ty tx dtdy dtdx j
for lind = 1:nlev;
  for j = 1:nlat;
    ty(j,:) = interp1(lont, squeeze(temp(lind,j,:)), lonu)';
  end
  for j = 1:nlon;
    tx(:,j) = interp1(latt, squeeze(temp(lind,:,j)), latu);
  end  
  [dtdy(lind,:,:) temlat] = sph_grady1(ty, RADIAN*latt, RADIAN*lonu, 1);
  [dtdx(lind,:,:) temlon] = sph_gradx1(tx, RADIAN*latu, RADIAN*lont, 0);
end

%  Get thickness of layer, to convert t' to Heat'

[nlev, nlat, nlon] = size(dtdx);
d1 = depth(1);
depthw = [];
for i = 1:nlev;
  depthw = [depthw; depth(i)+d1];
  d1 = depth(i+1) - depth(i) - d1;
end
dz = diff([0; depthw]);
dz = reshape((dz * ones(1, nlat*nlon)), nlev, nlat, nlon);
dtdx = dtdx.*dz;
dtdy = dtdy.*dz;

%  Get ubar*dtdx and vbar*dtdy, and sum vertically

[nlev, nlat, nlon] = size(dtdx);
ureg = reshape(ureg, nfrm, nlev*nlat*nlon);
dtdx = reshape(dtdx, 1, nlev*nlat*nlon);
udhdx = ureg .* (ones(nfrm, 1) * dtdx);
udhdx = shiftdim(reshape(udhdx, nfrm, nlev, nlat, nlon), 1);
udhdx = shiftdim(squeeze(sum(udhdx)), 2);

[nlev, nlat, nlon] = size(dtdy);
vreg = reshape(vreg, nfrm, nlev*nlat*nlon);
dtdy = reshape(dtdy, 1, nlev*nlat*nlon);
vdhdy = vreg .* (ones(nfrm, 1) * dtdy);
vdhdy = shiftdim(reshape(vdhdy, nfrm, nlev, nlat, nlon), 1);
vdhdy = shiftdim(squeeze(sum(vdhdy)), 2);





%  Alternate method

clear

tim = 101:550;
lims = [106 304 -62.5 62.5];
lev = 1:7;
nfrm = 6;
lag = 0;

% Load the PCs

for biff2 = 1:2;
cd /home/disk/hayes2/dvimont/csiro/matlab_data/Heat_Content
if biff2 == 1;
  load LP10_L1-7_CEOF.mat; tit = 'Lowpass Filtered Data ( > 10 Years )';
  ptit = 'LP10';
elseif biff2 == 2;
  load HP8_L1-7_CEOF.mat; tit = 'Highpass Filtered Data ( < 8 Years )';
  ptit = 'HP8';
elseif biff2 == 3;
  load RAW_L1-7_CEOF.mat; tit = 'Unfiltered Data';
  ptit = 'RAW';
end

%  Get updtdx...

cd /home/disk/tao/dvimont/matlab/CSIRO/Heat
   [udhdx, vdhdy, lat_out, lon_out, depth_out] = ...
           get_uprime_gradtbar(pcs, lims, nfrm, tim, lev);

%  Plot the data

get_global; FRAME = [110 299 -60 60]; XAX = lon_out; YAX = lat_out;
%cwat = 4.218e3;  %  heat capacity of liquid water, J/(kg K)
%rhowat = 1e3;    %  density of liquid water, kg/m^3

figure(1); figure_orient;
cint = 1; clev = [-50:cint:-cint cint:cint:50];
for i = 1:nfrm
  tem = -1 * squeeze(udhdx(i,:,:));
  subplot(3,2,i);
    gcont(tem, clev);
    dc2(tem);
    title(['Phase = ' num2str((i-1)*180/nfrm + lag)]);
  if i > 4;
    xlabel(['Contour Interval:  ' num2str(cint) ' W m^-^2']);
  end
end
subplot(3,2,3);
  ylabel([tit ':  Zonal Advection of HCbar by U'';  '...
          'Depth = 0:' num2str(depth_out(max(lev))) 'm']);

cd /home/disk/tao/dvimont/matlab/CSIRO/Heat/Plot_HCadv
eval(['print -dps2 ' ptit '_uprime_dHCbardx_yr1.ps']);

figure(2); figure_orient;
for i = 1:nfrm
  tem = -1 * squeeze(vdhdy(i,:,:));
  subplot(3,2,i);
    gcont(tem, clev);
    dc2(tem)
    title(['Phase = ' num2str((i-1)*180/nfrm + lag)]);
  if i > 4;
    xlabel(['Contour Interval:  ' num2str(cint) ' W m^-^2']);
  end
end
subplot(3,2,3);
  ylabel([tit ':  Meridional Advection of HCbar by V'';  '...
          'Depth = 0:' num2str(depth_out(max(lev))) 'm']);

eval(['print -dps2 ' ptit '_vprime_dHCbardy_yr1.ps']);

end