User Manual SIMULPS12 (Bahasa Indonesia)
disclaimer : Ini merupakan tutorial cara menggunakan software simulps12.f (yang sudah di modifikasi) dan mempersiapkan data input yang akan digunakan pada simulps12.f. Jika menggunakan software ini jangan lupa untuk mensitasi (Evans, J.R., Eberhart-Phillips, D., Thurber, C.H., 1994. User’s Manual for SIMULPS12 for imaging VP and VP/VS: a Derivative of the Thurber Tomographic Inversion SIMUL3 for Local Earthquakes and Explosions. US Geological Survey Open File Report OFR 94-431, p. 101.)link
Sebelum memulai menjalan program ini, silahkan menginstall beberapa dependecies dari python library yang diantaranya: pyproj, numpy, dan beberapa library standar python2/python3
Sebelum memulai mempersiapkan data input terlebih dahulu silahkan download simulps12.f
dan file pendukungnya (simulps_common.inc
dan velfile.33tq1c
) yang telah saya modifikasi beberapa fungsinya sehingga dapat digunakan pada modern Linux pada tautan berikut ini.
Ketiga file tersebut harus disimpan pada satu folder yang sama untuk memudahkan proses compiling. File simulps12.f
merupakan program utama yang berisi semua algoritma dan proses local earthquakes tomography dalam bahasa fortran77
, sedangkan simulps_common.inc
merupakan parameter-parameter grid-nodes dan banyaknya stasiun serta gempa maksimum pada input. File ini (simulps_common.inc
) dapat diedit sesuai dengan kebutuhan pengguna.
Pembuatan file earthq.dat
Selanjutnya akan saya jelaskan bagaimana untuk membuat file input serta meng-compile pada sistem linux-mac juga sepertinya juga bisa- (non-windows). Pertama-tama persiapkanlah data hasil penentuan lokasi gempa seperti pada contoh berikut ini:
yearmonthdayhourminutes | year-month-day | hour | minutes | seconds (origin time) | UTMY(km) | UTMX(km) | depth(km) | Vp/Vs | azimuth gap(degree) |
201810142252 | 2018-10-14 | 22 | 52 | 27.001 | 7203.24500 | 589.305 | 000.1234 | 1.73 | 120 |
201810152011 | 2018-10-15 | 20 | 11 | 46.460 | 7200.15900 | 588.953 | 015.2345 | 1.8 | 190 |
201810161421 | 2018-10-16 | 14 | 21 | 23.387 | 7188.16700 | 500.398 | -3.3456 | 2.0 | 200 |
Namakan file diatas dengan origin_time.txt
tanpa menyertai header file.
Num Event | yearmonthdayhourminutes | station | year | month | day | hours | minutes | arrival P(s) | arrival S(s) |
1 | 1210142052 | B21 | 2012 | 10 | 14 | 20 | 52 | 28.09 | 28.851 |
1 | 1210142052 | B22 | 2012 | 10 | 14 | 20 | 52 | 28.344 | 29.340 |
1 | 1210142052 | B23 | 2012 | 10 | 14 | 20 | 52 | 28.434 | 29.449 |
2 | 1210152111 | B18 | 2012 | 10 | 15 | 21 | 11 | 49.999 | 52.622 |
2 | 1210152111 | SP1 | 2012 | 10 | 15 | 21 | 11 | 50.043 | 52.569 |
2 | 1210152111 | B21 | 2012 | 10 | 15 | 21 | 11 | 50.121 | 52.533 |
2 | 1210152111 | B23 | 2012 | 10 | 15 | 21 | 11 | 50.358 | 52.962 |
2 | 1210152111 | B09 | 2012 | 10 | 15 | 21 | 11 | 51.247 | 54.722 |
Namakan file diatas dengan nama file arrival_time.txt
. Data di atas merupakan data dummy.
Setelah menyimpan kedua files tersebut, silahkan untuk menjalankan code dibawah ini: catatan: untuk perubahan lokasi UTM48S dapat dilakukan dengan melihat disini.
Program diatas dapat di copy kedalam IDE python2/python3 yang anda miliki. Selanjutnya anda akan membuat file input simulps12.f
yaitu earthq.dat
. Ketiga file diatas akan digunakan sebagai input pembuatan earthq.dat
. Untuk membuat file earthq.dat
bisa dengan menjalankan program dibawah ini.
Setelah file earthq.dat
selesai, selanjutnya adalah melihat pada bagian akhir dari file tersebut. Jangan lupa untuk menambahkan 0 + 4spasi + 3enter (lihat tipikal format pada bagian sebelum baris terakhir) seperti yang ditunjukkan pada gambar dibawah ini:
menjadi seperti berikut:
Pembuatan file velocity.dat
Selanjutnya adalah pembuatan file model kecepatan atau velocity.dat
sebagai input kecepatan dari simulps12.f
. Adapun hal-hal yang perlu diperhatikan sebelum membuat model kecepatan, diantaranya:
- Sebelum menentukan parameter grid, yang mengandung kecepatan 3 dimensi, terlebih dahulu harus dilihat persebaran stasiun dan hiposenter awal. Hal ini dilakukan untuk menentukan daerah yang akan dibuat tomografi kecepatannya secara detail. Selain itu agar dapat menentukan hiposenter yang tidak dimasukkan kedalam hitungan.
- Grid nodes harus melingkupi semua hiposenter, jika tidak akan terjadi error pada
fort.16
(file history dari proses) yang menyebutkan bahwa relokasi hiposenter berada diluar grid nodes. Batas akhir dari grid nodes juga diharapkan tidak terlalu dekat dengan hiposenter terluar. - Segmentasi grid harus masuk akal dan tidak terdapat perubahan yang signifikan pada grid sebelahnya. Contoh: terdapat 5 grid kedalaman, segmentasi kedalamannya (-2, 0, 1, 1.1, 5) . Jika hal tersebut terjadi maka akan terjadi “segmentation error”. Segmentation error ini dapat diselesaikan dengan merubah grid nodes.
Berikut adalah script untuk membuat model kecepatan.
Pembuatan file stations.dat
Setelah 2 files utama (earthq.dat
dan velocity.dat
) telah selesai, selanjutnya adalah membuat file stations.dat
. Format file dari stations.dat
adalah sebagai berikut:
- Baris 1: titik pusat system dan rotasi dari koordinat system. Sebelum dirotasi, sumbu y sebagai arah utara and sumbu x kearah barat (sumbu z mengarah ke bawah, oleh karena itu
simulps12.f
menggunakan hukum tangan kanan). Letakkan titik dimanapun yang sekiranya masuk akal dengan distribusi stasiun (biasanya diletakkan tepat di tengah-tengah sistem grid).
- Terdiri dari:
-
- ltdo, oltm – North latitude ( o , ’ ) (oleh karena itu selalu ditulis dalam koordinat positif)
-
- lndo, olnm – west longitude ( o, ‘ ) (oleh karena itu selalu ditulis dalam koordinat positif)
-
- rota – sudut rotasi, searah jarum jam (o). Yang dapat merotasi semua sistem koordinat.
- Baris 2: nsts – jumlah stasiun yang digunakan Stasiun ditulis dengan urutan kesamping berturut-turut: nama stasiun, latitude( o, ‘ ), longitude ( o, ‘ ), elevasi (m), koreksi stasiun vp, koreksi stasiun untuk vp/vs, dan “flag” (0 membiarkan berpindah selama proses inversi, 1 untuk menjaganya konstan).
Program simulps12.f
ditulis dalam bahasa fortran yang artinya sangat sensitif dalam hal porsi dimensi panjang desimal yang akan dibaca (format banyaknya desimal yang akan dibaca dapat dilihat pada user manual yang asli). Sehingga pada stations.dat
terdapat hal-hal yang perlu diperhatikan. Untuk mempermudahnya saya ilustrasikan seperti pada gambar dibawah ini:
1 titik berwarna merah mengindikasikan 1 spasi (perhatikan 3 spasi paling bawah itu merupakan bagian yang penting)
jangan lupa untuk merubah format (encoding file) dari file text (khusus pengguna windows) file windows menggunakan format CRLF
sedangkan linux adalah LF
. Ubahlah format file tersebut menjadi LF
. Sebagai ilustrasi seperti yang ditunjukkan pada gambar dibawah ini:
menjadi seperti berikut:
Pembuatan file control.dat
Berikutnya adalah membuat file control.dat
yang berisikan parameter inversi yang akan digunakan pada saat proses inversi. Format penulisan file control.dat
dapat dilihat pada gambar dibawah ini:
Penulisan angka parameter input sebelah kiri dan keterangan control ada disebelah kanan secara berurutan.
Berikut merupakan penjelasan pada setiap baris:
Baris pertama:
- neqs = jumlah gempa/event mikroseismik dalam dataset
- nshot = jumlah shot pada dataset (jika pasif seismik ditulis 0)
- nblast = jumlah blast (jika lokasi event diketahui namun origin time tidak diketahui)
- wtsht = bobot dari shot relative terhadap gempa
- kout = output file parameter
- kout2 = printout untuk fort 16
- kout3 = output control parameter
kout | File output | ||||||||
---|---|---|---|---|---|---|---|---|---|
0 | 16* | 26 | |||||||
1 | 16* | 13 | 26 | ||||||
2 | 16* | 13 | 22 | 23 | 24,28+ | 26 | |||
3 | 16* | 13 | 22 | 23 | 24,28+ | 34 | 26 | ||
4 | 16* | 13 | 22 | 23 | 24,28+ | 25 | 34 | 26 | |
5 | 16* | 12 | 13 | 22 | 23 | 24,28+ | 25 | 34 | 26 |
fort.16
berisi histori perhitungan yang dilakukansimulps12.f
, jika terjadi error pada saat program dijalankan dapat dilihat permasalahannya pada file ini.- +
fort.28
terbentuk saat data mengandung blast. fort.22
tidak akan terbentuk jika “invdel = 0”fort.15
danfort.19
, lihat kout3 selanjutnya. Terbentuk saat kout3=1fort.18
terbentuk ketika terdapat nodes yang dibiarkan tetapfort.20
, lihat kout2 selanjutnya. Terbentuk saat kout2 bernilai 0 atau 1fort.45
, lihat kout2 selanjutnya. Terbentuk saat ires ≥ 2 dan kout2=5
kout2 | File output |
---|---|
0 | Full printout, termasuk residual stasiun dan relokasi tiap step |
1 | Print hanya residual stasiun.++ |
2 | Print lokasi event tiap step |
3 | Jangan print relokasi atau residual stasiun |
4 | …juga jangan print stasiun |
5 | …lakukan output 1/diag(C) ke fort 16 dan fort 45 jika ires > 0 |
kout3 | File output |
---|---|
0 | Jangan buat output point raypath atau perbedaan traveltime |
1 | Output raypath point ke fort 15, untuk semua raypath. |
Baris kedua:
- nitloc = jumlah maksimum dari iterasi untuk relokasi hiposenter
- wtsp = untuk solusi hiposenter, bobot dari residual ts-tp relative terhadap residual tp (contoh. Wtsp=1. memberikan bobot yang sama untuk ts-tp dan tp, sedangkan wtsp<1 memberikan bobot ts-tp yang lebih kecil dari tp)
- eigtol = singular value decomposition (SVD) cutoff dari penyesuaian hiposenter. Jika nilai terendah eigenvalue dari matrix Geiger < eigtol, maka perubahan kedalaman tidak akan disesuaikan dan catatan akan ditulis pada
fort.16
- rmscut = nilai dari RMS residual bawah yang mana jika nilai residual dibawah nilai RMS penyesuaian hiposenter akan dihentikan
- zmin = kedalaman hiposenter minimum (nilai negative untuk elevasi diatas msl namun dibawah permukaan tanah). Diatur agar berada di atas stasiun tertinggi untuk menghindari “airquakes”.
- dxmax = penyesuaian hiposenter secara horizontal yang diperbolehkan untuk tiap iterasi dalam km
- rderr = estimasi dari error picking ( biasanya pada rentang 0.01-0.05s). Digunakan untuk mengestimasi error hiposenter.
- ercof = untuk error perhitungan hypoinverse. Set 0.0<ercof<1.0 untuk memasukkan RMS residual pada estimasi error hiposenter
Baris ketiga:
- nhitct = DWS minimum untuk parameter yang dimasukkan kedalam inversi (biasanya ≥5)
- dvpmx = penyesuaian vp maksimum yang diperbolehkan untuk tiap iterasi
- dvsmx = penyesuaian vs maksimum yang diperbolehkan untuk tiap iterasi
- idmp = 1 untuk menghitung ulang nilai damping tiap iterasi (adaptive damping), 0 untuk menjaga nilai damping tetap.
- vpdamp = parameter damping vp pada inversi kecepatan
- vsdamp = parameter damping vs pada inversi kecepatan
- stadamp = parameter damping stasiun pada inversi kecepatan (delay stasiun)
- stepl = step length (km) yang digunakan untuk menghitung turunan parsial sepanjang raypath
Baris keempat:
- ires = control perhitungan dari R dan C
- i3d = “flag” untuk menggunakan raytracing pseudo-bending
- nitmax = jumlah iterasi maksimum pada inversi kecepatan. Untuk menghitung hanya lokasi hiposenter set nitmax=0. Jika nitmax = -1, travel time sintetik dihitung berdasarkan raytracing yang digunakan pada input awal.
- snrmct = nilai cutoff untuk solusi norm. simulp12 akan menghentikan iterasi jika nilai norm lebih kecil dari snrmct
- ihomo = biasanya, ihomo=1 jika kecepatan awal dimulai dengan 1-D model dan ihomo=0 jika kecepatan awal yang digunakan 3-D.
- rmstop = RMS global untuk menghentikan iterasi.
- ifixl = jumlah inversi kecepatan untuk menjaga hiposenter tetap pada posisinya
ires | Hasil |
---|---|
0 | Tidak ada resolusi perhitungan |
1 | Menghitung resolusi dan menghasilkan elemen diagonal. |
2 | Output, ke fort.17 , resolusi keseluruhan |
3 | Menghitung resolusi pada iterasi pertama saja |
i3d | Hasil |
---|---|
0 | Tidak menggunakan pseudo-bending |
1 | Menggunakan pseudo-bending hanya pada forward modeling untuk menghitung turunan parsial dari kecepatan |
2 | Menggunakan pseudo-bending pada penentuan lokasi gempa |
3 | Menggunakan pseudo-bending dengan mengabaikan curvature dibawah lapisan Moho |
Baris kelima:
- delt1, delt2 = bobot jarak episenter untuk semua bagian dalam inversi
- res1, res2, res3 = pengaturan bobot sebagai fungsi dari residual. Nilai res1 dan res2 harus linear begitu pula dengan res2 dan res3. catatan: res3 harus diset sangat besar (contohnya 5)
Baris keenam:
- ndip = jumlah sudut rotasi (dari -90o sampai 90o) dari bidang yang mana ray akan mencari jalan tercepat.
- iskip = jumlah dari sudut rotasi yang dihidari (skip) baik secara horizontal maupun vertikal. Contoh: ndip=9 dan iskip=3 melewatkan 1 bidang vertikal dan 2 horizontal pada sudut 22.5o.
- scale1 = mengatur panjangnya perubahan tiap iterasi saat perhitungan travel time (km). Atur sedemikian hingga tidak lebih besar dari spasi grid nodes terkecil.
- scale2 = skala (dalam km) untuk jumlah jalan yang dilewati oleh raytracing (interval antara pembengkokkan dalam ray). Jika nilai scale2 kecil, maka jumlah kemungkinan raypath yang dilewati makin besar konsekuensinya waktu pemrosesan data menjadi lebih lama
Baris ketujuh:
- xfac = perbaikan faktor kekonvergenan untuk pseudo-bending. Nilai yang disarankan 1.2≤xfact≤1.5
- tlim = perbedaan traveltime yang digunakan untuk menghentikan perhitungan (gunakan 0.0005≤tlim ≤0,002s)
- nitpb = jumlah maksimum dari iterasi yang diperbolehkan untuk pseudo-bending (gunakan antara 5-10).
Baris kedelapan:
- iusep = 1 untuk menginversi tp ke vp. 0 untuk mencegah inversi vp
- iuses = 1 untuk menginversi ts-tp ke vp/vs. 0 untuk mencegah inversi vp/vs
- invdelay = 1 untuk menginversi ke delay stasiun. 0 untuk mencegahnya
Menjalankan program simulps12.f
Sebelum mulai menjalankan program (compiling), terlebih dahulu pastikan semua file input (control.dat
, velocity.dat
, earthq.dat
, stations.dat
, simulps12.f
, simulps_common.inc
, dan velfile.33tq1c
) berada pada 1 folder yang sama.
Compile semua file menjadi 1 (dapat dioperasikan pada ubuntu 16.04 dengan gfortran, gcc 5.4.0).
Setelah semua file tersebut ter-compile maka jalankanlah file eksekusi out.file
Jika program telah selesai melakukan perhitungan, hasil relokasi hiposenter dan inversi kecepatan dapat dilihat pada fort.16
atau fort.23
berturut-turut untuk selanjutnya dilakukan plotting.
Mohon maaf atas ketidak-rapian postingan ini. Akhir kata selamat mencoba, jika ada pertanyaan silahkan menghubungi hendrawan.palgunadi@gmail.com