Global Index (short | long) | Local contents | Local Index (short | long)
[udtdx, vdtdy, lat_out, lon_out, depth_out] = ...
[ubtp, vbtp, lat_out, lon_out, depth_out] = ... get_ubar_gradtprime(pcs, lims, nfrm, tim, lev);
This function calls | This function is called by |
---|---|
function [udtdx, vdtdy, lat_out, lon_out, depth_out] = ... get_ubar_gradtprime(pcs, lims, nfrm, tim, lev); %lims = [117.5 169 7.5 24]; if nargin == 1; lims = [110 300 -60 60]; nfrm = 6; tim = 101:550; lev = 1; elseif nargin == 2; nfrm = 6; tim = 101:550; lev = 1; elseif nargin == 3; tim = 101:550; lev = 1; elseif nargin == 4; lev = 1; end if length(lev) > 1; error('Single levels only') end; cdtem = ['cd ' eval('pwd')]; cd /home/disk/hayes2/dvimont/csiro/data % First, get ubar and vbar [ubar, ue] = getnc('u', 'ue', lims, lev, tim); [latu, lonu, depthu] = getll('u', lims); [ntim, nlat, nlon] = size(ue); ue = (ue(:,1:(nlat-1),:) + ue(:,2:nlat,:))/2; ubar = ubar + ue; clear ue; ubar = squeeze(mean2(ubar))/100; [vbar, ve] = getnc('v', 've', lims, lev, tim); [ntim, nlat, nlon] = size(ve); ve = (ve(:,:,1:(nlon-1)) + ve(:,:,2:nlon))/2; vbar = vbar + ve; clear ve; vbar = squeeze(mean2(vbar))/100; % Now get tprime temp = getnc('temp', lims, lev, tim); [latt, lont, deptht] = getll('temp', lims); [temp, tbar] = remove_mean(temp); [ntim, nlev, nlat, nlon] = size(temp); % Assume PCS are sent in the command line %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 if isreal(pcs); treg = regress_eof(temp, pcs, nfrm); else treg = regress_ceof(temp, pcs, nfrm); end % Get dtdx and dtdy [nfrm, nlat, nlon] = size(treg); global DEGREE RADIAN RADUS ty = (treg(:,:,1:(nlon-1)) + treg(:,:,2:nlon))/2; tx = (treg(:,1:(nlat-1),:) + treg(:,2:nlat,:))/2; clear dtdy dtdx j for i = 1:nfrm; [dtdy(i,:,:) temlat] = sph_grady1(squeeze(ty(i,:,:)), RADIAN*latt, RADIAN*lonu, 0); [dtdx(i,:,:) temlon] = sph_gradx1(squeeze(tx(i,:,:)), RADIAN*latu, RADIAN*lont, 0); end % Get ubar*dtdx and vbar*dtdy for i = 1:nfrm; udtdx(i,:,:) = squeeze(dtdx(i,:,:)) .* ubar; vdtdy(i,:,:) = squeeze(dtdy(i,:,:)) .* vbar; end lat_out = latu; lon_out = lonu; depth_out = depthu(lev); eval(cdtem);