⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 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 + -