from rsf.proj import *
def velplot(title,label1='Depth',unit1='kft'):
return '''
grey color=j allpos=y title="%s" scalebar=y
barlabel=Velocity barunit=kft/s
label1="%s" unit1="%s" label2=Lateral unit2=kft
barreverse=y pclip=100
''' % (title,label1,unit1)
def graph(transp,o2,d2,n2,col,fat,extra=''):
return '''
graph transp=%d yreverse=y pad=n min2=%g max2=%g
plotcol=%d plotfat=%d wantaxis=n wanttitle=n %s
''' % (transp,o2,o2+(n2-1)*d2,col,fat,extra)
def wiggle(title):
return '''
wiggle transp=y yreverse=y poly=y xpos=${SOURCES[1]}
title="%s" label2=Half-Offset unit2=kft zplot=0.5
wherexlabel=t wheretitle=b
''' % title
Flow('modl',None,
'''
spike n1=200 o1=-8 d1=0.08 n2=4
nsp=4 k2=1,2,3,4 mag=1,2.2,3.5,5
''')
Flow('refl',None,
'''
spike n1=200 n2=4 nsp=4 k2=1,2,3,4
mag=0.0909091,0.1428570,0.1111110,0.2000000
''')
Flow('mod1','modl','window min1=0')
Flow('unif','mod1','unif2 n1=110 d1=0.05 v00=5,6,8,10,15')
Result('modl','unif',velplot('Model'))
Flow('mod2','unif','math output=5+2*x1')
Plot('modl','mod2',velplot('True Model'))
Plot('modla','mod1',graph(0,0,0.05,110,0,20,'scalebar=y'))
Plot('modlb','mod1',graph(0,0,0.05,110,7,5,'scalebar=y'))
Result('modl2','modl modla modlb','Overlay')
Flow('clean','modl refl',
'''
kirmod nt=501 dt=0.004 freq=25 refl=${SOURCES[1]}
ns=12 s0=1.4 ds=-0.1
nh=64 h0=0.1 dh=0.1
vel=5 gradz=2 type=v
''')
Flow('data','clean',
'''
noise rep=y seed=2004 range=0.0002 |
ricker1 frequency=25 |
add $SOURCE
''')
shots = []
for shot in range(0,12,5):
data = 'data%d' % shot
shots.append(data)
Plot(data,'data',
'''
window n3=1 f3=%d | tpow tpow=2 |
grey title="Shot %d"
''' % (shot,shot+1))
Result('data',shots,'SideBySideAniso')
v0=4
dv=0.075
nv=120
Flow('off','data','window n1=1 | math output="0.5*x1" ')
Flow('cmp','off','math output="input+x2" ')
for x in range(1500,4000,500):
y = 0.001*x
cdp = 'cdp%d' % x
off = 'off%d' % x
msk = 'msk%d' % x
Flow(msk,'cmp','mask min=%g max=%g' % (y-0.001,y+0.001))
Flow(off,['off',msk],
'spray axis=1 n=1 | headerwindow mask=${SOURCES[1]}')
Flow(cdp,['data',msk],'headerwindow mask=${SOURCES[1]}')
Plot(cdp,[cdp,off],wiggle('CDP gather for cdp=%g' % y))
scn = 'scn%d' % x
Flow(scn,[cdp,off],
'''
vscan offset=${SOURCES[1]}
semblance=y v0=%g dv=%g nv=%d
''' % (v0,dv,nv))
Plot(scn,
'''
grey color=j allpos=y
label2=Velocity unit2=kft/s title="Velocity Scan"
''')
pik = 'pik%d' % x
Flow(pik,scn,
'''
mutter x0=4 inner=y v0=3 half=n |
mutter x0=4 inner=n v0=8 half=n |
pick rect1=50 vel0=5 gate=10
''')
Plot(pik+'a',pik,graph(1,v0,dv,nv,0,20))
Plot(pik+'b',pik,graph(1,v0,dv,nv,7,5))
Plot(scn+'a',[scn,pik+'a',pik+'b'],'Overlay')
nmo = 'nmo%d' % x
Flow(nmo,[cdp,off,pik],
'nmo offset=${SOURCES[1]} velocity=${SOURCES[2]}')
Plot(nmo,[nmo,off],wiggle('Normal Moveout Applied'))
Result(cdp,[cdp,scn+'a',nmo],'SideBySideAniso')
Flow('cmpdata cmpmask','data',
'''
reverse which=4 |
put o2=0.05 d2=0.05 |
shot2cmp mask=${TARGETS[1]}
''')
Flow('scan','cmpdata cmpmask',
'''
vscan semblance=y mask=${SOURCES[1]}
v0=%g dv=%g nv=%d
''' % (v0,dv,nv))
Flow('pick','scan',
'''
mutter x0=4 inner=y v0=3 half=n |
mutter x0=4 inner=n v0=8 half=n |
pick rect1=50 rect2=100 vel0=5 | window
''')
Result('pick',velplot('Stacking Velocity','Time','s'))
Flow('nmo','cmpdata cmpmask pick',
'nmo mask=${SOURCES[1]} velocity=${SOURCES[2]}')
Flow('stack','nmo','stack')
Result('stack','grey title="NMO Stack" ')
End() |