Documentation of define_TPAC_yearly_ct


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


Help text

  Load landmask

Cross-Reference Information

This script calls

Listing of script define_TPAC_yearly_ct


clear
cd /home/disk/tao/data/nmc.reanalysis/monthly
filin = 'sst.mon.mean.nc';
nc = netcdf(filin, 'nowrite');
  lat = nc{'lat'}(:);
  lon = nc{'lon'}(:);
  ts = nc{'air'}(:, :, :);
  mv = nc{'air'}.missing_value(:);
  add_offset = nc{'air'}.add_offset(:);
  scale_factor = nc{'air'}.scale_factor(:);
nc = close(nc)
ts = ts * scale_factor;
ts = ts + add_offset;
ts(find(ts == mv)) = NaN * ones(size(find(ts == mv)));
[ntim, nlat, nlon] = size(ts);

cd /home/disk/tao/data/nmc.reanalysis
filin = ['landmask.nc'];
nc = netcdf(filin, 'nowrite');
  lm = nc{'lsmask'}(:);
  lmlat = nc{'lat'}(:);
  lmlon = nc{'lon'}(:);
nc = close(nc);

[m,n] = size(lm);

loncyc = [[lmlon((n-9):n) - 360]; lmlon; [lmlon(1:10) + 360]];
lmcyc = [lm(:,(n-9):n) lm lm(:,1:10)];
lm2 = sign(interp2(loncyc, lmlat, lmcyc, lon, lat'));

lndpt = find(reshape(lm2, 1, nlat*nlon) == -1);
ocpt = find(reshape(lm2, 1, nlat*nlon) == 1);

ts = reshape(ts, ntim, nlat*nlon);
ts = ts(:, ocpt);

%  Eliminate ice points:

ticept = [];
for i = 1:length(ocpt);
  icept = find(ts(:,i) <= -1.8);
  seapt = find(~ismember([1:ntim], icept));
  if length(seapt) <= 48;
    ticept = [ticept i];
  elseif ~isempty(icept);
    ts(icept, i) = mean(ts(seapt, i)) * ones(size(icept));
  end
end;

maskpt = union(lndpt, ocpt(ticept));
kpt = ocpt(~ismember(ocpt, ocpt(ticept)));
tsnew = NaN * ones(ntim, nlat*nlon);
tsnew(:, ocpt) = ts;
ts = tsnew(:,kpt);
clear tsnew

%  Define CT and CTSTAR

ctlim = [180 270 -6 6];
[xk, yk] = keep_var(ctlim, lon, lat);

[ts, clim] = annave(ts);

tsnew = NaN * ones(ntim, nlat*nlon);
tsnew(:, kpt) = ts;
tsnew = reshape(tsnew, ntim, nlat, nlon);

ct = squeeze(mean2(mean2(shiftdim(tsnew(:,yk,xk), 1))));
ctstar = ct - rave(rave(ct, 25), 37);
ctstar = (ctstar - mean(ctstar)) / std(ctstar);

clear tsnew

%  Check out characteristics of positive and negative CT

figure(1); figure_landscape;
sp(1)
  plot(1:240, ctstar(1:240), 'k');
  set(gca, 'XTick', [1:12:241], 'XTickLabel', 58:78);
  axis([0 241 -3 4]);
  grid on
sp(2)
  plot(241:480, ctstar(241:480), 'k');
  set(gca, 'XTick', [241:12:481], 'XTickLabel', 78:98);
  axis([241 481 -3 4]);
  grid on

warm = [64 66 69 70 73 77 83 88 92 95];
cold = [65 68 71 74 76 84 85 89 96 97];

wind = [(12 * (warm-58)) + 1]';
cind = [(12 * (cold-58)) + 1]';

clear wplt cplt tind

tind = [ones(size(wind)) * [-8:4]]; 
wind = [wind*ones(1,13) + tind]; 
cind = [cind*ones(1,13) + tind]; 

for i = 1:10;
  wplt(:,i) = ctstar(wind(i,:));
  cplt(:,i) = ctstar(cind(i,:));
end

wplt = [wplt; NaN*ones(1, 10)];
cplt = [cplt; NaN*ones(1, 10)];
tind = [tind'; NaN*ones(1, 10)];

figure(2); figure_orient;
subplot(2,2,1);
  plot(tind, wplt, 'k');
  hold on
  plot(tind, cplt, 'k');
  h1 = plot(mean(tind'), mean(wplt'), 'o-k');
  set(h1, 'linewidth', 2);
  h2 = plot(mean(tind'), mean(cplt'), 'x-k');
  set(h2, 'linewidth', 2);
  set(gca, 'XTick', [-6:3:3], 'XTickLabel', ['JUL';'OCT';'JAN';'APR']);
  axis([-9 5 -3 4])
  grid on
  hold off
  title('Mean and Spread of W/C ENSO events')

subplot(2,2,2)
  h1 = plot(mean(tind'), mean(wplt'), 'o-k');
  set(h1, 'linewidth', 2);
  hold on
  h2 = plot(mean(tind'), -1*mean(cplt'), 'x-k');
  set(h2, 'linewidth', 2);
  set(gca, 'XTick', [-6:3:3], 'XTickLabel', ['JUL';'OCT';'JAN';'APR']);
  axis([-9 5 -0.5 2])
  grid on
  hold off
  title('Mean of W/C ENSO events')
  xlabel('o = Warm,  x = -Cold')

subplot(2,1,2);
  tem = mean([mean(wplt'); -1*mean(cplt')]);
  tem2 = [0 0:tem(5)/3:tem(5) tem(6:11) mean([tem(11) 0])];
  wgt = [-1*tem2([9:12]) tem2 -1*tem2(1:8)];
  h1 = plot(1:48,[wgt wgt], 'o-k');
  set(h1, 'linewidth', 2);
  set(gca, 'XTick', [1:3:48], 'XTickLabel', ['Jan';'Apr';'Jul';'Oct']);
  axis([0 49 -2 2])
  grid on
  hold off
  title('Amplitude of CT used for CT\_CYCLE run');
  xlabel('Month')

%  Now calculate patterns that go along with this.

%  Get lat lon to interp to from CCM coordinates

latnmc = lat; lonnmc = lon;
cd /home/disk/hayes/dvimont/ccm3.6/data/CT
[lat, lon] = getll('sst.t31x15.nc');
nlat = length(lat); nlon = length(lon);

ssta = zeros(nlat, nlon);

[xk, yk] = keep_var([110 260 0 25], lon, lat);
ssta(yk, xk) = ones(length(yk), length(xk));
[xk, yk] = keep_var([145 295 -25 0], lon, lat);
ssta(yk, xk) = ones(length(yk), length(xk));

[xk, yk] = keep_var([260 295 0 25]);
for i = 1:length(yk);
  xk = find(lon >= 260 & lon <= (295 - (35/25)*lat(yk(i))));
  ssta(yk(i), xk) = ones(1, length(xk));
end

[xk, yk] = keep_var([110 145 -25 0], lon, lat);
for i = length(yk):-1:1;
  xk = find(lon <= 145 & lon >= (110 - (35/25)*lat(yk(i))));
  ssta(yk(i), xk) = ones(1, length(xk));
end

ssta = myrunning_ave(myrunning_ave(ssta, 3), 3);
ssta = (myrunning_ave(myrunning_ave(ssta', 3), 3))';


for i = 1:12;
  cttim = ctstar(i:12:480);
  ctpat(i,:) = wgt(i) * cttim' * ts(i:12:480, :) / length(cttim);
%  ctpat(i,:) = cttim' * ts(i:12:480, :) / length(cttim);
  tem = zeros(1,length(latnmc)*length(lonnmc));
  tem(kpt) = ctpat(i,:);
  tem = reshape(tem, length(latnmc), length(lonnmc));
  tem = interp2(lonnmc, latnmc, tem, lon', lat);
  ctpat_ccm(i,:,:) = tem .* ssta;
end

get_global; default_global;
FRAME = [110 290 -40 40];

figure(3); figure_landscape
for i = 1:4
lab = ['Jan'; 'Feb'; 'Mar'; 'Apr'];
subplot(2,2,i);
  gcont(squeeze(ctpat_ccm(i,:,:)), [-5:.5:5]);
  dc;
  title(['CT\_Pattern, ' lab(i,:)]);
  xlabel('Contour Interval:  0.5 C')
end

figure(4); figure_landscape
for i = 1:4
lab = ['May';'Jun';'Jul';'Aug'];
subplot(2,2,i);
  gcont(squeeze(ctpat_ccm(i+4,:,:)), [-5:.5:5]);
  dc;
  title(['CT\_Pattern, ' lab(i,:)]);
  xlabel('Contour Interval:  0.5 C')
end

figure(5); figure_landscape
for i = 1:4
lab = ['Sep';'Oct';'Nov';'Dec'];
subplot(2,2,i);
  gcont(squeeze(ctpat_ccm(i+8,:,:)), [-5:.5:5]);
  dc;
  title(['CT\_Pattern, ' lab(i,:)]);
  xlabel('Contour Interval:  0.5 C')
end

cd /home/disk/hayes/dvimont/ccm3.6/data/CT
filin = 'biff.nc';
nc = netcdf(filin, 'write');

  time = nc{'time'}(1:12);
  date = nc{'date'}(1:12);
  
  for i = 1:22
    tind = (i-1)*12 + [1:12]
    sst = nc{'SST'}(tind,:,:);
    timenew = time + 365*(i-1);
    datenew = date + 10000 * (i-1);

    nc{'SST'}(tind,:,:) = sst + (-1)^(i+1) * ctpat_ccm;
    nc{'time'}(tind) = timenew;
    nc{'date'}(tind) = datenew;
  end
 
nc = close(nc)

nc = netcdf('ann_ct_cyc.nc', 'write');
  nc{'SST'}(:) = ctpat_ccm;
nc = close(nc);





%%%%%%  FOR SOM RUNS:  Add QFLX and such to new file %%%%%%%%%%%

clear

cd /home/disk/hayes/dvimont/ccm3.6/data/CT

nc1 = netcdf('sst_cycle.nc', 'nowrite');
nc2 = netcdf('biff.nc', 'write');

sst = nc1{'SST'}(:);
sst = reshape(sst, size(sst, 1), 1, size(sst, 2), size(sst, 3));

nc2{'SST'}(:) = sst;

nc1 = close(nc1);
nc2 = close(nc2);