|
40 | 40 | * @param[in] RL1 SH波, \f$ R_1\f$ |
41 | 41 | * @param[in] R2 P-SV波,\f$\mathbf{R_2}\f$矩阵 |
42 | 42 | * @param[in] RL2 SH波, \f$ R_2\f$ |
43 | | - * @param[in] coef 震源系数,\f$ P_m, SV_m,SH_m\f$ ,维度2表示下行波(p=0)和上行波(p=1) |
44 | | - * @param[out] qwv 最终通过矩阵传播计算出的在台站位置的\f$ q_m,w_m,v_m\f$ |
| 43 | + * @param[in] coefD 下行震源系数,\f$ P_m, SV_m,SH_m\f$ |
| 44 | + * @param[in] coefU 上行震源系数,\f$ P_m, SV_m,SH_m\f$ |
| 45 | + * @param[out] QWV 最终通过矩阵传播计算出的在台站位置的\f$ q_m,w_m,v_m\f$ |
45 | 46 | */ |
46 | 47 | inline GCC_ALWAYS_INLINE void grt_construct_qwv( |
47 | 48 | bool ircvup, |
48 | 49 | const cplx_t R1[2][2], cplx_t RL1, |
49 | 50 | const cplx_t R2[2][2], cplx_t RL2, |
50 | | - const cplx_t coef[GRT_QWV_NUM][2], cplx_t qwv[GRT_QWV_NUM]) |
| 51 | + const QWVgrid coefD, const QWVgrid coefU, QWVgrid QWV) |
51 | 52 | { |
52 | | - cplx_t qw0[2], qw1[2], v0; |
53 | | - cplx_t coefD[2] = {coef[0][0], coef[1][0]}; |
54 | | - cplx_t coefU[2] = {coef[0][1], coef[1][1]}; |
55 | | - if(ircvup){ |
56 | | - grt_cmat2x1_mul(R2, coefD, qw0); |
57 | | - qw0[0] += coefU[0]; qw0[1] += coefU[1]; |
58 | | - v0 = RL1 * (RL2*coef[2][0] + coef[2][1]); |
59 | | - } else { |
60 | | - grt_cmat2x1_mul(R2, coefU, qw0); |
61 | | - qw0[0] += coefD[0]; qw0[1] += coefD[1]; |
62 | | - v0 = RL1 * (coef[2][0] + RL2*coef[2][1]); |
| 53 | + for(int i = 0; i < GRT_SRC_M_NUM; ++i) |
| 54 | + { |
| 55 | + if(ircvup){ |
| 56 | + grt_cmat2x1_mul(R2, coefD[i], QWV[i]); |
| 57 | + QWV[i][0] += coefU[i][0]; |
| 58 | + QWV[i][1] += coefU[i][1]; |
| 59 | + QWV[i][2] = RL1 * (RL2*coefD[i][2] + coefU[i][2]); |
| 60 | + } else { |
| 61 | + grt_cmat2x1_mul(R2, coefU[i], QWV[i]); |
| 62 | + QWV[i][0] += coefD[i][0]; |
| 63 | + QWV[i][1] += coefD[i][1]; |
| 64 | + QWV[i][2] = RL1 * (coefD[i][2] + RL2*coefU[i][2]); |
| 65 | + } |
| 66 | + grt_cmat2x1_mul(R1, QWV[i], QWV[i]); |
63 | 67 | } |
64 | | - grt_cmat2x1_mul(R1, qw0, qw1); |
65 | | - |
66 | | - qwv[0] = qw1[0]; |
67 | | - qwv[1] = qw1[1]; |
68 | | - qwv[2] = v0; |
69 | 68 | } |
70 | 69 |
|
71 | 70 |
|
| 71 | + |
| 72 | + |
72 | 73 | // ================ 动态解 ===================== |
73 | 74 | #define __DYNAMIC_KERNEL__ |
74 | 75 | #include "kernel_template.c_" |
|
0 commit comments