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.05.0 0.01.00000 -99999.00.0 1.05.0 1.01.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.05.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
得到如下結果:
后面將使用該模型驚醒地震波場的正反演測試。