From cf1a386780ad45c2f53fdf02b633b1b7eac473e9 Mon Sep 17 00:00:00 2001 From: Dengda98 Date: Sat, 13 Sep 2025 20:42:54 +0800 Subject: [PATCH 1/2] DOC: fix static source coefficients --- docs/source/Formula/static_source.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/source/Formula/static_source.rst b/docs/source/Formula/static_source.rst index 847db4c2..c203882f 100644 --- a/docs/source/Formula/static_source.rst +++ b/docs/source/Formula/static_source.rst @@ -49,7 +49,7 @@ \\ \psi(r, \theta, z) &= \sum_{m=-\infty}^{\infty} e^{im\theta} \int_0^\infty \psi_m(k,z) J_m(kr) k dk \\ - \chi(r, \theta, z) &= \sum_{m=-\infty}^{\infty} e^{im\theta} \int_0^\infty \chi_m(k,z) J_m(kr) k dk + \chi(r, \theta, z) &= \sum_{m=-\infty}^{\infty} i e^{im\theta} \int_0^\infty \chi_m(k,z) J_m(kr) k dk \\ 其中垂直波函数 @@ -68,7 +68,7 @@ :label: u_qwv \mathbf{u} = \sum_{m=-\infty}^{\infty} e^{im\theta} \int_0^\infty - ( q_m(k,z) \mathbf{B}_m + v_m(k,z) \mathbf{c}_m + w_m(k,z) \mathbf{P}_m ) k dk + ( q_m(k,z) \mathbf{B}_m + i v_m(k,z) \mathbf{c}_m + w_m(k,z) \mathbf{P}_m ) k dk 其中, @@ -81,7 +81,7 @@ \\ \mathbf{P}_m &= \mathbf{e}_z J_m(kr)e^{im\theta} -将 :eq:`u_pot3` 式和 :eq:`pot3` 式代入 :eq:`u_qwv` 式,得到系数 :math:`q_m, v_m, w_m` 和垂直波函数之间的关系, +:eq:`pot3` 式和 :eq:`u_qwv` 额外提出的虚数单位是为了后续方便定义方向因子。将 :eq:`u_pot3` 式和 :eq:`pot3` 式代入 :eq:`u_qwv` 式,得到系数 :math:`q_m, v_m, w_m` 和垂直波函数之间的关系, .. math:: :label: qwv_pot @@ -105,7 +105,7 @@ \left\{ \phi_m - \left[ 1 + 2\Delta(z-z_j) \dfrac{\partial}{\partial z} \right] \psi_m \right\} J_m^{'}(kr) - + \chi_m \dfrac{im}{kr} J_m(kr) + - \chi_m \dfrac{m}{kr} J_m(kr) \right\} k dk \\ u_\theta &= \sum_{m=-\infty}^{\infty} i e^{im\theta} \int_0^\infty @@ -113,7 +113,7 @@ \left\{ \phi_m - \left[ 1 + 2\Delta(z-z_j) \dfrac{\partial}{\partial z} \right] \psi_m \right\} \dfrac{m}{kr} J_m(kr) - + i \chi_m J_m^{'}(kr) + - \chi_m J_m^{'}(kr) \right\} k dk \\ u_z &= \sum_{m=-\infty}^{\infty} e^{im\theta} \int_0^\infty @@ -132,7 +132,7 @@ \left[ (B_m - D_m) + 2\Delta\varepsilon k (z-z_j) D_m \right] J_m^{'}(kr) - + F_m \dfrac{im}{kr} J_m(kr) + - F_m \dfrac{m}{kr} J_m(kr) \right\} e^{-k|z-z_j|} k dk \\ u_\theta &= \sum_{m=-\infty}^{\infty} i e^{im\theta} \int_0^\infty @@ -140,7 +140,7 @@ \left[ (B_m - D_m) + 2\Delta\varepsilon k (z-z_j) D_m \right] \dfrac{m}{kr} J_m(kr) - + i F_m J_m^{'}(kr) + - F_m J_m^{'}(kr) \right\} e^{-k|z-z_j|} k dk \\ u_z &= \sum_{m=-\infty}^{\infty} e^{im\theta} \int_0^\infty @@ -198,7 +198,7 @@ \\ \psi(r, \theta, z) &= \dfrac{1}{4\pi\mu} \sum_{m=0}^{2} A_m(\theta) \int_0^\infty SV_m(k,z) e^{-k|z-z_j|} J_m(kr) k dk \\ - \chi(r, \theta, z) &= \dfrac{1}{4\pi\mu} \sum_{m=1}^{2} A_{m+2}(\theta) \int_0^\infty SH_m(k,z) e^{-k|z-z_j|} J_m(kr) k dk + \chi(r, \theta, z) &= \dfrac{1}{4\pi\mu} \sum_{m=1}^{2} A_{m+3}(\theta) \int_0^\infty SH_m(k,z) e^{-k|z-z_j|} J_m(kr) k dk \\ 其中方向因子为 @@ -287,7 +287,7 @@ :label: B_1 &= - D_1 = \dfrac{1}{8\pi\mu(1+\Delta)k} \\ - F_1 &= - \dfrac{i}{4\pi \mu k} + F_1 &= - \dfrac{1}{4\pi \mu k} 同样将势函数表达成 :eq:`pot_A_PS` 式,得到方向因子 [#]_ From 3150484128fb1a073525bf9f18da30b6a1459811 Mon Sep 17 00:00:00 2001 From: Dengda98 Date: Tue, 16 Sep 2025 23:35:56 +0800 Subject: [PATCH 2/2] REFAC: update usage of `zeta` in `greenfn` --- pygrt/C_extension/src/dynamic/grt_greenfn.c | 24 +++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/pygrt/C_extension/src/dynamic/grt_greenfn.c b/pygrt/C_extension/src/dynamic/grt_greenfn.c index 02ee92cc..9ebbe343 100644 --- a/pygrt/C_extension/src/dynamic/grt_greenfn.c +++ b/pygrt/C_extension/src/dynamic/grt_greenfn.c @@ -283,7 +283,7 @@ printf("\n" "Usage:\n" "----------------------------------------------------------------\n" " grt greenfn -M -D/ \n" -" -N/
[/][+n] \n" +" -N/
[+w][+n] \n" " -R,[,...] -O [-H/] \n" " [-L] [-V] [-E[/]] \n" " [-K[//]] [-P]\n" @@ -305,7 +305,7 @@ printf("\n" " : source depth (km).\n" " : receiver depth (km).\n" "\n" -" -N/
[/][+n] \n" +" -N/
[+w][+n] \n" " : number of points. (NOT requires 2^n).\n" "
: time interval (secs). \n" " : define the coefficient of imaginary \n" @@ -477,22 +477,22 @@ static void getopt_from_command(GRT_MODULE_CTRL *Ctrl, int argc, char **argv){ } break; - // 点数,采样间隔,虚频率 -Nnt/dt/[zeta][+n] + // 点数,采样间隔,虚频率 -Nnt/dt[+w][+n] case 'N': Ctrl->N.active = true; { char *string = strdup(optarg); char *token = strtok(string, "+"); - if(2 > sscanf(token, "%d/%lf/%lf", &Ctrl->N.nt, &Ctrl->N.dt, &Ctrl->N.zeta)){ + if(2 != sscanf(token, "%d/%lf", &Ctrl->N.nt, &Ctrl->N.dt)){ GRTBadOptionError(command, N, ""); }; - if(Ctrl->N.nt <= 0 || Ctrl->N.dt <= 0.0 || Ctrl->N.zeta <= 0.0){ + if(Ctrl->N.nt <= 0 || Ctrl->N.dt <= 0.0){ GRTBadOptionError(command, N, "Nonpositive value in -N is not supported."); } // 处理 + 号指令 token = strtok(NULL, "+"); - if(token != NULL){ + while(token != NULL){ switch (token[0]){ case 'n': if(1 != sscanf(token+1, "%d", &Ctrl->N.upsample_n)){ @@ -502,10 +502,22 @@ static void getopt_from_command(GRT_MODULE_CTRL *Ctrl, int argc, char **argv){ GRTBadOptionError(command, N, "+%s need positive integer, but get (%d).", token, Ctrl->N.upsample_n); } break; + + case 'w': + if(1 != sscanf(token+1, "%lf", &Ctrl->N.zeta)){ + GRTBadOptionError(command, N, ""); + } + if(Ctrl->N.zeta <= 0.0){ + GRTBadOptionError(command, N, "+%s need positive float, but get (%lf).", token, Ctrl->N.zeta); + } + break; + default: GRTBadOptionError(command, N, "+%s is not supported.", token); break; } + + token = strtok(NULL, "+"); } GRT_SAFE_FREE_PTR(string);