Programming

Inversi Data Gravitasi Compact Sederhana dengan menggunakan MatLab (part 2. Inverse Thingy)

7:03:00 PM Leo Cahya D 2 Comments

Hello Digital World,

Kemarin(dulu banget) udah bahas forward modelling gravity, terus inversinya? 

Karena ada banyak metode kemarin iseng bikin yang menggunakan metode Very Fast Simulated Annealing (VFSA) dan metode inversinya dari si Last & Kubik. Well, hasilnya kira-kira begini :

Data Model :


Inversi VFSA :
 

Inversi Last & Kubik :






Iseng-iseng nyoba pakai yang stokastik untuk inversi gravity, yah VFSA-nya lumayan juga lah :/
Ini baru model kotak, kalau model kompleks lebih baik jangan pakai yang stokastik deh karena emang dasarnya profil anomali gravitasi itu bisa mewakili banyak model. Still, memakai cara L&B pun masih perlu dimodifikasi lagi dengan minimisasi fungsi seperti volum, momen inersia dll agar bisa meng-inversi-kan bentuk model yang lebih spesifik.

Well that's it.

See ya,

L.


2 comments:

Programming

Inversi Data Gravitasi Compact Sederhana dengan menggunakan MatLab (part 1. Forward Modelling)

5:51:00 AM Leo Cahya D 0 Comments

Hello Digital World,

Wow, lama gak update nih, lagi digalaukan dengan ketidakjelasan status saya setelah lulus dari kuliah. Mau dibilang pengangguran bukan, pekerja tetap juga bukan. Well, lupakan curcol saya hehe..

So, what I have been up to?
Saya masih bolak-balik kampus, selain jadi pegawai honorer untuk riset, saya juga nyambi membantu bapak/ibu S3 membuatkan program untuk kelengkapan riset mereka (C, Fortran, mostly Matlab ). Banyak hal yang saya pelajari seperti filter data Induced Polarization, Simulasi Numerik 3D seismik ,Geometeri Seismik, Poroelastisitas Batuan, dan salah satunya yang paling menarik Global Optimization aka inversi.

Sampul Depan
This book is super awesomeee


Saya belum pernah ada sama sekali pengalaman dalam metode inversi dan baru belajar minggu-minggu ini karena request dari salah satu klien which somehow i accepted it boldly. Yet, somehow i did it, haha :)
Terimakasih untuk om Sen dan Stoffa deh. Bukunya enak dibaca.

Oke, jadi kemarin bagaimana cara membuatnya?
Yang jelas inversi itu mengulang perhitungan hasil forward modelling dengan mengganti modelnya sehingga selisih data sintetik dari forward modelling dengan data lapangan, so yang pertama tetap kita harus membuat program forward modelling-nya dahulu. Kalau saya pakai metode di papernya (Last, and Kubik,. (1983)).

Hasilnya kurang lebih seperti ini :





And here's the code :



See ya,
-L

0 comments:

Seismic Processing,

Install Seismic Un*x di windows menggunakan Cygwin

7:19:00 AM Leo Cahya D 7 Comments

Hello Digital Worlds,

Kebanyakan problem kita saat mau memakai beberapa software geofisika itu support OSnya yang kebanyakan berbasis Linux. Beberapa orang yang kadang males karena sudah terbiasa memakai windows (seperti saya, males je wis jatuh cinta sama windows xp) menggunakan program seperti Cygwin dan Vmware untuk menjalankan program2 tsb..

Oke langsung to the point aja.. Gimana sih cara installnya di cygwin?

1. Siap-siap file, folder, dan alamat direktorinya.
- Yang jelas softwarenya didownload dulu. Kalau belum pindah alamatnya ya di sini .
- Taruh pada folder baru misal bernama "seismicunix" di direktori anda pada cygwin di C:\cygwin\home\(nama_user)*.
(nama user) disini nama usermu, misal dikomputer saya direktorinya C:\cygwin\home\leo\seismicunix\

- Buka CygwinX -> pilih X Win Server. Ekstrak pada cygwin terminal dengan perintah
$ tar -xvf cwp_su_all_43R3.tgz -C /home/(nama_user)/seismicunix

2. Edit bashrc dan makefile.config
- Kembali ke windows explorer, buka file .bashrc pada direktori windows C:\cygwin\home\(nama_user) dengan text editor (notepad, etc.)
- tambahkan baris terakhir pada file tersebut dengan alamat install seismic unix seperti pada contoh berikut :
export CWPROOT=/home/leo/seismicunix  <- misal untuk komputerku
export PATH=$PATH:$CWPROOT/bin
Lalu save.

- Setelah itu edit isi makefile.config pada direktori C:\cygwin\home\(nama_user)\seismicunix\src dengan perintah di bawah ini :
 

3. Installing
- Balik ke CygwinX, masuk ke folder /src pada direktori seismic unix.
$ cd /home/(nama_user)/seismicunix/src
- Install dengan perintah-perintah berikut, accept, accept, minum kopi, yes, yes, etc sabar tunggu sampai tiap program selesai :
$ make install
$ make xtinstall
$ make finstall
$ make mglinstall
$ make utils
$ make xminstall
$ make sfinstall
 
- Loh kok error? Kembali ke Windows Explorer (lagi), buka file text "stdio_s.h" pada C:\cygwin\home\(nama_user)\seismicunix\src\Sfio\src\lib\sfio\Stdio_s . Pada baris ke delapan ubah tulisan
dari :
typedef struct _sfio_s        *__FILE;
menjadi :
 /*typedef struct _sfio_s *__FILE;*/

Setelah itu save. Kembali ke CygwinX, jalankan kembali perintah :
$ make sfinstall
 
- Loh kok masih error!? Sabar. Kembali lagi ke Windows Eksplorer, buka file text "sfstdio.h" pada C:\cygwin\home\(nama_user)\seismicunix\src\Sfio\src\lib\sfio\Stdio_b . Pada baris ke tigapuluh ubah tulisan
dari :
typedef FILE  *__FILE;
menjadi :
/*typedef FILE        *__FILE;*/

Setelah itu save. Kembali ke CygwinX, jalankan kembali perintah :
$ make sfinstall
- BAM! You did it. Untuk mengetest apakah program berjalan silahkan close cygwin lalu buka kembali CygwinX-nya. Tulis perintah :
$ suplane | suximage title="Cie yg bisa nginstalll"
 akan muncul seperti ini:
 
Kira-kira begitu sih, simpel kan? :) 
Semoga bermanfaat ya..
nb: untuk tutorial pengolahan bisa dilihat di ensiklopedi seismik milik Agus Abdullah, Phd
See ya,
L

7 comments:

Event,

Lama tidak update...

8:07:00 AM Leo Cahya D 0 Comments

Hi Digital Worlds..

So, lama gak ngurusin ini blog karena....

Saya sibuk simulasiin model elastik ini :




Pakai ini :

Supaya secepet ini :



Terus akhirnya ini :



Dan bisa main ini (lagi) :


Haha.. :P
Akhirnya selesai sudah.. Mungkin beberapa saat lagi blog ini saya isi tentang komputasi paralel juga menggunakan GPU.

So, see ya.. it's neeeerd timeeeee.

0 comments:

Programming,

(MATLAB) Surf Peta Topografi Skala Continental

8:18:00 PM Leo Cahya D 0 Comments

Hello Digital World,

Jadi inget dulu Prof Kirbani pernah menugaskan pada kami untuk mengeplot posisi gempa pada suatu map benua. Pada saat itu USGS masih ada fitur untuk menghasilkan peta ini secara otomatis. Gak tahu kenapa sejak tahun 2011 fitur itu sudah raib dari situs USGS. Jadi bingung deh kemarin waktu angkatan 2011 metkom mencari petanya di mana.

kira-kira peta hasil USGS ya seperti ini...

Ok, so bagaimana caranya dapat peta dengan skala continental? Salah solusinya kita dapat menggunakan data digital elevation model (dem). Karena yang kita butuhkan peta skala continental maka data dem-nya pun tidak perlu sampai ketelitian yang kecil (kira-kira 1:2000000 sudah cukup).

