1、 SU 开源代码 一、home/xwd/SU/src/multicomponent 关于多波 /home/xwd/SU/src/su/main/multicomponent 目录下有关于多波的代码。1、 三分量旋转 suhrot.c Z-N-E 旋转变换到 Z-R-T 2、 线性变换程序 sullt.c R-T 通过 Li 线性变换法变换到 S1-S2 3、极化滤波 4、alford 变化程序 sualford.c R-T 通过 alford 旋转到 S1-S2. 5、 极化分析 二、/home/xwd/SU/src/Fortran Fortran 程序 1 CMP 道集 NMO 速度椭圆方位
2、分析 由 Vladimir Grechka 所写代码。2 3D 射线追踪 三、/home/xwd/SU/src/par 代码挺多。 1 计算 HTI 介质准确反射系数 refRealAziHti.c,由 Ruger 所写。2 计算 VTI 介质反射系数 RefRealVTI.c,由 Ruger 所写。 3 二维射线追踪 Ray2D.c 4 各向异性参数与、弹性参数、刚度系数之间的转换 Thom2hti.c, thom2stiff.c 5 其它 Regrid3.c,三维网格化 不同数据格式之间转换 Recast.c,此外还有很多其它的格式转换数据。 2D、3D 最小平方平滑算法 四、/home/
3、xwd/SU/src/PVM 1. 偏移 2. 贝叶斯反演 3. 静校正 五、/home/xwd/SU/src/refl 1. 模拟层状介质中 PSV 和 SH 波反射率法 Sureflpsvsh.c 六、/home/xwd/SU/src/su 主要包括 SU 下的一套完整处理流程 1. amplitude 振幅处理,包括均衡、去非法值=。 2.attribute-parameter-estimated 参数属性计算,包括井资料的各向异性系数、瞬时振幅属性 3. correlation-convolution 相关和褶积计算。 4. data-conversion 数据格式转换,均方根速度与层
4、速度之间的计算5. migration_inversion 偏移,速度反演 5. 其它 动校正、反褶积、去噪、滤波、道头操作 初至拾取、振幅拾取、静校正、 七、/home/xwd/SU/src/synthetics-waveforms-testpatterns 波场模拟 八、/home/xwd/SU/src/transform 各种变换,包括傅里叶变换、拉冬变换、希尔伯特变化=。 9、/home/xwd/SU/src/velocity_analysis 速度分析。SU 学习笔记(一)这是我学习 SU 时的笔记,其实主要内容就是 SU Manual 的翻译。以后,我会陆续把我学习 SU 时的一些
5、笔记拿出来,给大家分享,希望能对 SU 的初学者有所帮助。 第一章 帮助工具1. suhelp 显示可执行的程序和 Shell 脚本。2. suname 列出 SU 中各项命令的名字和简短描述,以及编码的地址。3. sudoc 得到编码的 DOC 列表,列出 SU 中各条目的在线文档。4. sufind 在自述文档中得到信息,使用给定的字符串查找 SU 命令。5. Demo 演示程序:l SU 软件包中有一套 Shell 脚本演示程序,放在目录$CWPROOT/src/demos 下。$CWPROOT/src/demos/README 文件是这些演示程序的说明书。l Making Data 演
6、示程序显示使用 susynlv 程序制作合成记录炮集和共偏移距道集的基础内容。应当特别注意演示中好的标注风格。l Filter/Sufilter 使用实际数据处理例子演示说明消除地滚波和初至。l Deconvolution 使用 supef 和其它工具简单合成脉冲道集来实例说明去混响和脉冲反褶积处理。演示程序包括使用 loops 系统检验滤波参数影响的命令。6. sukeyword 列出 SU 道头中的关键字 sukeyword o7. SU 基本用法是通过创建 Shell 脚本来实现相应的数据处理。su/examples 目录下有很多这样的例子。第二章 核心 SU 程序一、从磁带上读写数据下
7、面的程序对于地球物理应用中特定的数据输入和输出任务是有用的,对内部SU 数据格式也一样。BHEDTOPAR 把二进制磁带 HEaDer 文件转换成 PAR 文件格式DT1TOSU 把 Sensors step - +1- prev trace; step - -1dN adv N traces; step - N% percentilesr ranksp n1 n2 tabplot! key=val modify field? print this fileq quit 该程序让用户将数据采样值按表格形式浏览到数据,或者浏览或改变单个道头字的值。程序 suxedit 和 suedit 类似,但
8、含有 X-Windows 图形绘图功能用于道数据绘图。四、编辑 SU 数据一旦 SU 格式的数据读入和道头设置正确后,常常要对数据进行操作和编辑。SU 提供的数据处理和编辑的命令有:SUWIND 根据关键字开时窗SUSORT 基于 segy 道头关键字进行道分选SURAMP 从道起点到道终点进行线性斜坡化(Linearly taper)至零值SUTAPER 对一个数据窗进行斜坡化 (taper)至零值SUNULL 产生空道(都为零值)SUZERO 在一时间窗内数据充零SUKILL 地震道充零SUNUTE 根据关键道头字确定的距曲线的距离,去除用户指定的多边形曲线上边或下边的值SUVELENGT
9、H 调整变长度地震道到相同长度地震道SUVCAT 将一个数据附加到另一个数据(一道接一道进行)1. suwind 用关键字选定一定时窗地震道非常常见的操作就是我们时常需要浏览或处理地震数据中的一小块数据。suwind 命令使得我们可以根据大量的参数信息设置窗口来选定感兴趣的数据。通过道头字来设定数据窗口的大小suwind 最简单的用法就是,通过用户设定道头关键字的最小和最大值来选定数据:key=tracl 设置窗口的道头字(see segy.h)min=LONG_MIN 数据关键道头字的最小值max=LONG_MAX 数据关键道头字的最大值例如,用道数作关键字对命令 suplane 产生的数据
10、进行窗口大小设置:suplane | suwind key=tracl min=5 max=10 | sugethw key=tracl | more对于一个大的数据体,应该使用计数(count)参数,而不是最大值。如果直接设定最大值(max) ,命令 suwind 将查询全部数据后,再选择在 最小值和最大值之间的道集,这是因为程序认为道的标志(trace labeling )可能多次出现。例如,可以比较下面的两个命令的结果:suplane ntr=100000 | suwind key=tracl min=5 max=10 | sugethw tracl | moresuplane ntr=
11、100000 | suwind key=tracl min=5 count=5 | sugethw tracl | more更复杂的窗口大小选择如下(例如,使用分数,decimating data):j=1 每个数据的第 j 道不选s=0 以 s 为基数( 如果(key - s)%j) = 0)下面的例子用 suplane 生成的数据,每两道抽取一道(即抽取道2、4、6):suplane | suwind key=tracl j=2 | sugethw key=tracl | more或者每隔2道抽取1道,基数为1(即抽取道1、3、5):suplane | suwind key=tracl j
12、=2 s=1 | sugethw key=tracl | more也可以用 suwind 接受或拒绝某些地震道:reject=none 按指定的关键字跳过的地震道accept=none 用指定的关键字选择地震道例如下面的命令所示,地震道中的第3、8、9道将不显示:suplane | suwind key=tracl reject=3,8,9 | sugethw key=tracl | more参数 accept 选项有点特殊,它表示接收这些道,即使这些道被拒绝过。例如:suplane | suwind key=tracl reject=3,8,9 accept=8 | sugethw key=
13、tracl | more如果你只想接收列表中的道,这时需要设置参数“max=0”, 下列所示只显示出第8道:suplane | suwind key=tracl accept=8 max=0 | sugethw key=tracl | more计数(count)参数覆盖接收(accept )参数,所以如果你想真正无条件接受道,就不能指定计数(count)参数。选取时间窗口(Time gating)有关窗口的第二个问题就是时间窗的设定。垂直时间窗(time gating)的选项为:tmin = 0.0 选取最小时间tmax = (from header) 选取最大时间itmin = 0 选取最小
14、时间采样itmax = (from header) 选取最大时间采样nt = itmax-itmin+1 时间采样点数设置的结果要么是选取最小时间采样和选取最大时间采样(itmin 和 itmax) ,要么选取最小时间和选取最大时间(tmin 和 tmax) ,这样就将产生一个最接近采样的时窗。2. susort 根据 segy 道头字分选道susort 命令利用 Unix 系统 sort 命令,通过道头关键字对地震道进行分选。例如,根据两个关键字(cdp 和 offset)分选数据(数值按升序) ,可用下面的命令:susort outdata.su cdp offset如果 offset 关
15、键字按降序, cdp 关键字按升序进行分选,可用下面的命令:susort outdata.su cdp -offset3. suramp 和 sutaper 数据斜坡化(Tapering)很多地震处理算法因为数据的突变边界而显示假象,在数据边界对振幅进行斜坡化(tapering),就是压制这种假象的最容易的方法。在 SU 中,我们可以使用sutaper 命令对数据边界进行斜坡化。例如,对每5道数据从头到尾进行斜坡化:sutaper stdout ntaper=5suramp 可以平滑从起始道和(或) 末道。例如,斜坡化从0到 tmin=0.05s,然后再向下从 tmax=1.15s 到末道:s
16、uramp stdout4. sukill、suzero、sunull 和 sumute 数据充零对有噪声的道、位于数据边界的道进行充零是有益的。或者是产生一些空道,在绘图时最为联系数据集中间的分割标志。sukill 道充零对一批地震道充零键入:sukill stdout min=MIN_TRACE count=COUNT这里参数 count 是要充零的总道数,参数 min 是要充零的这些道中的最小道号。sunull 产生空道数据有时需要生成道值为零的地震数据块。下面的命令产生共有 NTR 道,时间采样数为 NT 的地震数据:sunull nt=NT ntr=NTR stdout min=MI
17、N_TRACE count=COUNTsuzero 在一段时间窗内对数据充零suzero itmin=MIN_TIME_SAMPLE itmax=MAX_TIME_SAMPLE outdata.susumute 数据去除要进行高精度的压制操作,可用命令 sumute 对 SU 数据进行处理。sumute outdata.su key=KEYWORD xmute=x1,x2,x3,. tmute=t1,t2,t3,.下面用 suplane 生成数据,然后做去除处理与原始生成数据比较:suplane | suxwigb &suplane | sumute key=tracl xmute=1,10,
18、12 tmute=.06,.1,.11 | suxwigb &去除根据 xmute=和 tmute=参数确定的多边形曲线内每一个初至。5. suvcat 和 cat 数据合并有两种方法可以将一种数据附加到另一个上(合并) 。第一种使用 Unix 命令cat,简单的将第二个文件的数据放到第一个文件中去。cat data1.su data2.su data3.su另外,可能需要对地震道重编号:cat data1.su data2.su | sushw key=tracl a=1 data3.su第二种是将第二个数据集中的每一道垂直的附加到第一个数据集中每一道的末尾。这就需要使用 suvcat 命令
19、:suvcat data1.su data2.su data3.su在这个例子中,就不需要修改道头字。6. suvlength 调整可变长度道到相同采样点数有时数据中每道含有不同的采样点数。下面我们对用 suplane 命令生成的数据,用命令 suvlength 处理的道相同的采样点数:suplane nt=64 data1.susuplane nt=32 data2.sucat data1.su data2.su data3.su对于上面合并生成的数据 data3.su,如果想用 SU 程序处理该数据文件将会失败,因为大多说 SU 程序要求数据块含有相同的采样点数。使用命令 suvlengt
20、h 可以解决该问题:suvlength ns=64 data4.susuxwigb data.susuxwigb data.susuop junk1.susuxwigb junk2.susuxwigb junk.vib.susuplane | suconv sufile=junk.vib.su plane.vib.su使用 surange 命令查看 junk.vib.su 数据的信息:surange data.su参数 itmin=sweeplength 和 itmax=sweeplength+nsout,参数 nsout 是期望输出的采样点数,最后使用 sushw 设置道延迟为0。选择参数
21、itmin=sweeplength 将保证数据从正确的值起始。4)supef - Wiener 预测误差滤波5)sushape - Wiener 整形滤波5. 2D 滤波操作二维空间(k1,k2)和(F,K)域滤波有助于改变数据的倾角信息。下面的这些程序初步的提供了一套波数(K)域和频率-波数(F,K)域滤波操作命令:SUKFILTER - radially symmetric K-domain, sin2-tapered, polygonal filterSUK1K2FILTER - symmetric box-like K-domain filter defined by the cart
22、esian product of two sin2-tapered polygonal filters defined in k1 and k2SUKFRAC - apply FRACtional powers of i-k to data, with phase shiftSUDIPFILT - DIP-or better-SLOPE Filter in f-k domain6. suresamp - 数据时间域重采样七、SU 数据绘图及显示Seismic Unix 软件包包括一部分(普通 C 语言类型的浮点格式和 SU 格式)数据绘图的图形工具,均可在 X-Windows 环境下,在屏幕上
23、显示或生成PostScript 格式的图形文件。SU 中能够绘制的图形类型有:contour plots, 等值线绘图gray or colorscale image plots, 灰度或彩色图像wiggle trace plots, 地震道波形图line or symbol graphs, 测线和符号绘图movies, 电影动画3D cube plots (PostScript only). 3D 立体图1. X-Windows 中绘制一般浮点型数据在 X-Windows 环境下,用于绘制浮点型数据(没有 SU 道头)的程序有:XCONTOUR - 调用矢量绘图来绘制 f(x1,x2)的等值线图XIMAGE - 绘制灰度或彩色图像XWIGB - 绘制变面积地震道波形图XGRAPH - 绘制曲线XMOVIE - 绘制动画电影例子:suplane | sustrip data.binxcontour junk1.su