Thursday, November 18, 2010

Madagascar

Madagascar adalah sebuah open source yang berisi ratusan tools yang berguna untuk melakukan data analisis multi dimensi seperti perilaku gelombang seismik, ray tracing, waveform modeling, pengolahan citra, termasuk didalamnya fungsi-fungsi pengolahan data seismik.

Berikut adalah tahapan Instalasi Madagascar dengan platform Linux Ubuntu 10.10.
  1. Download Madagascar untuk Linux di sini
  2. Simpanlah file yang telah didownload tersebut pada directory yang bernama madagascar (contoh).
  3. Masuk ke directory madagascar lalu ketik tar -xvvf madagascar-1.0.tar.gz
  4. Semua file yang telah diekstrak akan disimpan di dalam directory baru yang bernama madagascar-1.0.
  5. Pada terminal linux ketik:
    sudo apt-get install freeglut3-dev g++ gfortran libc6-dev libg2-dev libglew1.5-dev \
    libjpeg62-dev libx11-dev libxaw7-dev libnetpbm10-dev swig python-dev python-scipy \
    python-numpy scons units
  6. Masih pada terminal linux ketik
    export RSFROOT=/home/agus/madagascar/madagascar-1.0
    export PYTHONPATH=$PYTHONPATH:$RSFROOT/lib
    export PATH=$PATH:$RSFROOT/bin
  7. Masuk ke directory madagascar, lalu ketik:
    ./configure lalu enter scons; scons install lalu enter source env.sh lalu enter
  8. Test program dengan mengetikkan pada terminal (satu baris)
    sfspike n1=1000 k1=300 title="\s200 Welcome to \c2 RSF" | sfbandpass fhi=2 phase=1 | sfwiggle | sfpen
  9. Jika instalasi dan konfigurasi anda benar, maka anda akan memperoleh gambar seperti di bawah ini.
Setelah reboot atau keluar terminal, kadang-kadang command madagascar tidak dikenal lagi oleh sistem dengan munculnya error message: "....command not found" atau error message yang lainnya, untuk mengantisipasi hal ini, coba ketik lagi kode pada tahap 6 di ./bashrc dengan mengetikkan gedit ~/.bashrc

Contoh di bawah ini saya melakukan wavefront modeling 2D dengan madagascar, dimana kodenya bisa dilihat di bawah artikel ini.

Berikut adalah tahapan untuk menjalankan kode tersebut.
  • Buatlah directory baru katakanlah /demo/2dmodel
  • Jika saya ketik pwd saya akan memiliki path /home/agus/madagascar/madagascar-1.0/demo/2dmodel
  • Pada path tersebut ketik gedit
  • Lalu copy paste kode pemodelan di bawah dan save dengan nama SConstruct
  • Ketik scons pada terminal linux, sehingga beberapa file akan digenerate
  • Bukalah directory Fig i.e. /home/agus/madagascar/madagascar-1.0/demo/2dmodel/Fig
  • Pada directory tersebut saya ketik sfpen < mod1.vpl

  • Jika saya ketik sfpen < wave1.vpl
  • Maka saya akan memiliki movie penjalaran gelombang dimana snapshotnya seperti ini:

Berikut adalah animasinya (klik untuk memperbesar):

Photobucket


Untuk mempelajari lebih jauh tentang Madagascar, anda bisa mempelajarinya disini


Jika anda bekerja pada ubuntu 11.04 anda dapat menginstall madagascar 1.2 .


Kode Pemodelan Wavefront:

##########################################################
# Created by Kyle Shalek, slightly modified by Agus Abdullah #
# Last Modified: 9-4-09 #
# Creates a 2D model with velocity and density inputs. #
# Acoustic FD modeling with awefd2d (Psava) #
# Single trace output #
##########################################################

from rsf.proj import *
import string
########################################################
#1) create velocity model
# Depth in km
xmax = 4.0
zmax = 2.0

layers = ((0.1,0.1,0.1,0.1,0.1),
(0.1,0.4,0.7,1.0,1.3),
(1.5,1.5,1.5,1.5,1.5))

layer1=0.1
layer2=1.3-0.1
layer3=1.5-1.3
layer4=2-1.5

# Velocity (Vp) in km/s
vp = (0.0,
6,
4.6657,
6)
#Velocity (Vs) in km/s
vs = (0.0,
2,
4,
2)

# Density in g/cc, converted to kg/ckm
densities = (0.1*1000000000000,
2.8*1000000000000,
2.5*1000000000000,
2.8*1000000000000)

def arr2str(array,sep=' '):
return string.join(map(str,array),sep)

n1 = len(layers[0])
n2 = len(layers)

Flow('layers',None,
'''
echo %s
n1=%d n2=%d o1=0 d1=%g
data_format=ascii_float in=$TARGET
''' % (string.join(map(arr2str,layers),' '),
n1,n2,xmax/(n1-1)))

d = 0.01 # sampling steps

Flow('mod1','layers',
'''
spline o1=0 d1=%g n1=%d |
unif2 d1=%g n1=%d v00=%s |
dd form=native
''' % (d,int(1.5+xmax/d),
d,int(1.5+zmax/d),
arr2str(vp,','),))
Flow('rho','layers',
'''
spline o1=0 d1=%g n1=%d |
unif2 d1=%g n1=%d v00=%s |
dd form=native
''' % (d,int(1.5+xmax/d),
d,int(1.5+zmax/d),
arr2str(densities,','),))

Result('mod1',
'''
grey color=j title="Velocity Model"
allpos=y titlesz=8 labelsz=6 screenratio=0.5
scalebar=y barlabel='velocity (km/s)' barlabelsz=6
label1="Depth (km)"
label2="Distance (km)"
''')

# Contour the layers
Plot('modline','mod1','contour title=" " label1='' label2='' wantaxis=n screenratio=0.5')
##############################################################

#2) 2D Acoustic wave FD Modeling
# Source location
sx = 2.5
sz = 0.1
Flow('source',None,
'spike n1=3 nsp=3 k1=1,2,3 mag=%g,%g,1 o1=0 o2=0' % (sx,sz))
# Receiver location
rx=2
rz=0.1
Flow ('receiver',None,
'spike n1=3 nsp=3 k1=1,2,3 mag=%g,%g,1 o1=0 o2=0' % (rx,rz))

########################
time=0.5
timesteps=1500 # timesteps*0.001=sec
frequency=30

##########################


#2)a) Source wavelet
Flow('wavelet',None,
'''
spike nsp=1 n1=%g d1=%g k1=%d |
ricker1 frequency=%g |
transp
''' % (timesteps,0.001,200,frequency))

#2)b) Awefd modeling
Flow('data wave','wavelet mod1 source receiver rho',
'''
awefd2d verb=y free=y expl=y snap=y jsnap=10 dabc=y
db=0 dbx=0 o1=0 o2=0
vel=${SOURCES[1]}
sou=${SOURCES[2]}
rec=${SOURCES[3]}
den=${SOURCES[4]}
wfl=${TARGETS[1]}
''')

#################################################################

#2)c) Movie of wave
Plot('wave',
'''
grey gainpanel=all title=Wave label1=Depth unit1=km label2=Lateral unit2=km
''',view=1)
Result('wave1','wave',
'''
grey color=j scalebar=y barlabel='Amplitude' barlabelsz=6
gainpanel=all title=Wave
label1=Depth unit1=km label2=Lateral unit2=km screenratio=0.5
''')

# Wavefield snapshot at 'time' value
Plot('snap','wave',
'''
window n1=201 n2=401 n3=1 min3=%g |
grey color=j gainpanel=all title="Wave Snapshot"
label1=Depth unit1=km label2=Lateral unit2=km screenratio=0.5
scalebar=y barlabel='Amplitude' barlabelsz=6
'''%(time))
##################################################################

#2)d) Overlay wave and layer contours
Result('snap1',['snap','modline'],'Overlay')
#2)e) Single Trace
Result('trace','data',
'''
transp |
spline o1=0 d1=0.001 n1=%g |
wiggle label1=Time unit1=s label2=Amplitude unit2='' title='Vertical Trace with Source'
'''% (timesteps))
Result('trace_window','data',
'''
transp |
spline o1=0 d1=0.001 n1=%g |
window min1=0.3 |
wiggle label1=Time unit1=s label2=Amplitude unit2='' title='Vertical Trace without Source'
'''% (timesteps))
End()
################################################################################

No comments: