function rifrazione2(v1, v2, z, FIRST_ARRIVALS_ONLY); % rifrazione2(v1, v2, z); % % Crea il grafico dei tempi di arrivo per un sistema a due strati con % velocità % v1 e v2 e spessore del primo strato z % Il FLAG FIRST_ARRIVALS_ONLY può essere impostato a 1 per restituire solo i primi arrivi. % Il default è il grafico di TUTTI i tempi di arrivo. if nargin < 4 FIRST_ARRIVALS_ONLY = 0; end %% posizione in X dei geofoni (in m dalla sorgente) x = [0:5:300]; %% Onda diretta %% Viaggia lungo la superficie del suolo a velocità v1 t1 = x./v1; %% Head wave %% Viene rifratta alla dicontinuità z1-z2 %% Il tempo di arrivo dipende dalla velocità di entrambi gli strati %% e dallo spessore del primo z t2 = (2*z*sqrt(v2^2-v1^2)/(v1*v2))+x./v2; %% Pendenza è 1/v2! xcrit = 2*z*v1/(sqrt(v2^2-v1^2)); if isreal(xcrit) a = min(find(x>xcrit)); end crossover = ((2*z*sqrt(v2^2-v1^2))/(v1*v2))/(1/v1-1/v2); b = max(find(x<= crossover)) if FIRST_ARRIVALS_ONLY plot(x(1:b),t1(1:b)*1000, '.--') hold on if isreal(t2) plot(x(b:end), t2(b:end)*1000, 'r.--') end else plot(x,t1*1000, '.--') hold on if isreal(t2) plot(x(a:end), t2(a:end)*1000, 'r.--') end end xlabel('OFFSET (m)') ylabel('Tempo di arrivo (ms)') grid on legend('Onda diretta', 'HEAD WAVE') title(['z1 = ', num2str(z), ' m; v1 = ', num2str(v1), ' m/s; v2 = ', num2str(v2), ' m/s']) axis ([0 300 0 300]) hold off