This
topic explores the ideas and basic concepts of seismic modelling by using
Seismic Un*x. An application of Gaussian beam synthetic seismograms was used to
obtain seismic data set from the triangulated sloth model.
The
purpose of seismic modelling is to provide the seismic interpreter with a tool
to aid in the interpretation of difficult geological structures.
Triangulated Sloth Model
Sloth
model is a slowness model, where velocities in different layers are entered by
(1/velocity^2). The model is done by interpolating points using the Delaunay
Triangulation. Each layer represents the rock/fluid type or sedimentary unit
and has a constant velocity. Below are earth model (7 layers) with unique
geological structures: dipping layers and anticline.
Layer
|
Seismic Velocity (m/s)
|
Sloth
|
Layer-1
|
1600
|
0.39
|
Layer-2
|
1800
|
0.31
|
Layer-3
|
1900
|
0.28
|
Layer-4
|
2000
|
0.25
|
Layer-5
|
1350
|
0.55
|
Layer-6
|
1500
|
0.44
|
Layer-7
|
2500
|
0.16
|
Above
model was constructed by triangulated sloth (trimodel) with the following
script (geomodel.sh).
#!/bin/sh
trimodel xmin=0 zmin=0
xmax=12.0 zmax=3.5 \
1 xedge=0,2,4,6,8,10,12 \
zedge=0,0,0,0,0,0,0 \
sedge=0,0,0,0,0,0,0 \
2 xedge=0,12 \
zedge=0.3,0.25 \
sedge=0,0 \
3 xedge=0,12 \
zedge=0.7,0.45 \
sedge=0,0 \
4 xedge=0,2,4,6,8,10,12 \
zedge=1.2,1.2,1.3,1.4,0.7,1.05,1.2 \
sedge=0,0,0,0,0,0,0 \
5 xedge=0,2,4,6,8,10,12 \
zedge=1.7,1.7,1.8,2.0,1.1,1.45,1.8 \
sedge=0,0,0,0,0,0,0 \
6 xedge=0,2,4,6,8,10,12 \
zedge=2.2,2.2,2.3,2.5,1.6,1.9,2.2 \
sedge=0,0,0,0,0,0,0 \
7 xedge=0,2,4,6,8,10,12 \
zedge=2.7,2.7,2.8,2.9,2.2,2.4,2.7 \
sedge=0,0,0,0,0,0,0 \
8 xedge=0,2,4,6,8,10,12 \
zedge=3.5,3.5,3.5,3.5,3.5,3.5,3.5 \
sedge=0,0,0,0,0,0,0 \
sfill=0,0.1,0,0,0.39,0,0 \
sfill=0,0.4,0,0,0.31,0,0 \
sfill=0,0.9,0,0,0.28,0,0 \
sfill=0,1.5,0,0,0.25,0,0 \
sfill=0,2.0,0,0,0.55,0,0 \
sfill=0,2.4,0,0,0.44,0,0 \
sfill=0,3.0,0,0,0.16,0,0 \
kedge=1,2,3,4,5,6,7,8 \
>geomodel.bin
# Plot triangulated
sloth model
sxplot < geomodel.bin
tricolor=cyan \
wbox=10 hbox=4 \
title="Triangulated
Sloth Model" \
label1="Depth
(km)" label2="Distance (km)" \
# Create a PS display of
the model
spsplot geomodel.ps \
gedge=0.5 gtri=2.0
gmin=0.2 gmax=1.0 \
title="Earth
Model" titlesize=12 \
labelz="Depth
(km)" labelx="Distance (km)" labelsize=10 \
dxnum=1.0 dznum=0.5
wbox=10 hbox=4
exit
The
above script will produce geomodel.bin and geomodel.ps. Herewith the
explanation of the script geomodel.sh:
- Xmin-xmax are used to determine the minimum – maximum distance in km, whereas the zmin-zmax are minimum – maximum depth in km.
- Xedge specifies x coordinates through which reflector will be interpolated, zedge is depth value belonging to the specified x value. Sedge has only zero value because all layers are isotropic and homogeneous. The number of parameters xedge, zedge, and sedge must be equal.
- Xedge, zedge, sedge in seq-1 and seq-8 for top margin (z=0km) and bottom margin (z=3.5) of model, while the others (seq-2 to seq-7) for interfaces/reflectors.
- In this model that has 7 (seven) layers, there are also ten sfill lines where each sfill contains x,z,x0,z0,s00,dsdx,dsdz. Each x-z pair of sfill specifies a point within a layer, and s00 defines a sloth value that fills a layer. The value of x0, z0, dsdx and dsdz are zero, then sloth inside a closed region is determined by :
s(x,z)=s00+(x-x0)dsdx+(z-z0)dsdz
s(x,z)=s00
(homogeneous and isotropic)
- Parameters kedge is used to list all interface numbers. It is important for further process, especially for acquiring the synthetic data.
- Finally, sxplot is used to display X Window plot a triangulated sloth model (above figure) and spsplot created a display of the sloth model in Post-script file (below figure).
Ray Tracing
Ray
tracing can explain how seismic data is acquired. Snell's Law and Law of
Reflection are sufficient to determine raypath geometry of the earth model.
Further reading on this theory can be done in Sheriff (1984), Waters (1987) or
Yilmaz (1987).
This
topic only focus on 2 D conventional reflection seismic based on P waves, due
to the the ability of this wave: can travel through fluids and as the fastest
wave.
The
raypath geometry will then motivate us the discussion of seismic acquisition
and further signal analysis. The idea of seismic modelling is to see how the
reflected rays can be performed and to form a picture of the subsurface. Hence,
we can learn the reflection behavior of ray-paths from source to receiver
through the targeted horizons as described in below figure.
By
using dynamic ray tracing for a triangulated sloth model (triray), we try to
simulate an unique geology model with three (3) sources. The different angles (first
to last angle) and number of raypath give a different aperture, ray parameters,
and travel times. We can generate those ray diagrams with the script raytrace.sh
in below table.
#! /bin/sh
set -x
#1.Plot a sloth model
spsplot < geomodel.bin> sloth.eps \
gedge=0.5 gtri=2.0 gmin=0.2 gmax=1.0 \
title="Seismic Ray Tracing" titlesize=14 \
labelz="Depth (km)" labelx="Distance (km)" \
dxnum=1.0 dznum=0.5 wbox=10 hbox=4
#2.Define raytracing parameters
modelfile=geomodel.bin
rayendsfile1=rayends1.bin rayfile1=rays1.bin \
rayendsfile2=rayends2.bin rayfile2=rays2.bin \
rayendsfile3=rayends3.bin rayfile3=rays3.bin \
nangle1=30 fangle1=-45 langle1=45 nxz1=600 xs1=2.0 zs1=0 \
nangle2=30 fangle2=-35 langle2=35 nxz2=600 xs2=8.5 zs2=0 \
nangle3=30 fangle3=-20 langle3=30 nxz3=800 xs3=5.0 zs3=0 \
#3.Shoot rays
triray < $modelfile > $rayendsfile1 rayfile=$rayfile1 \
nangle=$nangle1 fangle=$fangle1 langle=$langle1 \
xs=$xs1 zs=$zs1 nxz=$nxz1 \
refseq=2,0,0 refseq=3,1,0
triray < $modelfile > $rayendsfile2 rayfile=$rayfile2 \
nangle=$nangle2 fangle=$fangle2 langle=$langle2 \
xs=$xs2 zs=$zs2 nxz=$nxz2 \
refseq=2,0,0 refseq=3,0,0 refseq=4,1,0
triray < $modelfile > $rayendsfile3 rayfile=$rayfile3 \
nangle=$nangle3 fangle=$fangle3 langle=$langle3 \
xs=$xs3 zs=$zs3 nxz=$nxz3 \
refseq=2,0,0 refseq=3,0,0 refseq=4,0,0 refseq=5,0,0 refseq=6,0,0
refseq=7,1,0
#4.Plot the rays
psgraph < $rayfile1 > rays1.eps \
nplot=`cat outpar` n=600 hbox=4.0 wbox=10.0 \
x1beg=0.0 x1end=3.5 x2beg=0 x2end=12 \
d1num=0.5 d2num=1.0 style=seismic linecolor=red \
psgraph < $rayfile2 > rays2.eps \
nplot=`cat outpar` n=600 hbox=4.0 wbox=10.0 \
x1beg=0.0 x1end=3.5 x2beg=0 x2end=12 \
d1num=0.5 d2num=1.0 style=seismic linecolor=green \
psgraph < $rayfile3 > rays3.eps \
nplot=`cat outpar` n=800 hbox=4.0 wbox=10.0 \
x1beg=0.0 x1end=3.5 x2beg=0 x2end=12 \
d1num=0.5 d2num=1.0 style=seismic linecolor=blue \
#5.Merge model with rays
psmerge in=sloth.eps in=rays1.eps in=rays2.eps in=rays3.eps >
raydiagram.eps
exit
|
The
explanation of this SU function can be seen by typing “triray” (without “”) in
terminal.
Seismic
Acquisition
In
this section, a script of acquisition.sh will acquire the
synthetic seismic data (seis.su) for the generated model before (geomodel.bin).
The survey layout are:
§
Using 193 shots.
§
Shots are evenly
spaced at 50m intervals.
§
Shot locations
range from 1.2km to 10.80km.
§
96 split-spread
traces will be recorded from each shot location.
§
Receiver spacing
is 25m.
§
Maximum offsets
is 1175m.
§
Receiver locations
range from 0.025km to 11.975km.
The
final data set has 18528 traces (193 shots x 96 channels per shot). The process
took about 2 hours on Ubuntu 11.
#! /bin/sh
/bin/rm -f temp*
# Assign values to variables
nangle=101
fangle=-65
langle=65
nt=1200 dt=0.004
datafile=geomodel.bin
seisfile=seis.su
#--------------------------------------------------------------------------------------------------------
# Shooting the seismic traces...
#--------------------------------------------------------------------------------------------------------
echo " ----Begin looping over triseis."
# Loop over shotpoints
i=0
while [ "$i" -ne "193" ]
do
fs=`echo "$i *
0.05" | bc -l`
sx=`echo "$i * 50"
| bc -l`
fldr=`echo "$i +
1" | bc -l`
# Loop over receivers
j=0
while [ "$j" -ne
"96" ]
do
fg=`echo "$i *
0.05 + $j *0.025" | bc -l`
gx=`echo "$i *
50 + $j * 25 -1175" | bc -l`
offset=`echo "$j
* 25 -1175" | bc -l`
tracl=`echo "$i
* 96 + $j + 1" | bc -l`
tracf=`echo "$j
+ 1" | bc -l`
echo "sx=$sx gx=$gx
flder=$fldr offset=$offset trace_number=$tracl fs=$fs fg=$fg"
# Loop over
reflectors
k=2
while [ "$k"
-ne "8" ]
do
triseis
<$datafile xs=1.2,10.80 zs=0,0 \
xg=0.025,11.975
zg=0,0 \
nangle=$nangle
fangle=$fangle langle=$langle \
kreflect=$k
krecord=1 fpeak=12 lscale=0.5 \
ns=1 fs=$fs ng=1
fg=$fg nt=$nt dt=$dt |
suaddhead nt=$nt |
sushw
key=dt,tracl,tracr,fldr,tracf,trid,offset,sx,gx \
a=4000,$tracl,$tracl,$fldr,$tracf,1,$offset,$sx,$gx
>> temp$k
k=`expr $k + 1`
done
j=`expr $j + 1`
done
i=`expr $i + 1`
done
echo " ----End looping over triseis."
#--------------------------------------------------------------------------------------------------------
# Sum contents of the temp files...
#--------------------------------------------------------------------------------------------------------
echo " ----Sum files."
susum temp2 temp3 >tempa
susum tempa temp4 >tempb
rm -f tmpa
susum tempb temp5 >tempa
rm -f tmpb
susum tempa temp6 >tempb
rm -f tmpa
susum tempb temp7 >$seisfile
rm -f tmpb
#--------------------------------------------------------------------------------------------------------
# Clean up temp files...
#--------------------------------------------------------------------------------------------------------
echo " ----Remove temp files."
rm temp*
# Report output file
echo " ----Output file : $seisfile has been generated
successfully ."
# Finishing shell script
echo " ----Finish!"
exit
|
The
header information can be explored by typing “surange < seis.su” (without
“”) in the terminal.
18528 traces:
tracl 1 18528 (1 - 18528)
tracr 1 18528 (1 - 18528)
fldr 1 193 (1 - 193)
tracf 1 96 (1 - 96)
trid 1
offset -1175 1200 (-1175 - 1200)
sx 0 9600 (0 - 9600)
gx -1175 10800 (-1175 - 10800)
ns 1200
dt 4000
To
see the shot gather of 80th shot, type the following script in terminal.
suwind < seis.su
key=fldr min=80 max=80 | suxwigb perc=90 label1="Time (s)"
label2="Trace No" title="Shot Gather-80"
The
near trace QC can be viewed by typing the following script in terminal.
suwind key=tracf min=1
max=1 < seis.su | suximage perc=95 label1="Time (s)"
label2="Shot Point No." title="Near Trace QC"
Reference:
T.
Benz , D. Forel, W.D. Pennington, 2005, Seismic Data Processing with
Seismic Un*x, 3rd
Chapter, Tulsa: Society of Exploration Geophysicists.
R.E.
Sheriff, 1984, Encyclopedic Dictionary of Exploration Geophysics,
2nd Edition, Tulsa: Society of Exploration Geophysicists, pp. 323.
J.W.
Stockwell, Jr. & J.K. Cohen, 1998, The New SU User's Manual,
Golden: CWP, Colorado School of Mines, pp. 138.
K.H.
Waters, 1987, Reflection Seismology, 3rd Edition, New
York: John Wiley & Sons, pp. 538.
O.
Yilmaz, 1987, Seismic Data Processing, Tulsa: Society of Exploration
Geophysicists, pp. 526.
3 comments:
I enjoyed this one a lot. Keep going ;)
Well done!
Thanks for this! Do you know of any way to limit the rays calculated by offset?
Use these emoticons on your comment. :)) :)] ;)) ;;) :D ;) :p :(( :) :( :X =(( :-o :-/ :-* :| 8-} ~x( :-t b-( :-L x( =))
Post a Comment