from rsf.proj import *
vp_mod = [2500.0, 2600.0, 2550.0]
vs_mod = [1200.0, 1300.0, 1200.0]
rho_mod= [1.95, 2.0, 1.98]
Flow('depth1',None,'math o1=0 d1=1 n1=61 label1=Thickness unit1=m output=500')
Flow('depth2','depth1','math output=500+x1')
Flow('depths','depth1 depth2','cat axis=2 ${SOURCES[1]}')
Result('depths','graph max2=600 min2=400 yreverse=y label2=Depth unit2=m title=Layers')
Flow('time1','depth1','scale dscale=%g' % (2/vp_mod[0]))
Flow('time2','depth2 depth1 time1',
'math t1=${SOURCES[2]} z1=${SOURCES[1]} output="t1+%g*(input-z1)" ' % (2/vp_mod[1]))
Flow('times','time1 time2','cat axis=2 ${SOURCES[1]}')
Plot('times','graph max2=0.5 min2=0.3 yreverse=y wantaxis=n wanttitle=n plotcol=6 plotfat=3')
ai_mod = [vp_mod[k]*rho_mod[k]/1000 for k in range(3)]
Flow('ai','times','unif2 v00=%s n1=5001 d1=0.0001 label1=Time unit1=s' % ','.join(map(str,ai_mod)))
Result('ai','window min1=0.3 | grey color=lb mean=y title="Acoustic Impedance" barlabel=AI scalebar=y')
Flow('seismic','ai','ai2refl | ricker1 frequency=30 | window min1=0.3')
Plot('pos','seismic','wiggle poly=y yreverse=y transp=y wanttitle=n plotcol=1 grid2=n')
Plot('neg','seismic','wiggle poly=y yreverse=y transp=y wanttitle=n plotcol=2 polyneg=y grid2=n')
Plot('seismic','wiggle yreverse=y transp=y wanttitle=n plotcol=7 grid2=n')
Result('seismic','pos neg seismic times','Overlay')
Flow('tuning','seismic','window n1=1 min1=0.4 | scale dscale=1000')
Result('tuning',
'graph title="Upper Interface Amplitude" plotfat=10 plotcol=5 grid=y label2=Amplitude unit2=')
thickness = 17.0
theta1_min = 0.0
theta1_max = 40.0
theta1_step= 1.0
wvlt_length= 0.128
wvlt_cfreq = 30.0
wvlt_phase = 0.0
tmin = 0.0
tmax = 0.5
dt = 0.0001
min_plot_time = 0.15
max_plot_time = 0.3
t1 = 500/vp_mod[0]
t2 = t1+2*thickness/vp_mod[1]
Flow('mask1',None,'spike o1=%g d1=%g n1=%d label1=TWT unit1=sec | cut max1=%g' % (tmin,dt,int(tmax/dt),t1))
Flow('mask2',None,'spike o1=%g d1=%g n1=%d label1=TWT unit1=sec | cut min1=%g' % (tmin,dt,int(tmax/dt),t2))
model = dict(vp=[0.001]+vp_mod,vs=[0.001]+vs_mod,den=[1]+rho_mod)
minmax = dict(vp=[1.5,4.0],vs=[0.8,2.0],den=[1.6,2.6])
for mod in model.keys():
Flow(mod,'mask1 mask2',
'''
math m1=${SOURCES[0]} m2=${SOURCES[1]} output="%g*((m2*(1-m1)*%g+m2*m1*%g+(1-m2)*%g))"
''' % tuple(model[mod]))
Plot(mod,
'''
window min1=%g max1=%g |
graph label2=%s unit2=%s wanttitle=n grid=y transp=y yreverse=y pad=n min2=%g max2=%g
labelsz=12 plotfat=10 plotcol=2 g2num=0.025 g2num0=0.275 wherexlabel=t
''' % (min_plot_time,max_plot_time,mod.capitalize(),
('km/s','')[mod=='den'],minmax[mod][0],minmax[mod][1]))
Result('model','vp vs den','SideBySideAniso')
for i in range(2):
name = ('upper','lower')[i]
Flow(name,None,
'''
zoeppritz na=41 da=1 vp1=%g vp2=%g vs1=%g vs2=%g rho1=%g rho2=%g
''' % (vp_mod[i],vp_mod[i+1],vs_mod[i],vs_mod[i+1],rho_mod[i],rho_mod[i+1]))
k1 = int((t1,t2)[i]/dt)
Flow(name+'2',name,
'''
spray axis=1 n=%d o=%g d=%g label=TWT unit=sec
''' % (int((tmax-tmin)/dt),tmin,dt))
Flow(name+'-ref',name+'2','spike k1=%d | mul $SOURCE' % k1)
Flow(name+'1','ref',
'window n1=1 f1=%g | scale dscale=100' % (k1-1))
Result(name,[name,name+'1'],
'''
cat axis=2 ${SOURCES[1]} |
graph label1="Angle of Incidence"
unit1=deg label2="Reflection Coefficient"
title="%s Interface Reflectivity"
grid=y gridcol=5 plotfat=5 plotcol=6 dash=0,1
''' % name.capitalize())
Flow('ref','upper-ref lower-ref','add ${SOURCES[1]} | ricker1 frequency=30' )
Flow('ref-win','ref','window min1=%g max1=%g' % (min_plot_time,max_plot_time))
Plot('ref-pos','ref-win','wiggle poly=y yreverse=y transp=y wanttitle=n plotcol=1 grid2=n')
Plot('ref-neg','ref-win','wiggle poly=y yreverse=y transp=y wanttitle=n plotcol=2 polyneg=y grid2=n')
Plot('ref','ref-win',
'''
wiggle yreverse=y transp=y title="Synthetic Angle Gather"
plotcol=7 grid2=n
''')
Plot('ref-times',None,
'''
spike n1=2 n2=2 nsp=2 k1=1,2 mag=%g,%g | transp |
graph min2=%g max2=%g yreverse=y wantaxis=n wanttitle=n
plotcol=6 plotfat=3 pad=n
''' % (t1,t2,min_plot_time,max_plot_time))
Result('ref','ref-pos ref-neg ref ref-times','Overlay')
End() |