✍️ 朱邓达  •  🗓️ 2025-04-19 (创建时间)

峰谷平均法(Peak-Trough Averaging Method, PTAM)

具体原理很简洁易懂,从以下图像中你也能了解大概。详见 (Zhang et al., 2003; 张海明, 2021) 。

具体流程为,程序中在进行完离散波数积分后,继续增加k(不同震中距使用不同dk), 使用PTAM寻找足够数量的波峰和波谷(内部设定为36个), 再对这些波峰波谷取缩减序列 \(M_i \leftarrow 0.5\times(M_i + M_{i+1})\) ,得到估计的积分收敛值。 取缩减序列的C代码如下,

for(int n=n1; n>1; --n){
    for(int i=0; i<n-1; ++i){
        arr[i] = 0.5*(arr[i] + arr[i+1]);
    }
}

以下通过显式指定相关参数来使用峰谷平均法进行收敛。

# 使用 -Cp 指定使用 PTAM 进行收敛
grt greenfn -Mmilrow -D0/0 -N500/0.02 -OGRN -R5,8,10 -Cp -S50,100
grt ker2asc GRN_grtstats/milrow_0_0/K_0050_5.00000e+00 > stats
# 绘制图像部分见Python

输出的核函数文件会在 GRN_grtstats/milrow_{depsrc}_{deprcv}/ 路径下。

K_{iw}_{freq} 文件同级目录下,程序把 PTAM过程中的核函数以及积分峰谷位置分为两个文件 保存在 PTAM_{ir}_{dist}/ 目录下( {ir} 为震中距索引, {dist} 为震中距), 其中 PTAM_{ir}_{dist}/K_{iw}_{freq} 为核函数文件(格式不变), PTAM_{ir}_{dist}/PTAM_{iw}_{freq} 为峰谷文件,其中记录积分值的峰谷。

备注

ker2asc 模块也支持将 PTAM_{ir}_{dist}/PTAM_{iw}_{freq} 文件转为文本格式,

grt ker2asc GRN_grtstats/milrow_0_0/PTAM_0002_1.00000e+01/PTAM_0050_5.00000e+00 > ptam_stats

输出的文件如下,

#       sum_EX_0_k                          sum_EX_0        sum_EX_2_k                          sum_EX_2        sum_VF_0_k                          sum_VF_0        sum_VF_2_k                          sum_VF_2        sum_HF_0_k                          sum_HF_0        sum_HF_1_k                          sum_HF_1        sum_HF_2_k                          sum_HF_2        sum_HF_3_k                          sum_HF_3        sum_DD_0_k                          sum_DD_0        sum_DD_2_k                          sum_DD_2        sum_DS_0_k                          sum_DS_0        sum_DS_1_k                          sum_DS_1        sum_DS_2_k                          sum_DS_2        sum_DS_3_k                          sum_DS_3        sum_SS_0_k                          sum_SS_0        sum_SS_1_k                          sum_SS_1        sum_SS_2_k                          sum_SS_2        sum_SS_3_k                          sum_SS_3
    2.67622465e+01    6.56540447e+02 -6.56685940e+03    2.66053579e+01    1.41196277e+04  7.46104302e+02    2.67622568e+01   -6.79904618e+01  1.37174989e+03    2.66053633e+01   -1.96993245e+03 -3.58939919e+01    2.66053604e+01   -6.45663838e+02 -3.75692774e+02    2.67622542e+01   -1.01275137e+01  1.00693959e+01    2.67622568e+01    6.79904618e+01 -1.37174989e+03    2.66053605e+01    1.39523921e+03  8.58335768e+02    2.67622465e+01   -2.62616179e+03  2.62674376e+04    2.66053768e+01   -5.32380923e+04 -3.03626722e+03    2.65098060e+01    0.00000000e+00  0.00000000e+00    2.65098060e+01    0.00000000e+00  0.00000000e+00    2.65098060e+01    0.00000000e+00  0.00000000e+00    2.65098060e+01    0.00000000e+00  0.00000000e+00    2.67622465e+01    1.31308089e+03 -1.31337188e+04    2.66045993e+01   -4.12169613e+02 -2.42779393e+02    2.66046025e+01    2.71794665e+04  1.23488996e+03    2.67622465e+01   -1.80244975e+04  2.77976722e+04
    2.70764072e+01    2.51518050e+03 -6.60974264e+03    2.69195163e+01    1.21600718e+04  7.96128284e+02    2.70764171e+01   -1.33187553e+02  1.37413124e+03    2.69195216e+01   -1.78972293e+03 -4.12001618e+01    2.69195189e+01   -5.06555790e+02 -3.78932149e+02    2.70764150e+01   -9.82636763e+00  1.00624197e+01    2.70764171e+01    1.33187553e+02 -1.37413124e+03    2.69195190e+01    1.61614488e+03  8.53196237e+02    2.70764072e+01   -1.00607220e+04  2.64389706e+04    2.69195353e+01   -5.18251329e+04 -3.13355235e+03    2.65883458e+01    0.00000000e+00  0.00000000e+00    2.65883458e+01    0.00000000e+00  0.00000000e+00    2.65883458e+01    0.00000000e+00  0.00000000e+00    2.65883458e+01    0.00000000e+00  0.00000000e+00    2.70764072e+01    5.03036100e+03 -1.32194853e+04    2.69187667e+01   -4.28530947e+02 -2.42399315e+02    2.69187695e+01    2.54018812e+04  1.30068019e+03    2.70764073e+01   -1.21219357e+04  2.76612826e+04
    2.73905679e+01    6.63922165e+02 -6.56776606e+03    2.72336747e+01    1.41052157e+04  7.47593107e+02    2.73905774e+01   -7.01923475e+01  1.37188772e+03    2.72336799e+01   -1.96554741e+03 -3.61457771e+01    2.72336774e+01   -6.43462639e+02 -3.75801285e+02    2.73905757e+01   -1.01192231e+01  1.00691645e+01    2.73905774e+01    7.01923475e+01 -1.37188772e+03    2.72336775e+01    1.39878126e+03  8.58185575e+02    2.73905679e+01   -2.65568866e+03  2.62710642e+04    2.72336938e+01   -5.31428681e+04 -3.04282370e+03    2.66668856e+01    0.00000000e+00  0.00000000e+00    2.66668856e+01    0.00000000e+00  0.00000000e+00    2.66668856e+01    0.00000000e+00  0.00000000e+00    2.66668856e+01    0.00000000e+00  0.00000000e+00    2.73905679e+01    1.32784433e+03 -1.31355321e+04    2.72329339e+01   -4.12437856e+02 -2.42771055e+02    2.72329362e+01    2.71381020e+04  1.23806921e+03    2.73905680e+01   -1.79994311e+04  2.77953276e+04
    2.77047285e+01    2.50887510e+03 -6.60893377e+03    2.75478332e+01    1.21727432e+04  7.94803024e+02    2.77047378e+01   -1.31157183e+02  1.37400760e+03    2.75478383e+01   -1.79379310e+03 -4.09736351e+01    2.75478359e+01   -5.08623107e+02 -3.78833808e+02    2.77047363e+01   -9.83427476e+00  1.00626416e+01    2.77047378e+01    1.31157183e+02 -1.37400760e+03    2.75478361e+01    1.61279151e+03  8.53335164e+02    2.77047285e+01   -1.00355004e+04  2.64357351e+04    2.75478524e+01   -5.19131778e+04 -3.12765352e+03    2.67454255e+01    0.00000000e+00  0.00000000e+00    2.67454255e+01    0.00000000e+00  0.00000000e+00    2.67454255e+01    0.00000000e+00  0.00000000e+00    2.67454255e+01    0.00000000e+00  0.00000000e+00    2.77047285e+01    5.01775019e+03 -1.32178675e+04    2.75471010e+01   -4.28273667e+02 -2.42407434e+02    2.75471029e+01    2.54396905e+04  1.29782936e+03    2.77047287e+01   -1.21441967e+04  2.76634249e+04
    2.80188892e+01    6.69270525e+02 -6.56849017e+03    2.78619918e+01    1.40940840e+04  7.48777392e+02    2.80188982e+01   -7.20703623e+01  1.37199912e+03    2.78619967e+01   -1.96175764e+03 -3.63505303e+01    2.78619945e+01   -6.41515349e+02 -3.75890835e+02    2.80188970e+01   -1.01116777e+01  1.00689522e+01    2.80188982e+01    7.20703623e+01 -1.37199912e+03    2.78619946e+01    1.40196221e+03  8.58056686e+02    2.80188892e+01   -2.67708210e+03  2.62739607e+04    2.78620111e+01   -5.30611952e+04 -3.04815521e+03    2.68239653e+01    0.00000000e+00  0.00000000e+00    2.68239653e+01    0.00000000e+00  0.00000000e+00    2.68239653e+01    0.00000000e+00  0.00000000e+00    2.68239653e+01    0.00000000e+00  0.00000000e+00    2.80188892e+01    1.33854105e+03 -1.31369803e+04    2.78612679e+01   -4.12684655e+02 -2.42763185e+02    2.78612694e+01    2.71034445e+04  1.24063681e+03    2.80188894e+01   -1.79797190e+04  2.77933658e+04
    2.83330498e+01    2.50438129e+03 -6.60828353e+03    2.81761503e+01    1.21825071e+04  7.93740980e+02    2.83330585e+01   -1.29415098e+02  1.37390681e+03    2.81761552e+01   -1.79733203e+03 -4.07877656e+01    2.81761531e+01   -5.10462284e+02 -3.78751904e+02    2.83330576e+01   -9.84147934e+00  1.00628443e+01    2.83330585e+01    1.29415098e+02 -1.37390681e+03    2.81761532e+01    1.60976858e+03  8.53455072e+02    2.83330498e+01   -1.00175251e+04  2.64331341e+04    2.81761698e+01   -5.19891692e+04 -3.12281433e+03    2.69025051e+01    0.00000000e+00  0.00000000e+00    2.69025051e+01    0.00000000e+00  0.00000000e+00    2.69025051e+01    0.00000000e+00  0.00000000e+00    2.69025051e+01    0.00000000e+00  0.00000000e+00    2.83330498e+01    5.00876257e+03 -1.32165671e+04    2.81754346e+01   -4.28036856e+02 -2.42415036e+02    2.81754358e+01    2.54715411e+04  1.29550748e+03    2.83330500e+01   -1.21615863e+04  2.76652250e+04
    2.86472104e+01    6.72998358e+02 -6.56907568e+03    2.84903089e+01    1.40855403e+04  7.49732857e+02    2.86472189e+01   -7.36906788e+01  1.37209065e+03    2.84903137e+01   -1.95844405e+03 -3.65199298e+01    2.84903117e+01   -6.39773974e+02 -3.75966048e+02    2.86472181e+01   -1.01047941e+01  1.00687588e+01    2.86472189e+01    7.36906788e+01 -1.37209066e+03    2.84903119e+01    1.40483988e+03  8.57944843e+02    2.86472104e+01   -2.69199343e+03  2.62763027e+04    2.84903286e+01   -5.29902910e+04 -3.05256478e+03    2.69810449e+01    0.00000000e+00  0.00000000e+00    2.69810449e+01    0.00000000e+00  0.00000000e+00    2.69810449e+01    0.00000000e+00  0.00000000e+00    2.69810449e+01    0.00000000e+00  0.00000000e+00    2.86472104e+01    1.34599672e+03 -1.31381514e+04    2.84896011e+01   -4.12911972e+02 -2.42755857e+02    2.84896021e+01    2.70741042e+04  1.24274434e+03    2.86472106e+01   -1.79644510e+04  2.77917112e+04
    2.89613710e+01    2.50134247e+03 -6.60775503e+03    2.88044676e+01    1.21899582e+04  7.92878912e+02    2.89613792e+01   -1.27904277e+02  1.37382339e+03    2.88044722e+01   -1.80044237e+03 -4.06328061e+01    2.88044703e+01   -5.12114829e+02 -3.78682575e+02    2.89613787e+01   -9.84806065e+00  1.00630286e+01    2.89613792e+01    1.27904277e+02 -1.37382339e+03    2.88044705e+01    1.60702479e+03  8.53559648e+02    2.89613710e+01   -1.00053699e+04  2.64310201e+04    2.88044875e+01   -5.20555001e+04 -3.11878160e+03    2.70595847e+01    0.00000000e+00  0.00000000e+00    2.70595847e+01    0.00000000e+00  0.00000000e+00    2.70595847e+01    0.00000000e+00  0.00000000e+00    2.70595847e+01    0.00000000e+00  0.00000000e+00    2.89613710e+01    5.00268495e+03 -1.32155101e+04    2.88037675e+01   -4.27818551e+02 -2.42422087e+02    2.88037682e+01    2.54986276e+04  1.29358791e+03    2.89613713e+01   -1.21749115e+04  2.76667484e+04
    2.92755316e+01    6.75415340e+02 -6.56955375e+03    2.91186262e+01    1.40790709e+04  7.50512696e+02    2.92755395e+01   -7.51026933e+01  1.37216693e+03    2.91186308e+01   -1.95551771e+03 -3.66621676e+01    2.91186290e+01   -6.38202411e+02 -3.76030176e+02    2.92755392e+01   -1.00984974e+01  1.00685831e+01    2.92755395e+01    7.51026933e+01 -1.37216693e+03    2.91186292e+01    1.40745998e+03  8.57846838e+02    2.92755316e+01   -2.70166136e+03  2.62782150e+04    2.91186465e+01   -5.29280866e+04 -3.05626541e+03    2.71381245e+01    0.00000000e+00  0.00000000e+00    2.71381245e+01    0.00000000e+00  0.00000000e+00    2.71381245e+01    0.00000000e+00  0.00000000e+00    2.71381245e+01    0.00000000e+00  0.00000000e+00    2.92755316e+01    1.35083068e+03 -1.31391075e+04    2.91179337e+01   -4.13121732e+02 -2.42749081e+02    2.91179342e+01    2.70490484e+04  1.24449832e+03    2.92755318e+01   -1.79529089e+04  2.77903065e+04
