wave field modelling in mat lab

69
Wavefield Modeling and Raytracing Gary F. Margrave Seismic Imaging Summer School 2009

Upload: rampravesh-kumar

Post on 05-Nov-2014

61 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Wave Field Modelling in Mat Lab

Wavefield Modeling and Raytracing

Gary F. MargraveSeismic Imaging Summer School 2009

Page 2: Wave Field Modelling in Mat Lab

Topics of Discussion

v(z) raytracingray shooting and two-point raytracingarbitrary multi-modes, flexible s/r geometrysynthetic P-P and P-S gathers

v(x,z) raytracingray shooting onlycomplex media

acoustic finite differencing2D P-waves, complex media2nd or 4th order in spatial derivativeany s/r geometry, shot records and explodogram

Page 3: Wave Field Modelling in Mat Lab

Making a simple seismic section>>help synsections

CREWES synthetic sesimic by diffraction superposition The SYNSECTIONS toolbox provides a suite of tools to create synthetic seismic sections by superposition of hyperbolae and other events. Each function is designed to accept a matrix and to insert a single event into it. The event is always added (superimposed) on top of what is already there. Tools EVENT_DIP: inserts a dipping (linear) event in a matrix EVENT_DIPH: constructs a dipping event by diffraction superposition EVENT_DIPH2: constructs a dipping event with sparse diffraction superposition EVENT_HYP: inserts a hyperbolic event in a matrix. EVENT_PWLINH: diffraction superposition along a piecewise linear track EVENT_SPIKE: inserts a spike in a matrix Standard sections MAKESTDSYN: Make a non-diffraction synthetic to demo migration codes MAKESTDSYNH: Make a diffraction synthetic to demo migration codes Demos MAKESECTIONS: demo the use of the section tools DEMO_HYPERBOLAS: demo the superposition of diffraction hyperbolae

Page 4: Wave Field Modelling in Mat Lab

A simple linear event>> dt=.002;t=(0:500)*dt;dx=10;x=(-100:100)*dx;>> seis=zeros(length(t),length(x));>> seis=event_dip(seis,t,x,[.01 .2],[0 1000],1);>> plotimage(seis,t,x)>> [fks,f,k]=fktran(seis,t,x);>> plotimage(abs(fks),f,k);

Page 5: Wave Field Modelling in Mat Lab

Hyperbolic events>> seis=event_dip(seis,t,x,[.01 .2],[0 -1000],1);>> seis=event_hyp(seis,t,x,.1,0,4000,1,3);>> seis=event_hyp(seis,t,x,.3,0,4000,1,3);>> seis=event_hyp(seis,t,x,.5,0,4000,1,3);>> seis=event_hyp(seis,t,x,.7,0,4000,1,3);>> plotimage(seis,t,x)

Page 6: Wave Field Modelling in Mat Lab

Bandlimiting

>> seis=filtf(seis,t,[10 5],[100 20]);>> plotimage(seis,t,x)>> [fks,f,k]=fktran(seis,t,x);>> plotimage(abs(fks),f,k);

It is obvious from the f-k spectrum in the previous slide that there is considerable spatial aliasing for frequencies above 100 Hz. So we are motivated to use this as a highcut:

Page 7: Wave Field Modelling in Mat Lab

Events with diffractions>> dt=.002;t=(0:500)*dt;dx=5;x=(0:400)*dx;seis=zeros(length(t),length(x));>> seis=event_pwlinh(seis,t,x,2000,[0 800 810 1200 1210 2000],...300*ones(1,6),[.1 .1 -.1 -.1 .1 .1],1,dx);>> plotimage(seis,t,x)>> seis=filtf(seis,t,[10 5],[100 20]);>> plotimage(seis,t,x)

event_pwlinh constructs a piecewise-linear event by superposition of diffraction hyperbolae:

Page 8: Wave Field Modelling in Mat Lab

Exercise

• Try to model some simple geologic structure that interests you. The structure should consist of simple events beneath a constant velocity overburden. Construct the corresponding seismic section and examine the f-k spectrum after each event is inserted. Explain your results.

• Construct a seismic section with three or four events having precisely the same time dip but different spatial location. Examine the f-k spectrum after the insertion of each event. Explain your results.

• Make a shot record with first breaks, ground roll, and hyperbolic reflections using a different band-limiting wavelet for each event. Make your deeper reflections have a lesser band limit than the shallow ones. The ground roll should be very low frequency (5-15 Hz) while the first breaks should be perhaps 5-40 Hz.

Page 9: Wave Field Modelling in Mat Lab

V(z) Raytracing

k

Layer k-1

Layer k

Layer k+1

kz

kkk tanzx kk

kk cosv

zt

x

kk tv

Page 10: Wave Field Modelling in Mat Lab

V(z) Raytracing

2 2

1

Traveltime1

Nk

k k k

zt p

v p v

2 2

1

Horizontal distance1

Nk k

k k

pv zx p

p v

sin The Ray Parameterk

k

pv

The ray parameter is a constant for all layers and uniquely determines the raypath.

Page 11: Wave Field Modelling in Mat Lab

Equivalent problems

N layers 2N Layers

N-1

123

N

123

N

123

N

N-1

N-1

Page 12: Wave Field Modelling in Mat Lab

Matlab V(z) Raytools

Demo RAYTRACE_DEMO: interactive demonstration of v(z) raytracing capabilities Basic tools for v(z) DRAWRAY: draws rays given their ray parameters RAYFAN_A: similar to RAYFAN but the rays are specified by angle RAYFAN: shoots a fan of rays given their ray parameters for v(z) SHOOTRAY: similar to RAYFAN but with less error checking (faster) TRACERAY: traces an arbitrary ray given its raycode for v(z) TRACERAY_PP: traces a P-P (or S-S) reflection for v(z) TRACERAY_PS: traces a P-S (or S-P) reflection for v(z)

Page 13: Wave Field Modelling in Mat Lab

A simple layered medium

Page 14: Wave Field Modelling in Mat Lab

Code: P-P OBC reflection

1. figure;subplot(2,1,1);flipy2. %Trace P-P rays and plot in upper subplot3. [t,p]=traceray_pp(vp,zp,zsrc,zrec,zd,xoff,10,-1,10,1,1,2);4. %put source and receiver markers5. line(xoff,zrec*ones(size(xoff)),'color','b','linestyle','none','marker','v')6. line(0,zsrc,'color','r','linestyle','none','marker','*')7. %annotate plot8. title('OBC simulation, P-P mode, water depth 200 meters')9. xlabel('meters');ylabel('meters');grid10. %plot traveltime versus offset in lower subplot11. subplot(2,1,2);flipy;12. plot(xoff,t);grid;xlabel('meters');ylabel('seconds')13. xlim([0 3000])

Page 15: Wave Field Modelling in Mat Lab

Code: P-S OBC reflection

1. figure;subplot(2,1,1);flipy2. %Trace P-S rays and plot in upper subplot 3. [t,p]=traceray_ps(vp,zp,vs,zs,zsrc,zrec,zd,xoff,10,-1,10,1,1,2);4. %put source and receive markers5. line(xoff,zrec*ones(size(xoff)),'color','b','linestyle','none','marker','v')6. line(0,zsrc,'color','r','linestyle','none','marker','*')7. %annotate plot8. title('OBC simulation, P-S mode, water depth 200 meters')9. grid;xlabel('meters');ylabel('meters');10. subplot(2,1,2);flipy;11. plot(xoff,t);grid;xlabel('meters');ylabel('seconds');12. xlim([0 3000])

Page 16: Wave Field Modelling in Mat Lab

OBC, P-P mode

traceray_pp

Page 17: Wave Field Modelling in Mat Lab

OBC, P-S mode

traceray_ps

Page 18: Wave Field Modelling in Mat Lab

Code: OBC P-S conversion point

1. %loop over depth and show conversion point2. for kk=1:length(zd);3. if(kk==1)dflag=1;else;dflag=2;end4. [t,p]=traceray_ps(vp,zp,vs,zs,zsrc,zrec,zd(kk),xoff,10,-2,30,1,1,dflag);5. end6. %draw source and receiver symbols7. line(xoff,zrec,'color','b','linestyle','none','marker','v')8. line(0,zsrc,'color','r','linestyle','none','marker','*');9. %annotate plot10. title('OBC simulation, P-S mode, fixed offset CCP determination');grid;

Page 19: Wave Field Modelling in Mat Lab

OBC, P-S conversion point

traceray_ps

Page 20: Wave Field Modelling in Mat Lab

Code: VSP P-P reflection1. %build the velocity model2. zp=0:10:4000;vp=1800+.6*zp;vs=.5*vp;zs=zp;3. %P-P offset VSP4. figure;subplot(2,1,1);flipy5. t=zeros(size(zrec)); %preallocate t6. %loop over receiver depth7. for kk=1:length(zrec);8. [t(kk),p]=traceray_pp(vp,zp,zsrc,zrec(kk),zd,xoff,10,-2,30,1,1,2);9. end10. %draw source and receiver symbols11. line(xoff,zrec,'color','b','linestyle','none','marker','v')12. line(0,zsrc,'color','r','linestyle','none','marker','*')13. %annotation14. title([' VSP Vertical gradient simulation, P-P mode '])15. grid;xlabel('meters');ylabel('meters');16. %plot traveltime versus depth17. subplot(2,1,2);18. plot(t,zrec);xlabel('seconds');ylabel('depth (meters)')19. grid;flipy;ylim([0 3000])

Page 21: Wave Field Modelling in Mat Lab

Code: VSP P-S reflection1. %P-S offset VSP2. figure;subplot(2,1,1);flipy;3. t=zeros(size(zrec));%preallocate t4. for kk=1:length(zrec);5. [t(kk),p]=traceray_ps(vp,zp,vs,zs,zsrc,zrec(kk),zd,xoff,10,-2,30,1,1,2);6. end7. %draw source and reciver symbols8. line(xoff,zrec,'color','b','linestyle','none','marker','v')9. line(0,zsrc,'color','r','linestyle','none','marker','*')10. %annotate plot11. title([' VSP Vertical gradient simulation, P-S mode '])12. grid;xlabel('meters');ylabel('meters');13. %plot traveltime versus depth14. subplot(2,1,2);15. plot(t,zrec);xlabel('seconds');ylabel('depth (meters)');16. grid;flipy;ylim([0 3000])

Page 22: Wave Field Modelling in Mat Lab

VSP P-P reflection

traceray_pp

Page 23: Wave Field Modelling in Mat Lab

VSP P-S reflection

Page 24: Wave Field Modelling in Mat Lab

Code: Pure P multimode

1. %define the ray code for a pure P multiple2. raycode=[0 1;1500 1;1300 1;2000 1;1800 1;3000 1;2000 1;2300 1;1000 1;...3. 1500 1; 300 1];4. figure;subplot(2,1,1);flipy5. %trace the rays6. xoff=1000:100:3000;7. [t,p]=traceray(vp,zp,vs,zs,raycode,xoff,10,-1,10,1,1,2);8. %Source and receiver symbols9. line(xoff,raycode(end,1)*ones(size(xoff)),'color','b','linestyle','none','marker','v')10. line(0,raycode(1,1),'color','r','linestyle','none','marker','*')11. %annotate12. title('A P-P-P-P-P-P-P-P-P-P mode in vertical gradient media');grid13. %Plot traveltimes14. subplot(2,1,2);flipy15. plot(xoff,t);grid;xlabel('offset');ylabel('time')16. xlim([0 3000])

Page 25: Wave Field Modelling in Mat Lab

Code: P-S multimode

1. %define the ray code for a P-S multimode2. raycode=[0 1;1500 2;1300 2;2000 2;1800 2;3000 1;2000 1;2300 1;1000 1;...3. 1500 2; 300 1];4. figure;subplot(2,1,1);flipy5. %trace the rays6. xoff=1000:100:3000;7. [t,p]=traceray(vp,zp,vs,zs,raycode,xoff,10,-1,10,1,1,2);8. %source and receiver symbols9. line(xoff,raycode(end,1)*ones(size(xoff)),'color','b','linestyle','none','marker','v')10. line(0,raycode(1,1),'color','r','linestyle','none','marker','*')11. %annotate12. title('A P-S-S-S-S-P-P-P-P-S mode in vertical gradient media');grid13. %Plot traveltimes14. subplot(2,1,2);flipy15. plot(xoff,t);grid;xlabel('offset');ylabel('time')16. xlim([0 3000])

Page 26: Wave Field Modelling in Mat Lab

Pure P multimode

raycode=[0 1;1500 1;1300 1;2000 1;1800 1;3000 1;2000 1;2300 1;1000 1;1500 1; 300 1];

Page 27: Wave Field Modelling in Mat Lab

P-S multimode

raycode=[0 1;1500 2;1300 2;2000 2;1800 2;3000 1;2000 1;2300 1;1000 1;1500 2; 300 1];

Page 28: Wave Field Modelling in Mat Lab

Exercise-Run raytrace_demo, observe the behavior, and examine the code to see how things are done. Then, either investigate your own problem or see if you can do this one:- Construct a layered, v(z), velocity function by any means that you choose. Then use traceray_pp to determine reflection traveltimes for a reflector at perhaps 1000m depth and offsets at least equal to the depth. Compare the raytraced traveltimes to those that are predicted by the Dix equation. You can compute average and rms velocities using functions in the velocity toolbox.

Page 29: Wave Field Modelling in Mat Lab

V(x,z) Raytracing

pxvdt

xd 2

xvlnxv

xv

dt

pd

Differential equations for the raypath can be derived from the eikonal

equation.

Page 30: Wave Field Modelling in Mat Lab

V(x,z) Raytracing

adt

rd

p,xr

vln,pva 2

These equations are merged into a single equation by defining the abstract ray vector:

then the ray equation is

where

Page 31: Wave Field Modelling in Mat Lab

V(x,z) Raytracing

The ray equation may be solved using a 4th order Runge-Kutta method. Roughly, given initial values of the ray vector, the ray is time-stepped through the velocity model.

dtard kk

kk1k rdrr

sort of …

Page 32: Wave Field Modelling in Mat Lab

Matlab V(x,z) Raytools

Demo RAYVXZ_DEMO: demo the v(x,z) raytrace code

Tools for v(x,z) DRAYVEC: compute the derivative of ray vector (for vxz raytracing) DRAYVECLIN: compute the derivative of ray vector for v0=a*x+b*z RAYVELMOD: establish a velocity model for vxz raytracing SHOOTRAYTOSURF: shoot a ray to z=0 in v(x,z) SHOOTRAYVXZ: RK4 raytracing in v(x,z) with nearest neighbor int. SHOOTRAYVXZ_G: more general raytracing in v(x,z).

Page 33: Wave Field Modelling in Mat Lab

Code: v(x,z) velocity model

1. % Define geometry2. nx=100;nz=nx;3. dg=10;nsmooth=10;4. xb=(0:nx+nsmooth-2)*dg;zb=(0:nz+nsmooth-2)*dg;5. x=(0:nx-1)*dg;z=(0:nz-1)*dg;6. %Build the velocity model7. vlow=2700;vhigh=3800;vdel=1000;8. v=vlow*ones(nx+nsmooth-1,nz+nsmooth-1);9. xpoly=[max(xb)/2 2*max(xb)/3 1.5*max(xb)/2.5 max(xb)/pi];10. zpoly=[max(zb)/3 max(zb)/2 2.1*max(zb)/2.5 .4*max(zb)];11. v=afd_vmodel(dg,v,vhigh,xpoly+max(xb)/4,zpoly);12. v=afd_vmodel(dg,v,vhigh,zpoly-max(xb)/4,xpoly-max(zb)/4);13. xpoly=[min(xb) .9*max(xb) .6*max(xb) min(xb)];14. zpoly=[.5*max(zb) .6*max(zb) max(zb) .7*max(zb)];15. v=afd_vmodel(dg,v,vhigh,xpoly,zpoly);16. vrand=vdel*(rand(nx+nsmooth-1,nz+nsmooth-1)-.5);17. v=v+vrand;

Page 34: Wave Field Modelling in Mat Lab

Velocity model

afd_vmodel

Page 35: Wave Field Modelling in Mat Lab

Code: v(x,z) raytracing1. rayvelmod(v,dx)%install velocity model2. plotimage(v-mean(v(:)),x,z)3. xlabel('meters');ylabel('meters')

4. %estimate tmax,dt,tstep5. tmax=max(z)/vlow;dt=.004;tstep=0:dt:tmax;

6. %specify a fan of rays7. angles=[-70:2.5:70]*pi/180;8. x0=round(nx/2)*dg;z0=0;9. indx=near(x,x0);indz=near(z,z0);10. v0=v(indz,indx);

11. %trace the rays12. for k=1:length(angles)13. r0=[x0 z0 sin(angles(k))/v0 cos(angles(k))/v0];14. [t,r]=shootrayvxz(tstep,r0);15. line(r(:,1),r(:,2),ones(size(t)),'color','r');16. end

Page 36: Wave Field Modelling in Mat Lab

Raytracing with no smoothing

shootrayvxz

Page 37: Wave Field Modelling in Mat Lab

Raytracing with 10 m smoothing

shootrayvxz

Page 38: Wave Field Modelling in Mat Lab

Raytracing with 50 m smoothing

shootrayvxz

Page 39: Wave Field Modelling in Mat Lab

Raytracing with 100 m smoothing

shootrayvxz

Page 40: Wave Field Modelling in Mat Lab

Waves in unsmoothed mediafinite difference simulation

Page 41: Wave Field Modelling in Mat Lab

Waves and rays in unsmoothedmeters

meters

Page 42: Wave Field Modelling in Mat Lab

Waves in unsmoothedRays in smoothed

meters

meters

Page 43: Wave Field Modelling in Mat Lab

Waves and rays in smoothed

metersmeters

meters

Page 44: Wave Field Modelling in Mat Lab

Finite difference modelling

tt,z,xt,z,xz,xvt2tt,z,x 222

t,z,xtz,xv

1t,z,x

2

2

22

Start with the variable-velocity scalar-wave equation

Replace the time derivative with a finite difference operator and rearrange

This is the basic time-stepping equation.

Page 45: Wave Field Modelling in Mat Lab

Finite difference modelling

Considerations

Second order or fourth order Laplacian?

Stability

Laplacianorderfourth8

3

Laplacianorderondsec2

1

x

tvmax

Page 46: Wave Field Modelling in Mat Lab

Matlab Finite Difference Tools

Sample scripts HIGHV_WEDGE: model an anticline beneath a high velocity wedge VZANTICLINE: model an anticline beneath a v(z) medium SYNCLINE: model a channel beneath a few layers CHANNEL: model a channel beneath a few layers Seismograms AFD_SHOTREC ... makes finite difference shot records AFD_EXPLODE ... makes exploding reflector models

Page 47: Wave Field Modelling in Mat Lab

Matlab Finite Difference Tools

Utilities AFD_VMODEL ... makes simple polygonal velocity models AFD_SOURCE ... generates a source array for uses with AFD_SHOTREC CHANGE_GRID_SPACING ... example script to interpolate a velocity model AFD_REFLECT ... calculate the reflectivity from a velocity model AFD_MOVIESNAP: make movies of wavefield propagation Basic time-stepping AFD_SNAP ... take one finite difference time step AFD_SNAPN ... time steps a wavefield "n" steps DEL2_5PT ... compute the 5 point Laplacian DEL2_9PT ... compute the 9 point Laplacian AFD_BC_OUTER ... apply absorbing boundary condition to outer boundary AFD_BC_INNER ... apply absorbin bcs to inner boundary

Page 48: Wave Field Modelling in Mat Lab

Code: Velocity model

1. %make a velocity model2. nx=128;dx=10;nz=128; %basic geometry3. x=(0:nx-1)*dx;z=(0:nz-1)*dx;4. v1=2000;v2=2800;v3=3200;%velocities5. vmodel=v3*ones(nx,nz);% fill matirx with v36. z1=(nz/8)*dx;z2=(nz/2)*dx;dx2=dx/2;7. xpoly=[-dx2 max(x)+dx2 max(x)+dx2 -dx2];8. zpoly=[-dx2 -dx2 z1+dx2 z1+dx2];9. vmodel=afd_vmodel(dx,vmodel,v1,xpoly,zpoly);%install layer 110. zpoly=[z1+dx2 z1+dx2 z2+dx2 z2+dx2];11. vmodel=afd_vmodel(dx,vmodel,v2,xpoly,zpoly);%install layer 2

Page 49: Wave Field Modelling in Mat Lab

Velocity Model

2000 m/s

2800 m/s

3200 m/s

afd_vmodel

Page 50: Wave Field Modelling in Mat Lab

Code: finite dif

1. dtstep=.001;%time step2. dt=.004;tmax=1;%time sample rate and max time3. xrec=x;%receiver locations4. zrec=zeros(size(xrec));%receivers at zero depth5. snap1=zeros(size(vmodel));6. snap2=snap1;7. snap2(1,length(x)/2)=1;%place the source8. %second order laplacian9. [seismogram2,seis2,t]=afd_shotrec(dx,dtstep,dt,tmax, ...10. vmodel,snap1,snap2,xrec,zrec,[5 10 30 40],0,1);11. %fourth order laplacian12. [seismogram4,seis4,t]=afd_shotrec(dx,dtstep,dt,tmax, ...13. vmodel,snap1,snap2,xrec,zrec,[5 10 30 40],0,2);

Page 51: Wave Field Modelling in Mat Lab

Five point Laplaciandx=10, dt=.001

afd_shotrec

Page 52: Wave Field Modelling in Mat Lab

Nine point Laplaciandx=10, dt=.001

afd_shotrec

Page 53: Wave Field Modelling in Mat Lab

Five point Laplaciandx=5, dt=.001

afd_shotrec

Page 54: Wave Field Modelling in Mat Lab

Nine point Laplaciandx=5, dt=.0009

afd_shotrec

Page 55: Wave Field Modelling in Mat Lab

Trace comparison

5 point9 point 9 point5 pointdx = 10 metersdx = 5 meters

events

artifacts

Page 56: Wave Field Modelling in Mat Lab

Code: velocity model1. dx=10;xmax=2500;zmax=1000;%grid size, max line length, max depth2. x=0:dx:xmax;z=0:dx:zmax; % x and z coordinate vector3. vhigh=4000;vlow=2000;vrange=vhigh-vlow; % high and low velocities4. vel=vlow*ones(length(z),length(x));%initialize velocity matrix5. z1=100;z2=200;v1=vlow+vrange/5;%first layer6. xpoly=[-dx xmax+dx xmax+dx -dx];zpoly=[z1 z1 z2 z2];7. vel=afd_vmodel(dx,vel,v1,xpoly,zpoly);%install first layer8. z3=271;v2=vlow+2*vrange/5;zpoly=[z2 z2 z3 z3];%second layer9. vel=afd_vmodel(dx,vel,v2,xpoly,zpoly);%install second layer10. z4=398;v3=vlow+pi*vrange/5;zpoly=[z3 z3 z4 z4];%third layer11. vel=afd_vmodel(dx,vel,v3,xpoly,zpoly);%install third layer12. zpoly=[z4 z4 zmax+dx zmax+dx];%last layer13. vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);%install last layer14. width=20;thk=50;vch=vlow+vrange/6;%channel15. xpoly=[xmax/2-width/2 xmax/2+width/2 xmax/2+width/2 xmax/2-width/2];16. zpoly=[z4 z4 z4+thk z4+thk];17. vel=afd_vmodel(dx,vel,vch,xpoly,zpoly);%install channel18. plotimage(vel-.5*(vhigh+vlow),z,x);%plot the velocity model

Page 57: Wave Field Modelling in Mat Lab

Velocity Model

afd_vmodel

Page 58: Wave Field Modelling in Mat Lab

Code: finite dif

1. %do a finite-difference exploding reflector model2. dt=.004; %temporal sample rate3. dtstep=.001; %modelling step size4. tmax=2*zmax/vlow; %maximum time5. [seisfilt,seis,t]=afd_explode(dx,dtstep,-dt,tmax, ...6. vel,x,zeros(size(x)),[10 15 40 50],0,1);7. %plot the seismogram8. plotimage(seisfilt,t,x)9. %compute times to top and bottom of channel10. tchtop=2*(z1/vlow + (z2-z1)/v1 + (z3-z2)/v2 + (z4-z3)/v3);11. tchbot=tchtop+2*(thk/vch);12. %annotate times13. h1=drawpick(xmax/2,tchtop,0,width);14. h2=drawpick(xmax/2,tchbot,0,width);

Page 59: Wave Field Modelling in Mat Lab

ExplodogramL2, dx=10, dt=.001

afd_explode

Page 60: Wave Field Modelling in Mat Lab

ExplodogramL4, dx=10, dt=.001

afd_explode

Page 61: Wave Field Modelling in Mat Lab

ExplodogramL4, dx=5, dt=.001

afd_explode

Page 62: Wave Field Modelling in Mat Lab

ExplodogramL2, dx=2.5, dt=.0008

afd_explode

Page 63: Wave Field Modelling in Mat Lab

Code: velocity model1. dx=5;xmax=2500;zmax=1000; % grid size, max line length, max depth2. xpinch=1500; zwedge=zmax/2;% wedge parameters3. x=0:dx:xmax; z=0:dx:zmax;% x&z coordinate vector4. vhigh=4000;vlow=2000; % high and low velocities5. vel=vlow*ones(length(z),length(x));%initialize velocity matrix6. dx2=dx/2;xpoly=[-dx2 xpinch -dx2];zpoly=[-1 -1 zwedge];% wedge7. vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);% install the wedge8. x0=xpinch/2;z0=zwedge+100; % x and z of the crest of the anticline9. a=.0005; % a parameter that determines the steepness of the flanks10. za=a*(x-x0).^2+z0; % model the anticline as a parabola11. % build a polygon that models the anticline12. ind=near(za,zmax+dx);xpoly=[x(1:ind) 0 ];zpoly=[za(1:ind) za(ind)];13. vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);%install the anticline14. xpoly=[0 xmax xmax 0];zpoly=[.9*zmax .9*zmax zmax+dx zmax+dx];15. vel=afd_vmodel(dx,vel,vhigh,xpoly,zpoly);% install bottom layer

Page 64: Wave Field Modelling in Mat Lab

Velocity Model

4000 m/s

4000 m/s

2000 m/s

Page 65: Wave Field Modelling in Mat Lab

Reflectivity

afd_reflect

Page 66: Wave Field Modelling in Mat Lab

Code: finite dif

1. %do a finite-difference model2. dt=.004; %temporal sample rate3. dtstep=.001;4. tmax=2*zmax/vlow; %maximum time5. [seisfilt,seis,t]=afd_explode(dx,dtstep,dt,tmax, ...6. vel,x,zeros(size(x)),[5 10 40 50],0,2);

Page 67: Wave Field Modelling in Mat Lab

ExplodogramSecond order, dx=10, dt=.001

afd_explode

Page 68: Wave Field Modelling in Mat Lab

ExplodogramFourth order, dx=10, dt=.001

afd_explode

Page 69: Wave Field Modelling in Mat Lab

ExplodogramFourth order, dx=5, dt=.001

afd_explode