% marktimes calculate travel times of phases and place in header % % Calculates travel times of desired phases using TTBox and % places the times in the header of a SACLAB file. % % Requires: % SACLAB (http://gcc.asu.edu/mthorne/saclab) % TTBox (http://ifp.uni-muenster.de/spp1115/content/pub/TTBox02052004b.zip) % % The SACLAB file must have the 'O' and 'GCARC' header variable set. % Function is similar to TauP_SetSac (http://www.seis.sc.edu/software/TauP/index.html) % % Examples: % 1. 2004180KATHZ = marktimes(2004180KATHZ,'prem','P'); % 2. 2004180KATHZ = marktimes(2004180KATHZ,'prem','P',2); % 3. 2004180KATHZ = marktimes(2004180KATHZ,'iasp91',{'S', 'SKS'}); % 4. 2004180KATHZ = marktimes(2004180KATHZ,'iasp91',{'S', 'SKS'},[2 3]); % % 1. 2004180KATHZ is the SACLAB file, PREM is the model, and phase P % The P arrival time is placed in T0 header % 2. Just like Ex. 1, but the P arrival time is place in T2 header % 3. 2004180KATHZ is the SACLAB file, iasp91 is the model, and both SKS % and S are calculated. It is important to make the phases a char and % put them in a cell array with curly brackets {}. S arrival time is % placed in T0 and SKS in T1. % 4. Just like Ex. 3, but S is placed in T2 and SKS in T3 % % For phase nomenclature see TTBox manual. % Available models are prem, ak135, jb, and iasp91. % % by Sean Ford (1/2005) sean.ford@asu.edu % A SACLAB utility (http://gcc.asu.edu/mthorne/saclab) function [outfile] = marktimes(infile,model,varargin1,varargin2); % find if varargin2 is defined if (nargin == 3) varargin2 = 0; end % test for sacfile if (infile(303,3)~=77 & infile(304,3)~=73 & infile(305,3)~=75 & infile(306,3)~=69) error('Specified Variable is not in SAC format') end outfile = infile; % grab header variables from saclabfile using lh.m (SACLAB) [dist,depth,o] = lh(infile,'GCARC','EVDP','O'); % make model using .nd models of TTBox if (strcmpi(model,'prem')) mod = mkreadnd('/users/sean/MATLAB/ttbox02052004b/data/prem.nd','silent'); elseif (strcmp(model,'iasp91')) mod = mkreadnd('/users/sean/MATLAB/ttbox02052004b/data/iasp91.nd','silent'); elseif (strcmp(model,'ak135')) mod = mkreadnd('/users/sean/MATLAB/ttbox02052004b/data/ak135.nd','silent'); elseif (strcmp(model,'jb')) mod = mkreadnd('/users/sean/MATLAB/ttbox02052004b/data/jb.nd','silent'); else error('Requested model is not supported') end % calculate travel times of requested phases using mkttime.h (TTBox) if (ischar(varargin1)) [tt,p] = mkttime(varargin1,dist,depth,mod); else for i = 1:size(varargin1,2) [tt(i),p(i)] = mkttime(varargin1{i},dist,depth,mod); end end % correct time using header variable o ttime = tt + o; % place time in header using ch.m (SACLAB) if (ischar(varargin1)) if (varargin2 == 0) outfile = ch(outfile,'T0',ttime,'KT0',varargin1); else outfile = ch(outfile,['T' num2str(varargin2)],ttime,['KT' num2str(varargin2)],varargin1); end else if (varargin2 == 0) for i = 1:size(varargin1,2) outfile = ch(outfile,['T' num2str(i-1)],ttime(i),['KT' num2str(i-1)],varargin1{i}); end else for i = 1:length(varargin2) outfile = ch(outfile,['T' num2str(varargin2(i))],ttime(i),['KT' num2str(varargin2(i))],varargin1{i}); end end end