...

记录了不同震源、不同积分类型的峰谷位置。

故为了绘制完整的波数积分+PTAM过程,涉及三个文件。不过Python函数已经做了优化,由于程序输出的目录结构固定,文件命名格式固定,只需传入 PTAM_{ir}_{dist}/PTAM_{iw}_{freq} 文件,Python函数会自动读取对应的三个文件。

ir = 2
statsdata1, statsdata2, ptamdata, dist = pygrt.utils.read_statsfile_ptam(f"pygrtstats_{depsrc}_{deprcv}/PTAM_{ir:04d}_*/PTAM_0050_*")

srctype="SS"
ptype="0"
fig, ax = pygrt.utils.plot_statsdata_ptam(statsdata1, statsdata2, ptamdata, dist=dist, srctype=srctype, ptype=ptype, RorI=2)
fig.savefig(f"{srctype}_{ptype}_{depsrc}_ptam_RI.svg", bbox_inches='tight')
../../_images/SS_0_0.0_ptam_RI.svg

红十字为选取的波峰波谷,再取缩减序列即可得到估计的积分收敛值。

静态解的积分收敛性

以上部分是以动态解为例,静态解从积分类型、收敛特征、文件格式、绘图完全类似,只是不再有频率索引值。

备注

核函数文件中记录的值非理论核函数值。对于静态解,还需乘 \(\left(\dfrac{1}{4\pi\mu}\right)\)

假设震源深度0.1km,场点位于地表,场点仅定义一个点(2,2)做示例,这里直接给出脚本。

# -S 表示输出核函数文件
grt static greenfn -Mmilrow -D0.1/0 -X2/2/1 -Y2/2/1 -Cp -S -Ostgrn.nc

# grt.ker2asc 也可以读取静态解输出的核函数文件,格式一致
grt ker2asc stgrtstats/milrow_0.1_0/K > static_stats

# 绘制图像部分见Python

  • 只使用离散波数积分

../../_images/SS_0_0.1_static.svg

  • 使用峰谷平均法

../../_images/SS_0_0.1_ptam_static.svg