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

📄 sconstruct

📁 国外免费地震资料处理软件包
💻
字号:
##  # GEO391 - Homework 1 (part b) ##from rsfproj import *# ------------------------------------------------------------# Finite-differences modeling program# ------------------------------------------------------------import rsfprojproj = rsfproj.Project()proj.Program('AFDM.c')# ------------------------------------------------------------par = {    'nt':1500,   # no of time steps    'dt':0.0005, #       time sampling    'ot':0,      #       time origing    'kt':100,    # wavelet delay    #    'ns':1,      # no of shots    'os':2000,   #       shots origin    'ds':20,     #       shots sampling    #    'nr':401,    # no of receivers    'or':0,      #       receivers origin    'dr':2.5,    #       receivers sampling    #    'nm':1,      # no of models    #    'nx':401, 'ox':0, 'dx':2.5,    'nz':201, 'oz':0, 'dz':2.5    }par['xmin']=par['ox']par['xmax']=par['ox'] + (par['nx']-1) * par['dx']par['zmin']=par['oz']par['zmax']=par['oz'] + (par['nz']-1) * par['dz']par['tmin']=par['ot']par['tmax']=par['ot'] + (par['nt']-1) * par['dt']# ------------------------------------------------------------# ------------------------------------------------------------# plotting functionsdef igrey(custom,par):    return '''    grey labelrot=n wantaxis=y wanttitle=n wantscalebar=n    title="" pclip=99 label1=z unit1=m label2=x unit2=m %s    min1=%g max1=%g min2=%g max2=%g    screenratio=0.5 screenht=7 crowd=0.9    ''' % (custom,par['zmin'],par['zmax'],par['xmin'],par['xmax'])def dgrey(custom,par):    return '''    transp |    grey labelrot=n wantaxis=y wanttitle=n    title="" pclip=99 label1=t unit1=s label2=x unit2=m %s    min2=%g max2=%g    screenratio=1.0 screenht=14 crowd=0.9    ''' % (custom,par['xmin'],par['xmax'])def pgraph(custom,par):    return '''    graph labelrot=n  %s    yreverse=y symbolsz=4 wantaxis=n title=" " wantscalebar=n    min1=%g max1=%g min2=%g max2=%g    screenratio=0.5 screenht=7 crowd=0.9    ''' % (custom,par['xmin'],par['xmax'],par['zmin'],par['zmax'])def wgrey(custom,par):    return '''    window min1=%g max1=%g min2=%g max2=%g |    grey labelrot=n wantaxis=y wanttitle=y wantscalebar=n    title="" pclip=99 label1=z unit1=m label2=x unit2=m %s    screenratio=0.5 screenht=7 crowd=0.9    ''' % (par['zmin'],par['zmax'],par['xmin'],par['xmax'],custom)# ------------------------------------------------------------# modeling functions# constant densitydef amodel(dat,wfl,  wav,vel,den,sou,rec,custom):    Flow( [dat,wfl],[wav,vel,den,sou,rec,'AFDM.exe'],         '''         ./%s.exe         verb=y abc=y free=n snap=y jsnap=50 %s         nbz=100 tz=0.0035         nbx=100 tx=0.0035         vel=${SOURCES[1]}         den=${SOURCES[2]}         sou=${SOURCES[3]}         rec=${SOURCES[4]}         wfl=${TARGETS[1]}         ''' % ('AFDM',custom))# ------------------------------------------------------------# source waveletFlow('wav',None,         '''         spike nsp=1 mag=1 n1=%(nt)d d1=%(dt)g o1=%(ot)g k1=%(kt)d |         ricker1 frequency=50 |         scale axis=123 |         put label1=t label2=x label3=y          ''' % par)    Result('wav','wav','window n1=200 | graph title="" label1=t unit1=s label2=')# ------------------------------------------------------------# receiver coordinatesFlow('r_',None,'math n1=%(nr)d d1=%(dr)g o1=%(or)g output=0' % par)Flow('zr','r_','math output="0" ')Flow('xr','r_','math output="x1"')Flow('rc',['xr','zr'],     '''     cat axis=2 space=n     ${SOURCES[0]} ${SOURCES[1]} | transp     ''', stdin=0)Plot('rc','window n1=2 | dd type=complex | window j2=10 | '     + pgraph('symbol=. plotcol=6',par))# source coordinatesFlow('s_',None,'math n1=1      d1=0      o1=0      output=0' % par)Flow('zs','s_','math output=0')Flow('xs','s_','math output=400')Flow('rs','s_','math output=1')Flow('sc',['xs','zs','rs'],     '''     cat axis=2 space=n     ${SOURCES[0]} ${SOURCES[1]} ${SOURCES[2]} | transp     ''', stdin=0)Plot('sc','window n1=2 | dd type=complex | window | '     + pgraph('symbol=v plotcol=6',par))# ------------------------------------------------------------# background velocityFlow('vo',None,     '''     math n1=%(nz)d o1=%(oz)g d1=%(dz)g output="1500+1.0*x1" |     spray axis=2 n=%(nx)d o=%(ox)g d=%(dx)g     ''' % par)# background densityFlow('ro',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)# velocity perturbationFlow('vx',None,     '''     spike nsp=2 mag=-0.3,0.3     n1=%(nz)d o1=%(oz)g d1=%(dz)g k1=065,101 l1=100,125     n2=%(nx)d o2=%(ox)g d2=%(dx)g k2=150,175 l2=250,225 |     smooth rect1=15 rect2=15 repeat=2     ''' % par)# density perturbationsFlow('rx',None,     '''     spike nsp=2 mag=0.4,-0.4     n1=%(nz)d o1=%(oz)g d1=%(dz)g k1=130,150 l1=131,151 |     spray axis=2 n=%(nx)d o=%(ox)g d=%(dx)g     ''' % par)# combined model: background + perturbationFlow('vv',['vo', 'vx' ],'math c=${SOURCES[0]} r=${SOURCES[1]} output="c*(1+r)"')Flow('rr',['ro', 'rx' ],'math c=${SOURCES[0]} r=${SOURCES[1]} output="c*(1+r)"')# ------------------------------------------------------------# modelingamodel('dv','wv','wav','vv','rr','sc','rc','free=n dens=n')amodel('dr','wr','wav','vv','rr','sc','rc','free=n dens=y')# ------------------------------------------------------------# results# modelPlot('vv',igrey('color=j allpos=y bias=1000 pclip=100',par))Plot('rr',igrey('        allpos=y bias=1500 pclip=100',par))Result('mcomp',['vv','rr'],'SideBySideIso')# wavefieldsResult('wvmovie','wv',wgrey('gainpanel=a',par))Result('wrmovie','wr',wgrey('gainpanel=a',par))Flow('wvf','wv','window n3=1 f3=13')Flow('wrf','wr','window n3=1 f3=13')Flow(['wcomp','wbar'],['wvf','wrf'],     '''     cat axis=3 space=n ${SOURCES[0:2]} |     byte bar=${TARGETS[1]} gainpanel=all pclip=98     ''', stdin=0)Plot('wv',['wcomp','wbar'],'window n3=1 f3=0 |' + igrey('bar=${SOURCES[1]}',par))Plot('wr',['wcomp','wbar'],'window n3=1 f3=1 |' + igrey('bar=${SOURCES[1]}',par))Result('wcomp',['wv','wr'],'SideBySideIso')# dataFlow(['dcomp','dbar'],['dv','dr'],     '''     cat axis=3 space=n ${SOURCES[0:2]} |     byte bar=${TARGETS[1]} gainpanel=all pclip=98     ''', stdin=0)Plot('dv',['dcomp','dbar'],'window n3=1 f3=0 |' + dgrey('bar=${SOURCES[1]}',par))Plot('dr',['dcomp','dbar'],'window n3=1 f3=1 |' + dgrey('bar=${SOURCES[1]}',par))Result('dcomp',['dv','dr'],'SideBySideIso')# ------------------------------------------------------------End()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -