SEISMIC MODELLING BY USING SEISMIC UN*X


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:

Thanks for this! Do you know of any way to limit the rays calculated by offset?

Post a Comment

Jokes

Review

Election Polling

Who are the president and vice president of Indonesia Republic of your choice?
  
 

Orang yang bersemangat dapat menanggung penderitaannya, tetapi siapa yang akan memulihkan semangat yang patah?” Amsal 18:14.

Beragam persoalan bisa menimpa siapa saja. Entah orang kaya atau miskin, tua atau muda, setiap orang selama hidup di dunia ini selalu berhadapan dengan berbagai persoalan. Setiap orang, terlepas dari status sosial, pendidikan, profesinya, dan bahkan sebagai hamba Tuhanpun tidak terluput dari yang namanya pergumulan atau persoalan. Manusia harus berhadapan dengan masalah selama hidup di dunia ini. Setiap orang tentunya memiliki persoalan yang berbeda-beda.

Kita tidak boleh menyerah, walau badai apapun yang sedang menerpa. Sebab pencobaan yang kita alami tidak pernah melebihi kekuatan kita, seperti yang disebutkan dalam Firman Tuhan.

“Pencobaan-pencobaan yang kamu alami ialah pencobaan-pencobaan biasa, yang tidak melebihi kekuatan manusia. Sebab Allah setia dan karena itu Ia tidak akan membiarkan kamu dicobai melampaui kekuatanmu. Pada waktu kamu dicobai Ia akan memberikan kepadamu jalan keluar, sehingga kamu dapat menanggungnya.Amin.” 1 Kor 10:13.

 
About | Disclaimer | Sitemap | Contact | Copyright © 2011 TotalCorner
Valid XHTML and CSS