def cliptogetherK(plot,file1,file2,title1,title2,axis,custom,par): Flow(plot+'-all',[file1,file2], ''' cat axis=3 space=n ${SOURCES[1]} | byte gainpanel=a pclip=100| put label1=%(lkz)s label2=%(lkx)s unit1=%(ukz)s unit2=%(lkx)s o1=%(okz)f d1=%(dkz)f o2=%(okx)f d2=%(dkx)f ''' %par) if(axis==1): if('ys' not in par): par['ys']=0.75 if('xs' not in par): par['xs']=0.75 if('xc' not in par): par['xc']=-8.25 Plot(file1,plot+'-all','window n3=1 f3=0 |' + fdmod.cgrey(custom+' title=%s'%title1,par)) Plot(file2,plot+'-all','window n3=1 f3=1 |' + fdmod.cgrey(custom+' title=%s label1= unit1= '%title2,par)) pplot.p1x2(plot,file1,file2,par['ys'],par['xs'],par['xc']) else: if('ys' not in par): par['ys']=.75 if('xs' not in par): par['xs']=.75 if('xc' not in par): par['xc']=-10 Plot(file1,plot+'-all','window n3=1 f3=1 |' + fdmod.cgrey(custom+' title=%s wantaxis2=n label2= unit2='%title1,par)) Plot(file2,plot+'-all','window n3=1 f3=0 |' + fdmod.cgrey(custom+' title=%s '%title2,par)) p2x1(plot,file1,file2,par['ys'],par['xs'],par['xc'])
def plots(par): pplot.p3x2(par['prefix'] + 'iCCall', 'migCC-SSF', 'migCC-PSC', 'migCC-FFD', 'migCC-F15', 'migCC-F45', 'migCC-F60', 0.3, 0.3, -8, -12) pplot.p3x2(par['prefix'] + 'iRCall', 'migRC-SSF', 'migRC-PSC', 'migRC-FFD', 'migRC-F15', 'migRC-F45', 'migRC-F60', 0.3, 0.3, -10, -12) Result(par['prefix'] + 'icomp', ['imgCC', 'migCC-FFD', 'migCC-F60'], 'Movie') Result(par['prefix'] + 'imgCC', ['imgCC', 'cos'], 'Overlay') Plot('imgCC', 'window | transp |' + fdmod.cgrey('pclip=100', par)) Plot('imgRC', 'migCC-FFD', ' transp |' + fdmod.cgrey('pclip=100', par)) Plot('imgRC-ovl', ['imgRC', 'cos'], 'Overlay') pplot.p2x1(par['prefix'] + 'CCvsRC', 'imgRC-ovl', 'imgCC', 0.5, 0.5, -9)
def cgrey(self,custom,scalar=None,horizontal=True): ''' This is equivalent to fdmod.cgrey('',par) scalar: horizontal scalar for the figure space ''' self._scale(scalar,horizontal) return fdmod.cgrey(custom,self.par)
def simulateddata(sdat,rdat,slo,sd,ss,par): # single reflector par['kxref']=50 par['lxref']=par['nximg']-par['kxref'] par['kzref']=par['nzimg']-par['nzpad']/par['jzimg']-10 Flow('ref',None, ''' spike nsp=1 mag=1 n1=%(nximg)d d1=%(dximg)g o1=%(oximg)g k1=%(kxref)d l1=%(lxref)d n2=%(nzimg)d d2=%(dzimg)g o2=%(ozimg)g k2=%(kzref)d | smooth rect1=25 repeat=3 | spray axis=2 n=1 o=0 d=1 | put label1=x label2=y label3=z ''' % par ) Plot('ref','window | transp | smooth rect1=3 |' + fdmod.cgrey('pclip=100',par)) Result('ref',['ref',ss],'Overlay') # source wavelet par['frq']=5 par['kt']=50 Flow('wvl',None, ''' spike nsp=1 mag=1 n1=%(nt)d d1=%(dt)g o1=0 k1=%(kt)d | ricker1 frequency=%(frq)g | scale axis=123 | fft1 | window squeeze=n n1=%(nw)d min1=%(ow)g ''' % par) # source data on the surface for iexp in range(par['ns']): etag = "-e%03d" % iexp xsou = par['os'] + (par['fs'] + iexp * par['js']) * par['ds'] isou = (xsou-par['oximg'])/par['dximg'] Flow('spk'+etag,'wvl', ''' pad beg2=%d n2out=%d | put label1=w label2=x label3=y o2=%g d2=%g | transp memsize=250 plane=12 | transp memsize=250 plane=23 ''' % (isou, par['nximg'], par['oximg'], par['dximg'],) ) Flow('spk', ['spk-e%03d' % x for x in range(par['ns'])], 'cat space=n axis=4 ${SOURCES[1:%d]}'%par['ns']) # datumed source data zomig.Cdtone3(sdat,'spk',sd,par) Result(sdat,fdmod.fgrey('',par)) # datumed receiver data spmig.modelPW3(rdat,slo,sdat,'ref',par) Result(rdat,fdmod.fgrey('',par))
def debug(par): proj = Project() proj.Program('SICt.x', Split('SICt.c intutil.c')) Flow( 'k1', ['qs', 'qr'], ''' sic ur=${SOURCES[1]} nbuf=500 verb=y oa=%(oa)g na=%(na)d da=%(da)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Flow( 'k2', ['ps', 'pr'], ''' sic3d ur=${SOURCES[1]} verb=y oanga=%(oanga)g nanga=%(nanga)d danga=%(danga)g oangb=%(oangb)g nangb=%(nangb)d dangb=%(dangb)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Flow( 'k3', ['qs', 'qr', 'SICt.x'], ''' ./SICt.x ur=${SOURCES[1]} verb=y oanga=%(oanga)g nanga=%(nanga)d danga=%(danga)g oangb=%(oangb)g nangb=%(nangb)d dangb=%(dangb)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Flow( 'k4', ['qs', 'qr', 'SICt.x'], ''' ./SICt.x ur=${SOURCES[1]} verb=y oa=%(oa)g na=%(na)d da=%(da)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Plot('k1', 'transp |' + fdmod.cgrey('pclip=100', par)) Plot('k2', fdmod.cgrey('pclip=100', par)) Plot('k3', 'transp |' + fdmod.cgrey('pclip=100', par)) Plot('k4', 'transp |' + fdmod.cgrey('pclip=100', par)) for id in ('4', '3'): Result('k' + id, ['k' + id, 'ss', 'sx'], 'Overlay')
def test(par): for i in ('s', 'r'): Flow('v' + i, 'u' + i, 'window n3=1 f3=400') Result('v' + i, fdmod.cgrey('', par)) Flow( 'k' + i, 'f' + i, ''' lstk verb=y oa=%(oa)d na=%(na)d da=%(da)g nl=%(nl)d dl=%(dl)g sig=%g ''' % par) Result('k' + i, fdmod.dgrey('gainpanel=a pclip=100', par)) jx = 20 Result( 'k' + i + 'all', 'k' + i, ''' window j2=%d | transp plane=23 | put n3=1 n2=%d | grey pclip=100 ''' % (jx, par['nx'] / 2 / jx * na)) Flow('t' + i, 'k' + i, 'byte gainpanel=a pclip=100 | put label1=x label2=t label3=a') Result( 'ff', 'fs fr', 'cat axis=3 space=n ${SOURCES[1]} | transp | grey pclip=100 gainpanel=e' ) Result( 'tt', 'ts tr', ''' cat axis=3 space=n ${SOURCES[1]} | window j1=10 | transp plane=12 | transp plane=23 | grey title="" ''') # for i in ('s','r'): # Flow(['t'+i+'plt','t'+i+'bar'],'k'+i,'byte bar=${TARGETS[1]} gainpanel=a pclip=99.9') # for k in range(20): # Result('t'+i+'plt'+str(k),['t'+i+'plt','t'+i+'bar'], # 'window n1=1 f1=%d | transp |' % (20*k) + # 'grey title="" screenratio=0.2 screenht=3 label2=x unit2=m label1=p unit1="#" ') Flow('fi', 'fs fr', 'add mode=p ${SOURCES[1]}') Flow( 'ki', 'ks kr', ''' add mode=p ${SOURCES[1]} | transp plane=23 memsize=1000 | stack ''') Result('fi', fdmod.dgrey('', par)) Result('ki', fdmod.dgrey('', par))
def stereo2d(par): # 2D stereographic IC Flow( 'jj', ['qs', 'qr'], ''' sic ur=${SOURCES[1]} nbuf=500 verb=y oa=%(oa)g na=%(na)d da=%(da)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Plot('jj', 'transp | ' + fdmod.cgrey('pclip=99.9', par)) Result('jj', ['jj', 'jj', 'ss', 'sx'], 'Overlay')
def eimage(plot, imag, clip, par): print(clip) title = ['pp', 'ps', 'sp', 'ss'] for i in range(4): if (i != 0): flag = ' wantaxis2=n' else: flag = ' wantaxis2=y' Flow([plot + '_plt' + str(i), plot + '_bar' + str(i)], imag, 'scale axis=123 | byte bar=${TARGETS[1]} gainpanel=a pclip=%g' % clip[i]) Plot( plot + str(i), [plot + '_plt' + str(i), plot + '_bar' + str(i)], 'window n3=1 f3=%d bar=${SOURCES[1]} |' % i + fdmod.cgrey(flag, par)) Result( plot + str(i), [plot + '_plt' + str(i), plot + '_bar' + str(i)], 'window n3=1 f3=%d bar=${SOURCES[1]} |' % i + fdmod.cgrey(flag + ' wantaxis2=y title=%s' % (title[i]), par))
def model(vp, vs, rx, epsilon, delta, nu, par): label = '' barattr = ''' xll=2 yll=1.3 wantscalebar=y bartype=h wherebartic=top wherebarlabel=top barlabelsz=8 labelsz=8 color=j''' Result( vp, fdmod.cgrey('bias=1.6 min1=.5 barlabel="V\_P0\^ (km/s)" ' + barattr, par)) Result( vs, fdmod.cgrey('bias=0.0 min1=.5 barlabel="V\_S0\^ (km/s)" ' + barattr, par)) Result( rx, fdmod.cgrey( 'bias=1.72 min1=.5 barlabel="\s140 \F9 r \F4 (g/cm\^3) " ' + barattr, par)) Result( epsilon, fdmod.cgrey( 'bias=.1 min1=.5 barlabel="\s150 \F9 e " formatbar=%4.2f' + barattr, par)) Result( delta, fdmod.cgrey( 'bias=0.1 min1=.5 barlabel="\s150 \F9 d " formatbar=%4.2f' + barattr, par)) Result( nu, fdmod.cgrey( 'bias=0 color=e allpos=n min1=.5 formatbar=%3.0f barlabel="\s150 \F10 n \s100 (\^o\_)" ' + barattr + ' color=e', par))
def importvels(par): # prepare velocity sigsbee.getmigvel('velo',par) sigsbee.getstrvel('vstr',par) Result('vstr',fdmod.cgrey('color=j allpos=y bias=1.5',par)) Result('velo',fdmod.cgrey('color=j allpos=y bias=1.5',par)) # padding in z Flow('vpad','vstr', ''' window n1=1 f1=1200 | spray axis=1 n=143 | smooth rect2=250 repeat=5 ''' ) Flow('vsed','vstr','window n1=1180' ) Flow('velC','vsed vpad','cat axis=1 ${SOURCES[1]}') Flow('velCt','velC','transp') # masks sigsbee.makemask('velC','smask','wmask','lmask',par)
def adjoint(bsl,dim,swfl,rwfl,slo,ss,par): for iexp in range(par['ns']): etag = "-e%03d" % iexp Flow(bsl+etag, [dim,swfl+etag,rwfl+etag,slo], ''' rtoc | ../Code/srmvatau.x adj=y nht=%g oht=%g dht=%g %s swf=${SOURCES[1]} rwf=${SOURCES[2]} slo=${SOURCES[3]} | real ''' % (par['nht'],par['oht'],par['dht'],spmig.param(par))) Flow(bsl+'-all', [bsl+'-e%03d' % x for x in range(par['ns'])], 'cat space=n axis=2 ${SOURCES[1:%d]}'%par['ns']) Flow(bsl,bsl+'-all','stack | spray axis=2 n=1 o=0 d=1') # plot complete slowness backprojection Plot(bsl, 'window | transp |' + fdmod.cgrey('color=e pclip=97',par)) Result(bsl,[bsl,ss],'Overlay') # clip slowness perturbation Flow(bsl+'-byt', bsl+'-all','byte gainpanel=a pclip=97') for iexp in range(par['ns']): etag = "-e%03d" % iexp # plot partial slowness backprojection Plot(bsl+etag,bsl+'-byt', 'window n2=1 f2=%d | transp |' % iexp + fdmod.cgrey('color=e',par)) Result(bsl+etag,[bsl+etag,ss+etag],'Overlay')
def stereo3d(par): # 3D stereographic IC Flow( 'kk', ['qs', 'qr'], ''' sic3d ur=${SOURCES[1]} nbuf=500 verb=y stack=n oanga=%(oanga)g nanga=%(nanga)d danga=%(danga)g oangb=%(oangb)g nangb=%(nangb)d dangb=%(dangb)g nl=%(nl)d dl=%(dl)g sig=%(sig)g ''' % par) Plot( 'kk', 'transp plane=23 | stack | transp | ' + fdmod.cgrey('pclip=99.9', par)) Result('kk', ['kk', 'ss', 'sx'], 'Overlay')
def forward(dsl,dim,swfl,rwfl,slo,ss,par): for iexp in range(par['ns']): etag = "-e%03d" % iexp Flow(dim+etag, [dsl,swfl+etag,rwfl+etag,slo], ''' rtoc | ../Code/srmvatau.x adj=n nht=%g oht=%g dht=%g %s swf=${SOURCES[1]} rwf=${SOURCES[2]} slo=${SOURCES[3]} | real ''' % (par['nht'],par['oht'],par['dht'],spmig.param(par))) Flow(dim+'-all', [dim+'-e%03d' % x for x in range(par['ns'])], 'cat space=n axis=2 ${SOURCES[1:%d]}'%par['ns']) Flow(dim,dim+'-all','stack | spray axis=2 n=1 o=0 d=1') # plot complete image perturbation Plot(dim, 'window n4=1 min4=0 | transp |' + fdmod.cgrey('pclip=97',par)) Result(dim,[dim,ss],'Overlay') # plot DIM tiles Result(dim+'-tile', dim, ''' window j1=%(jcig)d f1=%(fcig)d | transp plane=12 | transp plane=23 | put n2=%(nxtile)d o2=%(oxtile)g d2=%(dxtile)g n3=1 | ''' % par + fdmod.cgrey('wantaxis2=n pclip=97',par))
def cliptogether(plot,file1,file2,title1,title2,axis,custom,par): Flow(plot+'-all',[file1,file2], ''' cat axis=3 space=n ${SOURCES[1]} | byte gainpanel=a %s ''' %custom) if(axis==1): if('ys' not in par): par['ys']=0.75 if('xs' not in par): par['xs']=0.75 if('xc' not in par): par['xc']=-8.25 Plot(file1,plot+'-all','window n3=1 f3=0 |' + fdmod.cgrey(custom+' title=%s'%title1,par)) Plot(file2,plot+'-all','window n3=1 f3=1 |' + fdmod.cgrey(custom+' title=%s wantaxis1=n label1= unit1= '%title2,par)) pplot.p1x2(plot,file1,file2,par['ys'],par['xs'],par['xc']) else: if('ys' not in par): par['ys']=.75 if('xs' not in par): par['xs']=.75 if('yc' not in par): par['yc']=-5 Plot(file1,plot+'-all','window n3=1 f3=1 |' + fdmod.cgrey(custom+' title=%s wantaxis2=n label2= unit2='%title1,par)) Plot(file2,plot+'-all','window n3=1 f3=0 |' + fdmod.cgrey(custom+' title=%s '%title2,par)) p2x1(plot,file1,file2,par['ys'],par['xs'],par['yc'])
def importref(par): # prepare reflectivity sigsbee.getreflect('ref_',par) Result('ref',fdmod.cgrey('pclip=99',par)) # padding in z Flow('rpad','ref_', ''' window n1=1 f1=1200 | spray axis=1 n=143 | smooth rect2=250 repeat=5 ''' ) Flow('sub',None, ''' spike nsp=1 mag=1 n1=3201 d1=0.00762 o1=3.048 k1=0 l1=%(nx)d n2=1180 d2=0.00762 o2=0 k2=1179 l2=1179 | put label1=x label2=z unit1=km unit2=km | transp ''' % par) Flow('rsed','ref_','window n1=1180' ) Flow('rsed_','sub rsed','add ${SOURCES[1]}') Flow('ref','rsed_ rpad','cat axis=1 ${SOURCES[1]}')
def mig(migCC, migRC, frqRC, abmRC, abrRC, cos, par): par['j2'] = par.get('j2', 1) for i in (['SSF', 'FFD', 'PSC', 'F15', 'F45', 'F60']): sfx = '-' + i if (i == 'F15'): method = 'method=0 c1=0.50 c2=0.00' if (i == 'F45'): method = 'method=0 c1=0.50 c2=0.25' if (i == 'F60'): method = 'method=0 c1=0.4761 c2=0.3767' if (i == 'SSF'): method = 'method=1' if (i == 'FFD'): method = 'method=2 c1=0.50 c2=0.25' if (i == 'PSC'): method = 'method=3 c1=0.50 c2=0.25' Flow( migRC + sfx, [frqRC, abmRC, abrRC], ''' rwezomig ntap=%d adj=n verb=y %s abm=${SOURCES[1]} abr=${SOURCES[2]} | put label1=g label2=t ''' % (par['ntap'], method)) Flow( migCC + sfx, [migRC + sfx, cos], ''' c2r rays=${SOURCES[1]} adj=y linear=n nsz=%(nsz)d nsx=%(nsx)d a2n=%(nz)d a2o=%(oz)g a2d=%(dz)g a1n=%(nx)d a1o=%(ox)g a1d=%(dx)g | put label1=z label2=x ''' % par) Plot(migRC + sfx, 'window | transp |' + rgrey('pclip=99.9', par)) Result(par['prefix'] + migRC + sfx, migRC + sfx, 'window j2=%(j2)d | transp |' % par + rgrey('pclip=99.9', par)) Plot(migCC + sfx, 'window j1=2 j2=2 | transp |' + fdmod.cgrey('pclip=100', par)) Result(par['prefix'] + migCC + sfx, [migCC + sfx, cos], 'Overlay' % par)
def inimodel(ss, rr, par): Result('vwin', fdmod.cgrey('color=j allpos=y wantscalebar=y', par)) # ------------------------------------------------------------ sigs.saltmask('mask', 'vwin', par) Result('mask', fdmod.cgrey('wantscalebar=y', par)) Flow( 'vo', ['vwin', 'mask'], 'math m=${SOURCES[1]} output="input*(1-m)+m*0.85*14.76*%g"' % par['ft2km']) # ------------------------------------------------------------ Flow('vp', 'vwin', 'scale rscale=1') Flow('nu', 'vp', 'math output=0.0') # vp/vs Flow('vsvpratio', 'vwin', ''' math output="0.40+0.25*(x1-2.)/9." ''') Flow( 'vs', 'vp vsvpratio mask', ''' math r=${SOURCES[1]} output="input*r" | math m=${SOURCES[2]} output="input*(1-m)+m*8*%g" ''' % par['ft2km']) # epsilon and delta Flow('amask', 'vp', 'mask min=2.0 max=4 | dd type=float') Result('amask', fdmod.cgrey('allpos=y', par)) Flow('bmask', 'vp', 'mask min=2.5 max=3.0 | dd type=float') Result('bmask', fdmod.cgrey('allpos=y', par)) Flow('cmask', 'vp', 'mask min=2.5 max=4 | dd type=float') Result('cmask', fdmod.cgrey('allpos=y', par)) Flow('denmask', 'vp', 'mask max=4 | dd type=float') Result('denmask', fdmod.cgrey('allpos=y', par)) # Flow('ro','vp','math output="-input*0.27+3.3" ') # ro Flow( 'ro', ['mask', 'vp'], ''' math output="-a " a=${SOURCES[0]} | math output="input+v*0.8-.2" v=${SOURCES[1]} ''') # epsilon Flow( 'epsilon', ['amask', 'bmask', 'vp'], ''' math output="a*0.28+b*0.2" a=${SOURCES[0]} b=${SOURCES[1]} | math output="input*v/3.0" v=${SOURCES[2]} ''') # delta Flow( 'delta', ['amask', 'bmask', 'cmask', 'vp'], ''' math output="a*0.0+b*0.05+c*0.05" a=${SOURCES[0]} b=${SOURCES[1]} c=${SOURCES[2]} | math output="input*v/3.0" v=${SOURCES[3]} ''') labelattr = 'labelsz=11 wantscalebar=y bartype=h yll=1.5 screenht=9.5 wherebarlabel=top wherebartics=top wherebar=top ' Plot( 'vp', fdmod.cgrey( 'allpos=y bias=1.43 color=j barunit="km/s" barlabel="V\_P\^" ' + labelattr, par)) Plot( 'vs', fdmod.cgrey( 'allpos=y bias=0.72 color=j barunit="km/s" barlabel="V\_S\^" ' + labelattr, par)) Plot( 'ro', fdmod.cgrey( 'allpos=y bias=1.0 color=j barunit="\F4 g/cm\^3" barlabel="\F9 r" ' + labelattr, par)) Plot( 'epsilon', fdmod.cgrey( 'allpos=y color=iC color=j formatbar=%4.2f barlabel="\s150 \F9 e" ' + labelattr, par)) Plot( 'delta', fdmod.cgrey( 'allpos=y color=iC color=j formatbar=%4.2f barlabel="\s150 \F9 d" ' + labelattr, par)) Plot( 'vpvsratio', 'vsvpratio', 'math output="1/input" |' + fdmod.cgrey('allpos=y color=iC color=j', par)) for i in (['vp', 'vs', 'ro', 'epsilon', 'delta', 'vpvsratio']): Result(i, [i], 'Overlay')
def slownesses(amask,magn,s,ds,ss,par): # anomaly shape Flow('shapex',amask,'transp') Flow('shape1',[amask,'velC'], 'remap1 pattern=${SOURCES[1]}') Flow('shape2','shape1 velCt','transp | remap1 pattern=${SOURCES[1]} | transp') Flow('anom','shape2 lmask', ''' smooth rect1=100 rect2=100 repeat=2 | scale axis=123 | math s=${SOURCES[1]} output="input*s" ''') Result('anom',fdmod.cgrey('allpos=y',par)) # incorrect velocity Flow('velL',['velC','anom'], 'math v=${SOURCES[0]} a=${SOURCES[1]} output="v*(1.0-(%g)*a)"' % magn) Flow('velH',['velC','anom'], 'math v=${SOURCES[0]} a=${SOURCES[1]} output="v*(1.0+(%g)*a)"' % magn) # velocity plots for i in ('velC','velL','velH'): Result(i,fdmod.cgrey('color=j allpos=y bias=1.5',par)) # ------------------------------------------------------------ # prepare slowness spmig.slowness('svelC','velC',par) spmig.slowness('svelL','velL',par) spmig.slowness('svelH','velH',par) Flow('sdt','svelC','window squeeze=n n3=2 j3=%(nzdtm)d' %par) Flow(s+'C','svelC','window squeeze=n f3=%(nzdtm)d j3=%(jzimg)d'%par) # correct velocity Flow(s+'L','svelL','window squeeze=n f3=%(nzdtm)d j3=%(jzimg)d'%par) # low velocity Flow(s+'H','svelH','window squeeze=n f3=%(nzdtm)d j3=%(jzimg)d'%par) # high velocity Flow('slows',[s+'C',s+'L',s+'H'], ''' cat axis=2 space=n ${SOURCES[1:3]} | byte pclip=100 allpos=y gainpanel=a bias=0.221 ''') Plot(s+'C','slows','window n2=1 f2=0 | transp |'+ fdmod.cgrey('color=j',par)) Plot(s+'L','slows','window n2=1 f2=1 | transp |'+ fdmod.cgrey('color=j',par)) Plot(s+'H','slows','window n2=1 f2=2 | transp |'+ fdmod.cgrey('color=j',par)) for stag in (['L','H','C']): Result(s+stag,[s+stag,ss],'Overlay') for stag in (['L','H']): Flow(ds+stag,[s+stag,s+'C',amask,'shapex'], ''' add scale=-1,1 ${SOURCES[1]} | window | transp | remap1 pattern=${SOURCES[2]} | transp | remap1 pattern=${SOURCES[3]} | window n2=%(nz)d min2=%(oz)g j2=%(jzimg)d | spray axis=2 n=1 o=0 d=1 | window squeeze=n min1=%(ox)g n1=%(nx)d d1=%(dx)g | rtoc ''' % par) Plot( ds+stag,'real | window | transp |'+ fdmod.cgrey('color=e',par)) Result(ds+stag,[ds+stag,ss],'Overlay')
def migration(img,cig,drv,sdat,rdat,swfl,rwfl,slo,ss,par): for iexp in range(par['ns']): etag = "-e%03d" % iexp # select datumed data for individual shots Flow(sdat+etag,sdat,'window n4=1 f4=%d squeeze=n' %iexp) Flow(rdat+etag,rdat,'window n4=1 f4=%d squeeze=n' %iexp) # window frequency slices for MVA Flow(sdat+etag+'-win', sdat+etag,'window squeeze=n n3=%(nwmva)d f3=%(fwmva)d j3=%(jwmva)d' % par) Flow(rdat+etag+'-win', rdat+etag,'window squeeze=n n3=%(nwmva)d f3=%(fwmva)d j3=%(jwmva)d' % par) # wavefields for individual shots zomig.Cwfone3(swfl+etag,sdat+etag+'-win',slo,par) # source zomig.Awfone3(rwfl+etag,rdat+etag+'-win',slo,par) # receiver # migrate Flow([img+etag,cig+etag,drv+etag], [sdat+etag,rdat+etag,slo], ''' ../Code/srmig3.x %s rwf=${SOURCES[1]} slo=${SOURCES[2]} cig=${TARGETS[1]} drv=${TARGETS[2]} ''' % spmig.param(par)) # concatenate images and CIGs for k in ([img,drv,cig]): Flow(k+'-all', [k+'-e%03d' % x for x in range(par['ns'])], 'cat space=n axis=2 ${SOURCES[1:%d]}'%par['ns']) Flow(k,k+'-all','stack | spray axis=2 n=1 o=0 d=1') # plot complete images Plot( img,'window | transp |'+ fdmod.cgrey('pclip=97',par)) Result(img,[img,ss],'Overlay') for k in ([drv,cig]): # plot complete CIGs Result(k,'window n1=1 f1=%d |' % (par['nximg']/4) + adcig.tgrey('',par)) # plot CIG tiles Result(k+'-tile', k, ''' window j1=%(jcig)d f1=%(fcig)d | transp plane=12 | transp plane=23 | put n2=%(nxtile)d o2=%(oxtile)g d2=%(dxtile)g n3=1 | ''' % par + fdmod.cgrey('wantaxis2=n pclip=97',par)) # clip image Flow(img+'-byt', img+'-all','byte gainpanel=a pclip=97') # clip CIGs Flow(cig+'-byt', cig+'-all','byte gainpanel=a pclip=97') for iexp in range(par['ns']): etag = "-e%03d" % iexp # plot partial images Plot(img+etag,img+'-byt', 'window n2=1 f2=%d | transp |' % iexp + fdmod.cgrey('',par)) Result(img+etag,[img+etag,ss+etag],'Overlay') # plot partial CIGs Result(cig+etag, cig+'-byt', 'window n1=1 f1=%d n2=1 f2=%d |' % (par['nximg']/4,iexp) + adcig.tgrey('',par))
def deltaimage(dim,cig,drv,slo,ss,par): # CIG envelope Flow(cig+'-env', cig, ''' window | transp plane=12 | transp plane=23 | envelope | smooth rect1=50 rect2=50 repeat=1 | scale axis=123 | clip clip=0.75 ''') # pick tau Flow(cig+'-pck', cig+'-env', ''' pick rect1=%(npck1)d rect2=%(npck2)d rect3=1 vel0=0.0 | scale rscale=%(scpck)g | transp plane=13 ''' % par) Result(cig+'-pck', 'window | transp |' + fdmod.cgrey('color=j',par)) # plot picked tau on CIG Flow(cig+'-sbt', cig,'byte gainpanel=a pclip=90') for ipos in range(0,par['nximg'],10): ptag = "-x%03d" % ipos Plot(cig+'-pck'+ptag, cig+'-pck', 'window n1=1 f1=%d |' % ipos + tauplot(6,4,'screenratio=3',par) ) Plot(cig+ptag, cig+'-sbt', 'window n1=1 f1=%d |' % ipos + adcig.tgrey('screenratio=3',par)) Result(cig+ptag,[cig+ptag,cig+'-pck'+ptag],'Overlay') # velocity for tau spreading Flow(cig+'-vel', slo, ''' window squeeze=n min1=%(oximg)g n1=%(nximg)d j1=%(jximg)d | math output="1/input" ''' % par) # tau spreading Flow(cig+'-tau',[drv,cig+'-pck',cig+'-vel'], ''' ../Code/tauspread.x fit=${SOURCES[1]} vel=${SOURCES[2]} zmin=2.5 ''') # delta image Flow(dim,[drv,cig+'-tau'],'add mode=p ${SOURCES[1]}') # plot complete image perturbation Plot(dim, 'window n4=1 min4=0 | transp |' + fdmod.cgrey('pclip=97',par)) Result(dim,[dim,ss],'Overlay') # plot DIM tiles Result(dim+'-tile', dim, ''' window j1=%(jcig)d f1=%(fcig)d | transp plane=12 | transp plane=23 | put n2=%(nxtile)d o2=%(oxtile)g d2=%(dxtile)g n3=1 | ''' % par + fdmod.cgrey('wantaxis2=n pclip=97',par))
def run(par): # experiments fdmod.horizontal('rr', 0, par) Plot('rr', 'window j2=10|' + fdmod.rrplot('', par)) Plot('ss', 'window |' + fdmod.ssplot('', par)) Plot('sx', 'window |' + fdmod.ssplot('plotcol=5', par)) # wavelet fdmod.wavelet('wav_', par['frq'], par) Flow('wav', 'wav_', 'transp') Result('wav', 'window n2=200 |' + fdmod.waveplot('', par)) # velocity Flow( 'vbck', None, ''' math n1=%(nz)d o1=%(oz)g d1=%(dz)g output="2000" | spray axis=2 n=%(nx)d o=%(ox)g d=%(dx)g ''' % par) Flow( 'vprt', None, ''' spike nsp=1 mag=1 n1=%(nz)d o1=%(oz)g d1=%(dz)g k1=%(kz)d l1=%(mz)d n2=%(nx)d o2=%(ox)g d2=%(dx)g k2=%(kx)d l2=%(mx)d | smooth rect1=25 rect2=25 repeat=3 | scale axis=123 | scale rscale=%(vprt)g ''' % par) Flow('velo', 'vbck vprt', 'add ${SOURCES[1]}') Plot('velo', fdmod.cgrey('allpos=y bias=1200 pclip=100 color=F', par)) Result('velo', ['velo', 'ss', 'sx'], 'Overlay') # density Flow('dens', 'velo', 'math output=1') # reflector Plot( 'refl', 'refl velo', ''' depth2time velocity=${SOURCES[1]} dt=%(dt)g nt=%(nt)d | scale rscale=-1 | ricker1 frequency=%(frq)g | time2depth velocity=${SOURCES[1]} dz=%(dz)g nz=%(nz)d | ''' % par + fdmod.cgrey('pclip=100', par)) Result('refl', ['refl', 'ss', 'sx'], 'Overlay') # mask Flow( 'mask', None, ''' spike nsp=1 mag=1 n1=%(nx)d o1=%(ox)g d1=%(dx)g k1=101 l1=900 n2=%(nt)d o2=%(ot)g d2=%(dt)g | smooth rect1=100 | scale axis=123 ''' % par) Result('mask', 'transp |' + fdmod.dgrey('allpos=y pclip=100', par)) # F-D modeling (born) fdmod.lwefd1('do', 'wo', 'dd', 'wd', 'wav', 'velo', 'dens', 'refl', 'ss', 'rr', 'jsnap=100', par) Result( 'do', 'transp | window min1=0.25 |' + fdmod.dgrey('min1=0.25 pclip=100', par)) Result( 'dd', 'transp | window min1=0.25 |' + fdmod.dgrey('min1=0.25 pclip=100', par)) Result('wo', fdmod.wgrey('', par)) Result('wd', fdmod.wgrey('', par)) # source data and wavefield fdmod.awefd1('ds', 'ws', 'wav', 'velo', 'dens', 'sx', 'rr', '', par) Result('ws', 'window j3=20 |' + fdmod.wgrey('', par)) # receiver wavefield Flow('du', 'dd mask', 'add mode=p ${SOURCES[1]} | reverse which=2 opt=i verb=y') fdmod.awefd('dx', 'wx', 'du', 'velo', 'dens', 'rr', 'rr', '', par) Flow('dr', 'dx', 'reverse which=2 opt=i verb=y') Flow('wr', 'wx', 'reverse which=4 opt=i verb=y') Result('wr', 'window j3=20 |' + fdmod.wgrey('', par)) for i in range(0, par['nt'] / 100, 1): fdmod.wframe('wo' + '-' + str(i), 'wo', i, 'pclip=99.9', par) fdmod.wframe('wd' + '-' + str(i), 'wd', i, 'pclip=100', par) for i in range(0, par['nt'] / 100, 1): fdmod.wframe('wx' + '-' + str(i), 'wx', i * 25, 'pclip=99.9', par) # ------------------------------------------------------------ minx = 500 maxx = 1500 minz = par['oz'] + par['nz'] * par['dz'] / 2 numz = par['nz'] / 2 mint = 0.1 numt = 150 maxt = mint + numt * par['dt'] * par['jsnap'] # wavefield for i in ('s', 'r'): Flow( 'u' + i, 'w' + i, ''' window min1=%(zmin)g max1=%(zmax)g min2=%(xmin)g max2=%(xmax)g | scale axis=123 ''' % par) Result('u' + i, 'window j3=10 |' + fdmod.wgrey('pclip=99', par)) for k in range(0, par['nt'] / par['jsnap'], 25): fdmod.wframe('u' + i + '-' + str(k / 25), 'u' + i, k, 'pclip=99', par) # windowed wavefields Flow( 'p' + i, 'u' + i, ''' window min1=%g n1=%g min2=%g max2=%g min3=%g n3=%g ''' % (minz, numz, minx, maxx, mint, numt)) Flow('q' + i, 'p' + i, 'transp plane=13 memsize=500') Flow('o' + i, 'q' + i, 'transp plane=23 memsize=500') Flow('qi', 'qs qr', 'add mode=p ${SOURCES[1]}') Flow('oi', 'os or', 'add mode=p ${SOURCES[1]}') for i in ('s', 'r', 'i'): Result('q' + i, 'window j3=10 |' + fdmod.dgrey('gainpanel=a pclip=100', par)) Result( 'o' + i, 'window j3=10 | transp |' + fdmod.egrey('gainpanel=a pclip=100', par)) Flow(['q' + i + 'plt', 'q' + i + 'bar'], 'q' + i, 'byte bar=${TARGETS[1]} gainpanel=a pclip=100') for k in range(10): Result( 'q' + i + 'plt' + str(k), ['q' + i + 'plt', 'q' + i + 'bar'], 'window n3=1 f3=%d |' % (10 * k) + fdmod.dgrey( ''' bar=${SOURCES[1]} min1=%g max1=%g min2=%g max2=%g labelsz=8 labelfat=3 screenratio=1.5 ''' % (mint, maxt, minx, maxx), par)) # cut along the reflectors Flow( 'cut', 'refl', ''' window min1=%g n1=%g min2=%g max2=%g | spray axis=3 n=%d o=%g d=%g | transp plane=13 memsize=500 ''' % (minz, numz, minx, maxx, numt, 0.1, par['dt'] * 4)) for i in ('s', 'r'): Flow( 'c' + i, ['q' + i, 'cut'], ''' add mode=p ${SOURCES[1]} | transp plane=23 | stack ''') Result('c' + i, fdmod.dgrey('', par)) Flow('f' + i, 'q' + i, 'window n3=1 min3=300') Result('f' + i, fdmod.dgrey('', par)) # ------------------------------------------------------------ # conventional IC Flow('ii', ['ps', 'pr'], 'ic ur=${SOURCES[1]} version=0 nbuf=500 verb=y') Plot('ii', fdmod.cgrey('pclip=99.9', par)) Result('ii', ['ii', 'ss', 'sx'], 'Overlay')
def test(vp, vs, ro, epsilon, delta, ss, rr, par): # ------------------------------------------------------------ # source/receiver coordinates Plot( rr, 'window n1=2 | dd type=complex | window j2=10 | ' + fdmod.cgraph('wantscalebar=y symbol=o plotcol=1', par)) Plot( ss, 'window n1=2 | dd type=complex | window | ' + fdmod.cgraph('wantscalebar=y symbol=x plotcol=2', par)) # ------------------------------------------------------------ # acoustic source fdmod.wavelet('wava0', par['frq'], par) Flow('wava', 'wava0', 'transp') Result( 'wava', 'transp | window n1=500 |' + fdmod.waveplot('title="Acoustic source"', par)) # ------------------------------------------------------------ # elastic source fdmod.wavelet('hor0', par['frq'], par) fdmod.wavelet('ver0', par['frq'], par) Flow('hor', 'hor0', 'math output=input*%(hscale)g' % par) Flow('ver', 'ver0', 'math output=input*%(vscale)g' % par) Flow('wave0', 'ver hor', 'cat axis=2 space=n ${SOURCES[1:2]}') Flow( 'wave', 'wave0', ''' transp plane=12 | transp plane=23 | transp plane=12 ''') Plot( 'ver', 'wave', 'window n2=1 f2=0 | window n1=500 |' + fdmod.waveplot('title="Elastic vertical source"', par)) Plot( 'hor', 'wave', 'window n2=1 f2=1 | window n1=500 |' + fdmod.waveplot('title="Elastic horizontal source"', par)) Result('wave', 'hor ver', 'Movie') # ------------------------------------------------------------ Plot(vp, fdmod.cgrey('wantscalebar=y allpos=y bias=1.0 pclip=100', par)) Plot(vs, fdmod.cgrey('wantscalebar=y allpos=y bias=1.0 pclip=100', par)) Plot(ro, fdmod.cgrey('wantscalebar=y allpos=y bias=100000 pclip=100', par)) Plot(epsilon, fdmod.cgrey('wantscalebar=y allpos=y pclip=100', par)) Plot(delta, fdmod.cgrey('wantscalebar=y allpos=y pclip=100', par)) Result(vp, [vp, ss, rr], 'Overlay') Result(vs, [vs, ss, rr], 'Overlay') Result(ro, [ro, ss, rr], 'Overlay') Result(epsilon, [epsilon, ss, rr], 'Overlay') Result(delta, [delta, ss, rr], 'Overlay') fdmod.anisotropic('cc', 'vp', 'vs', 'ro', 'epsilon', 'delta', par) # ------------------------------------------------------------ # acoustic modeling amodel('da', 'wa', 'wava', vp, ro, ss, rr, '', par) Flow( 'waw', 'wa', ''' window min1=%g max1=%g min2=%g max2=%g | scale axis=123 ''' % (par['zmin'], par['zmax'], par['xmin'], par['xmax'])) Result('wa', fdmod.wgrey('pclip=99 title="Acoustic wavefield"', par)) Result( 'da', 'transp | window f1=%(kt)d | put o1=%(ot)g | pad end1=%(kt)d |' % par + fdmod.dgrey('pclip=99 title="Acoustic data" grid=y', par)) # elastic modeling emodel('de', 'we', 'wave', 'cc', ro, ss, rr, 'ssou=%(ssou)s opot=n' % par, par) for i in range(2): Flow( 'we' + str(i + 1), 'we', ''' window n3=1 f3=%d | window min1=%g max1=%g min2=%g max2=%g | scale axis=123 ''' % (i, par['zmin'], par['zmax'], par['xmin'], par['xmax'])) Result('we' + str(i + 1), fdmod.wgrey('title=u%s pclip=99' % str(i + 1), par)) Result( 'de' + str(i + 1), 'de', ''' window n2=1 f2=%d | transp | window f1=%d | put o1=%g | pad end1=%d | ''' % (i, par['kt'], par['ot'], par['kt']) + fdmod.dgrey('title=u%s pclip=99 grid=y' % str(i + 1), par)) Flow('weall', 'we1 we2', 'cat axis=1 space=n ${SOURCES[1]}') Result( 'weall', ''' grey title="Elastic Wavefields" wantaxis=y screenratio=%f screenht=8 gainpanel=a pclip=99 grid1=y grid2=y g1num=0.25 g2num=0.25 ''' % (2 * par['ratio'])) Flow('wall', 'waw we1 we2', 'cat axis=1 space=n ${SOURCES[1:3]}') Result( 'wall', ''' grey title="" wantaxis=y screenratio=%f screenht=10 gainpanel=a pclip=99 grid1=y grid2=y g1num=0.1 g2num=0.1 ''' % (3 * par['ratio'])) # wavefield movie frames for j in range(0, par['nt'] / par['jsnap'], 1): fdmod.wframe('wa-' + str(j), 'wa', j, 'pclip=99.9', par) fdmod.wframe('we1-' + str(j), 'we1', j, 'pclip=99.9', par) fdmod.wframe('we2-' + str(j), 'we2', j, 'pclip=99.9', par)