diff --git a/docs/source/Tutorial/dynamic/integ_converg.rst b/docs/source/Tutorial/dynamic/integ_converg.rst deleted file mode 100644 index 14efb24d..00000000 --- a/docs/source/Tutorial/dynamic/integ_converg.rst +++ /dev/null @@ -1,13 +0,0 @@ -积分收敛性 -=================== - -:Author: Zhu Dengda -:Email: zhudengda@mail.iggcas.ac.cn - ------------------------------------------------------------ - -通过输出积分过程文件,直观感受源点和场点深度接近时,积分收敛性的变化,以及峰谷平均法的作用。 - -动态和静态情况类似,这里以动态解为例。 - -TODO \ No newline at end of file diff --git a/docs/source/Tutorial/index.rst b/docs/source/Tutorial/index.rst index e8e1fd2e..bd23bb88 100644 --- a/docs/source/Tutorial/index.rst +++ b/docs/source/Tutorial/index.rst @@ -82,7 +82,7 @@ static/static_syn dynamic/strain_stress static/static_strain_stress - dynamic/integ_converg + integ_converg/integ_converg diff --git a/docs/source/Tutorial/integ_converg/integ_converg.rst b/docs/source/Tutorial/integ_converg/integ_converg.rst new file mode 100644 index 00000000..e3608961 --- /dev/null +++ b/docs/source/Tutorial/integ_converg/integ_converg.rst @@ -0,0 +1,205 @@ +积分收敛性 +=================== + +:Author: Zhu Dengda +:Email: zhudengda@mail.iggcas.ac.cn + +----------------------------------------------------------- + +通过输出核函数文件,观察源点和场点深度接近时,积分收敛性的变化,以及峰谷平均法的作用。 **具体积分表达式以及分类详见** :ref:`gfunc_rst`。 + +核函数文件 +--------------- +该文件记录了波数积分过程中不同波数对应的核函数值。以下用法展示了如何输出该文件。 + +.. tabs:: + + .. tab:: C + + .. literalinclude:: run/run.sh + :language: bash + :start-after: BEGIN DGRN + :end-before: END DGRN + + 输出的核函数文件路径会在 :rst:dir:`GRN_grtstats/milrow_{depsrc}_{deprcv}/` 路径下。 + + .. tab:: Python + + .. literalinclude:: run/run.py + :language: python + :start-after: BEGIN DGRN + :end-before: END DGRN + + 输出的核函数文件路径会在自定义路径下。 + + +C和Python导出的核函数文件是一致的,底层调用的是相同的函数。文件名称格式为 ``K_{iw}_{freq}``,其中 ``{iw}`` 表示频率索引值, ``{freq}`` 表示对应频率(Hz)。文件为自定义的二进制文件, **强烈建议使用Python进行读取及后续处理**。这里还是给出两种读取方法。 + +.. tabs:: + + .. tab:: C + + :command:`grt.k2a` 程序可将单个核函数文件转为文本格式。 + + .. literalinclude:: run/run.sh + :language: bash + :start-after: BEGIN grt.k2a + :end-before: END grt.k2a + + 输出的文件如下, + + .. literalinclude:: run/stats_head + :language: text + + 后续你可以选择习惯的方式读取和处理。 + + .. tab:: Python + + .. literalinclude:: run/run.py + :language: python + :start-after: BEGIN read statsfile + :end-before: END read statsfile + +其中除了波数 ``k`` 外,每条结果的命名格式均为 ``{srcType}_{q/w/v}{m}``,与 :ref:`gfunc_rst` 部分介绍的积分公式中的核函数 :math:`q_m, w_m, v_m` 保持一致。 + + +可视化 +------------- +以下将使用Python进行图件绘制。 **在Python函数中指定震源类型、阶数、积分类型,可自动绘制核函数、被积函数和积分值随波数的变化**,其中积分类型对应 :ref:`gfunc_rst` 部分介绍的4种类型。 + +.. literalinclude:: run/run.py + :language: python + :start-after: BEGIN plot stats + :end-before: END plot stats + +.. image:: run/DC_20.png + :align: center + + +可以通过指定 ``RorI=False`` 参数来指定绘制虚部,传入 ``RorI=2`` 表示实虚部都绘制。 + +.. literalinclude:: run/run.py + :language: python + :start-after: BEGIN plot stats RI + :end-before: END plot stats RI + +.. image:: run/DC_20_RI.png + :align: center + + +从图中可以看到,当波数增加到一定范围以上,积分收敛良好,无振荡现象。 + + + +当震源和场点深度接近/相等时,积分收敛速度变慢 +---------------------------------------------- + +假设其它参数不变,我们调整 **震源深度为0.1km**,再计算格林函数,读取核函数文件,绘制图像。 + +.. tabs:: + + .. tab:: C + + .. literalinclude:: run/run.sh + :language: bash + :start-after: BEGIN DEPSRC 0.0 DGRN + :end-before: END DEPSRC 0.0 DGRN + + .. tab:: Python + + .. literalinclude:: run/run.py + :language: python + :start-after: BEGIN DEPSRC 0.0 DGRN + :end-before: END DEPSRC 0.0 DGRN + + +.. image:: run/DC_20_0.0_RI.png + :align: center + +从图中可以清晰地看到,相比震源深度2km时,积分收敛速度明显变慢,积分值振荡,这要求增加波数积分上限,但这必然降低计算效率。 + +你可以尝试 **当震源和场点位于同一深度**,收敛振荡现象也很明显。要注意的是这和是否在地表无关,即使震源和场点都在地下,深度接近时积分收敛也会变慢。 + + +峰谷平均法 +------------------------- +具体原理很简洁易懂,从以下图像中你也能了解大概。详见 :ref:`(Zhang et al., 2003) ` :ref:`(张海明, 2021) `。 + +在以上示例中,当震源和场点深度接近时,你会注意到输出的核函数文件增加了,这是因为程序内部设定 **当震源和场点深度差小于1km时,自动使用峰谷平均法(PTAM)**。具体流程为,程序中在进行完离散波数积分后,继续增加k(不同震中距使用不同dk),使用PTAM寻找足够数量的波峰和波谷(内部设定为36个),再对这些波峰波谷取缩减序列 :math:`M_i \leftarrow 0.5\times(M_i + M_{i+1})` ,得到估计的积分收敛值。取缩减序列的C代码如下, + +.. code-block:: C + + for(int n=n1; n>1; --n){ + for(int i=0; i,,...表示输出对应频率点索引值的核函数文件 +grt -Mmilrow -D2/0 -N500/0.02 -OGRN -R5,8,10 -S50,100 +# END DGRN + +# BEGIN grt.k2a +grt.k2a GRN_grtstats/milrow_2_0/K_0050_5.00000e+00 > stats +# END grt.k2a + +head -n 10 stats > stats_head +echo "..." >> stats_head + + +# BEGIN DEPSRC 0.0 DGRN +grt -Mmilrow -D0/0 -N500/0.02 -OGRN -R5,8,10 -S50,100 +grt.k2a GRN_grtstats/milrow_0_0/K_0050_5.00000e+00 > stats +# 绘制图像部分见Python +# END DEPSRC 0.0 DGRN + +# BEGIN grt.k2a ptam +grt.k2a GRN_grtstats/milrow_0_0/PTAM_0002_1.00000e+01/PTAM_0050_5.00000e+00 > ptam_stats +# END grt.k2a ptam + +head -n 10 ptam_stats > ptam_stats_head +echo "..." >> ptam_stats_head + + + + + + + +# BEGIN SGRN +# -S 表示输出核函数文件 +stgrt -Mmilrow -D0.1/0 -X2/2/1 -Y2/2/1 -S > grn + +# grt.k2a 也可以读取静态解输出的核函数文件,格式一致 +grt.k2a stgrtstats/milrow_0.1_0/K > static_stats + +# 绘制图像部分见Python +# END SGRN diff --git a/docs/source/Tutorial/integ_converg/run/stats_head b/docs/source/Tutorial/integ_converg/run/stats_head new file mode 100644 index 00000000..42319c23 --- /dev/null +++ b/docs/source/Tutorial/integ_converg/run/stats_head @@ -0,0 +1,11 @@ +# k EXP_q0 EXP_w0 VF_q0 VF_w0 HF_q1 HF_w1 HF_v1 DC_q0 DC_w0 DC_q1 DC_w1 DC_v1 DC_q2 DC_w2 DC_v2 + 4.18879020e-02 -2.76036558e-01+5.35711450e-01J -1.01611310e+02-3.61631266e+01J -1.22267892e-01-6.70379186e-02J 4.96588630e+00-1.37205887e+01J -2.21729097e+01+7.37515638e+00J 9.73448946e-02+1.00798198e-01J 2.21734994e+01-7.37567188e+00J -3.33840313e+00+1.99821238e+00J -2.03210388e+02-7.23135866e+01J -6.32239892e+01-2.31293889e+02J -1.80498128e+00+1.32938528e+00J 6.32368482e+01+2.31302607e+02J -9.28776671e-01+3.08929828e-01J 4.07757341e-03+4.22222504e-03J 9.28801369e-01-3.08951421e-01J + 8.37758041e-02 -5.53773641e-01+1.06959884e+00J -1.01564466e+02-3.62216360e+01J -2.44884392e-01-1.34651089e-01J 4.97974884e+00-1.37129492e+01J -2.21736340e+01+7.36677560e+00J 1.94765330e-01+2.01748618e-01J 2.21759999e+01-7.36883678e+00J -6.68038934e+00+3.99067034e+00J -2.03079982e+02-7.23925670e+01J -6.31209463e+01-2.31301596e+02J -3.61794113e+00+2.64994395e+00J 6.31723448e+01+2.31336782e+02J -1.85761402e+00+6.17157549e-01J 1.63166221e-02+1.69016527e-02J 1.85781222e+00-6.17330226e-01J + 1.25663706e-01 -8.34876166e-01+1.59980148e+00J -1.01486568e+02-3.63185118e+01J -3.68183235e-01-2.03423546e-01J 5.00272203e+00-1.37000275e+01J -2.21748220e+01+7.35281473e+00J 2.92334892e-01+3.03005240e-01J 2.21801728e+01-7.35744894e+00J -1.00294633e+01+5.97154881e+00J -2.02862928e+02-7.25227932e+01J -6.29490358e+01-2.31313427e+02J -5.44662611e+00+3.95266224e+00J 6.30645283e+01+2.31393780e+02J -2.78657032e+00+9.23981950e-01J 3.67358859e-02+3.80767614e-02J 2.78724272e+00-9.24564302e-01J + 1.67551608e-01 -1.12093624e+00+2.12438694e+00J -1.01377906e+02-3.64528030e+01J -4.92468171e-01-2.73956193e-01J 5.03460210e+00-1.36815458e+01J -2.21764452e+01+7.33328524e+00J 3.90123305e-01+4.04725463e-01J 2.21860261e+01-7.34151417e+00J -1.33889696e+01+7.93488509e+00J -2.02559714e+02-7.27021689e+01J -6.27080448e+01-2.31327860e+02J -7.29831179e+00+5.22816351e+00J 6.29129307e+01+2.31473650e+02J -3.71569905e+00+1.22870374e+00J 6.53657871e-02+6.78124021e-02J 3.71730435e+00-1.23008251e+00J + 2.09439510e-01 -1.41343288e+00+2.64131923e+00J -1.01238944e+02-3.66231977e+01J -6.17997403e-01-3.46873476e-01J 5.07508972e+00-1.36571277e+01J -2.21784636e+01+7.30820477e+00J 4.88194640e-01+5.07071590e-01J 2.21935712e+01-7.32104012e+00J -1.67620054e+01+9.87451894e+00J -2.02171147e+02-7.29277930e+01J -6.23977665e+01-2.31342773e+02J -9.17955069e+00+6.46655569e+00J 6.27168941e+01+2.31576449e+02J -4.64504655e+00+1.53062683e+00J 1.02247246e-01+1.06200825e-01J 4.64821068e+00-1.53331506e+00J + 2.51327412e-01 -1.71368751e+00+3.14843202e+00J -1.01070374e+02-3.68280460e+01J -7.44967511e-01-4.22827939e-01J 5.12377698e+00-1.36263113e+01J -2.21808268e+01+7.27759878e+00J 5.86605699e-01+6.10212065e-01J 2.22028232e+01-7.29603592e+00J -2.01513244e+01+1.17840443e+01J -2.01698457e+02-7.31960030e+01J -6.20180894e+01-2.31355451e+02J -1.10959030e+01+7.65731424e+00J 6.24755683e+01+2.31702227e+02J -5.57464981e+00+1.82906007e+00J 1.47430092e-01+1.53363019e-01J 5.58017810e+00-1.83369383e+00J + 2.93215314e-01 -2.02281428e+00+3.64340910e+00J -1.00873179e+02-3.70653962e+01J -8.73496901e-01-5.02501935e-01J 5.18013215e+00-1.35885678e+01J -2.21834742e+01+7.24150249e+00J 6.85404670e-01+7.14322424e-01J 2.22138008e+01-7.26651155e+00J -2.35592317e+01+1.36567765e+01J -2.01143445e+02-7.35024415e+01J -6.15691096e+01-2.31362617e+02J -1.30516479e+01+8.78921387e+00J 6.21879084e+01+2.31851007e+02J -6.50453437e+00+2.12331943e+00J 2.00971146e-01+2.09450274e-01J 6.51342659e+00-2.13065247e+00J + 3.35103216e-01 -2.34166518e+00+4.12377419e+00J -1.00648719e+02-3.73330466e+01J -1.00360904e+00-5.86605825e-01J 5.24348343e+00-1.35433257e+01J -2.21863362e+01+7.19996335e+00J 7.84630151e-01+8.19585973e-01J 2.22265269e+01-7.23247713e+00J -2.69874682e+01+1.54857410e+01J -2.00508641e+02-7.38421555e+01J -6.10512612e+01-2.31360474e+02J -1.50494788e+01+9.85032232e+00J 6.18526730e+01+2.32022766e+02J -7.43471262e+00+2.41273088e+00J 2.62932087e-01+2.74645896e-01J 7.44818066e+00-2.42362635e+00J + 3.76991118e-01 -2.67077029e+00+4.58689283e+00J -1.00398809e+02-3.76286187e+01J -1.13521600e+00-6.75872023e-01J 5.31300339e+00-1.34900004e+01J -2.21893357e+01+7.15304371e+00J 8.84310647e-01+9.26194250e-01J 2.22410284e+01-7.19394215e+00J -3.04370881e+01+1.72636875e+01J -1.99797487e+02-7.42097363e+01J -6.04654610e+01-2.31344778e+02J -1.70901870e+01+1.08280697e+01J 6.14684235e+01+2.32217404e+02J -8.36518249e+00+2.69663395e+00J 3.33377260e-01+3.49167006e-01J 8.38467018e+00-2.71205230e+00J +...