✍️ 朱邓达  •  📅 2025-04-24  •  ⚡ 2025-09-22

控制波数积分

计算动态格林函数 部分介绍了程序将按以下形式从数值上计算波数积分,

\[P_m(\omega) = \Delta k \sum_{j=0}^{\infty} F_m(k_j,\omega)J_m(k_j r)k_j\]

其中 \(\Delta k = 2\pi/L, k_j=j\Delta k\)\(L\) 为特征长度,即 \(L\) 控制波数积分的积分间隔,默认根据 计算动态格林函数 部分介绍的约束条件自动确定。

程序会取一个较大值 \(k_{\text{max}}\) 作为波数积分的上限,经验公式为

\[k_{\text{max}} = \sqrt{k_0^2 + s \cdot \left(\dfrac{\omega}{v_{\text{min}}}\right)^2}\]

其中

  • \(k_0\) 为零频的波数积分上限,默认为 \(\dfrac{5\pi}{h_s}\)\(h_s\) 为震源和场点的深度差(绝对值),限制最小为1km,若实际深度差小于该值,则自动使用峰谷平均法;

  • \(\omega\) 为角频率;

  • \(v_{\text{min}}\) 为参考最小速度,默认取自模型中的最小速度,且限制在0.1km/s以上;若传入负值,表明使用峰谷平均法(负号不参与计算)。

  • \(s\) 为放大系数,默认为1.15;

程序支持自动判断积分收敛 (Yao and Harkrider, 1983) 。当所有积分满足如下表达式时,自动退出波数循环(若达到 \(k_{\text{max}}\) 则强制退出 ),

\[\left | \dfrac{ k_j F_m(k_j,\omega) J_m(k_j r) } {\sum_{i=1}^j k_i F_m(k_i,\omega) J_m(k_i r) } \right | \le \epsilon\]

其中 \(\epsilon\) 为预先指定的收敛精度。程序默认不使用该功能。


通过以下可选参数,可直接控制波数积分, 也将直接影响程序计算结果和运行时长

详见 greenfnstatic_greenfn 模块的 -K 选项。