up [pdf]
from rsf.proj import *
from rsf.gallery import french

french.get_refl('model')

Result('model',
       '''
       unif3 v00=1,2 n1=401 d1=10.265 |
       byte allpos=y bias=1 |
       grey3 color=j title="French model" label1=Depth unit1=m
       frame1=175 frame2=60 frame3=80 flat=n 
       ''')

# Zero-offset

french.get_zodata('data')

Result('data',
       '''
       byte gainpanel=all |
       grey3 title="Zero Offset" 
       frame1=250 frame2=81 frame3=81 flat=n
       screenratio=1 point1=0.65 point2=0.65
       ''')

Flow('slowness','model',
     '''
     spray axis=1 n=401 o=0 d=10.265 | 
     math output=2000 | 
     transp | transp plane=23 | math output=1/input
     ''')

fmax = 15 # maximum frequency

Flow('fft','data','fft1 | window max1=%g | transp plane=12 | transp plane=23' % fmax)


# Extended split-step migration
Flow('mig','fft slowness',
     '''
     zomig3 ompnth=1 mode=m --readwrite=y verb=y
     nrmax=1 slo=${SOURCES[1]} 
     ''',split=[3,'omp',[0]],reduce='add')

Flow('mig3','mig','transp plane=23 | transp plane=12')

french.depth_mig('mig3')

End()

sfdd
sftransp
sfscale
sfremap1
sfunif3
sfbyte
sfgrey3
sfsmooth
sfderiv
sfwindow
sfkirmod3
sfput
sfadd
sfspray
sfmath
sffft1
sfomp
sfzomig3

data/french/french.asc