Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y...

28
Chapter 4 Moveout, velocity, and stacking

Transcript of Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y...

Page 1: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Chapter 4Moveout, velocity, and stacking

Page 2: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

From-y

To-x0 12

1 3 5 7 9 11

Page 3: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

From-y

To-x0 12

1 3 5 7 9 11

Page 4: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1

1

1

1

1

=

Page 5: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Different set of points

2 2.5 9,5 120 12

From-y

To-x0 12

1 3 5 7 9 11

Page 6: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over input

2 2.5 9.5 120 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1 1

1

1

=

n=size(x,1)for i=1:n j=closest_y(..) y(j)=y(j)+x(i)end

Note how not all output are filledand some are filled twice

Page 7: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over input

2 2.5 9.5 120 12

0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1 1

1

1

=

Note how not all output are filledand some are filled twice

1

2

3

4

5

6

7

8

9

10

11

12

Function

2

2.5

9.5

12

0

5.5

12

x y

Page 8: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over output

2 2.5 9.5 120 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1

1

1

1

1

=

n=size(x,1)for i=1:n j=closest_x(..) y(i)=y(i)+x(j)end

Page 9: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over output

2 2.5 9.5 120 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1 1

1 1

1

=

n=size(x,1)for i=1:n j=closest_x(..) y(i)=y(i)+x(j)end

Page 10: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over output

2 2.5 9.5 120 12

0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1

1

1

1

1

=

1

2

3

4

5

6

7

8

9

10

11

12

Function

2

2.5

9.\5

12

1

3

3

9.5

9.5

12

x y

Page 11: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over output (adjoint)

2 2.5 9.5 120 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1 1

1 1

1

=

n=size(x,1)for i=1:n j=closest_x(..) x(i)=x(i)+y(j)end

Note how the adjoint is now summing two points

Page 12: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation: Loop over output (adjoint)

2 2.5 9.5 120 12

0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1 1

1 1

1

=

Note how the adjoint is now summing two points

1

2

3

4

5

6

7

8

9

10

11

12

Function

1

8

16

11

1

3

5

7

9

11

xy

Page 13: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Formal inversion

Map to y

Least squares inverse

Check

y = Bxx = (B!B)"1B!y

x = (B!B)"1B!Bx = Ix = x

Page 14: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

From-y

To-x0 12

1 3 5 7 9 11y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

1

1

1

1

1

1

=

By x

Page 15: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

0 12

1 3 5 7 9 111

1

1

1

1

1

1 1

1

1 1

1

x = (BB!)"1B!y

B’B

=

2

1

2

1

B’B

0.5

1

0.5

1

Inverse(B’B)

Page 16: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Interpolation

1.5 4.5 7.5 10.50 12

0 12

1 3 5 7 9 11

1 1

1

1 1

1

x = (BB!)"1B!y

0.5

1

0.5

1

y1

y2

y3

y4

y5

y6

x1

x2

x3

x4

=

Page 17: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO: Common Midpoint gather

What we recordz

x position

t

offset

Page 18: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO: Common Midpoint gather

What we wantz

x position

t

offset

Page 19: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO: Simple geometry

h

z !z2 + h2

Text0 h

2z

v

2!

z2 + h2

v

v2t2 = z2 + h2

t2 = !2 +h2

v2

Page 20: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO Code and matrixd1

d2

d3

d4

d5

d6

d7

d8

d9

d10

111

11

11

11

=

dNm

m1

m2

m3

m4

m5

m6

m7

m8

m9

m10

zztt

tau

tsubrotine nmo(adj, add, slow,h, t0,dt, n,zz,tt) logical :: adj,add (forward, back/ add to output) real :: slow(:),h !slowness (1./velocity) and offset real :: t0,dt !sampling of the time axis integer :: nt !number of samples time axis real :: zz(:),tt(:) ! data with/without moveout real :: z,hs,t !tau, x/v, moveout out time integer :: iz,it !non-moved/moved out time call adjnull(adj,add,tt,zz) !possible zero output do iz=1,nz ! loop over nmoed (tau) space z=t0+dt*(iz-1) !nmoed time hs=h*slow(iz) !offset/velocity t=sqrt(z*z+hs*hs) ! travetlime at the offset it=1.5+(t-t0)/dt !nearest time sample if(it<nt) then !are we within trace range if(adj) then !creating moveout tt(it)=tt(it)+zz(iz) else !doing nmo zz(iz)=zz(iz)+tt(it) end if end if end doend subroutine

Page 21: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO Forwardd1

d2

d3

d4

d5

d6

d7

d8

d9

d10

1 1 11 1

1 11

1

=

d N m

m1

m2

m3

m4

m5

m6

m7

m8

m9

m10

zz tt

subrotine nmo(adj, add, slow,h, t0,dt, n,zz,tt) logical :: adj,add (forward, back/ add to output) real :: slow(:),h !slowness (1./velocity) and offset real :: t0,dt !sampling of the time axis integer :: nt !number of samples time axis real :: zz(:),tt(:) ! data with/without moveout real :: z,hs,t !tau, x/v, moveout out time integer :: iz,it !non-moved/moved out time call adjnull(adj,add,tt,zz) !possible zero output do iz=1,nz ! loop over nmoed (tau) space z=t0+dt*(iz-1) !nmoed time hs=h*slow(iz) !offset/velocity t=sqrt(z*z+hs*hs) ! travetlime at the offset it=1.5+(t-t0)/dt !nearest time sample if(it<nt) then !are we within trace range if(adj) then !creating moveout tt(it)=tt(it)+zz(iz) else !doing nmo zz(iz)=zz(iz)+tt(it) end if end if end doend subroutine

tau

t

Page 22: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO Forwardd1

d2

d3

d4

d5

d6

d7

d8

d9

d10

1 1 11 1

1 11

1

=

d N m

m1

m2

m3

m4

m5

m6

m7

m8

m9

m10

zz tt

What does a nearer offset look like?

tau

t

subrotine nmo(adj, add, slow,h, t0,dt, n,zz,tt) logical :: adj,add (forward, back/ add to output) real :: slow(:),h !slowness (1./velocity) and offset real :: t0,dt !sampling of the time axis integer :: nt !number of samples time axis real :: zz(:),tt(:) ! data with/without moveout real :: z,hs,t !tau, x/v, moveout out time integer :: iz,it !non-moved/moved out time call adjnull(adj,add,tt,zz) !possible zero output do iz=1,nz ! loop over nmoed (tau) space z=t0+dt*(iz-1) !nmoed time hs=h*slow(iz) !offset/velocity t=sqrt(z*z+hs*hs) ! travetlime at the offset it=1.5+(t-t0)/dt !nearest time sample if(it<nt) then !are we within trace range if(adj) then !creating moveout tt(it)=tt(it)+zz(iz) else !doing nmo zz(iz)=zz(iz)+tt(it) end if end if end doend subroutine

Page 23: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO Nearer offsetd1

d2

d3

d4

d5

d6

d7

d8

d9

d10

1 11 1

11

11

11

=

d N m

m1

m2

m3

m4

m5

m6

m7

m8

m9

m10

zz tt

tau

t

subrotine nmo(adj, add, slow,h, t0,dt, n,zz,tt) logical :: adj,add (forward, back/ add to output) real :: slow(:),h !slowness (1./velocity) and offset real :: t0,dt !sampling of the time axis integer :: nt !number of samples time axis real :: zz(:),tt(:) ! data with/without moveout real :: z,hs,t !tau, x/v, moveout out time integer :: iz,it !non-moved/moved out time call adjnull(adj,add,tt,zz) !possible zero output do iz=1,nz ! loop over nmoed (tau) space z=t0+dt*(iz-1) !nmoed time hs=h*slow(iz) !offset/velocity t=sqrt(z*z+hs*hs) ! travetlime at the offset it=1.5+(t-t0)/dt !nearest time sample if(it<nt) then !are we within trace range if(adj) then !creating moveout tt(it)=tt(it)+zz(iz) else !doing nmo zz(iz)=zz(iz)+tt(it) end if end if end doend subroutine

Page 24: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

NMO Nearer offsetd1

d2

d3

d4

d5

d6

d7

d8

d9

d10

1 11 1

11

11

11

=

d N m

m1

m2

m3

m4

m5

m6

m7

m8

m9

m10

zz tt

First sample moves up and more diagonal

Note we have created a linear operator

tau

t

subrotine nmo(adj, add, slow,h, t0,dt, n,zz,tt) logical :: adj,add (forward, back/ add to output) real :: slow(:),h !slowness (1./velocity) and offset real :: t0,dt !sampling of the time axis integer :: nt !number of samples time axis real :: zz(:),tt(:) ! data with/without moveout real :: z,hs,t !tau, x/v, moveout out time integer :: iz,it !non-moved/moved out time call adjnull(adj,add,tt,zz) !possible zero output do iz=1,nz ! loop over nmoed (tau) space z=t0+dt*(iz-1) !nmoed time hs=h*slow(iz) !offset/velocity t=sqrt(z*z+hs*hs) ! travetlime at the offset it=1.5+(t-t0)/dt !nearest time sample if(it<nt) then !are we within trace range if(adj) then !creating moveout tt(it)=tt(it)+zz(iz) else !doing nmo zz(iz)=zz(iz)+tt(it) end if end if end doend subroutine

Page 25: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Stacking/spreading as an operator

y1,1 y12 y1,3 y1,4 y1,5 x11 1 1 1 1=

Forward: Copy dataAdjoint: Stack

d S m

Page 26: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Stacking/spreading as an operator

y1,1 y1,2 y1,3 y1,4 y1,5

y21 y22 y23 y24 y25

y31 y32 y33 y34 y35

y41 y42 y43 y44 y45

y51 y62 y53 y54 y55

x1

x2

x3

x4

x5

=

11

11

11

11

11

11

11

11

11

11

11

11

1

d S m

Page 27: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Combining the two: Matrix/operator

11

11

1

1 11

11

1 11 1

1

1 11 1

1

1 11

1

11

11

11

11

11

11

11

11

11

11

11

11

1

y1,1 y1,2 y1,3 y1,4 y1,5

y21 y22 y23 y24 y25

y31 y32 y33 y34 y35

y41 y42 y43 y44 y45

y51 y62 y53 y54 y55

x1

x2

x3

x4

x5

=

moved out data (d) Moveout (N) Spread (S)

stackedtrace(m)

Page 28: Chapter 4sep Chapter 4 Moveout, velocity, and stacking. Interpolation 1.5 4.5 7.5 10.5 0 12 From-y To-x 0 12 1 3 5 7 9 11. Interpolation ... m4 m5 m6 m7 m8 m9 m10 zz tt First ...

Stacking as on operatorsubrotine stack(adj, add, slow,h, t0,dt, n,stack,gather) logical :: adj,add (forward, back/ add to output) real :: slow(:) !slowness (1./velocity) real :: t0,dt,h0,dh !sampling of the time/offset axis integer :: nt,nh !number of samples time offset axis real :: stack(:),gather(:,:) ! stack and gather real ::h !offset integer :: ih !current offset call adjnull(adj,add,tt,zz) !possible zero output do ih=1,nh ! loop over offset h=h0+dh*(ih-1) call nmo(adj,.true.,h,t0,dt,nt,stack,gather(:,ih)) end doend subroutine