11/7/2009
Workshop Pengolahan Data Seismik Menggunakan SU Volume 3: Interpolasi Kecepatan – Poststack/Prestack Time Migration
Befriko Murdianto
Befriko Murdianto
Workshop Pengolahan Data Seismik Menggunakan SU Volume 3: Interpolasi Kecepatan – Poststack/Prestack Time Migration
Interpolasi Kecepatan Pada volume 3 ini, kita akan mulai melakukan dip moveout (DMO) dan migrasi pada data. Untuk keperluan ini, kita memerlukan informasi kecepatan yang telah didapatkan dari proses analisis kecepatan pada latihan di volume 2. Kecepatan yang kita dapatkan dari hasil analisis kecepatan di volume 2 adalah kecepatan stacking dalam format ASCII text file. Untuk keperluan migrasi, kita memerlukan velocity file dalam format binary, karena itu kita akan mengubahnya ke dalam format binary terlebih dulu serta menginterpolasi dan menghaluskannya. Dalam pemrosesan data seismik, dikenal berbagai jenis kecepatan, antara lain: 1.
Kecepatan semu (apparent velocity) Kecepatan semu adalah kecepatan yang tampaknya dimiliki oleh gelombang sepanjang lintasan geophone. Kecepatan ini berbeda dengan kecepatan asli gelombang jika muka gelombang tiba di penerima dengan membentuk suatu sudut tertentu.
v app
vtrue , dengan adalah sudut yang dibentuk antara muka gelombang dan penerima. sin
2. Kecepatan rerata (average velocity) Kecepatan rerata adalah perbandingan antara jarak lintasan tertentu dengan waktu yang ditempuh oleh gelombang untuk menempuh jarak tersebut. Untuk menghitung kecepatan rerata ini sering (walaupun tidak selalu) diasumsikan dengan lintasan yang tegak lurus.
1
Befriko Murdianto
v ave
d1 d 2 . t1 t 2
3. Kecepatan akar rerata kuadrat (root mean square/RMS velocity) Kecepatan akar rerata kuadrat adalah kecepatan fisis. Kecepatan ini bukanlah kecepatan hasil picking pada saat analisis kecepatan seperti di workshop 2. Yang kita pick pada saat analisis kecepatan adalah kecepatan stacking. Kecepatan stacking mendekati kecepatan akar rerata kuadrat untuk kasus offset yang kecil dan lapisan-lapisan yang parallel horizontal.
n
v rms
v i 1 n
t i 1
dan
2 i
ti , dengan
v i adalah kecepatan interval dari kedalaman atau interval waktu ke-i
i
t i adalah waktu tempuh dua arah melalui kedalaman atau interval waktu ke-i.
4. Kecepatan interval (interval velocity) Kecepatan interval adalah kecepatan dari interval di bawah permukaan yang diukur dengan cara menentukan waktu tempuh interval kedalaman sepanjang lintasan sinar. Kecepatan interval ini sering diukur dari kecepatan stacking menggunakan persamaan Dix, dengan mengasumsikan lapisan horizontal dan lintasan gelombang yang tegak lurus.
2
Befriko Murdianto
vi
d ; dengan d adalah jarak sepanjang lintasan sinar. t
v rms2 t 2 v rms1 t1 2
Persamaan Dix: kuadrat serta 5.
vi 2
2
t 2 t1
; dengan
v rms1 dan v rms2 adalah kecepatan akar rerata
t1 dan t 2 adalah waktu tempuh vertikal melalui lapisan 1 dan 2.
Kecepatan normal moveout (NMO velocity) Kecepatan NMO adalah kecepatan yang digunakan untuk mengoreksi perubahan waktu tempuh sebagai akibat perubahan jarak offset antara sumber dan penerima. Persamaan NMO umumnya digunakan dalam analisis kecepatan, yang berarti event yang memiliki kemiringan mungkin tidak akan terkoreksi secara sempurna dalam CMP gather. Untuk kasus seperti ini, DMO digunakan untuk mengoreksi perubahan waktu tempuh tersebut dan dilakukan analisis kecepatan lagi setelah DMO. Persamaan NMO:
t x t0 2
x2
2
v nmo
2
.
Untuk kasus bidang pantul miring, persamaan NMO menjadi: t x t 0 2
adalah waktu tempuh pada jarak offset x,
2
x 2 cos 2 vnmo
2
, dengan
tx
t 0 adalah waktu tempuh pada jarak offset nol, x
v nmo adalah kecepatan NMO, dan adalah sudut pantul terhadap bidang
adalah jarak offset, horizontal.
Koreksi NMO ( t ) adalah koreksi waktu yang dilakukan pada setiap offset sebagai akibat perbedaan jarak antara sumber and penerima.
t t x t 0 t 0 2
x2 t0 . v2
6. Kecepatan stacking (stacking velocity) Kecepatan stacking adalah kecepatan lapisan homogen isotropis di atas reflektor yang akan memberikan ketergantungan offset yang sama dengan yang diamati. Harga kecepatan stacking ini didapatkan dari analisis kecepatan dan harga yang dipakai untuk koreksi NMO. Karena kecepatan yang kita dapatkan dari analisis kecepatan hanya untuk lokasi di mana kita melakukan analisis, maka kecepatan tersebut perlu kita interpolasikan untuk setiap lokasi CMP. Perhatikan bahwa pada saat kita melakukan NMO menggunakan perintah sunmo, proses interpolasi ini dilakukan “on-thefly” pada saat koreksi NMO. Namun untuk keperluan migrasi, proses interpolasi ini tidak dilakukan “onthe-fly” sehingga kita harus menginterpolasinya sebelum migrasi.
3
Befriko Murdianto
Script 010_Velocity_Interp_IVA.sh adalah script yang saya buat untuk keperluan ini. Script ini dapat digunakan jika Anda menggunakan script 008_IVA.sh, tapi jika Anda menggunakan script 008_Velan.sh untuk melakukan analisis kecepatan, Anda dapat menggunakan script 010_Velocity_Interp.sh untuk melakukan interpolasi kecepatan. Di sini saya sediakan 2 script untuk menginterpolasi karena ada perbedaan sedikit di dalam output text file dari kedua script analisis kecepatan. #! /bin/sh # Velocity interpolation for text file produced by 008_IVA.sh # Input data and directories VELDIR=/local/lfs1/data/workshop/vels INVEL=$VELDIR/stkvel.p1.iva OUTVEL1=$VELDIR/stkvel1.intp1.bin OUTVEL2=$VELDIR/stkvel1.intp2.bin # Define temporal and spatial samples nsamp=1001 dt=0.004 fsamp=0 ncdpin=13 fcdpin=123 dcdpin=40 ncdpout=724 fcdpout=1 dcdpout=1 nlines=`grep -v cdp $INVEL | grep -v "#" | wc -l | awk '{print $1}'` currline=1 >$OUTVEL1 # 1D (fast dimension) velocity interpolation while [ $currline -le $nlines ] do nextline=`expr $currline + 1` ncolx=`grep -v cdp $INVEL | grep -v "#" wc -c` lcolx=`expr $ncolx - 2` ncoly=`grep -v cdp $INVEL | grep -v "#" wc -c` lcoly=`expr $ncoly - 2` Xin=`grep -v cdp $INVEL | grep -v "#" | -c6-$lcolx` Yin=`grep -v cdp $INVEL | grep -v "#" | -c6-$lcoly`
| head -$currline | tail -1 | | head -$nextline | tail -1 | head -$currline | tail -1 | cut head -$nextline | tail -1 | cut
unisam xin=$Xin yin=$Yin nout=$nsamp dxout=$dt fxout=$fsamp method=spline >>$OUTVEL1 currline=`expr $currline + 2` done
4
Befriko Murdianto
# 2D velocity interpolation unisam2 nx1=$nsamp dx1=$dt fx1=$fsamp n1=$nsamp d1=$dt f1=$fsamp nx2=$ncdpin dx2=$dcdpin fx2=$fcdpin n2=$ncdpout d2=$dcdpout f2=$fcdpout method1=spline method2=spline <$OUTVEL1 >$OUTVEL2 exit Perhatikan di sini saya menggunakan 2 kali interpolasi. Interpolasi pertama adalah interpolasi 1D ke arah sumbu waktu menggunakan perintah unisam. Hal ini saya lakukan karena pick kita pada saat analisis kecepatan tidak dilakukan pada setiap sampel waktu yang sama. Setelah kita memiliki sampel waktu yang sama, maka dapat kita lakukan interpolasi 2D ke arah sumbu waktu dan lateral menggunakan perintah unisam2. Setelah interpolasi, kita akan memiliki jumlah sampel ke arah vertikal dan lateral yang sama seperti penampang seismik post-stack kita, yaitu 1001 sampel ke arah vertikal dan 724 sampel ke arah lateral. Untuk menampilkan penampang kecepatan yang telah diinterpolasi, saya menggunakan script 010_Display_Velocity.sh. Script ini akan membaca velocity file hasil interpolasi kita lalu menampilkannya menggunakan perintah ximage. Perhatikan di sini digunakan ximage, bukan suximage karena velocity file yang dihasilkan adalah file dengan format binary tanpa SU trace header, sehingga tidak bisa ditampilkan dengan suximage. Gambar 1 adalah penampang kecepatan yang dihasilkan setelah interpolasi. Di sini hasilnya saya zoom dari CMP 100 hingga 600, sesuai lokasi analisis kecepatan. Di luar lokasi tersebut, hasil interpolasi akan tidak bagus karena hanya ekstrapolasi dari nilai terluar. #! /bin/sh # Velocity viewer VELDIR=/local/lfs1/data/workshop/vels VFILE=$VELDIR/stkvel1.intp2.bin vmin=1500 vmax=5500 cdpmin=1 cdpmax=724 nsamp=1001 dt=0.004 ximage <$VFILE n1=$nsamp f1=0 d1=$dt f2=$cdpmin d2=1 wclip=$vmin bclip=$vmax legend=1 title="Velocity field of $VFILE" label1="Time (s)" label2="CDP No" cmap=hsv2 units="m/sec" hbox=350 wbox=700 & exit
5
Befriko Murdianto
Gambar 1. Hasil interpolasi kecepatan untuk hasil picking kecepatan yang pertama (setelah dekonvolusi).
Terlihat bahwa hasil interpolasi masih belum begitu halus. Hal ini terlihat dari adanya undukan-undukan dalam penampang kecepatan kita. Untuk migrasi, baik poststack maupun prestack, velocity field kita sebaiknya memiliki perubahan lateral yang halus agar tidak terjadi perubahan kecepatan yang drastis karena migrasi waktu (time migration) tidak dapat mengatasi variasi kecepatan arah lateral yang drastis. Script 010_Velocity_Smoothing.sh adalah script yang saya gunakan untuk menghaluskan kecepatan hasil interpolasi ini. Tentukan besarnya smoothing agar velocity field Anda tidak berundulasi. Gambar 2 adalah hasil smoothing yang saya lakukan. #! /bin/sh # A script to smooth velocity field # Input data and directories VELDIR=/local/lfs1/data/workshop/vels INVEL=$VELDIR/stkvel1.intp2.bin OUTVEL=$VELDIR/stkvel1.sm2.bin nsamp=1001 ncdp=724 smtrcs=??? # Run smoothing smooth2 <$INVEL n1=$nsamp n2=$ncdp r1=$smtrcs r2=$smtrcs rw=1 >$OUTVEL exit
6
Befriko Murdianto
Tugas: Isilah parameter smtrcs untuk menentukan besarnya smoothing.
Gambar 2. Hasil smoothing untuk penampang kecepatan di Gambar 1.
Dip Moveout (DMO) Langkah termudah (dan paling murah) untuk melakukan migrasi adalah dengan melakukan poststack time migration (PoSTM). Namun, ada beberapa masalah dengan asumsi-asumsi yang digunakan dalam proses stacking karena adanya dipping events (proses stacking menganggap lapisan homogen horizontal). Sebagai akibat adanya dip ini, koreksi NMO tidak lagi berlaku. Karena itu, diperlukan koreksi tambahan, yaitu DMO sebelum PoSTM untuk mengatasi hal ini. CMP stack adalah pendekatan ke zero offset berdasarkan koreksi NMO:
x2 . Tetapi untuk v2 x 2 x 2 sin 2 2 , di v v2
t x t0 2
2
x 2 cos 2 2 2 kasus lapisan miring, koreksinya menjadi: t x t 0 , atau t x t 0 2 v 2 2 2 x x sin 2 mana t 0 2 adalah suku koreksi NMO dan adalah suku koreksi DMO. v v2 2
2
Untuk kasus lapisan miring, trace-trace dalam satu CMP tidak memiliki reflection point yang sama, tetapi berbeda untuk offset yang berbeda, yang dikenal juga dengan istilah midpoint smear(Gambar 3). Untuk medium dengan kecepatan konstan, DMO “memigrasi” data ke zero offset sehingga setelah koreksi NMO, semua trace dalam satu CMP akan memiliki reflection point yang sama. 7
Befriko Murdianto
Gambar 3. Midpoint smear untuk kasus lapisan miring.
Dengan kata lain, DMO bekerja seperti prestack partial migration, namun DMO diikuti oleh PoSTM jauh lebih murah daripada melakukan full prestack time migration. Secara teori, hal ini hanya berlaku untuk kasus kecepatan konstan. Namun pada prakteknya, hal ini berlaku juga untuk kecepatan yang tidak konstan, asalkan perubahan kecepatan dan kemiringan tidak terlalu drastis.
Gambar 4. Gambaran DMO sebagai prestack partial migration.
Script 011_DMO.sh adalah script yang saya gunakan untuk melakukan DMO pada data workshop. Di sini saya menggunakan DMO dalam domain F-K (sudmofk). Perhatikan bahwa sebelum DMO saya melakukan offset binning. Offset binning ini akan diterangkan nanti sebelum kita membahas mengenai migrasi prestack. #! /bin/sh # DMO via F-K domain (log strecth) method # Input data and directories DATADIR=/local/lfs1/data/workshop/data INDATA=$DATADIR/cdp_radon.su # DMO parameters cdpmin=1 cdpmax=724 dxcdp=12.5
8
Befriko Murdianto
noffmix=??? fmax=??? tdmo=??? vdmo=??? # Offset binning and sort to common-offset bin suchw <$INDATA key1=offset key2=offset d=50 | suchw key1=offset key2=offset a=-2 | suchw key1=offset key2=offset b=50 a=112.5 >$DATADIR/cdp_radon_offbin.su susort <$DATADIR/cdp_radon_offbin.su >$DATADIR/dmo_input.su offset cdp # F-K DMO sudmofk <$DATADIR/dmo_input.su cdpmin=$cdpmin cdpmax=$cdpmax dxcdp=$dxcdp noffmix=$noffmix fmax=$fmax tdmo=$tdmo vdmo=$vdmo verbose=1 >$DATADIR/offset_dmo.su # Sort back to cmp susort <$DATADIR/offset_dmo.su >$DATADIR/cdp_dmo.su cdp offset # Clean up rm $DATADIR/cdp_radon_offbin.su $DATADIR/dmo_input.su $DATADIR/offset_dmo.su exit Tugas: Isilah parameter noffmix, fmax, tdmo dan vdmo. Setelah Anda melakukan DMO, lakukan lagi analisis kecepatan menggunakan script 011_IVA_after_DMO.sh. Script ini mirip dengan 008_IVA.sh hanya input filenya diganti dengan output dari DMO. Gambar 5 menunjukkan semblance sebelum (kiri) dan setelah (kanan) DMO. Terlihat bahwa setelah DMO, semblance menjadi lebih fokus dan ambiguitas akibat conflicting dip berkurang. #! /bin/sh # File: iva.sh ##set -x #================================================== # USER AREA -- SUPPLY VALUE #-------------------------------------------------# CMPs for analysis cmp1=??? cmp4=??? cmp7=??? cmp10=??? cmp13=???
cmp2=??? cmp5=??? cmp8=??? cmp11=???
cmp3=??? cmp6=??? cmp9=??? cmp12=???
numCMPs=13 #-------------------------------------------------# File names
9
Befriko Murdianto
indata=/local/lfs1/data/workshop/data/cdp_dmo_nonmo.su outpicks=/local/lfs1/data/workshop/vels/stkvel.p2.iva # Inverse NMO infile=/local/lfs1/data/workshop/data/cdp_dmo.su vfile=/local/lfs1/data/workshop/vels/stkvel.p1.iva sunmo <$infile par=$vfile smute=9999 invert=1 >$indata #-------------------------------------------------# display choices myperc=99 plottype=0 #-------------------------------------------------# Processing variables # Semblances variables nvs=60 dvs=100 fvs=1000 # CVS variables fc=1000 lc=7000 nc=10 XX=11 … (bersambung) Setelah selesai melakukan analisis kecepatan, buatlah penampang stack DMO dengan menggunakan script 011_DMO_Stack.sh. Bandingkanlah hasil stacknya dengan penampang stack Radon di workshop 2. #! /bin/sh # DMO stack DATADIR=/local/lfs1/data/workshop/data INDATA=$DATADIR/cdp_dmo_nonmo.su OUTDATA=$DATADIR/cdp_dmo_velp2.su VELDIR=/local/lfs1/data/workshop/vels VFILE=$VELDIR/stkvel.p2.iva Xmute=??? Tmute=??? cdpmin=119 cdpmax=606 cdpinc=40 percentile=99 minclip=-0.5 maxclip=0.5 10
Befriko Murdianto
fx=1 dx=1 sunmo <$INDATA par=$VFILE smute=9999 | sumute xmute=$Xmute tmute=$Tmute >$OUTDATA # Display CMP gathers and stack suwind <$OUTDATA key=cdp min=$cdpmin max=$cdpmax j=$cdpinc | suximage perc=$percentile f2=$fx d2=$dx label1="Time (s)" label2="Trace no." cmap=rgb1 title="CMP gathers after DMO" & sustack <$OUTDATA | suximage perc=$percentile f2=$fx d2=$dx label1="Time(s)" label2="CMP" title="DMO stack" cmap=rgb1 & exit
Gambar 5. Perbandingan semblance sebelum (kiri) dan setelah (kanan) DMO. Perhatikan bahwa setelah DMO, semblance menjadi lebih fokus dan ambiguitas akibat conflicting dip menjadi berkurang.
11
Befriko Murdianto
Gambar 6. CMP gathers setelah DMO.
12
Befriko Murdianto
Gambar 7. Penampang stack setelah DMO. Bandingkanlah dengan penampang stack setelah Radon di workshop 2.
13
Befriko Murdianto
Interpolasi dan Smoothing Kecepatan Setelah DMO Setelah mendapatkan kecepatan setelah DMO, kita perlu menginterpolasi dan menghaluskan kembali kecepatan ini untuk keperluan migrasi. Saya menggunakan script yang sama dengan interpolasi dan smoothing sebelumnya. Gambar 8 adalah hasil interpolasi kecepatan setelah DMO dan Gambar 9 adalah hasil smoothing dari Gambar 8.
Gambar 8. Hasil interpolasi kecepatan untuk hasil picking kecepatan yang kedua (setelah DMO).
#! /bin/sh # Velocity interpolation for text file produced by 011_IVA_after_DMO.sh # Input data and directories VELDIR=/local/lfs1/data/workshop/vels INVEL=$VELDIR/stkvel.p2.iva OUTVEL1=$VELDIR/stkvel2.intp1.bin OUTVEL2=$VELDIR/stkvel2.intp2.bin # Define temporal and spatial samples nsamp=1001 dt=0.004 fsamp=0 ncdpin=13 fcdpin=123 dcdpin=40 ncdpout=724 fcdpout=1 dcdpout=1
14
Befriko Murdianto
nlines=`grep -v cdp $INVEL | grep -v "#" | wc -l | awk '{print $1}'` currline=1 >$OUTVEL1 # 1D (fast dimension) velocity interpolation while [ $currline -le $nlines ] do nextline=`expr $currline + 1` ncolx=`grep -v cdp $INVEL | grep -v "#" wc -c` lcolx=`expr $ncolx - 2` ncoly=`grep -v cdp $INVEL | grep -v "#" wc -c` lcoly=`expr $ncoly - 2` Xin=`grep -v cdp $INVEL | grep -v "#" | -c6-$lcolx` Yin=`grep -v cdp $INVEL | grep -v "#" | -c6-$lcoly`
| head -$currline | tail -1 | | head -$nextline | tail -1 | head -$currline | tail -1 | cut head -$nextline | tail -1 | cut
unisam xin=$Xin yin=$Yin nout=$nsamp dxout=$dt fxout=$fsamp method=spline >>$OUTVEL1 currline=`expr $currline + 2` done # 2D velocity interpolation unisam2 nx1=$nsamp dx1=$dt fx1=$fsamp n1=$nsamp d1=$dt f1=$fsamp nx2=$ncdpin dx2=$dcdpin fx2=$fcdpin n2=$ncdpout d2=$dcdpout f2=$fcdpout method1=spline method2=spline <$OUTVEL1 >$OUTVEL2 exit #! /bin/sh # A script to smooth velocity field # Input data and directories VELDIR=/home/befriko/seisunix/workshop/vels VELIN=$VELDIR/stkvel2.intp2.bin VELOUT=$VELDIR/stkvel2.sm2.bin nsamp=1001 ncdp=724 smtrcs=??? # Run smoothing smooth2 <$VELIN n1=$nsamp n2=$ncdp r1=$smtrcs r2=$smtrcs rw=1 >$VELOUT exit Tugas: Isilah parameter smtrcs untuk menentukan besarnya smoothing.
15
Befriko Murdianto
Gambar 9. Hasil smoothing dari penampang kecepatan di Gambar 8.
Poststack Time Migration Seperti telah diketahui, kita memerlukan migrasi untuk:
Memindahkan event-event ke posisi sebenarnya di bawah permukaan.
Mengoreks posisi dipping event sehingga akan memendek, makin curam dan berpindah ke atas.
Menghilangkan difraksi.
Meningkatkan resolusi lateral dengan mempersempit zona Fresnel.
Mendapatkan informasi kecepatan yang lebih akurat (jika dilakukan prestack).
Lihat Gambar 10, penampang zero offset memberikan gambaran yang salah mengenai lapisan miring, bahkan setelah koreksi NMO dan DMO. Event A’’ dan B’’ menjadi event A’ dan B’ pada penampang yang belum dimigrasi, sehingga memiliki kemiringan yang berbeda. Kemiringan ini disebut kemiringan semu (apparent dip) yang lebih landai daripada kemiringan sesungguhnya (true dip).
16
Befriko Murdianto
Gambar 10. Perbedaan antara kemiringan semu (apparent dip) dan kemiringan sesungguhnya (true dip) pada penampang zero offset.
Secara umum, migrasi dibagi menjadi 3 jenis berdasarkan metode utamanya:
Metode beda-hingga (finite-difference methods) – berdasarkan solusi diferensial dari persamaan gelombang akustik.
Metode integral (integral methods) – solusi integral dari persamaan gelombang akustik. Prinsipnya menggunakan penjumlahan amplitudo seismik di sepanjang difraksi hiperbola yang lengkungannya ditentukan oleh kecepatan medium.
Metode transformasi (transform methods) – menggunakan transformasi koordinat, umumnya menggunakan domain F-K.
Berikut ini adalah perbandingan antara beberapa algoritma migrasi berdasarkan metode di atas:
Name
Method
Comments
Finite-Difference
Downward continuation migrates in steps from receivers downwards
Can only handle dips up to 60 degrees Can handle minor lateral velocity variations Can handle low S/N
17
Befriko Murdianto
Kirchhoff
Based on diffraction summation. Uses Huygen’s principle
Can handle dips up to 90 degrees Cannot handle strong lateral velocity variations Poor when low S/N
F-K (Stolt, Phase-shift)
Converts to frequencywavenumber domain before migrating. Stolt can be used to perform residual migration
Can handle dips up to 90 degrees Generally poor at handling lateral velocity variations Poor when low S/N
F-X (Omega-X)
Type of Finite-Difference migration in the frequency domain
Can handle dips up to 90 degrees Can handle moderate velocity variations Each frequency can be processed separately Poor when low S/N
Script 012_Poststack_Migration.sh adalah script yang saya gunakan untuk melakukan poststack time migration dengan algoritma pergeseran fasa (phase-shift). #! /bin/sh # Phase-shift poststack migration # Input data and directories DATADIR=/local/lfs1/data/workshop/data INDATA=$DATADIR/cdp_dmo_velp2.su OUTDATA=$DATADIR/stack_migps.su VELDIR=/local/lfs1/data/workshop/vels VMIG=$VELDIR/stkvel2.sm2.bin # Migration parameters cdpmin=1 cdpmax=724 dxcdp=12.5 npad=50 taper=200 # Display parameters percentile=99 minclip=-0.5 maxclip=0.5 fx=1 dx=1 18
Befriko Murdianto
# Phase-shift poststack migration sustack <$INDATA | sumigps vfile=$VMIG dx=$dxcdp nxpad=$npad ltaper=$taper verbose=1 >$OUTDATA # Display suximage <$OUTDATA perc=$percentile wclip=$minclip bclip=$maxclip f2=$fx d2=$dx label1="Time (s)" label2="CMP" title="Phase-shift poststack migration" & exit Gambar 11 berikut ini adalah penampang stack hasil poststack time migration dengan menggunakan algoritma pergeseran fasa. Bandingkanlah hasilnya dengan penampang DMO stack. Terlihat bahwa migrasi telah menghilangkan difraksi dan membuat bentuk antiklin menyempit sesuai dengan teori. Selain itu terlihat pula bahwa event miring bergerak ke arah atas (up dip) dan memendek.
19
Befriko Murdianto
Gambar 11. Penampang stack hasil poststack time migration menggunakan algoritma pergeseran fasa.
20
Befriko Murdianto
Menampilkan Spektrum Setelah Stack Untuk keperluan migration preconditioning, kita akan menentukan rentang frekuensi yang akan kita gunakan pada data kita sebelum migrasi prestack. Tujuannya adalah agar pada saat migrasi kita tidak mengikutsertakan bising karena migrasi yang akan kita lakukan adalah migrasi sebelum stack sehingga sensitif terhadap bising. Untuk mengetahui rentang frekuensi dari data kita, saya menggunakan script 011_Poststack_Spectrum.sh di bawah ini. #! /bin/sh # Display poststack amplitude spectra # Define input data and directories DATADIR=/local/lfs1/data/workshop/data INDATA=$DATADIR/cdp_radon.su # Stack, make amplitude spectra and display sustack <$INDATA | sushw key=cdp a=1 | suspecfx | sustack | suop op=norm | suop op=db | suxgraph style=normal label2="Amplitude (dB)" label1="Frequency (Hz)" title="Amplitude spectra" linewidth=2 width=700 height=500 & Perhatikan di sini saya melakukan 2 kali stacking. Stacking yang pertama bertujuan untuk mendapatkan penampang stack, tetapi stacking yang kedua bertujuan untuk merata-ratakan spektrum dari masingmasing trace pada penampang stack kita. Karena itu sebelum stacking yang kedua, harga CMP perlu kita ganti seluruhnya menjadi satu harga (dalam hal ini harga CMP saya ganti menjadi 1 semua), lalu kita stack agar proses stackingnya bekerja. Gambar 12 adalah hasil keluaran dari script ini.
Gambar 12. Spektrum dari data stack sebelum migrasi.
21
Befriko Murdianto
Tugas: Tentukanlah rentang frekuensi yang akan Anda gunakan untuk migration preconditioning berdasarkan spektrum di atas.
Offset Binning dan Migration Preconditioning Sebelum melakukan migrasi prestack, kita perlu melakukan dulu offset binning dan migration preconditioning. Offset binning ini sebenarnya telah kita lakukan pada saat kita akan melakukan DMO, tapi di sini akan diperjelas lagi mengenai offset binning. Offset binning adalah pengelompokkan trace berdasarkan CMP bin masing-masing dalam satu offset (common offset). Untuk data 2D, tiap CMP memiliki 1 trace untuk satu offset, tapi untuk data 3D karena ada pengaruh cable feathering serta lintasan sumber dan penerima yang tidak benar-benar lurus, tiap CMP bin dimungkinkan untuk diisi lebih dari 1 trace untuk satu offset. Kemungkinan lain malah ada CMP bin yang kosong atau tidak terisi trace sama sekali. Input untuk migrasi mengharapkan setiap bin dalam common offset hanya diisi oleh satu trace, karena itu perlu sekali kita lakukan regularisasi dalam common offset untuk tiap-tiap CMP bin. Untuk kasus 3D hal ini tidak sesederhana 2D. Namun karena data yang kita gunakan untuk workshop adalah data 2D, maka di sini hanya akan dibahas mengenai offset binning untuk data seismik 2D. Perhatikan kembali distribusi offset data kita untuk CMP gathers di workshop 2. Dapat kita lihat bahwa pada saat first full-fold CMP dan CMP di sebelahnya, kita melihat distribusi offset sebagai berikut: CMP 119: 150, 200, 250, …, 3100 CMP 120: 175, 225, 275, …, 3125 Perhatikan bahwa sebenarnya trace pertama pada CMP 119 dan trace pertama pada CMP 120 berada pada kelompok offset (offset group) yang sama tetapi memiliki harga offset yang berbeda. Hal yang sama terlihat pula pada pasangan trace-trace berikutnya di CMP 119 dan CMP 120. Untuk menggabungkan trace pertama dari CMP 119 dan CMP 120, kita harus mengubah harga offsetnya menjadi tengah-tengah antara 150 dan 175, yaitu 162.5. Kemudian trace kedua dari CMP 119 dan CMP 120 menjadi 212.5, dan seterusnya hingga trace ke-60 menjadi offset 3112.5. Untuk melakukan hal tersebut, saya menggunakan script 011_Offset_Binning.sh berikut ini: #! /bin/sh # Offset binning and migration preconditioning # Input data and directories DATADIR=/local/lfs1/data/workshop/data INFILE=$DATADIR/cdp_radon.su OUTFILE=$DATADIR/offset.su VELDIR=/local/lfs1/data/workshop/vels VFILE=$VELDIR/stkvel.p1.iva # Define freqs for bandpass filter freqs=??? amps=0,1,1,0 # Offset binning
22
Befriko Murdianto
suchw <$INFILE key1=offset key2=offset d=50 | suchw key1=offset key2=offset a=-2 | suchw key1=offset key2=offset b=50 a=112.5 >$DATADIR/cdp_offbin.su # Apply wave-shaping factor correction, bandpass filter, inverse NMO and remove T^2 gain sufrac <$DATADIR/cdp_offbin.su phasefac=0.25 | sufilter f=$freqs amps=$amps | sunmo par=$VFILE smute=9999 invert=1 | sugain tpow=??? >$DATADIR/cdp_radon_nonmo.su # Sort to common-offset bin susort <$DATADIR/cdp_radon_nonmo.su offset cdp >$OUTFILE # Clean up rm $DATADIR/cdp_radon_nonmo.su $DATADIR/cdp_offbin.su exit Tugas: Tentukanlah rentang frekuensi sesuai pilihan Anda sebelumnya. Gunakan harga tpow negatif dari harga yang Anda gunakan pada saat dekonvolusi di workshop 1.
Prestack Time Migration Seperti telah disebutkan sebelumnya, migrasi prestack dapat memberikan informasi kecepatan yang lebih akurat. Karena itu, migrasi prestack dapat dilakukan secara iteratif dengan tujuan untuk memperbarui model kecepatan kita sehingga hasil migrasi menjadi semakin baik. Pada workshop ini kita akan melakukan 2 kali iterasi migrasi prestack untuk mendapatkan model kecepatan yang cukup baik. Pemilihan jumlah iterasi ini karena saya telah berhasil mendapatkan model kecepatan yang cukup baik dengan 2 kali iterasi migrasi prestack. Namun hal ini tergantung pula pada kualitas picking kecepatan kita. Karena input untuk prestack time migration tidak memerlukan DMO, maka model kecepatan yang akan kita gunakan untuk iterasi pertama adalah model kecepatan yang didapatkan dari analisis kecepatan yang pertama (Gambar 2). Script 013_Prestack_Migration_1st_Iter.sh adalah script yang saya gunakan untuk melakukan iterasi pertama dari prestack time migration menggunakan algoritma Kirchhoff. Script ini memerlukan waktu yang sangat lama untuk berjalan sehingga tidak dapat kita jalankan di workshop ini. #! /bin/sh # A script to run Kirchhoff PreSTM (1st iteration) # Input data and directories DATADIR=/local/lfs1/data/workshop/data INFILE=$DATADIR/offset.su OUTFILE=$DATADIR/offset_ktmig2d_1st.su VELDIR=/local/lfs1/data/workshop/vels VMIG=$VELDIR/stkvel1.sm2.bin # Migration parameters firstoff=162
23
Befriko Murdianto
lastoff=3112 offinc=50 fcdp=1 lcdp=724 dcdp=12.5 angmax=60 # Kirchhoff PreSTM on common-offset >$OUTFILE while [ $firstoff -le $lastoff ] do suwind <$INFILE key=offset min=$firstoff max=$firstoff | suktmig2d vfile=$VMIG fcdpdata=$fcdp firstcdp=$fcdp lastcdp=$lcdp dx=$dcdp angmax=$angmax verbose=1 >>$OUTFILE printf "Finish migrating offset $firstoff \n" firstoff=`expr $firstoff + $offinc` done exit Perhatikan di sini saya menjalankan prestack time migration untuk setiap offset group. Saya menggunakan perintah suwind untuk memilih satu offset group, lalu menjalankan migrasi dengan perintah suktmig2d. Setelah iterasi pertama dari prestack time migration selesai, Anda dapat melakukan analisis kecepatan lagi untuk mendapatkan model kecepatan yang lebih baik daripada sebelumnya. Hasil analisis kecepatan ini dapat Anda interpolasi dan haluskan kembali untuk mendapatkan model kecepatan yang lebih baik yang dapat Anda gunakan untuk iterasi kedua dari prestack time migration. Saya menggunakan script 014_CMP_Sort_after PSTM.sh untuk melakukan sorting dari common offset (output prestack time migration) ke CMP gather (input untuk analisis kecepatan). Script 014_IVA_after_PSTM.sh, 014_Velocity_Interp.sh dan 014_Velocity_Smoothing.sh adalah script yang saya gunakan untuk analisis kecepatan, interpolasi dan menghaluskan model kecepatan. Script-script ini tidak saya tampilkan di sini karena sama seperti sebelumnya. #! /bin/sh # Sort to CMP after PrSTM # Define input data and directories DATADIR=/local/lfs1/data/workshop/data INFILE=$DATADIR/offset_ktmig2d_1st.su OUTFILE=$DATADIR/cdp_ktmig2d_1st_nonmo.su VELDIR=/local/lfs1/data/workshop/vels INVEL=$VELDIR/stkvel.p1.iva # Filter and gain params freqs=??? amps=0,1,1,0 Tpow=??? Xmute=??? Tmute=???
24
Befriko Murdianto
# Sort to CMP and bandpass filter susort <$INFILE cdp offset | sumute tmute=$Tmute xmute=$Xmute | sufilter f=$freqs amps=$amps | sunmo par=$INVEL smute=9999 invert=1 | sugain tpow=$Tpow >$OUTFILE exit Tugas: Tentukanlah rentang frekuensi sesuai pilihan Anda sebelumnya. Gunakan harga tpow seperti yang Anda gunakan pada saat dekonvolusi di workshop 1 dan outside mute seperti stack Anda sebelumnya. Gambar 13 adalah hasil model kecepatan yang baru setelah interpolasi dan Gambar 14 adalah hasil smoothing model kecepatan di Gambar 13. Perhatikan bahwa sekarang saya berhasil mendapatkan model kecepatan yang lebih mendekati geologi sebenarnya, di mana saya bisa mendefinisikan batas dan bentuk kubah garam yang lebih akurat.
Gambar 13. Model kecepatan yang telah diinterpolasi dari hasil analisis kecepatan setelah prestack time migration.
25
Befriko Murdianto
Gambar 14. Hasil smoothing dari model kecepatan di Gambar 13. Kurva hitam adalah interpretasi dari bentuk kubah garam.
Apabila Anda telah mendapatkan model kecepatan yang memadai, Anda dapat menggunakan model kecepatan yang terbaru tersebut untuk melakukan iterasi kedua dari prestack time migration. Saya menggunakan script 015_Prestack_Migration_2nd_Iter.sh. Script ini sama persis seperti 013_Prestack_Migration_1st_Iter.sh, hanya saja model kecepatannya diganti dengan model kecepatan yang baru. Setelah selesai melakukan iterasi kedua dari prestack time migration, Anda dapat melakukan sorting ke CMP dan analisis kecepatan lagi untuk mendapatkan model kecepatan akhir yang akan kita gunakan untuk stacking. Gunakan script yang sama seperti sebelumnya untuk melakukan sorting dan analisis kecepatan. Gambar 15 adalah gambar CMP gathers hasil prestack time migration yang telah dikoreksi NMO menggunakan model kecepatan akhir dan Gambar 16 adalah penampang stacknya. Bandingkanlah penampang stack ini dengan penampang stack hasil poststack time migration di Gambar 11. Terlihat bahwa prestack time migration memberikan hasil yang jauh lebih superior dibandingkan poststack time migration untuk kasus data workshop ini. Hal ini terlihat dengan jauh berkurangnya difraksi yang masih terlihat pada penampang poststack time migration dan bentuk antiklin akibat kubah garam yang lebih mendekati bentuk geologinya. Terlihat pula bahwa prestack time migration mampu memberikan gambaran steeply dipping events dan reflektor di bawah kubah garam (subsalt reflector) yang jauh lebih baik daripada poststack time migration. Perbandingan lebih jelasnya dapat dilihat pada Gambar 17.
26
Befriko Murdianto
Gambar 15. CMP gathers setelah prestack time migration.
27
Befriko Murdianto
Gambar 16. Penampang stack hasil prestack time migration menggunakan metode integral (Kirchhoff).
28
Befriko Murdianto
Gambar 17. Zoom dari penampang stack poststack time migration (bawah) dan prestack time migration (atas). Daerah yang dilingkari menunjukkan peningkatan kualitas imaging dari prestack time migration.
29