Page 99 - 《应用声学》2023年第1期
P. 99
第 42 卷 第 1 期 周益清等: 三维声传播模型 BELLHOP3D 的信息传递接口并行优化 95
其中,c 即 c(x, z, y) 是声速;(x, y, z) 即 (x(s), y(s), ㇍⌋1 ˙ᛡBELLHOP3Dᝠካܦԍ
z(s)) 是射线轨迹;(ξ, η, ζ) 即 (ξ(s), η(s), ζ(s)) 是射 䗉ޛ: ๒ภဗܒˁሏஙηৌ(*.env *.bty ᣥК͈)
线方位角。 䗉࠰: ܦԍ P (Ntheta, NRz, NRr)
1: function BellhopCoreSerial
BELLHOP3D中包含几种不同的几何波束。波
2: P(Ntheta, NRz, NRr) ← 0
束宽度与射线管成比例伸缩,波束围绕中心射线构 3: for ibeta=1, Nbeta do
4: for ialpha=1, Nalpha do
造,并根据以声线为中心的坐标(s, m, n)定义,这里 5: function Influence3DGeoGaussianCart
6: for ir=1, NRr do
s是沿声线的弧长,(m, n)是从场点到中心声线的法 7: for itheta=1, Ntheta do
向距离,最小波束宽度为一个波长。其中,帽形波束 8: for iz=1, NRz do
9: ᝠካAmp
可以表示为 10: P(itheta,iz,ir)←P(itheta,iz,ir) + Amp
11: end for
u hat (s, m, n) 12: end for
1 iωτ(s) [L 1 (s) − n] [L 2 (s) − m] 13: end for
= √ e , (7) 14: end function
|Q(s)| L 1 (s)L 2 (s) 15: end for
其 中, L 1 和 L 2 是 射 线 管 的 宽 度, |n| < L 1 且 16: end for
17: return P
|m| < L 2 ,这意味着波束在射线管外消失。 18: end function
使用高斯波束通常可以获得更高的精度。各点
的声场是附近多个波束的贡献之和,而不仅仅是帽
形波束提供的两个波束。这种对多个波束的积分可 2 BELLHOP3D并行算法
以平滑焦散,还可以将能量泄漏到阴影区域。几何
使用 MPI 对 BELLHOP3D 进行并行优化。开
高斯波束的公式为
设 nprocs 个进程,让它们同时读取输入文件中的环
1 iωτ(s)
u Gaussian (s, m, n) = √ e 境信息,然后将不同的方位角分配给不同的进程,
|Q(s)|
2
[ ] [ ] 2 即,将对 ibeta 的循环分配给 nprocs 个进程,每个进
n m
1 L 1 (s) L 2 (s) 程处理约 Nbeta/nprocs 个方位角的声线。将最后
× exp − . (8)
2 L 1 (s)L 2 (s) 的结果归约求和到 0 号进程的 rdcP 变量,然后写入
输出文件。
由于高斯波束精度更高,所以在后续的数值实验中 并行算法如下所示:
使用高斯波束进行计算。 ㇍⌋2 ࣳᛡBELLHOP3Dᝠካܦԍ
1.3 离散剖分与实现过程 䗉ޛ: ๒ภဗܒˁሏஙηৌ(*.env *.bty ᣥК͈)ὊMPIᤉሮηৌ
䗉࠰: ॆጞර֗ܦԍrdcP(Ntheta, NRz, NRr)
BELLHOP3D 可以自行设定声源发射的俯仰 1: function BellhopCoreParallel
2: P(Ntheta, NRz, NRr) ← 0
角 α 和方位角 β 的范围以及相应的数量 Nalpha 和 3: rdcP(Ntheta, NRz, NRr) ← 0
4: for iloop=1, ceil(Nbeta/nprocs) do
Nbeta,接收点的柱坐标 (r, θ, z) 的范围和离散点 5: ibetaº (iloop-1)* nprocs+myrank+1
数 NRr、Ntheta 和 NRz。在程序中主要使用 BELL- (FORTRAN༯ѓՖ1ष)
6: for ialpha=1, Nalpha do
HOPCORE 函数进行计算,按照 Nbeta、Nalpha、 7: function Influence3DGeoGaussianCart
8: for ir=1, NRr do
NRr、Ntheta、NRz 的顺序循环计算每一条声线在 9: for itheta=1, Ntheta do
接收点的声压Amp,然后求和得到对应接收点的总 10: for iz=1, NRz do
11: ᝠካ Amp
声压P。 12: P(itheta,iz,ir)←P(itheta,iz,ir) + Amp
13: end for
需要指出,BELLHOP3D针对N × 2D和3D的 14: end for
15: end for
各种不同模式的计算都包含在方位角 ibeta 的循环 16: end function
中(代码中有关 AzimuthalAngle的循环),因此本方 17: end for
18: end for
法对各种计算模式都实现了并行,本文仅以全三维 19: rank0: rdcP ← MPIREDUCE(P)
20: return rdcP
的高斯波束为例。具体算法如下: 21: end function