up [pdf]
from rsf.proj import *

# Thanks to Ning Tu

# Velocity
Flow('vel',None,
     '''
     spike mag=1500,3000 nsp=2 k1=1,101 l1=100,200 d1=4 d2=4
     label1=Depth label2=Distance n1=200 n2=200 o1=2 o2=2 unit1=m unit2=m
     ''')
Plot('vel',
     '''
     grey wanttitle=n scalebar=y allpos=y bias=1500 
     barlabel=Velocity barunit=m/s barreverse=y
     ''')

# Density
Flow('den','vel','math output=1')

# Source
Flow('sou',None,
     'spike n1=2 nsp=2 k1=1,2 mag=400,100 o1=0 o2=0')
Plot('sou',
     '''
     dd type=complex |
     graph symbol=* symbolsz=10 wantaxis=n
     plotcol=3 plotfat=3 wanttitle=n scalebar=y
     min1=2 max1=801 min2=2 max2=801 yreverse=y 
     ''')

Result('vel','vel sou','Overlay')

# Receiver
Flow('rec',None,
     'spike n1=2 nsp=2 k1=1,2 mag=400,100 o1=0 o2=0')

# Wavelet
Flow('wav',None,
     '''
     spike n1=2000 d1=0.0005 k1=200 | 
     ricker1 frequency=20 
     ''')
Result('wav','wiggle poly=y pclip=100 title=Wavelet')

# Finite-difference modeling
Flow('dat wvl','wav vel den sou rec',
     '''
     transp | 
     awefd2d vel=${SOURCES[1]} den=${SOURCES[2]} 
     sou=${SOURCES[3]} rec=${SOURCES[4]} wfl=${TARGETS[1]} 
     verb=y free=n snap=y dabc=y jdata=1 jsnap=10 
     ''')

# Run 'scons wvl.vpl' to watch a movie
Plot('wvl',
     '''
     grey gainpanel=a title=Wave 
     label1=Depth label2=Distance unit1=m unit2=m
     ''',view=1)

Result('wvl',
       '''
       window n3=1 min3=0.4 | 
       grey title="Wave at 0.4 s" screenratio=1 
       label1=Depth label2=Distance unit1=m unit2=m
       ''')

End()

sfspike
sfgrey
sfmath
sfdd
sfgraph
sfricker1
sfwiggle
sftransp
sfawefd2d
sfwindow