Global Index (short | long) | Local contents | Local Index (short | long)
Load landmask
| This script calls | |
|---|---|
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);