taup_setsac

本节贡献者

田冬冬(作者)、 姚家园(审稿)

最近更新日期

2021-01-04


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 中共有十个可用于存储时间的头段变量,即 T0T9

  • 该命令在将震相走时标记到头段变量 Tn (n 取 0–9)的同时,还会修改对应的头段变量 KTnUSERn,其中 KTn 中保存震相名, USERn 中保存震相的射线参数(单位为 s/radian)。

  • 该命令计算的是震相的理论走时,还须知道发震时刻才能确定震相的理论到时,即震相的到时等于发震时刻加上震相的走时。 因而要求 SAC 头段变量 O (发震时刻)必须已赋值。

  • 该命令从 SAC 头段中读取地震深度和震中距信息,以计算震相理论到时。因而要求 SAC 头段变量 EVDP (震源深度)必须已赋值。若头段变量 GCARC (震中距,单位为 °)或 DIST (震中距,单位为 km)未赋值,而震源和台站位置的头段变量(EVLAEVLOSTLASTLO)已赋值,该命令可以自动计算震中距,但此时计算的震中距未考虑椭球校正,因而有一定的误差。建议将 SAC 头段变量 LCALDA 设置为 TURE,则当事件和台站的坐标被写入或被修改时,头段变量 GCARCDIST 会自动计算,而 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 选项重新执行。