from rsf.proj import *
from math import *
import sys
import string
import rsf.recipes.spmig as spmig
import rsf.recipes.adcig as adcig
par = {
'nx':800, 'dx':10, 'ox':0,
'nz':500, 'dz':5, 'oz':0,
'nt':1000,'dt':0.004, 'ot':0, 'kt':50,
'nh':800, 'dh':10, 'oh':-4000,
'ns':25, 'ds':80, 'os':3000, 'fs':0, 'js':1,
'nw':200, 'jw':1,
'velp':3000,
'vels':3000,
'nhx':40,
'nht':200, 'oht':-0.125, 'dht':0.00125,
'na':281, 'oa':-70, 'da':0.5
}
par['ow']=0.
par['dw']=1./(par['nt']*par['dt'])
par['vpvs']= par['velp'] / par['vels']
par['amin'] = par['oa']
par['amax'] = par['oa'] + (par['na']-1)*par['da']
def igrey(custom):
return '''
grey labelrot=n title="" pclip=100 wantaxis=y
grid=y gridcol=0
labelsz=6
%s
''' % custom
def igrey3(custom):
return '''
grey3 labelrot=n title="" pclip=100 wantaxis=y
grid=n gridcol=0
labelsz=7
%s
''' % custom
def igraph(custom):
return '''
graph labelrot=n title="" transp=y yreverse=y
wantaxis=n wantlabels=n
min2=%g max2=%g min1=0 max1=2500
%s
''' % (par['amin'],par['amax'],custom)
def tcig2ssk():
return '''
slant adj=y p0=1000 np=600 dp=10 |
put label2=v
'''
def hcig2ssk():
return '''
slant adj=y p0=-3 np=601 dp=0.01 |
put label2=tan
'''
def tssk2ang():
return '''
pp2pstsic a0=%(oa)g na=%(na)d da=%(da)g
velocity=${SOURCES[1]}
vpvs=${SOURCES[2]}
dip=${SOURCES[3]} |
put label2=ang
''' % par
def hssk2ang():
return '''
tan2ang a0=%(oa)g na=%(na)d da=%(da)g |
put label2=ang
''' % par
ISCR = ' screenratio=0.5 screenht=7'
OSCR = ' screenratio=1.5 screenht=10 gainpanel=a'
ilabel = 'label1="z" label2="x" unit1=m unit2=m'
olabelx = 'label1="z" label2="h" unit1=m unit2=m'
olabelt = 'label1=z unit1=m label2="\F10 t\F3" unit2=s'
slabelx = 'label1=z unit1=m label2="tan \F10 q\F3" unit2="."'
slabelt = 'label1=z unit1=m label2="\F10 n\F3" unit2=m/s'
alabel = 'label1=z unit1=m label2="\F10 q\F3" unit2="\^o\_"'
Flow('wav',None,
'''
spike nsp=1 mag=1 k1=%(kt)d
n1=%(nt)d d1=%(dt)g o1=0 | ricker1 frequency=10
''' % par)
Flow('vel',None,
'''
spike nsp=1 mag=1
n1=%(nz)d d1=%(dz)g o1=%(oz)g
n2=%(nx)d d2=%(dx)g o2=%(ox)g |
transp |
spray axis=2 n=1 o=0 d=1 |
put label1=x label2=y label3=z
''' % par)
Flow('slop','vel','math output=input/%(velp)d' % par)
Flow('vp','slop','window n1=1 min1=1000 | math output=%(velp)d' % par)
Flow('vpvp',None, 'spike nsp=1 mag=1 n1=%(nz)d o1=%(oz)g d1=%(dz)g' % par)
Flow('dipa',None,
'''
spike nsp=5 mag=0
n1=%d o1=%g d1=%g
k1=0,76,141,221,351 l1=75,140,220,350,500
''' % (par['nz'],par['oz'],par['dz']))
Flow('modl',None,
'''
spike n1=%d o1=%g d1=%g n2=3
nsp=3 k2=1,2,3 mag=1000,1500,2000
''' % (par['nx'],par['ox'],par['dx']))
Flow('refl',None,
'''
spike n1=%d o1=%g d1=%g n2=3
nsp=3 k2=1,2,3 mag=1,1,1
'''%(par['nx'],par['ox'],par['dx']))
Flow('pp','modl refl',
'''
kirmod vel=%g refl=${SOURCES[1]}
nt=%d dt=%g t0=%g freq=10
nh=%d dh=%g h0=%g
ns=%d ds=%g s0=%g type=c twod=y|
put label1=t label2=h | pad beg1=%d | put o1=0
''' %
( par['velp'],
par['nt'],par['dt'],par['ot'],
par['nh'],par['dh'],par['oh'],
par['ns'],par['ds'],par['os'], par['kt'])
)
Result('pp','window min2=-3000 max2=3000 | byte | '
+ igrey3('label1="Time" label2="Offset" pclip=100 label3="Shot position" frame1=300 frame2=200 frame3=10 point2=0.5 point3=0.55 point1=0.5 unit1=s unit2=m unit3=m'))
sou = 'pp' + 'sou'
rec = 'pp' + 'rec'
spmig.wflds(sou,rec,'wav','pp',par)
par['misc']='itype=x jcx=1 nhx=%(nhx)d nhz=1 hsym=y' % par
img = 'pp' + 'img' + '-'+ 'h'
cig = 'pp' + 'cig' + '-'+ 'h'
Plot('vel','slop',
'''
math output="1/input" | window | transp plane=12 |
grey label1=z unit1=m label2=x unit2=m wanttitle=n screenratio=0.3 screenht=5
''')
Flow('sx','vel',
'''
window | window n2=1 | transp plane=12 | math output="x2" |
pad end1=1 axis=1 | put o1=0 o2=0 | put o1=0 d1=2 o2=0 d2=%(dx)g | cut max2=3080 | cut min2=5080 | window j2=8
| cut max2=600
'''% par )
Plot('sx',
'''
dd type=complex |
graph wantaxis=n min1=80 max1=8080 max2=0 min2=-2500 symbol=* plotcol=1 plotfat=10 wanttitle=n screenratio=0.3 screenht=5
''')
Result('vel','vel sx','Overlay')
spmig.imagePW3(img,cig,'slop', sou,rec,par)
Result(img,'window min1=2000 max1=6000 | transp |'+ igrey(ilabel+ISCR))
off = 'pp' + 'off' + '-'+ 'h'
Flow(off,cig,'window squeeze=y min1=2000 max1=6000 | transp plane=13 | transp plane=12' )
Result(off,'transp plane=23| window min2=2200 max2=5800| byte gainpanel=all pclip=100| '
+ igrey3('pclip=100 label1="z" label2="x" label3="h" frame1=300 frame2=180 frame3=40 point2=0.7 point1=0.6 unit1=m unit2=m unit3=m'))
ang = 'pp' + 'ang' + '-'+ 'h'
angtr = 'pp' + 'angtr' + '-'+ 'h'
ssk = 'pp' + 'ssk' + '-'+ 'h'
ovl = 'pp' + 'ovl'
Flow (ssk,off,hcig2ssk())
Plot(ssk,igrey(slabelx+OSCR),view=1)
Flow(ang,[ssk,'vpvp','dipa'],hssk2ang())
Flow(angtr,ang,'transp plane=23')
Result( angtr,'window min2=2200 max2=5800|byte gainpanel=all pclip=100| '
+ igrey3('pclip=100 label1="z" label2="x" label3="\F10 q\F3" frame1=290 frame2=180 frame3=110 point2=0.7 point1=0.6 unit1=m unit3="\^o\_" unit2=m'))
Flow('stacks',ang,'noise var=1e-13 | window min3=2200 max3=5800 | stack | spray axis=2 n=281')
Flow('simil',[ang,'stacks'],'noise var=1e-13 | window min3=2200 max3=5800 | similarity other=${SOURCES[1]} rect1=10 rect2=3 niter=50')
Flow('similtr','simil','transp plane=23')
Flow('bar','similtr','bar gainpanel=all pclip=100')
Result('similtr','similtr bar',
'smooth rect1=10 rect2=5 rect3=5| byte gainpanel=all pclip=100 | '
+ igrey3('scalebar=y maxval=1 bar=${SOURCES[1]} pclip=99.5 color=j bias=-1 label1="z" label2="x" label3="\F10 q\F3" frame1=290 frame2=180 frame3=110 point2=0.7 point1=0.6 unit1=m unit3="\^o\_" unit2=m'))
Flow('thsimil','simil','threshold pclip=30 ')
Flow('scale','thsimil','stack | spray axis=2 n=281')
Flow('simistack',[ang, 'thsimil', 'scale'],
'''
noise var=1e-13 | window min3=2200 max3=5800 |
math x=${SOURCES[1]} y=${SOURCES[2]} output="input*x/(y+0.0000001)" | stack
''')
wigg='window j2=5 | wiggle transp=y yreverse=y poly=y label1="z" unit1=m unit2=m label2="x" title=""'
grey='grey pclip=100 wanttitle=n label1=z unit1=m label2=x unit2=m'
Result('simistack',
'''
%s
''' % grey)
Flow('stack',ang,'window min3=2200 max3=5800| stack| window ')
Result('stack',
'''
%s
''' % grey)
End() |