Raypaths when v =v 0 + cz

2.11.2 Raypaths when v =v 0 + cz

It is not difficult to integrate equations (2.56) and (2.57) for the case of instantaneous velocity that increases linearly with depth (e.g. the universal velocity function). The details can be found in

Slotnick (1959) pages 205-211. Letting v(z) = v 0 + cz, z 1 = 0, and z 2 = z, the results are

x(z, p) =

t(z, p) = ln

Slotnick shows that equation (2.62) describes an arc of a circle, having radius 1/(pc) and centered at x 0 =

1 − p 2 v 2 0 /(pc) and z 0 = −v 0 /c. Manifestly, equation (2.62) describes a ray as it goes from zero to some depth z. Since velocity is always increasing in this case, the Snell’s law angles are always getting larger as a ray goes deeper. Eventually the ray flattens out, when θ(z) = sin −1 (pv(z)) = 90 ◦ ,

2.11. RAYTRACING IN A

V (Z) MEDIUM

20 z kilometers

z kilometers

0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35 x kilometers

x kilometers

Figure 2.18: A selection of raypaths are shown Figure 2.19: A set of wavefronts associated with for the universal velocity function of Figure 2.1.

the raypaths of Figure 2.18. This was created Code Snippet 2.11.1 created this plot.

with Code Snippet 2.11.2.

and turns upward. Therefore, the depth at which a ray bottoms out, called its turning point, is found from

The complete raypath for a ray that reaches its turning point and then returns to the surface must have two values of x for each z so the function x(z) is mathematically double valued. However, z(x) is still single valued so the complete raypath is most easily computed by solving equation (2.62) for z to get

z=

1 − {pcx − cos θ 0 } − pv 0 .

pc

Code Snippet 2.11.1 implements equation (2.65) to create the raypath display shown in Figure 2.18. This code establishes a horizontal distance range and a set of takeoff angles on lines 1-3. Then, in looping over the desired rays, it calculates a depth for each element of the vector x. However, many of these rays will not cover the full range of x. Equation (2.65) returns a complex number for an x distance that cannot be reached by a particular ray. Lines 11-14 search for these points and replace their depths with NaN. (Recall that NaN’s do not display when plotted.) Also, the code generates z values that are negative so lines 15-18 set these to NaN. The ray bending in Figure 2.18 is much more realistic than a simple constant velocity calculation using straight rays. It shows that most of the energy of a seismic source cannot penetrate to great depths because it is turned around by refraction. All of the raypaths are obviously circular arcs whose centers move to the right as the ray parameter decreases.

Code Snippet 2.11.1. This code implements equation (2.65) and makes Figure 2.18.

1 x=1:50:35000;

2 vo=1800;c=.6;nrays=10;

3 thetamin=5;thetamax=80;

4 deltheta=(thetamax-thetamin)/nrays;

5 zraypath=zeros(nrays,length(x));

6 for k=1:nrays

50 CHAPTER 2. VELOCITY

7 theta=thetamin+(k-1)*deltheta;

8 p=sin(pi*theta/180)/vo;

9 cs=cos(pi*theta/180);

10 z = (sqrt( 1/(pˆ2*cˆ2) - (x-cs/(p*c)).ˆ2) -vo/c);

11 ind=find(imag(z)˜=0.0);

12 if(˜isempty(ind))

13 z(ind)=nan*ones(size(ind));

14 end

15 ind=find(real(z)<0.);

16 if(˜isempty(ind))

17 z(ind)=nan*ones(size(ind));

18 end

19 zraypath(k,:) = real(z);

20 end

21 figure;plot(x/1000,zraypath/1000);flipy;

22 xlabel(’x kilometers’);ylabel(’z kilometers’)

End Code

Slotnick also derives expressions for the wavefronts (surfaces of constant traveltime) and shows them to be circles whose centers are along the z axis at

z w0 =

[cosh(cT ) − 1]

where T is the traveltime defining the wavefront. Each circular wavefront has a radius of

r=

sinh(cT ).

Code Snippet 2.11.2 calculates and plots 10 wavefronts for a set of traveltimes from 0 to 5 seconds. For each wavefront, the strategy is to calculate the center of the wavefront circle (line z) and its radius (line 8). Then, for a predefined set of depths (line 1) the horizontal positions are calculated from the equation of a circle (line 9). As in the case of the raypaths, this results in both complex and negative values which are found and set to NaN (lines 10-17). The resulting wavefronts clearly show the effects of increasing velocity with depth, being more closely spaced at shallow depths than when deeper. Figure 2.20 superimposes the raypaths and wavefronts and uses the command axis equal to ensure a 1:1 aspect ratio. Clearly the raypaths are normal to the wavefronts.

Code Snippet 2.11.2. This code assumes that Code Snippet 2.11.1 has alreadybeen run and proceeds from there to calculate and plot the wavefronts. Figure 2.19 is the result.

1 zw=0:50:30000;

2 nwaves=10;tmax=5;

3 xwavefront=zeros(nwaves,length(zw));

4 times=linspace(0,tmax,nwaves);

5 zo=zeros(1,nwaves);

6 for k=1:nwaves

7 zo(k)=vo*(cosh(c*times(k))-1)/c;

8 r=vo*sinh(c*times(k))/c;%radius

9 xw=sqrt(r.ˆ2-(zw-zo(k)).ˆ2);

10 ind=find(real(xw)<0.);

11 if(˜isempty(ind))

12 xw(ind)=nan*ones(size(ind));

13 end

14 ind=find(imag(xw)˜=0.0);

15 if(˜isempty(ind))

16 xw(ind)=nan*ones(size(ind));

2.11. RAYTRACING IN A

V (Z) MEDIUM

15 z kilometers

0 5 10 15 20 25 30 x kilometers

Figure 2.20: This figure superimposes the raypaths of Figure 2.18 onto the wavefronts of Figure 2.19.

17 end

18 xwavefront(k,:) = real(xw);

19 end

20 figure;plot(xwavefront/1000,zw/1000);flipy;

21 xlabel(’x kilometers’);ylabel(’z kilometers’)

End Code

Exercise 2.11.1. Use equations (2.62) and (2.63) to calculate and plot the (x, t) curve for a P-P reflection from 2000 meters depth. Assume the universal velocityfunction and a source and receivers

at depth 0. Repeat your calculations for a P-S reflection assuming a constant v p /v s of 2. In each case, what is the maximum source-receiver offset for which a reflection is expected?

Exercise 2.11.2. Derive equations (2.62) and (2.63) from equations (2.56) and (2.57). Exercise 2.11.3. For the linear increase of velocitywith depth, a source at (x, z) = (0, 0), and

considering transmitted rays only, is there a unique p for each point in the (x, z) plane? Will your conclusion remain valid for more general v(z)?