taup_setsac¶
taup_time 命令可以计算各震相的理论走时, taup_setsac 命令则用于计算理论走时并将走时信息写入到 SAC 文件头段变量中。
使用 taup_setsac -help
可查询该命令的完整用法和选项,其用法相对简单,示例如下:
$ taup_setsac -mod prem -evdpkm -ph P-0,S-1,PcP-8,ScS-9 *.SAC
-mod
:指定使用 PREM 模型,默认使用 iasp91 模型。-evdpkm
:由于历史原因,该命令默认 SAC 文件中的震源深度单位为米,而现在的 SAC 文件中的震源深度单位为千米。该选项设置深度的单位为 km。-ph P-0,S-1,PcP-8,ScS-9
:将 P 波到时标记到 SAC 头段变量T0
中,S 波到时标记到T1
中,PcP 到时标记到T8
,ScS 到时标记到T9
。
说明:
SAC 中共有十个可用于存储时间的头段变量,即
T0
至T9
。该命令在将震相走时标记到头段变量
Tn
(n 取 0–9)的同时,还会修改对应的头段变量KTn
和USERn
,其中KTn
中保存震相名,USERn
中保存震相的射线参数(单位为 s/radian)。该命令计算的是震相的理论走时,还须知道发震时刻才能确定震相的理论到时,即震相的到时等于发震时刻加上震相的走时。 因而要求 SAC 头段变量
O
(发震时刻)必须已赋值。该命令从 SAC 头段中读取地震深度和震中距信息,以计算震相理论到时。因而要求 SAC 头段变量
EVDP
(震源深度)必须已赋值。若头段变量GCARC
(震中距,单位为 °)或DIST
(震中距,单位为 km)未赋值,而震源和台站位置的头段变量(EVLA
、EVLO
、STLA
、STLO
)已赋值,该命令可以自动计算震中距,但此时计算的震中距未考虑椭球校正,因而有一定的误差。建议将 SAC 头段变量LCALDA
设置为TURE
,则当事件和台站的坐标被写入或被修改时,头段变量GCARC
、DIST
会自动计算,而 SAC 计算震中距时考虑了地球的扁率(赤道半径 6378.160 km,扁率为 0.00335293)。在某些震中距,单个震相会有多个到时。比如在震中距 20° 附近,S 波会出现三分支现象(Triplication),TauP 会得到七个 S 波到时,但只有最早的到时会被写入到 SAC 头段中。
警告
若在执行该命令前,SAC 头段变量 Tn
中已有值,该命令会覆盖其原始值!
警告
若执行命令时忘记了指定 -evdpkm
选项,此时若震源深度小于 1 km (1000 m),该命令会给出警告。
需要注意,一定不要按 Ctrl+C 终止执行命令。因为 taup_setsac
需要将 SAC 文件读入内存,进行修改,再将内存中的数据写回磁盘覆盖原文件。使用 Ctrl+C 终止命令会导致文件写回磁盘失败,进而导致部分 SAC 文件损坏。
正确的做法是不理会这些警告,待程序执行完毕之后再加上 -evdpkm
选项重新执行。