0001 function [rDir,rMag,uRes,vRes]=do_residual(u,v,dt)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 toSecFactor=24*60*60;
0024
0025 nElements=size(u,1);
0026 nLayers=size(u,2);
0027 nTimeSteps=size(u,3);
0028
0029
0030
0031 tideCycle=(12+(25/60))/24;
0032 tideWindow=ceil(tideCycle/dt);
0033 tideDuration=(mean((dt*nTimeSteps)-tideCycle)-mean(tideCycle))*toSecFactor;
0034
0035
0036 uRes=zeros(nElements,nLayers,nTimeSteps);
0037 vRes=zeros(nElements,nLayers,nTimeSteps);
0038 uSum=nan(nElements,nTimeSteps,nLayers);
0039 vSum=nan(nElements,nTimeSteps,nLayers);
0040 uStart=nan(nElements,nLayers);
0041 vStart=nan(nElements,nLayers);
0042 uEnd=nan(nElements,nLayers);
0043 vEnd=nan(nElements,nLayers);
0044
0045 for hh=1:nLayers
0046 uSum(:,:,hh)=cumsum(squeeze(u(:,hh,:)),2);
0047 vSum(:,:,hh)=cumsum(squeeze(v(:,hh,:)),2);
0048 for ii=1:nTimeSteps;
0049 uRes(:,hh,ii)=uRes(:,hh,ii)+(uSum(:,ii,hh).*(dt*toSecFactor));
0050 vRes(:,hh,ii)=vRes(:,hh,ii)+(vSum(:,ii,hh).*(dt*toSecFactor));
0051 end
0052 uStart(:,hh)=mean(squeeze(uRes(:,hh,1:tideWindow)),2);
0053 vStart(:,hh)=mean(squeeze(vRes(:,hh,1:tideWindow)),2);
0054 uEnd(:,hh)=mean(squeeze(uRes(:,hh,end-tideWindow:end)),2);
0055 vEnd(:,hh)=mean(squeeze(vRes(:,hh,end-tideWindow:end)),2);
0056 end
0057
0058 uDiff=uEnd-uStart;
0059 vDiff=vEnd-vStart;
0060
0061
0062 rDir=atan2(uDiff,vDiff)*(180/pi);
0063 rMag=sqrt(uDiff.^2+vDiff.^2)/tideDuration;