CNN_Local_SWS: S 波到时计算

该计算过程涉及 理论到时计算S 波实际到时计算时间扰动引入 以及 波形数据读取,确保时间窗口的选取足够精确。


1. 计算 S 波的理论到时

if S_arrival == -1:
    S_arrival = model_s.get_travel_times(
        source_depth_in_km=st[0].stats.sac['evdp'],
        distance_in_degree=st[0].stats.sac['gcarc'],
        phase_list=["s"]
    )[0].time


2. 计算 S 波的实际到时

S_arr = int((st[0].stats.sac['o'] + S_arrival - st[0].stats.sac['b']) * 100) + shift

3. 引入时间扰动

for ishift in range(22):
    shift = int((ishift - 10) * 2 - np.random.choice([0,1], size=1))
    if ishift == 10:
        shift = 0

4. 读取 SAC 头文件时间信息

f = st[0].stats.sac['f']
f_tr = int((f - st[0].stats.sac['b']) * 100)

5. 读取波形数据

nz = '../data/SWS_trace/' + nst + '/' + neq + '/' + nst + '.z'
nn = '../data/SWS_trace/' + nst + '/' + neq + '/' + nst + '.n'
ne = '../data/SWS_trace/' + nst + '/' + neq + '/' + nst + '.e'

st = read(nz)


总结

步骤 关键代码 作用
计算 S 波理论到时 model_s.get_travel_times() 计算 S 波的传播时间
计算 S 波实际到时 (o + S_arrival - b) * 100 + shift 确定 S 波到达时间
时间扰动 shift = (ishift - 10) * 2 - np.random.choice([0,1]) 使 S 波到时产生随机偏移
读取 SAC 头文件 f = st[0].stats.sac['f'] 计算时间窗口信息
读取波形数据 st = read(nz) 读取 Z、N、E 三分量数据

最终 S_arr 1/100 秒单位计算,用于剪切波分裂分析。



Pytheas计算S波到时

函数: arPicker

该函数使用AR-AIC方法(Akazawa, 2004)来自动计算P波和S波的到达时间。此方法集成在Obspy中,使用obspy.signal.trigger.ar_pick来实现。

参数:

  • stream: 包含波形数据的Stream对象(包含3个分量:垂直分量、北向分量和东向分量)。该数据流用于计算P波和S波到达时间。
  • pkCNF: 配置类parsePickerCnf,包含S波和P波到达时间计算所需的设置参数。

返回值:

  • p: P波到达时间,相对于记录开始时间的秒数。
  • s: S波到达时间,相对于记录开始时间的秒数。
def arPicker(stream, pkCNF):
    df = stream[0].stats.sampling_rate  # 采样率
    z, n, e = stream  # 获取三分量(垂直、北向、东向)
   
    # 使用ar_pick计算P波和S波的到达时间
    p, s = ar_pick(
        z.data, n.data, e.data, df,
        pkCNF.arFMIN, pkCNF.arFMAX, pkCNF.arLTAP, pkCNF.arSTAP,
        pkCNF.arLTAS, pkCNF.arSTAS,
        pkCNF.arMP, pkCNF.arMS, pkCNF.arLP, pkCNF.arLS,
        s_pick=True  # 标记计算S波的到达时间
   )
    
    logging.info("AR-AIC arrivals (p,s) in s: " + str((p, s)))
    return p, s

关键步骤:

  1. 参数初始化:从Stream对象中获取采样率(df)和波形数据(z, n, e)。这些数据是用于计算P波和S波到达时间的输入。
  2. 调用ar_pick:使用ar_pick函数计算P波和S波的到达时间。该函数包含了多个参数,用于配置计算过程中的频率范围、滤波器参数等。
  3. 返回结果:返回P波和S波的到达时间(单位为秒),并记录日志输出。

参考文献:

  • Akazawa, T., 2004. A technique for automatic detection of onset time of P-and S-Phases in strong motion records, 13th World Conference on Earthquake Engineering.

转载请注明出处