Setelah lurking di mbah google, data yang cocok untuk digunakan adalah data TerrainBase. Apa itu terrainbase? TerrainBase is a global model of terrain and bathymetry on a regular 5-minute grid (approximately 10 km resolution). It is a compilation of the public domain data from almost 20 different sources, including the DCW-DEM and ETOPO5 (sumber). Anda dapat mengambil data terrainbase dengan perintah 'tbase' tapi sebelumnya harus mengunduh data tbase.bin dari link ini.

Bagaimana jika kita ingin membuat peta topografi benua amerika? misal seperti peta di atas? Caranya kita tentukan dulu titik-titik pojok peta tersebut berapa minimum maximum longitude dan latitude-nya. Selain itu resamplingnya / scale factornya, tergantung kebutuhan, makin besar maka resolusi peta akan makin rendah. kira-kira listing matlabnya seperti ini:

kenapa saya lakukan filter2 diatas? karena saya ingin melakukan smoothing pada data topografi tersebut :) (dengan mengorbankan presisi datanya juga).  Karena ke-presisi-an data elevasi saya tidak terlalu butuhkan dalam membuat peta ini. Coba anda bandingkan antara figure 1 dengan figure 2. 



Oke sekian postingan dari saya, semoga bermanfaat.

See ya,
L


0 comments:

Event,

Progress (demo), Tugas Sesi Kelas VES Fieldcamp

5:39:00 AM Leo Cahya D 0 Comments

Hello Digital World,

Jadi hari ini habis ada sesi kelas fieldcamp tentang VES (bukan game Persona 3, apalagi sepakbola) alias Vertical Electrical Sounding. Setelah sesi kelas selesai langsung dikasih tugas mengolah data 8 titik menggunakan software Progress. Kira-kira datanya seperti ini :



Nah, nyebahi-nya format input file Progress itu seperti ini:


Kalo 1 titik kan cuma tinggal enter-enter selesai, lah kalau banyak titik kan males (emang dasarnya saya orangnya pemales --"). Jadinya saya buat listing di matlab kira-kira begini :


Oke, file .ind input Progress pun keluar. Tapi kok di-open gak keluar ya!!?


Ternyata eh ternyata setelah dicek menggunakan notepad++, file yang kita keluarkan dari matlab otomatis ber-format UNIX --". Jadi ya kalau mau berformat DOS/windows kita ubah sedikit programnya jadi begini:


Hore keluar! :)

Sekian deh untuk hari ini hehe..

See ya,

L

0 comments:

Responsi Metode Komputasi C++ (Gelombang 4)

2:12:00 AM Leo Cahya D 0 Comments

Hello Digital World,

Ya kira-kira seminggu yang lalu ada responsi metkom untuk adek2 angkatan 2012. Well angkatan ini mayoritas pinter dalam problem solving-nya (ada sih 2 orang yang nyotek tapi sudah saya laporkan ke dosen).. sampai saya juga sedikit menyesal ngasih soal yang terlalu gampang untuk adik-adiknya hehe..



Hehe langsung to the point aja ya..

1. Level Pemanasan 
Sepertinya semuanya sudah tau, ini gampang sekali.. tinggal dibuat saja programnya
Luas bangun yang berbayang-bayang adalah.....
Luas bangun datar disamping dapat dicari dengan luas persegipanjang - (luas ½ lingkaran + luas segitiga)
Luas persegipanjang :
Luas = p x l = 10 cm x 8 cm = 80 cm persegi
Luas 1/2 lingkaran = 1/2  x Ï€r² = 1/2 x 22/7 x 3,5 cm x 3,5 cm
                                 = 1/2 x 38,5 = 19, 25 cm persegi
Luas segitiga = 1/2 x alas x tinggi =  1/2 x 4,5 cm x 10 cm = 1/2 x 45 cm
                        = 22,5 cm persegi
