integral.h
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2025-04-03
将被积函数的逐点值累加成积分值
Functions
-
void grt_int_Pk(real_t k, real_t r, const cplx_t QWV[GRT_SRC_M_NUM][GRT_QWV_NUM], bool calc_uir, cplx_t SUM[GRT_SRC_M_NUM][GRT_INTEG_NUM])
计算核函数和Bessel函数的乘积,相当于计算了一个小积分区间内的值。参数中涉及两种数组形状:
QWV. 存储的是核函数,第一个维度不同震源,不同阶数,第二个维度3代表三类系数qm,wm,vm
SUM. 存储的是该dk区间内的积分值,第一个维度不同震源,不同阶数,维度4代表4种类型的F(k,w)Jm(kr)k的类型
- 参数:
k – [in] 波数
r – [in] 震中距
QWV – [in] 不同震源,不同阶数的核函数 \( q_m, w_m, v_m \)
calc_uir – [in] 是否计算ui_r(位移u对坐标r的偏导)
SUM – [out] 该dk区间内的积分值
-
void grt_merge_Pk(const cplx_t sum_J[GRT_SRC_M_NUM][GRT_INTEG_NUM], cplx_t tol[GRT_SRC_M_NUM][GRT_CHANNEL_NUM])
将最终计算好的多个积分值,按照公式(5.6.22)组装成3分量。
- 参数:
sum_J – [in] 积分结果
tol – [out] Z、R、T分量结果
-
void grt_int_Pk_filon(real_t k, real_t r, bool iscos, const cplx_t QWV[GRT_SRC_M_NUM][GRT_QWV_NUM], bool calc_uir, cplx_t SUM[GRT_SRC_M_NUM][GRT_INTEG_NUM])
和int_Pk函数类似,不过是计算核函数和渐近Bessel函数的乘积 sqrt(k) * F(k,w) * cos ,其中涉及两种数组形状:
QWV. 存储的是核函数,第一个维度不同震源,不同阶数,第二个维度3代表三类系数qm,wm,vm
SUM. 存储的是该dk区间内的积分值,第一个维度不同震源,不同阶数,维度4代表4种类型的F(k,w)Jm(kr)k的类型
- 参数:
k – [in] 波数
r – [in] 震中距
iscos – [in] 是否使用cos函数,否则使用sin函数
QWV – [in] 不同震源,不同阶数的核函数 \( q_m, w_m, v_m \)
calc_uir – [in] 是否计算ui_r(位移u对坐标r的偏导)
SUM – [out] 该dk区间内的积分值
-
void grt_int_Pk_sa_filon(const real_t k3[3], real_t r, const cplx_t QWV3[3][GRT_SRC_M_NUM][GRT_QWV_NUM], bool calc_uir, cplx_t SUM[GRT_SRC_M_NUM][GRT_INTEG_NUM])
对sqrt(k)*F(k,w)进行二次曲线拟合,再计算 (a*k^2 + b*k + c) * cos(kr - (2m+1)/4) 的积分,其中涉及两种数组形状:
QWV. 存储的是核函数,第一个维度不同震源,不同阶数,第二个维度3代表三类系数qm,wm,vm
SUM. 存储的是该三点区间内的积分值,第一个维度不同震源,不同阶数,维度4代表4种类型的F(k,w)Jm(kr)k的类型
- 参数:
k3 – [in] 三点等距波数
r – [in] 震中距
QWV3 – [in] k3对应的不同震源,不同阶数的核函数 \( q_m, w_m, v_m \)
calc_uir – [in] 是否计算ui_r(位移u对坐标r的偏导)
SUM – [out] 该三点区间内的积分值