from rsf.proj import *
import math
sys.path.append('..')
import tau
nx = 501; x0 = 0.; dx = 5.
nz = 401; z0 = 0.; dz = 5.
nZ = 401; Z0 = 0.; dZ = .0025
nT = 301; T0 = 0.; dT = .003
nt = 1601;t0 = 0.; dt = .0005
b = [0,0,0,0]
c = [0,0,0,0]
j3 = 25; n3 = 1 + int((nt-1)/j3)
freq = 25
parZ = {'nx' : nx, 'x0' : x0, 'dx' : dx,
'nz' : nz, 'z0' : z0, 'dz' : dz,
'nT' : nZ, 'T0' : Z0, 'dT' : dZ,
'nt' : nt, 't0' : t0, 'dt' : dt}
parT = {'nx' : nx, 'x0' : x0, 'dx' : dx,
'nz' : nz, 'z0' : z0, 'dz' : dz,
'nT' : nT, 'T0' : T0, 'dT' : dT,
'nt' : nt, 't0' : t0, 'dt' : dt}
epsilon = .32
delta = .1
velz = 2000
veln = velz * math.sqrt(1. + 2.*delta)
eta = (epsilon - delta) / (1. + 2.*delta)
xr = .5 * (nx-1) * dx
zr = .5 * (nz-1) * dz
Tr = zr / velz
Flow('vverC',None,'''
math n1=%d o1=0 d1=%g n2=%d o2=0 d2=%g output="%g" |
put label1=Depth unit1=m label2=Distance unit2=m
''' % (nz,dz,nx,dx,velz))
Flow('vnmoC','vverC','math output="%g"' % veln)
Flow('hetaC','vverC','math output=%g' % eta)
Flow('data',None,'''
spike nsp=1 mag=1 n1=%d o1=0 d1=%g k1=%d |
ricker1 frequency=%g | scale axis=1 | reverse which=1 opt=i|
transp | put label1=Distance unit1=m
''' % (nt,dt,1+int(1./(freq*dt)),freq))
tau.init(parZ)
Flow('tauC','vverC','math output="x1/input"')
Flow('crC crC.asc',None,'''
echo %g %g > ${TARGETS[1]} &&
echo n1=2 in=${TARGETS[1]} data_format=ascii_float |
dd form=native
''' % (zr,xr))
Flow('crT crT.asc',None,'''
echo %g %g > ${TARGETS[1]} &&
echo n1=2 in=${TARGETS[1]} data_format=ascii_float |
dd form=native
''' % (Tr,xr))
tau.mapping('vverZ','vverC','tauC',inv=False)
tau.mapping('vnmoZ','vnmoC','tauC',inv=False)
tau.mapping('hetaZ','hetaC','tauC',inv=False)
tau.mapping('vverB','vverZ','tauC',inv=True)
tau.mapping('vnmoB','vnmoZ','tauC',inv=True)
tau.mapping('hetaB','hetaZ','tauC',inv=True)
Flow('sigmZ','vverZ','math output=0')
tau.rtm_vti('imagC','waveC','data','vverC','vnmoC','hetaC',None ,None ,'crC',n3,b,c,tau=False)
tau.rtm_vti('imagZ1','waveZ','data','vverZ','vnmoZ','hetaZ','vverZ','sigmZ','crT',n3,b,c,tau=True)
tau.mapping('imagZ','imagZ1','tauC',inv=True)
tau.init(parT)
tau.mapping('vverT','vverC','tauC',inv=False)
tau.mapping('vnmoT','vnmoC','tauC',inv=False)
tau.mapping('hetaT','hetaC','tauC',inv=False)
Flow('sigmT','vverT','math output=0')
tau.rtm_vti('imagT1','waveT','data','vverT','vnmoT','hetaT','vverT','sigmT','crT',n3,b,c,tau=True)
tau.mapping('imagT','imagT1','tauC',inv=True)
Plot('waveC','grey gainpanel=a')
Plot('waveZ','grey gainpanel=a')
Plot('waveT','grey gainpanel=a')
m2kmC = 'put d2=%g unit2=km d1=%g unit1=km' % (.001*dx,.001*dz)
m2kmT = 'put d1=%g unit1=km' % (.001*dx)
screen = 'screenwd=10 screenht=10 labelsz=8'
window = 'window n1=1 f1=200'
wgrey = 'grey grid=y title= labelsz=10 pclip=98 ' + screen
wline = 'graph wantaxis=n wanttitle=n plotfat=8 ' + screen
for c in ['C','Z','T']:
imag = 'imag' + c
line = 'line' + c
arte = 'arte' + c
Plot(imag,m2kmC + ' | ' + wgrey)
Plot(line + '_',imag,window + ' | ' + wline)
Plot(line,line + '_','Overlay',vppen='yscale=.5 yshift=5.5')
Result('arteC','imagC lineC','OverUnderIso')
Result('arteZ','imagZ lineZ','OverUnderIso')
Result('arteT','imagT lineT','OverUnderIso')
End() |