Seismic Unix简介
Seismic Unix(SU)是由科罗拉多矿业学院(Colorado School of Mines)开发的开源地震数据处理软件包,专为地震勘探数据分析和研究设计。它提供了一系列命令行工具,支持从数据加载、处理到可视化全流程操作,广泛应用于学术界和工业界。
核心特点
- 开源免费:遵循GPL协议,允许用户自由修改和扩展。
- 模块化设计:每个功能对应独立命令,可通过管道组合实现复杂流程。
- 支持多种数据格式:兼容SEGY、SU等常见地震数据格式。
- 跨平台:可在Linux、Unix及macOS系统运行,部分工具支持Windows(需Cygwin)。
主要功能模块
- 数据处理:包含滤波、反褶积、速度分析、偏移成像等算法。
- 可视化:通过
xwigb
、suximage
等工具实现交互式图形显示。 - 脚本支持:与Shell脚本、Python等结合,自动化处理流程。
安装与使用
- 下载:官网(https://wiki.seismic-unix.org)提供源码包。
- 编译:依赖C编译器及X11开发库,配置后通过
make
安装。 - 示例命令:
suplane | suxwigb & # 生成测试数据并显示波形
应用场景
- 科研教育:用于地震算法开发与教学演示。
- 工业预处理:快速验证数据质量或原型开发。
Seismic Unix以轻量级和灵活性著称,适合需要高度定制化处理的用户。
unif2介绍
UNIF2 - generate a 2-D UNIFormly sampled velocity profile from a layered
model. In each layer, velocity is a linear function of position.
unif2 < infile > outfile [parameters]
Required parameters:
none
Optional Parameters:
ninf=5 number of interfaces
nx=100 number of x samples (2nd dimension)
nz=100 number of z samples (1st dimension)
dx=10 x sampling interval
dz=10 z sampling interval
npmax=201 maximum number of points on interfaces
fx=0.0 first x sample
fz=0.0 first z sample
x0=0.0,0.0,…, distance x at which v00 is specified
z0=0.0,0.0,…, depth z at which v00 is specified
v00=1500,2000,2500…, velocity at each x0,z0 (m/sec)
dvdx=0.0,0.0,…, derivative of velocity with distance x (dv/dx)
dvdz=0.0,0.0,…, derivative of velocity with depth z (dv/dz)
method=linear for linear interpolation of interface
=mono for monotonic cubic interpolation of interface
=akima for Akima’s cubic interpolation of interface
=spline for cubic spline interpolation of interface
tfile= =testfilename if set, a sample input dataset is
output to “testfilename”.
Notes:
The input file is an ASCII file containing x z values representing a
piecewise continuous velocity model with a flat surface on top. The surface
and each successive boundary between media are represented by a list of
selected x z pairs written column form. The first and last x values must
be the same for all boundaries. Use the entry 1.0 -99999 to separate
entries for successive boundaries. No boundary may cross another. Note
that the choice of the method of interpolation may cause boundaries
to cross that do not appear to cross in the input data file.
The number of interfaces is specified by the parameter “ninf”. This
number does not include the top surface of the model. The input data
format is the same as a CSHOT model file with all comments removed.
Example using test input file generating feature:
unif2 tfile=testfilename produces a 5 interface demonstration model
unif2 < testfilename | psimage n1=100 n2=100 d1=10 d2=10 | …
生成一个基本地层文件,这里使用1.0 -99999区分层结构,第一列是x轴坐标,第二列是y轴坐标。第一个点:x轴坐标0.0,y轴坐标1.0,第二个点:x轴坐标5.0,y轴坐标1.0为一个层结构。
0.0 0.0
5.0 0.0
1.00000 -99999.0
0.0 1.0
5.0 1.0
1.00000 -99999.0
这个模型使用绘图指令可以得到简单的分层数据结构
#! /bin/sh
# Examples of producing single shot records with susynlv
#simple_circle.sh file
WIDTH=400
HEIGHT=400
XOFF1=0
XOFF2=315
XOFF3=630
XOFF4=945
YOFF1=50
YOFF2=500
# Flat model and data
nx=101 fx=0 dx=0.05
nz=101 fz=0 dz=0.04
unif2 <simplemodel ninf=2 nx=$nx nz=$nz dx=$dx dz=$dz \
v00=10.0,20.0 method=linear |
ximage perc=99 title="Flat Model" windowtitle="Flat Model"\
label1="Depth (km)" label2="Distance (km)" \
n1=$nz f1=$fz d1=$dz n2=$nx f2=$fx d2=$dx \
wbox=${WIDTH} hbox=${HEIGHT} xbox=${XOFF1} ybox=${YOFF1} &
exit 0
得到如下地层结构结果,下面稍微调整一下数据
这里设计三个点(0,2)(2,2)(5,1),三个坐标点连成一条线,结果如图所示:
0.0 0.0
5.0 0.0
1. -99999.0
0.0 2.0
2.0 2.0
5.0 1.0
1. -99999.0
在稍微复杂一点设计一个圆形结构:
0.0 0.0
10.0 0.0
1. -99999.0
5 2
5.4 2.39
5.8 2.72
6.2 2.93
6.6 3.00
7 2.91
7.4 2.68
7.8 2.33
8.2 1.94
1. -99999.0
这个结果看起来不好看,修改一下model文件
0.0 0.0
10.0 0.0
1.0 -99999.0
0. 1.0
10.0 1.0
1.0 -99999.0
2 2.60
2.4 2.83
2.8 3.03
3.2 3.16
3.6 3.20
4 3.15
4.4 3.01
4.8 2.80
5.2 2.56
5.6 2.33
6 2.15
6.4 2.03
6.8 2.00
7.2 2.07
7.6 2.22
8 2.43
8.4 2.67
1.0 -99999.0
再次运行simple_circle.sh,可以得到如下结构
这个看起来有趣多。
这里还是可以再平滑一点。
速度文件如下:
0 0
4000 0
1 -99999
0 1000
500 1100
1000 1300
2000 1000
2700 1100
3200 1000
4000 1050
1 -99999
宏指令如下:
#! /bin/sh
# Examples of producing single shot records with susynlv
#input parameters
modelfile=syncline.unif2
velfile=syncline.bin
n1=200
n2=400
d1=10
d2=10
#use unif2 to build the velocity profile
unif2 <$modelfile method=linear ninf=2 nx=$n2 nz=$n1 v00=1000,2000 \
ninf=1 method=spline > $velfile
#veiw the velocity profile on the screen
ximage<$velfile wbox=400 hbox=400 n1=$n1 n2=$n2 d1=$d1 d2=$d2 \
wbox=800 hbox=400 legend=1 title="Syncline model" label1="depth m" \
label2="distance m" units="m/s" &
exit 0
得到如下结果:
后面将使用该模型惊醒地震波场的正反演测试。