layer.h
以下代码实现的是 P-SV 波和 SH 波的反射透射系数矩阵 ,参考:
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_topfree_RU(GRT_MODEL1D *mod1d)
计算自由表面的反射系数,公式(5.3.10-14)
- 参数:
mod1d – [inout] 模型结构体指针,结果保存在 Mtop
-
void grt_wave2qwv_REV_PSV(GRT_MODEL1D *mod1d)
计算接收点位置的 P-SV 波接收矩阵,将波场转为位移,公式(5.2.19) + (5.7.7,25)
- 参数:
mod1d – [inout] 模型结构体指针,结果保存在 R_EV
-
void grt_wave2qwv_REV_SH(GRT_MODEL1D *mod1d)
计算接收点位置的 SH 波接收矩阵,将波场转为位移,公式(5.2.19) + (5.7.7,25)
- 参数:
mod1d – [inout] 模型结构体指针,结果保存在 R_EVL
-
void grt_wave2qwv_z_REV_PSV(GRT_MODEL1D *mod1d)
计算接收点位置的ui_z的 P-SV 波接收矩阵,即将波场转为ui_z。 公式本质是推导ui_z关于q_m, w_m, v_m的连接矩阵(就是应力推导过程的一部分)
- 参数:
mod1d – [inout] 模型结构体指针,结果保存在 uiz_R_EV
-
void grt_wave2qwv_z_REV_SH(GRT_MODEL1D *mod1d)
计算接收点位置的ui_z的 SH 波接收矩阵,即将波场转为ui_z。 公式本质是推导ui_z关于q_m, w_m, v_m的连接矩阵(就是应力推导过程的一部分)
- 参数:
mod1d – [inout] 模型结构体指针,结果保存在 uiz_R_EVL
-
void grt_RT_matrix_PSV(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
计算界面的 P-SV 波反射透射系数 RD/RU/TD/TU, 根据公式(5.4.14)计算系数
备注
对公式(5.4.14)进行了重新整理。原公式各项之间的数量级差别过大,浮点数计算损失精度严重。
- 参数:
mod1d – [in] 模型结构体指针
iy – [in] 层位索引
M – [out] R/T矩阵
-
void grt_RT_matrix_SH(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
计算界面的 SH 波反射透射系数 RDL/RUL/TDL/TUL, 根据公式(5.4.31)计算系数
- 参数:
mod1d – [in] 模型结构体指针
iy – [in] 层位索引
M – [out] R/T矩阵
-
void grt_RT_matrix_ll_PSV(const GRT_MODEL1D *mod1d, size_t iy, RT_MATRIX *M)
液-液 界面
-
void grt_RT_matrix_ls_PSV(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
液-固 界面
-
void grt_RT_matrix_ls_SH(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
液-固 界面
-
void grt_RT_matrix_ss_PSV(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
固-固 界面
-
void grt_RT_matrix_ss_SH(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
固-固 界面
-
void grt_delay_RT_matrix(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
为 R/T 矩阵添加时间延迟因子
- 参数:
mod1d – [in] 模型结构体指针
iy – [in] 层位索引
M – [out] R/T矩阵
-
void grt_delay_GRT_matrix(const GRT_MODEL1D *mod1d, const size_t iy, RT_MATRIX *M)
为虚拟层的广义 R/T 矩阵添加时间延迟因子
- 参数:
mod1d – [in] 模型结构体指针
iy – [in] 层位索引
M – [out] R/T矩阵
-
void grt_get_layer_D(cplx_t xa, cplx_t xb, cplx_t kbkb, cplx_t mu, cplx_t omega, real_t rho, real_t k, cplx_t D[4][4], bool inverse, int liquid_invtype)
计算该层的连接 P-SV 应力位移矢量与垂直波函数的D矩阵(或其逆矩阵), 见公式(5.2.19-20)
- 参数:
xa – [in] P波归一化垂直波数 \( \sqrt{1 - (k_a/k)^2} \)
xb – [in] S波归一化垂直波数 \( \sqrt{1 - (k_b/k)^2} \)
kbkb – [in] S波水平波数的平方 \( k_b^2=(\frac{\omega}{V_b})^2 \)
mu – [in] 剪切模量
omega – [in] 角频率
rho – [in] 密度
k – [in] 波数
D – [out] D矩阵(或其逆矩阵)
inverse – [in] 是否生成逆矩阵
liquid_invtype – [in] 对于液体层,矩阵会有很多零,至少第二列、第四列和第四行均为零; 剩余部分根据所选类型进行讨论: [1] 其余6项保留, \( 2\mu\Omega \) 退化为 \( - \rho \omega^2 \) ; [2] 在 [1] 基础上第一行也置零,这用于满足液体层的边界条件; 对应逆矩阵使用伪逆。
-
void grt_get_layer_D11(cplx_t xa, cplx_t xb, real_t k, cplx_t D[2][2])
子矩阵 D11,函数参数见 get_layer_D 函数
-
void grt_get_layer_D12(cplx_t xa, cplx_t xb, real_t k, cplx_t D[2][2])
子矩阵 D12,函数参数见 get_layer_D 函数
-
void grt_get_layer_D21(cplx_t xa, cplx_t xb, cplx_t kbkb, cplx_t mu, cplx_t omega, real_t rho, real_t k, cplx_t D[2][2])
子矩阵 D21,函数参数见 get_layer_D 函数
-
void grt_get_layer_D22(cplx_t xa, cplx_t xb, cplx_t kbkb, cplx_t mu, cplx_t omega, real_t rho, real_t k, cplx_t D[2][2])
子矩阵 D22,函数参数见 get_layer_D 函数
-
void grt_get_layer_D11_uiz(cplx_t xa, cplx_t xb, real_t k, cplx_t D[2][2])
子矩阵 D11_uiz,后缀uiz表示连接位移对z的偏导和垂直波函数,函数参数见 get_layer_D 函数
-
void grt_get_layer_D12_uiz(cplx_t xa, cplx_t xb, real_t k, cplx_t D[2][2])
子矩阵 D12_uiz,函数参数见 get_layer_D 函数
-
void grt_get_layer_T(cplx_t xb, cplx_t mu, cplx_t omega, real_t k, cplx_t T[2][2], bool inverse)
计算该层的连接 SH 应力位移矢量与垂直波函数的 T 矩阵(或其逆矩阵), 见公式(5.2.21-22)
- 参数:
xb – [in] S波归一化垂直波数 \( \sqrt{1 - (k_b/k)^2} \)
mu – [in] 剪切模量
omega – [in] 角频率
k – [in] 波数
T – [out] T矩阵(或其逆矩阵)
inverse – [in] 是否生成逆矩阵
-
void grt_get_layer_E_Rayl(cplx_t xa1, cplx_t xb1, real_t thk, real_t k, cplx_t E[4][4], bool inverse)
计算 P-SV 型垂直波函数的时间延迟矩阵,公式(5.2.27)
-
void grt_get_layer_E_Love(cplx_t xb1, real_t thk, real_t k, cplx_t E[2][2], bool inverse)
计算 SH 型垂直波函数的时间延迟矩阵,公式(5.2.28)
-
void grt_RT_matrix_from_4x4(cplx_t xa1, cplx_t xb1, cplx_t kbkb1, cplx_t mu1, real_t rho1, cplx_t xa2, cplx_t xb2, cplx_t kbkb2, cplx_t mu2, real_t rho2, cplx_t omega, real_t thk, real_t k, cplx_t RD[2][2], cplx_t *RDL, cplx_t RU[2][2], cplx_t *RUL, cplx_t TD[2][2], cplx_t *TDL, cplx_t TU[2][2], cplx_t *TUL, int *stats)
【未维护,未使用,仅用于内部代码测试】 和 calc_RT_PSV(SH) 函数解决相同问题,但没有使用显式推导的公式,而是直接做矩阵运算, 函数接口也类似