震相理论到时

震相理论到时的计算是地震学的基础,具体的原理涉及到一大堆公式,感兴趣的读者可以阅读相关文献。

日常工作中经常需要识别震相、将波形按理论到时排序或迭加、计算震相到时残差等等,这些都需要用到震相理论到时。将震相理论到时写入到 SAC 文件的头段中,可以使得后期处理更加简单。SAC 头段中可以用于保存震相到时信息的头段包括:af 以及 tn(n=0–9), kakfktn 则用于保存相应的震相名信息。

给 SAC 文件标记理论到时有三种方法,下面一一介绍。

手动标记

最直观的办法是根据SAC文件中的震源深度和震中距信息用某些程序计算出理论到时,然后用 chnhdr 命令手动将到时信息写入到 SAC 头段中。

SAC> dg sub teleseis nykl.z     # 以nykl.z为例
SAC> lh evdp gcarc              # 查看震源深度和震中距
     evdp = 0.000000e+00
    gcarc = 3.841450e+01
# 利用某程序计算得到ak135模型下,P波走时为443.14秒,S波走时为799.05秒
# 若SAC文件的参考时间为发震时刻,则
SAC> ch t0 443.14 t1 799.05 kt0 P kt1 S
SAC> lh t0 kt0 t1 kt1
     t0 = 4.431400e+02
    kt0 = P
     t1 = 7.990500e+02
    kt1 = S

该方法很直接也很基础, 其缺点也很明显,那就是麻烦。如果参考时刻不是发震时刻的话,则更复杂一些。

traveltime命令

traveltime 是 SAC 提供的一个命令,用于计算 iasp91 或者 ak135 地球标准模型下的震相理论走时,并自动将震相到时信息保存到 SAC 头段变量中。

SAC> dg sub teleseis nykl.z
SAC> traveltime model iasp91 picks 3 phase P S
traveltime: depth: 0.000000 km
SAC> lh t3 kt3 t4 kt4
         t3 = 4.430530e+02
        kt3 = P
         t4 = 7.999642e+02
        kt4 = S

该命令会将震相P、S的理论到时依次写入头段变量 t3t4 中,并在相应的 K 头段中写入震相名信息。该方法的优点在于是 SAC 内置命令,使用起来也很简单,缺点在于只支持两种地球速度模型。

taup_setsac 命令

TauP 软件提供的 taup_setsac 命令可用于计算震相理论到时并保存到SAC文件中。

$ taup_setsac -mod prem -ph P-6,S-7 -evdpkm *.SAC

该命令会根据 SAC 文件中的震中距和震源深度信息,计算震相在一维地球模型下的理论走时,将震相走时写入到头段 Tn 中,并向 KTn 中写入震相名称,向 USERn 中写入震相的射线参数(单位为 s/radian )。上面的示例中,使用了 PREM 地球模型,将 P 和 S 的走时信息写入到头段 T6T7 中。

该方法的优点在于支持多种地球标准模型、自定义模型以及自定义震相。