integ_method.h

使用结构体来管理与波数积分相关的参数和方法

Author

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

Date

2025-12

Functions

void grt_KMET_init_fstats(const size_t nr, const real_t *rs, const char *statsstr, const char *suffix, K_INTEG_METHOD *Kmet)

初始化 K_INTEG_METHOD 结构体中的文件指针

参数:
  • nr[in] 震中距数量

  • rs[in] 震中距数组

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

  • suffix[in] 文件名后缀

  • Kmet[inout] K_INTEG_METHOD 结构体指针

void grt_KMET_destroy_fstats(const size_t nr, K_INTEG_METHOD *Kmet)

关闭 K_INTEG_METHOD 结构体中的文件指针,并释放内存

参数:
  • nr[in] 震中距数量

  • Kmet[inout] K_INTEG_METHOD 结构体指针

K_INTEG *grt_wavenumber_integral(MODEL1D_STATE *mstat, size_t nr, real_t *rs, K_INTEG_METHOD *Kmet, bool calc_upar, GRT_KernelFunc kerfunc)

发起波数积分的总函数

参数:
  • mstat[inout] MODEL1D_STATE 结构体指针

  • nr[in] 震中距数量

  • rs[in] 震中距数组

  • Kmet[inout] K_INTEG_METHOD 结构体指针

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

  • kerfunc[in] 计算核函数的函数指针

返回:

K_INTEG 结构体指针,对应着积分结果

struct K_INTEG_METHOD

Public Members

real_t k0

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

real_t ampk

影响波数k积分上限的系数

real_t keps

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

real_t vmin

参考最小速度,用于定义波数积分的上限

real_t kcut

波数积分和Filon积分的分割点

real_t kmax

全局波数最大值,程序运行中会随频率变动

real_t dk

DWM 的波数积分间隔

bool applyFIM

是否使用 FIM

real_t filondk

FIM 的波数积分间隔

bool applySAFIM

是否使用 SAFIM

real_t sa_tol

SAFIM 的收敛极限

bool applyDCM

是否使用 DCM

bool applyPTAM

是否使用 PTAM

FILE *fstats

保存核函数的文件指针

FILE *(*ptam_fstatsnr)[2]

保存 PTAM 中核函数以及波峰波谷的文件指针