Luas gabungan = 80 cm -(19,25 cm + 22,5 cm²
                           = 80 cm² - 41,75 cm²
                           =  38, 25 cm persegi 
(sumber : http://mastugino.blogspot.com/2012/12/soal-luas-gabungan-bangun-datar_8.html )

2. Level Agak Panas

3. Level Panas

See ya,

L

0 comments:

Seismic Processing,

Interactive Muting pada Seismic Un*x

12:39:00 AM Leo Cahya D 0 Comments


Disclaimer: banyak istilah, arti, dan hal-hal lain yang saya rubah arti atau pengertiannya sehingga kadang tidak seperti arti sebenarnya. Tujuan saya melakukan itu untuk memudahkan pembaca dalam memahami isi dari post-post seperti ini. ”

Setahun terakhir saya sedang tertarik dengan yang namanya prosessing seismik karena ingin melihat kecocokan model yang dibuat pada SPECFEM-nya Komatitsch and Martin dengan hasil forward modellingnya. Well, minimnya pelatih di Laboraturium Paradigm dan kadang error juga software Echos-nya  memaksa saya beralih menggunakan seismic un*x dalam hal pengolahan. Selain open source, tutorialnya pun banyak di internet, untuk yang bahasa Indonesia dapat dilihat di ensiklopedi seismik milik Agus Abdullah, P.hd. (terima kasih untuk ilmu dan inspirasi dari blog beliau)

Muting merupakan salah satu tahap dalam pengolahan data seismik untuk menghilangkan noise gelombang langsung dengan cara merendahkan bahkan bisa dengan membuat nilainya menjadi nol pada matriks yang kita tunjuk sebagai gelombang langsung.  Pada seismic un*x perintahnya adalah sumute. Kekurangannya disini kita harus memasukkan satu persatu matriks yang akan kita mute. Tentu akan lebih mudah lagi jika kita melakukan muting dengan cara interaktif seperti pada software-software terkenal (contoh: Echos Paradigm, dll) bukan?

Pada seismic un*x sebenarnya sudah ada contoh pada demo untuk muting tapi hanya sekedar untuk contoh data suplane. Oleh karena itu saya buat bashscript interactive muting untuk data dengan shot banyak (baik untuk yang tipe split spread shot juga).

Langkah-langkahnya :
1. Taruh program ini pada file data berada. Edit parameter di dalam file mutepick sesuai dengan parameter data anda. Jalankan sh mutepick pada terminal. Lalu pick titik-titik garis mute-nya.




Sebelum muting

Setelah muting


























2. Setelah preview hasil pick mute anda untuk 1 shot ditampilkan dan hasilnya OK, sekarang run program octave/matlab mute_parring.m
3. Setelah file par dibuat menggunakan kode octave/matlab di atas, selanjutnya kita aplikasikan dengan bash script muteit berikut:
4. Setelah itu lanjutkan saja perintah setelah mute it berjalan

Setelah perintah dari program terakhir dijalankan maka data anda setiap shot sudah diberlakukan muting. Kira-kira begitu saja postingan saya. InsyaAllah untuk berikutnya saya akan menceritakan tentang interactive velocity picking menggunakan bashscript di seismic unix.

see ya,
L

0 comments:

C++,

Tutorial Pemrograman 2 : Algoritma, Alur Jalan Program, Aritmatika, pokoknya dasar..

11:58:00 PM Leo Cahya D 0 Comments


Disclaimer: banyak istilah, arti, dan hal-hal lain yang saya rubah arti atau pengertiannya sehingga kadang tidak seperti arti sebenarnya. Tujuan saya melakukan itu untuk memudahkan pembaca dalam memahami isi dari post-post seperti ini. ”

Bismillah..
Hello Digital World,

Oke, terakhir kita membahas tentang compiler editor dll. Sekarang kita akan memahami bagaimana alur komputer menjalankan perintah kita dari program. Tapi sebelumnya kita akan belajar dulu dasarnya menulis program di C++.

Misal kita akan membuat program tentang pertambahan dua bilangan yang sama dan hasil dari akar 22/7 yang kira-kira dalam C++ seperti ini :


Alright, don’t panic. Ini cuma program simpel yang intinya cuma 10 baris. Bisa kita lihat pada penulisan program C++ terdiri dari pertama header dan inti perintah yang kita tulis di dalam kurung kurawal setelah int main() .


Header adalah semacam kumpulan fungsi-fungsi. Biasanya untuk pemrograman sederhana menyelesaikan problem-problem perhitungan pada saat saya kuliah, saya hanya menggunakan iostream, math, dan conio (fungsi dari 3 header tersebut dapat dilihat pada gambar di atas).

Untuk sementara ini hiraukan dulu using namespace std, int main, return 0, getch() itu untuk apa. Yang penting sekarang, jika ingin menulis program, kita menulis di bagian inti perintah tersebut. Seperti


Oke kembali ke program yang paling atas tadi, intinya adalah :



Jika perintah di atas di-compile, lalu program dijalankan maka hasil pada terminal kurang lebih seperti ini jika kita masukkan nilai a = 9



Kenapa bisa begitu? Oke dengan menganggap kita punya suatu tempat bernama memory, kita akan melihat perubahan pada memory dan terminal saat program berjalan. Alur jalannya perintah di atas kurang lebih berikut :



Line 8 : deklarasi variable a


Line 9: deklarasi veriable b


Line 10 : deklarasi variable akarpi



Oke, dalam suatu program perlu yang namanya deklarasi variable. Caranya menulis :

tipedata(spasi)namavariabel

Contoh di atas int a dan int b,  berarti kita disana membuat variabel bernama a dan b yang dimana hanya bisa diisikan angka bulat. Lalu float akarpi, yang artinya kita membuat variable bernama akarpi yang bisa diisi dengan angka desimal. Jadi inget saja, int buat angkat bulet, float buat koma-komaan :p Oke lanjuuuuut…

Line 11 : "penghitung a + a, dan akar pi" akan ditampilkan pada terminal pada baris pertama dengan perintah cout<<, perintah endl digunakan seperti menekan enter pada saat kita mengetik untuk pindah baris ke baris terminal ke 2.


Line 12 : "masukkan nilai a = " akan ditampilkan pada terminal pada baris kedua dengan perintah cout<<.


Line 13 : cin>>a; angka apapun yang diketik pada saat perintah baris ini dijalankan lalu ditekan enter, maka angka tersebut menjadi nilai variabel a pada memori. Misal kita masukkan 9.




Line 14 : perintah ini berarti nilai variabel a ditambah nilai variabel a dimasukkan ke variabel b.


Line 15 : perintah ini digunakan untuk menampilkan hasil perhitungan.



Intermezzzooo… cout bisa dilakukan berulang-ulang dengan menambahkan “<<”. Seperti kita lihat pada perintah "cout<<"hasil "<<a<<"+"<<a<<" adalah "<<b<<endl;". Untuk menampilkan suatu text menggunakan double aphostrhope (“”) dan untuk menampilkan nilai suatu variabel tanpa menggunakan itu. Misal jika kita perintahkan cout<<a; maka yang keluar pada terminal adalah nilai dari variabel a, jika kita tambah double aphostrhope, cout<<”a”, maka yang keluar pada terminal adalah huruf a. Oke lanjut…

Line 16 : perintah pada line tersebut untuk menghitung akar 22/7 alias pi. Nilai hasil perhitungan akan masuk pada memory di variabel akarpi.




Intermezzzooo… Anda akan melihat fungsi sqrt(input), sqrt merupakan salah satu fungsi dari header math.h yang digunakan  untuk mencari akar dari suatu variabel atau perhitungan. Selain sqrt, banyak fungsi yang terdapat pada header math.h seperti mencari sin, logaritma, dan lain-lain. Ok lanjut.

Line 17 : menampilkan kalimat “akar dari 22/7 adalah ” lalu diikuti nilai dari variabel akarpi.




Oke itu kira-kira alur dari jalannya program tersebut. Saya harap anda menjadi lebih paham bagaimana alur perintah yang kita tulis pada program itu dijalankan oleh komputer. Untuk selanjutnya kita akan membahas perulangan dan bagaimana komputer menjalankan alur perintahnya.

See ya,

0 comments: