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);