safim.h
以下代码实现的是自适应Filon积分,参考:
Chen, X., and H. Zhang (2001). An Efficient Method for Computing Green’s Functions for a
Layered Half-Space at Large Epicentral Distances, Bulletin of the Seismological Society of America 91,
no. 4, 858–869, doi: 10.1785/0120000113.
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2025-4-27
Functions
-
real_t grt_sa_filon_integ(MODEL1D_STATE *mstat, real_t k0, real_t dk0, real_t tol, real_t kmax, real_t kref, size_t nr, real_t *rs, K_INTEG *K, FILE *fstats, GRT_KernelFunc kerfunc)
自适应Filon积分, 在大震中距下对Bessel函数取零阶近似,得
\[ J_m(x) \approx \sqrt{\frac{2}{\pi x}} \cos(x - \frac{m \pi}{2} - \frac{\pi}{4}) \]其中 \(x=kr\).- 参数:
mstat – [inout]
MODEL1D_STATE结构体指针k0 – [in] 前一部分的波数积分结束点k值
dk0 – [in] 前一部分的波数积分间隔
tol – [in] 自适应Filon积分的采样精度
kmax – [in] 波数积分的上限
kref – [in] 将k区间整体分为[dk0, kref]和[kref, kmax],后一段使用更宽松的拟合规则
nr – [in] 震中距数量
rs – [in] 震中距数组
K – [inout] 用于存储积分的结构体
fstats – [out] 文件指针,保存不同k值的格林函数积分核函数
kerfunc – [in] 计算核函数的函数指针
- 返回:
k 积分截至时的波数