% Program to test the accuracy of amodes against chebmode. % Uses cssprofile by default; edit to change. clear all figure(2) clf figure(1) clf path(path,'/home/dushaw/matlab/aogmode') % We need the cssprofile program and we are comparing to chebmode. frq=28; % frequency nm=50; % number of modes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if 1==2 % Get sound speed from eigenray/mpiram formatted data file. C=load('test.ssp'); % temp.ssp is a file of z c at various ranges. I=C(:,1)==-1.; I=find(I); N1=I(2)-1; z=C(2:N1,1); c=C(:,2); N2=length(c)/N1; c=reshape(c,N1,N2); r=c(1,:); c(1,:)=[]; % Use just first profile for now. z=-z; c=c(:,1); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Resample c onto an evenly-spaced grid %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Number of samples in depth for the grid. % This can be adjusted for more accuracy/higher number of modes. % Looks like NS=1000 over 5000 m depth, or 5-m spacing seems to % work about right. NS=5500; % Depth grid h=(max(z)-min(z))/NS; Z=(0:-h:min(z))'; c=interp1(z,c,Z,'cubic'); z=Z; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% z=(0:10:5000)'; c=cssprofile(z); z=-z; zr=-(0:10:5000)'; tic [CP, CG, EVF] = amodes (z, c, frq, nm, zr); toc MN=34:36; MN=1:5; MN=25:35; subplot(121) plot(EVF(:,MN),zr/1000) ylabel('Depth (km)') hold on tic [cp, cg, evf]=chebmode(-z,c,frq,nm,-zr); toc plot(evf(:,MN),zr/1000,'*') subplot(122) DM=EVF-evf; plot(DM(:,MN),zr/1000) ylabel('Depth (km)') xlabel('Mode Difference') figure(2) subplot(211) plot(CP-cp','*') hold on plot(CP-cp','-') title('Phase Speed Difference: amode vs. chebmode') ylabel('Speed (m/s)') subplot(212) plot(CG-cg','*') hold on plot(CG-cg','-') title('Group Speed Difference: amode vs. chebmode') ylabel('Speed (m/s)') xlabel('Mode Number')