📄 sconstruct
字号:
from rsfproj import *################################### Usefule plotting functions##################################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 ''' % titleFlow('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=4dv=0.075nv=120################################# Processing individual CMPs################################################################ Create offset and cmp headers###############################Flow('off','data','window n1=1 | math output="0.5*x1" ')Flow('cmp','off','math output="input+x2" ')############################### Loop over selected cmps##############################for x in range(1500,4000,500): ################## # Extracting CMP ################## 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)) ################## # Velocity Scan ################## 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" ''') ################## # Velocity Picking ################## 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 = 'nmo%d' % x Flow(nmo,[cdp,off,pik], 'nmo offset=${SOURCES[1]} velocity=${SOURCES[2]}') Plot(nmo,[nmo,off],wiggle('Normal Moveout Applied')) ##################### # Putting it together ##################### Result(cdp,[cdp,scn+'a',nmo],'SideBySideAniso')###################################################### Processing the whole dataset########################################################################### Convert shot to cmp#####################Flow('cmpdata cmpmask','data', ''' reverse which=4 | put o2=0.05 d2=0.05 | shot2cmp mask=${TARGETS[1]} ''')###################### Velocity scan#####################Flow('scan','cmpdata cmpmask', ''' vscan semblance=y mask=${SOURCES[1]} v0=%g dv=%g nv=%d ''' % (v0,dv,nv))###################### Velocity picking#####################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'))###################### NMO and stack#####################Flow('nmo','cmpdata cmpmask pick', 'nmo mask=${SOURCES[1]} velocity=${SOURCES[2]}')Flow('stack','nmo','stack')Result('stack','grey title="NMO Stack" ') End()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -