65
Chapter 1: Field recording geometries

Chapter 1: Field recording geometries

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapter 1: Field recording geometries

Chapter 1: Field recording geometries

Page 2: Chapter 1: Field recording geometries

Simplified viewSource

Page 3: Chapter 1: Field recording geometries

Simplified viewSource Receiver

Page 4: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”

Page 5: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”

Page 6: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”

Page 7: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”tim

e

Page 8: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”tim

e

Common midpoint (CMP)

Page 9: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”tim

e

Common midpoint (CMP)

Common depth point (CDP)

Page 10: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”tim

e

Common midpoint (CMP)

Offset

Common depth point (CDP)

Page 11: Chapter 1: Field recording geometries

Simplified viewSource Receiver

“Reflector”tim

e

Common midpoint (CMP)

half-offset(h)

Common depth point (CDP)

Page 12: Chapter 1: Field recording geometries

Simplified view

Page 13: Chapter 1: Field recording geometries

Simplified view

Page 14: Chapter 1: Field recording geometries

2-D seismic survey

Source position

X position

Page 15: Chapter 1: Field recording geometries

2-D seismic survey

Source position

X position

Page 16: Chapter 1: Field recording geometries

2-D seismic survey

Source position

X position

Page 17: Chapter 1: Field recording geometries

Common shot gather

Source position

X positionField profile or common shot

gather

Page 18: Chapter 1: Field recording geometries

Common geophone gather

Source position

X position Common geophone gather

Page 19: Chapter 1: Field recording geometries

Common offset section

Source position

X position Constant offset section

Page 20: Chapter 1: Field recording geometries

Common midpoint gather

Source position

X positionCommon midpoint

gather

Page 21: Chapter 1: Field recording geometries

Common midpoint gather

Source position

X positionCommon midpoint

gather

Note how we are sampling the same

piece of earth

Page 22: Chapter 1: Field recording geometries

Different ways to slice it

(y, h = 0, t) zero-offset section

(y, h = hmin, t) near-trace section

(y, h = const, t) constant-offset section

(y, h = hmax, t) far-trace section

(y = const, h, t) common-midpoint gather

(s = const, g, t) field profile (or common-shot gather)

(s, g = const, t) common-geophone gather

(s, g, t = const) time slice

(h, y, t = const) time slice

A diagram of slice names is in Figure 1.1. Figure 1.2 shows three slices from

the data volume. The first mode of display is “engineering drawing mode.” The

second mode of display is on the faces of a cube. But notice that although the

data is displayed on the surface of a cube, the slices themselves are taken from the

interior of the cube. The intersections of slices across one another are shown by

dark lines.

A common-depth-point (CDP) gather is defined by the industry and by common

usage to be the same thing as a common-midpoint (CMP) gather. But in this book

a distinction will be made. A CDP gather is a CMP gather with its time axis

Page 23: Chapter 1: Field recording geometries

3-D views

Different ways to

view3-D

volumes

Page 24: Chapter 1: Field recording geometries

3-D survey

Name the views

Page 25: Chapter 1: Field recording geometries

3-D survey

Name the views

Geophysicists(t,offset)

Geologist(t, midpoint)

(offset,midpoint)

Page 26: Chapter 1: Field recording geometries

NMO√

t2 − 4h2

v2t - timeh - half-offsetv- velocity

Page 27: Chapter 1: Field recording geometries

NMO√

t2 − 4h2

v2t - timeh - half-offsetv- velocity Correct and

sum to reduce dimensionality

Page 28: Chapter 1: Field recording geometries

NMO√

t2 − 4h2

v2t - timeh - half-offsetv- velocity Correct and

sum to reduce dimensionality

Why are we doing multiple sampling of

the media?

Page 29: Chapter 1: Field recording geometries

NMO: Common Midpoint gather

What we recordz

x position

t

offset

Page 30: Chapter 1: Field recording geometries

NMO: Common Midpoint gather

What we wantz

x position

t

offset

Page 31: Chapter 1: Field recording geometries

NMO: Simple geometry

h

z √z2 + h2

Text0 h

Page 32: Chapter 1: Field recording geometries

NMO: Simple geometry

h

z √z2 + h2

Text0 h

2z

v

2√

z2 + h2

v

Page 33: Chapter 1: Field recording geometries

NMO: Simple geometry

0 h

2z

v

2√

z2 + h2

v

t(h) = 2√

z2 + h2

v

t(h) =

√4z2

v2+

4h2

v2

t(h) =

√t(0)2 +

4h2

v2

t(0) =

√t(h)2 − 4h2

v2

Page 34: Chapter 1: Field recording geometries

2-D recording geometries: Split spread

Figure 1.3: A seismic land pro-

file. There is a gap where there

are no receivers near the shot.

You can see events of three dif-

ferent velocities. (Western Geo-

physical). fld-yc02 [ER]

Land data

Page 35: Chapter 1: Field recording geometries

2-D geometries: Off-end

Figure 1.4: A marine profile off

the Aleutian Islands. (Western

Geophysical). fld-yc20 [ER]

Page 36: Chapter 1: Field recording geometries

Slow-shooting boat

Page 37: Chapter 1: Field recording geometries

Fast shooting boat

Page 38: Chapter 1: Field recording geometries

Why do we care?0

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3 4 5

0 1 2 3 4 5 6

√0 1 2 3 4 5 6

√7

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

s

s

g

g

receiver number

0

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3 4 5

0 1 2 3 4 5 6

√0 1 2 3 4 5 6

√7

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

Page 39: Chapter 1: Field recording geometries

Add in “x” coordinate0

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3 4 5

0 1 2 3 4 5 6

√0 1 2 3 4 5 6

√7

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

s

s

g0

00

4

8 16

8

12

24 32

16

20

40 48

24

g0 4 8 12 16 20 24

0

2

8

12

16

20

24 0

0 1

0 1 2

0 1 2 3

0 1 2 3 4

0 1 2 3 4 5

0 1 2 3 4 5 6

√0 1 2 3 4 5 6

√7

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

0 1 2 3 4 5 6 7 8

Page 40: Chapter 1: Field recording geometries

Midpoint24

22 23

20 21 22

18 19 20 21

16 17 18 19 20

14 15 16 17 18 19

12 13 14 15 16 17 18

10 11 12 13 14 15 16 17

8 9 10 11 12 13 14 15 16

6 7 8 9 10 11 12 13 14

4 5 6 7 8 9 10 11 12

2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8

s

s

g

00

4

8

12

16

20

24

g0 4 8 12 16 20 24

0

4

8

12

16

20

24 36

33 35

30 32 34

27 29 31 33

24 26 28 30 32

21 23 25 27 29 31

18 20 22 24 26 28 30

15 17 19 21 23 25 27 29

12 14 16 18 20 22 24 26 28

9 11 13 15 17 19 21 23 25

6 8 10 12 14 16 18 20 22

3 5 7 9 11 13 15 17 19

0 2 4 6 8 10 12 14 16

0 8 16 24 32 40 48

Page 41: Chapter 1: Field recording geometries

Midpoint24

22 23

20 21 22

18 19 20 21

16 17 18 19 20

14 15 16 17 18 19

12 13 14 15 16 17 18

10 11 12 13 14 15 16 17

8 9 10 11 12 13 14 15 16

6 7 8 9 10 11 12 13 14

4 5 6 7 8 9 10 11 12

2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8

s

s

g

00

4

8

12

16

20

24

g0 4 8 12 16 20 24

0

4

8

12

16

20

24

Alternating sources map to alternating

midpoints

0 8 16 24 32 40 48

36

33 35

30 32 34

27 29 31 33

24 26 28 30 32

21 23 25 27 29 31

18 20 22 24 26 28 30

15 17 19 21 23 25 27 29

12 14 16 18 20 22 24 26 28

9 11 13 15 17 19 21 23 25

6 8 10 12 14 16 18 20 22

3 5 7 9 11 13 15 17 19

0 2 4 6 8 10 12 14 16

Page 42: Chapter 1: Field recording geometries

Midpoint24

22 23

20 21 22

18 19 20 21

16 17 18 19 20

14 15 16 17 18 19

12 13 14 15 16 17 18

10 11 12 13 14 15 16 17

8 9 10 11 12 13 14 15 16

6 7 8 9 10 11 12 13 14

4 5 6 7 8 9 10 11 12

2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8

s

s

g

00

4

8

12

16

20

24

g0 4 8 12 16 20 24

0

4

8

12

16

20

24

Alternating sources map to alternating

midpoints

0 8 16 24 32 40 48

36

33 35

30 32 34

27 29 31 33

24 26 28 30 32

21 23 25 27 29 31

18 20 22 24 26 28 30

15 17 19 21 23 25 27 29

12 14 16 18 20 22 24 26 28

9 11 13 15 17 19 21 23 25

6 8 10 12 14 16 18 20 22

3 5 7 9 11 13 15 17 19

0 2 4 6 8 10 12 14 16

Alternating midpoints have

alternating initial offsets

Page 43: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Page 44: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Page 45: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Function declaration

Page 46: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Define the variable types used in this function

Page 47: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Output: 3-dimensional array (time. offset, midpoint)

Page 48: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Number of time samples, offsets, and midpoints

Page 49: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Number of reflectors we are going to create

Page 50: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Declare arrays that exist only in this function

Page 51: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

The amplitude of each reflector as a function of

midpoint

Page 52: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

The zero offset time (actually time/dt) of each

reflector

Page 53: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Create a seed to a random number generator

Page 54: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Set the number of sources to the number of midpoints

Page 55: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Fill in random zero offset times for each reflector

Page 56: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Fill in random amplitudes (layer*(1.+dev) ) for each

reflector

Page 57: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Zero the output

Page 58: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Loop over each midpoint, offset, and reflector

Page 59: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Calculate the midpoint for a given the given shot and

offset

Page 60: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Trickiness to make a better movie (remember sources and midpoints don’t have exactly

the same range)

Page 61: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

Figure out the time given the offset and the zero offset time for the given reflector

Page 62: Chapter 1: Field recording geometries

Synthetic marine

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed

real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)iseed= 1992; ns = nydo iz= 1, nz { # 0 < rand01() < 1

depth( iz) = nt * rand01(iseed) # Reflector depthlayer = 2. * rand01(iseed) - 1. # Reflector strengthdo iy= 1, ny { # Impose texture on layer

refl(iz,iy) = layer * (1. + rand01(iseed))}

}call null( data, nt*nh*ny) # erase data spacedo is= 1, ns { # shotsdo ih= 1, nh { # down cable h = (g-s)/2do iz= 1, nz { # Add hyperbola for each layer

iy = (ns-is)+(ih-1) # y = midpointiy = 1 + (iy-ny*(iy/ny)) # periodic with midpointit = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 )if( it <= nt)

data(it,ih,is) = data(it,ih,is) + refl(iz,iy)}}}

return; end

Back

If the time fits within our array add the amplitude

Page 63: Chapter 1: Field recording geometries

Ratfor to Fortran 90subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)

iseed= 1992; ns = nydo iz= 1, nz { depth( iz) = nt * rand01(iseed) layer = 2. * rand01(iseed) - 1. do iy= 1, ny { refl(iz,iy) = layer * (1. + rand01(iseed)) } }call null( data, nt*nh*ny) do is= 1, ns { do ih= 1, nh { do iz= 1, nz { iy = (ns-is)+(ih-1) iy = 1 + (iy-ny*(iy/ny)) it = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 ) if( it <= nt) data(it,ih,is) = data(it,ih,is) + refl(iz,iy) }}}

return; end

subroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseedreal data( nt,nh,ny), layerreal, allocatable :: refl:,:), depth(:)allocate(refl(nz,nx),depth(nz))iseed= 1992; ns = nydo iz 1=,nz depth( iz) = nt * rand01(iseed) layer = 2. * rand01(iseed) - 1. do iy= 1, ny refl(iz,iy) = layer * (1. + rand01(iseed)) end doend dodata=0do is=1,ns do ih=1,nh do iz=1,nz iy = (ns-is)+(ih-1) iy = 1 + (iy-ny*(iy/ny)) it = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 ) if( it <= nt) data(it,ih,is) = data(it,ih,is) + refl(iz,iy) end do end doend do deallocate(refl,depth)end subroutine synmarine

Page 64: Chapter 1: Field recording geometries

Ratfor to Csubroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)

iseed= 1992; ns = nydo iz= 1, nz { depth( iz) = nt * rand01(iseed) layer = 2. * rand01(iseed) - 1. do iy= 1, ny { refl(iz,iy) = layer * (1. + rand01(iseed)) } }call null( data, nt*nh*ny) do is= 1, ns { do ih= 1, nh { do iz= 1, nz { iy = (ns-is)+(ih-1) iy = 1 + (iy-ny*(iy/ny)) it = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 ) if( it <= nt) data(it,ih,is) = data(it,ih,is) + refl(iz,iy) }}}

return; end

void synmarine (float ***data, int nt,int nh,int ny, int nz){integer it,ih,iy,is,iz, ns, iseedfloat layerfloat **refl, *depth;refl=(float**) malloc(sizeof(float*)*nx);for(ix=0; ix < nx; ix++) refl[ix]=(float*)malloc(sizeof(float)*nz);depth=(float*) malloc(sizeof(float)*nz);iseed= 1992; ns = ny;for(iz=0; iz < nz; iz++){ depth[iz] = nt * rand01(iseed) ; layer = 2. * rand01(iseed) - 1. ; for(iy=0; iy < ny; iy++) refl[iy][iz] = layer * (1. + rand01(iseed));}for(iy=0; iy < ny; iy++){for(ih=0; ih < nh; ih++){ for(iz=0; iz < nz; iz++) data[iy][ih][iz]=0.;}}}for(is=0; is < ns; is++){ for(ih=0; ih < nh; ih++){ for(iz=0; iz < nz; iz++){ iy = (ns-is)+ih-1; iy = (iy-ny*(iy/ny)) ; it = sqrt( depth[iz]*depth[iz]+ 25.*(ih-1)*(ih-1)); if( it < nt) data[is][ih][is]-data[is][ih][it]( + refl[iy][iz]; }}}for(ix=0; ix < nx; ix++) free(refl[ix]);free(refl); free(depth);}

Page 65: Chapter 1: Field recording geometries

Ratfor to matlabsubroutine synmarine ( data, nt,nh,ny, nz)integer nt,nh,ny, nz, it,ih,iy,is,iz, ns, iseed real data( nt,nh,ny), layer, rand01temporary real refl(nz,ny), depth(nz)

iseed= 1992; ns = nydo iz= 1, nz { depth( iz) = nt * rand01(iseed) layer = 2. * rand01(iseed) - 1. do iy= 1, ny { refl(iz,iy) = layer * (1. + rand01(iseed)) } }call null( data, nt*nh*ny) do is= 1, ns { do ih= 1, nh { do iz= 1, nz { iy = (ns-is)+(ih-1) iy = 1 + (iy-ny*(iy/ny)) it = 1 + sqrt( depth(iz)**2 + 25.*(ih-1)**2 ) if( it <= nt) data(it,ih,is) = data(it,ih,is) + refl(iz,iy) }}}

return; end

function synmarine(data,nt,nh,ny,nz)refl=zeros(nz,ny)depth(nz)ns=nyfor iz=1:nz depth(iz)=nt*rand(1) layer=2*rand(1)-1.; for iy=1:ny refl(iz,iy)=layer*(1+rand(1)); end enddata=0;for is=1:ns for ih=0:nh for iz=0:nz iy=(ns-is)+ih-1; iy = 1+(iy-ny*(iy/ny)) ; it = 1+sqrt( depth(iz)^2+.25*(ih-1)^2) if( it < nt) data(iy,ih,is)=data(it,ih,is)+refl(iz,iy) end end end end