Saturday, December 18, 2010

Advanced Seismic Unix Processing Part-3

PreStack Time Migration

Pada bagian ini saya akan menunjukkan bagaimana caranya melakukan PreStack Time Migration (PreSTM) untuk data Marmousi dengan Seismic Unix. Seismic Unix menyediakan fungsi suktmig2d untuk melakukan PreSTM dengan metoda Kirchhoff. Data input untuk PreSTM adalah RMS Velocity atau Average velocity atau Stacking Velocity serta data Seismic pada domain Common Offset.

Marilah kita gunakan data interval velocity dan data seismic yang sebelumnya saya gunakan di sini.

Oleh karena data kecepatan yang kita miliki adalah interval velocity, maka langkah pertama adalah melakukan konversi dari interval velocity menjadi Average Velocity.

Gunakan perintah berikut untuk mengkonversi format su menjadi ascii:
suascii < velocity.su bare=1 > velocity.ascii

Selanjutnya buatlah kode octave dengan gedit dan berilah nama rmsvelgen.m:

clear; clc
nocmp=574; %%no cmp veocity harus sama dengan no cmp seismic
nosamp=751; %%no samples
nocmporig=2301; %%no cmp origial pada model kecepatan (kita harus melakuka desimasi)
data1=load('velocity.ascii');
data2=reshape(data1,nosamp,[]);
ind=[4:4:nocmporig-4]; %% desimasi cmp
data3=data2(:,ind);

for i=1:nocmp
trace{i}=data3(:,i);
end

for j=1:nocmp
trace{j}=data(:,j);
trace{j}(1)=trace{j}(1);
for i=1:nosamp-1
trace{j}(i+1)=trace{j}(i)+trace{j}(i+1);
end
end

for j=1:nocmp
for i=1:nosamp-1
traceb{j}(i)=trace{j}(i)/i;
end
end

vel2=cell2mat(traceb');
vel3=vel2';
save -ascii velrms.txt vel3


Run kode octave di atas dengan mengetik rmsvelgen pada terminal octave.

Pada terminal linux, ketiklah perintah berikut untuk mengkonversi dari ascii ke binary:
a2b < velrms.txt > velrms.bin

Convert dari binary ke su, flip dan tampilkan lalu QC:
suaddhead ns=574 < velrms.bin | sushw key=dt a=4000 > velrms.su
suflip flip=0 < velrms.su > velrms1.su
mv velrms1.su velrms.su
suximage < velrms.su legend=1 &


Ubah menjadi binary kembali, lalu smoothing, batasi hingga t=2.75s (menghindari noise) dan QC dengan menampilkannya:

sustrip < velrms.su > velrms.h@ ftn=0
smooth2 < velrms.h@ n1=750 n2=574 r1=20 r2=20 > smoothvelrms
suaddhead ns=750 < smoothvelrms | sushw key=dt a=4000 > smoothvelrms.su
suwind < smoothvelrms.su > smoothvelrms1.su tmax=2.75
mv smoothvelrms1.su smoothvelrms.su
suximage < smoothvelrms.su legend=1 &


Setelah window ximage aktif, tekan huruf 'h' pada keyboard untuk mengubah skala warna.

Ubah kembali ke binary:
sustrip < smoothvelrms.su > smoothvelrms.h@ ftn=0

Untuk data seismik, lakukan sorting untuk membuat domain Common Offset dan membatasinya hingga t=2.75s

susort offset gx < data.su > data_co.su
suwind < data_co.su > data_co1.su tmax=2.75
mv data_co1.su data_co.su


QC Offset -800
suwind < data_co.su key=offset min=-800 max=-800 | suximage perc=90 title="offset -800m"


PreSTM dilakukan offset by offset, sehingga buatlah kode Bourne Shell untuk menjalankan PreSTM. Lakukan surange untuk mempelajari parameter-parameternya.

#!/bin/sh
##set -x
offsetmin=-2575
offsetmax=-200
offdist=25
filein=data_co.su
vfile=smoothvelrms.h@
#################################################
n=$offsetmin
while [ $n -le $offsetmax ]
do
suwind < $filein key=offset min=$n max=$n | suktmig2d vfile=$vfile dx=25 > data_pstm_co$n.su
n=$((n+$offdist))
done


Setelah kode Bourne Shell tersebut dijalankan, maka anda akan memperoleh hasil PreSTM untuk masing-masing offset.

Buatlah Kode Bourne Shell Berikut untuk melakukan penggabungan file Common Offset:

#!/bin/sh
##set -x
offsetmin=-2575
offsetmax=-200
offdist=25
fileout=data_pstm_co.su
echo "#!/bin/sh" >> gabung
echo "##set -x" >> gabung
echo "cat \\" >> gabung
n=$offsetmin
while [ $n -le $((offsetmax)) ]
do
echo "data_pstm_co$n.su \\" >> gabung
n=$((n+$offdist))
done
echo "| sushw key=tracl a=1 > $fileout" >> gabung


Setelah selesai jalankan sh gabung, sehingga diperoleh file data_pstm_co.su

Lakukan sorting data sehingga diperoleh cdp gather:
susort cdp offset < data_pstm_co.su > data_pstm_cdp.su

Lakukan QC sehingga diperoleh gambar berikut:
suwind < data_pstm_cdp.su key=cdp min=100 max=103 | suxwigb perc=90 &

Lakukan Mute:
sumute < data_pstm_cdp.su > data_pstm_cdp_mute.su xmute=-2575,-200 tmute=1.1,0.1 key=offset

Lakukan QC:
suwind < data_pstm_cdp_mute.su key=cdp min=100 max=103 | suxwigb perc=90 &

Lakukan Stacking untuk memperoleh hasil Stack PreSTM:
sustack < data_pstm_cdp_mute.su | suximage perc=90 &

Analisa kecepatan biasanya dilakukan pada interval CMP tertentu serta sampling waktu yang tidak beraturan. Untuk mengatasi hal ini, saya membuat kode Octave untuk melakukan interpolasi CMP serta regularisasi time sampling, sehingga hasilnya dapat digunakan untuk melakukan PreSTM.

clear; clc
nocmp=22; %%% katakanlah pada model Marmousi kita hanya melakukan analisa kecepatan untuk 22 cmp
cmpint=20; %%% dengan interval cmp=20
ts=0.004; %%%sampling waktu
tmin=0; %%%waktu t0
tmax=3-ts; %%%waktu maksimum pada data Marmousi awal
cmp1=100; %%%CMP pertama dari analisa kecepatan
cmp2=520; %%%CMP terakhir dari analisa kecepatan
cmp1x=1; %%%CMP awal pada seismik
cmp2x=574; %%%CMP akhir pada seismik
ns=750; %%%jumlah sample pada data seismik

%File dari hasil analisa kecepatan atau Velocity Picker,
%hapus 2 baris pertama, tnmo=, vnmo=, dan \ (spasi \).
%dengan demikian filenya bisa dibaca oleh octave

fid=fopen('vpick.txt','rt');
for i=1:(nocmp*2)
line=fgets(fid);
tv{i}=str2num(line);
end

for i=1:nocmp
time{i}=[tmin,tv{i*2-1},tmax];
end

for i=1:nocmp
a=size(tv{i*2})(1,1); b=size(tv{i*2})(1,2);
vel{i}=[tv{i*2}(a),tv{i*2},tv{i*2}(b)];
end

%interpolasi dan regularisasi
tnew=[tmin:ts:tmax];

for i=1:nocmp
vnew{i}=interp1(time{i},vel{i},tnew);
end

vall=cell2mat(vnew');
vel1=vall';

velearly=repmat(vel1(:,cmp1x),1,(cmp1-cmp1x));
vellast=repmat(vel1(:,nocmp),1,(cmp2x-cmp2));

for i=1:ns
valhornew{i}=interp1([cmp1:cmpint:cmp2]', vall(:,i),[cmp1:cmp2]');
end

velmid=cell2mat(valhornew);
vel2=velmid';

velocity=[velearly,vel2,vellast];
save -ascii velocity.txt velocity


Lakukan proses di atas untuk melakukan smoothing dan konversi ke binary.
Gambar berikut adalah RMS Velocity dengan interpolasi dari hasil analisa kecepatan.

No comments: