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] 特定频点的索引值