Global Index (short | long) | Local contents | Local Index (short | long)
Get regressions of fluxes:
This script calls | |
---|---|
clear cd /home/disk/hayes2/dvimont/csiro/matlab_data load LPregmap_3deof_-67.5to60pac.mat tem = FRAME; get_global; default_global; FRAME = tem; ntim = size(pcs, 1); [nlev, nlat, nlon] = size(clim); tim = [101:550]; cd /home/disk/hayes2/dvimont/csiro/data filin = ['temp_A_L1-10.nc']; nc = netcdf(filin, 'nowrite'); lind = 1:10; depth = nc{'depth'}(lind); nc = close(nc); %FRAME = [-0.1 360 -90 90]; cd /home/disk/hayes2/dvimont/csiro/data nc = netcdf('zonal_stress_A_1000_years.nc', 'nowrite'); lat1 = nc{'latitude'}(:); lon1 = nc{'longitude'}(:); [xk, yk] = keep_var(FRAME, lon1, lat1); xk = [min(xk-1); xk; max(xk+1)]; yk = [min(yk-1); yk; max(yk+1)]; taux = nc{'smfzon'}(tim,yk,xk); mv = nc{'smfzon'}.missing_value(:); nc = close(nc); taux(find(taux == mv)) = NaN * ones(size(find(taux == mv))); nc = netcdf('merid_stress_A_1000_years.nc', 'nowrite'); tauy = nc{'smfmer'}(tim,yk,xk); mv = nc{'smfmer'}.missing_value(:); nc = close(nc); tauy(find(tauy == mv)) = NaN * ones(size(find(tauy == mv))); lat1 = lat1(yk); lon1 = lon1(xk); [ntim, nlat, nlon] = size(taux); taux = reshape(taux, ntim, nlat*nlon); tauy = reshape(tauy, ntim, nlat*nlon); clim = mean(taux); kpx = find(~isnan(clim)); clim = mean(tauy); kpy = find(~isnan(clim)); taux = detrend(taux); tauy = detrend(tauy); tauxr = pcs.' * taux ./ ntim; tauyr = pcs.' * tauy ./ ntim; tauxr = reshape(tauxr, 10, nlat, nlon); tauyr = reshape(tauyr, 10, nlat, nlon); for i = 1:10; vort(i,:,:) = sph_curl(squeeze(tauxr(i,:,:)), squeeze(tauyr(i,:,:)), ... lon1, lat1); div(i,:,:) = sph_div( squeeze(tauxr(i,:,:)), squeeze(tauyr(i,:,:)), ... lon1, lat1); end % Plot vort and div % Look at various phases of these patterns figure(1); clf; figure_orient; lag = 0; lg = lag*pi/180; num = 1; lind = 1; nfrm = 4; FRAME = [110 300 -67.5 60]; XAX = lon1; YAX = lat1; for i = 1:2; wgt = conj(exp(j * ((i-1) * pi/nfrm + lg) ));% * ones(npt, 1)); tem = squeeze(real(wgt .* vort(num,:,:))) * 1e8; cint = 2; subplot(2,2,i); if ismap(gca); clma; end gcont(tem, [-20:cint:20]); dc; title(['Curl(Wind Stress), Phase = ' num2str(((i-1)*180)/nfrm+lag)]); xlabel(['Contour Interval: ' num2str(cint) ' x 10^8 s^-^2 std^-^1']) tem = squeeze(real(wgt .* div(num,:,:))) * 1e8; cint = 1; subplot(2,2,i+2); if ismap(gca); clma; end gcont(tem, [-20:cint:20]); dc; title(['Div(Wind Stress), Phase = ' num2str(((i-1)*180)/nfrm+lag)]); xlabel(['Contour Interval: ' num2str(cint) ' x 10^8 s^-^2 std^-^1']) end cd /home/disk/tao/dvimont/matlab/CSIRO/Plots4 % Get data from 20deg Isotherm CEOF ind = 1; cd /home/disk/hayes2/dvimont/csiro/matlab_data if ind == 1; load 20degiso_yr101-550_temp.mat lag = -60; ttit = ['101 - 550']; elseif ind == 2; load 20degiso_yr551-1000_temp.mat lag = 90; ttit = ['551 - 1000']; end ctlim = [110 300 -75 65]; ntim = length(tim); nlat = length(lat); nlon = length(lon); get_global; default_global; FRAME = [ctlim(1:2) floor(min(lat)) ceil(max(lat))]; temp3 = NaN * ones(ntim, nlat*nlon); temp3(:,kp20) = temp20; temp3 = detrend(temp3); temp3 = cosweight(temp3, lat); kp = find(~isnan(mean(temp3))); temp3 = temp3(:,kp); [b, a] = butter(6, 2/4.5); temp3 = filtfilt(b, a, temp3); % Do complex eof: [lam, lds, pcs, per] = complex_eof(temp3); j = sqrt(-1); npt = length(kp); weight1 = std(real(pcs)); weight2 = std(imag(pcs)); pcs = real(pcs).*(ones(ntim, 1)*(1./weight1)) + ... j*imag(pcs).*(ones(ntim, 1)*(1./weight2)); lds = real(lds).*(ones(npt, 1)*weight1) + ... j*imag(lds).*(ones(npt, 1)*weight2); % Now get taux and tauy stuff (get this from above) % And, plot vort and div stuff figure(2); clf; figure_orient; lg = lag*pi/180; num = 1; lind = 1; nfrm = 6; XAX = lon1; YAX = lat1; FRAME = [ctlim(1:2) floor(min(lat)) ceil(max(lat))]; cint = 2; clev = [-20:cint:20]; for i = 1:nfrm; wgt = conj(exp(j * ((i-1) * pi/nfrm + lg) )); temtim = squeeze(real(wgt .* pcs(:,num))); temtim = -1*(temtim - mean(temtim)) ./ std(temtim); tem1 = temtim(find(temtim>0))' * taux(find(temtim>0),:) ./ sum(temtim(find(temtim>0))); tem1 = reshape(tem1, nlat, nlon); tem2 = temtim(find(temtim>0))' * tauy(find(temtim>0),:) ./ sum(temtim(find(temtim>0))); tem2 = reshape(tem2, nlat, nlon); tem3 = sph_curl(tem1, tem2, lon1, lat1)*1e8; subplot(3,2,i); gcont(tem3, clev); dc; title(['Phase = ' num2str(((i-1)*180)/nfrm+lag)]); xlabel(['Contour Interval: ' num2str(cint) ' x 10^-^8 s^-^1 std^-^1']) end subplot(3,2,3); ylabel(['Curl of Wind Stress Regressed on CPC1 of T'' on 20 Deg. Isotherm; Years ' ttit]); cd /home/disk/tao/dvimont/matlab/CSIRO/Plots4 % print -dps2 VORT_20deg_CEOF1_yr101-550.ps