grn.h

以下代码实现的是 广义反射透射系数矩阵+离散波数法 计算理论地震图,参考:

    1. 姚振兴, 谢小碧. 2022/03. 理论地震图及其应用(初稿).  
    2. Yao Z. X. and D. G. Harkrider. 1983. A generalized refelection-transmission coefficient 
          matrix and discrete wavenumber method for synthetic seismograms. BSSA. 73(6). 1685-1699
Author

Zhu Dengda (zhudengda@mail.iggcas.ac.cn)

Date

2024-07-24

Functions

void grt_integ_grn_spec(GRT_MODEL1D *mod1d, size_t nf1, size_t nf2, real_t *freqs, size_t nr, real_t *rs, real_t wI, bool keepAllFreq, real_t vmin_ref, real_t keps, real_t ampk, real_t k0, real_t Length, real_t filonLength, real_t safilonTol, real_t filonCut, bool print_progressbar, cplx_t *grn[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM], bool calc_upar, cplx_t *grn_uiz[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM], cplx_t *grn_uir[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM], const char *statsstr, size_t nstatsidxs, size_t *statsidxs)

积分计算Z, R, T三个分量格林函数的频谱的核心函数(被Python调用)

参数:
  • mod1d[in] GRT_MODEL1D 结构体指针

  • nf1[in] 开始计算频谱的频率索引值, 总范围在[nf1, nf2]

  • nf2[in] 结束计算频谱的频率索引值, 总范围在[nf1, nf2]

  • freqs[in] 所有频点的频率值(包括未计算的)

  • nr[in] 震中距数量

  • rs[in] 震中距数组

  • wI[in] 虚频率, \( \tilde{\omega} =\omega - i \omega_I \)

  • keepAllFreq[in] 计算所有频点,不论频率多低

  • vmin_ref[in] 参考最小速度,用于定义波数积分的上限

  • keps[in] 波数积分的收敛条件,要求在某震中距下所有格林函数都收敛,为负数代表不提前判断收敛,按照波数积分上限进行积分

  • ampk[in] 影响波数k积分上限的系数,见下方

  • k0[in] 波数积分的上限 \( \tilde{k_{max}}=\sqrt{(k_{0}*\pi/hs)^2 + (ampk*w/vmin_{ref})^2} \) ,k循环必须退出, hs=max(震源和台站深度差,1.0)

  • Length[in] 波数k积分间隔 \( dk=2\pi/(fabs(L)*r_{max}) \)

  • filonLength[in] Filon积分间隔

  • safilonTol[in] 自适应Filon积分采样精度

  • filonCut[in] 波数积分和Filon积分的分割点

  • print_progressbar[in] 是否打印进度条

  • grn[out] 不同震源不同阶数的格林函数的Z、R、T分量频谱结果

  • calc_upar[in] 是否计算位移u的空间导数

  • grn_uiz[out] 不同震源不同阶数的ui_z的Z、R、T分量频谱结果

  • grn_uir[out] 不同震源不同阶数的ui_r的Z、R、T分量频谱结果

  • statsstr[in] 积分过程输出目录

  • nstatsidxs[in] 输出积分过程的特定频点的个数

  • statsidxs[in] 特定频点的索引值