Skip to content

Commit 8526ee6

Browse files
authored
FIX: re-initiate R/T in every layer and add delay outside the macro "if" (#161)
1 parent f1e3255 commit 8526ee6

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

pygrt/C_extension/src/common/kernel_template.c_

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ void __GRT_MATRIX_FUNC__(GRT_MODEL1D *mod1d, const real_t k)
7575
// 自由表面
7676
RT_MATRIX *M_top = &mod1d->M_top;
7777

78-
// 定义物理层内的反射透射系数矩阵
79-
grt_init_RT_matrix(M);
80-
8178
// 从顶到底进行矩阵递推, 公式(5.5.3)
8279
for(size_t iy=1; iy<mod1d->n; ++iy){ // 因为n>=3, 故一定会进入该循环
80+
81+
// 定义物理层内的反射透射系数矩阵
82+
grt_init_RT_matrix(M);
8383

8484
// 只有动态解才可以使用这个 if 简化,
8585
// 对于静态解,即使是震源层、接收层这种虚拟层位也需要显式计算R/T矩阵
@@ -90,13 +90,13 @@ void __GRT_MATRIX_FUNC__(GRT_MODEL1D *mod1d, const real_t k)
9090
__grt_RT_matrix_PSV(mod1d, iy, M);
9191
__grt_RT_matrix_SH(mod1d, iy, M);
9292
if(M->stats==GRT_INVERSE_FAILURE) goto BEFORE_RETURN;
93-
94-
// 加入时间延迟因子(第iy-1界面与第iy界面之间)
95-
__grt_delay_RT_matrix(mod1d, iy, M);
9693
#ifdef __DYNAMIC_KERNEL__
9794
}
9895
#endif
9996

97+
// 加入时间延迟因子(第iy-1界面与第iy界面之间)
98+
__grt_delay_RT_matrix(mod1d, iy, M);
99+
100100
// FA
101101
if(iy <= imin){
102102
if(iy == 1){ // 初始化FA

0 commit comments

Comments
 (0)