Page 7 - 201901
P. 7
第 38 卷 第 1 期 张朝金等: 射线模型 Bellhop 的并行化处理 3
踪方法,理论基本相似,主要区别在于波束内部声 没有直接联系,因而非常适宜按照不同的射线计算
场能量的分布形式、沿波束行进过程中能量扩展形 来分配任务。因此可以在声线层面上进行并行化处
式等方面。高斯射线束方法,通过引入较为简单的 理,将声线跟踪及对声场的贡献分配到多个计算核
波束宽度限制,可以较为准确地处理简单的声影区 心上进行计算,然后合并声场即可得到考虑所有声
和会聚区声场问题。高斯射线理论的基本思路是将 线贡献的声场。
声线看作截面能量按照高斯函数分布的声束,该声 根据高斯射线模型的特点,并行化模型 Bell-
束的中心声线满足标准的控制方程,如式(3a) 所示,
hopMP 对 Bellhop 的并行化体现在声线分组和声
在中心声线邻域可以构造出
√ 场合并,并行过程如图 1 所示。BellhopMP 读取计
{ }
c(s) [ p(s) 2 ] 算参数文件,根据用户设定的线程数量进行多核并
P(s, η)=A exp −iω τ(s)+ η , (5)
rq(s) 2q(s)
行计算;如果用户不指定线程数量,则使用硬件系统
其中,η 是距离中心声线的垂直距离;A 是一个任意
能提供的最大并行能力。在主线程中执行 Bellhop
的常数,通过与均匀介质声场参考值比较,由声源性
的所有计算流程,读取声线初射角度信息后,根据可
质确定;τ(s) 为沿声线的相位延迟;p 和 q 为在上文
以使用的并行能力,将声线角度分为多个区间,主线
基础上由高斯波束束宽和曲率定义的复弧长及相
程只计算第一个区间的声线及其对声场的贡献。其
对变化。考虑点源问题,声场的射线理论表达式为
他每个线程计算某一个声线角度区间的声场结果。
P(r, z) 最后在主线程中合并所有的声场计算结果,输出到
√
( )
∆θ iπ q(0)ω cos θ m 结果文件中。
∑
= exp
c 0 4 2π
m
√
{ [ ]}
c(s) p(s) 2 नݽ
× exp −iω τ(s) + η , (6)
rq(s) 2q(s) ጳ
ԠᎶ ሮ
式 (6) 中,∆θ 为声束的夹角,θ m 为相应声线的掠射 1
角,τ(s) 在控制方程计算的基础上进行求解,p 和 q ܦጳѬጸ
则在高斯波束束宽和曲率给定的初始值下根据动
力学射线方程(4b)计算。 ኄʷ˔ܦູງए ጳ ጳ
Bellhop 就是基于高斯声线束理论开发的声场 ሮ ሮ
2 N
计算模型,其计算准确性和可靠性已经得到重复检 ኄʷܦጳ
验。该模型宽容性较好,可以应用高斯、帽型等波束
ᡲᢎेҒܦጳ
进行声场修正,且可以获得传播损失、本征声线以及 ʾʷ˔
ʾʷܦጳ ܦູງए
声线到达时间序列等多种实用数据,同时可以处理 ᝠካܦڤᄊ᠈
ա
海面、海底和声速剖面随距离变化的情况。Bellhop ...
తՑʷ
允许输入设计好的具有指向性的声源,可以通过输 ܦጳ
入具体的地声参数或者通过海底反射系数表征海 ௧
底边界进行声场计算。模型从提出至今已发展出多 ᝠካܦڤ
个不同的版本,利用不同的编程语言发展出Fortran
తՑʷ˔ ա
版、Matlab 版、Python 版。本文为了方便进行并行 ܦູງए
化模型的设计,把 Fortran 语言版本的源程序移植 ௧
为 C++ 语言版本:BellhopC,C++ 版本的 Bellhop
ܦڤՌࣳ
可以在不支持Fortran语言的平台中使用。
1.2 BellhopMP并行化射线模型设计 ፇౌ
高斯射线模型 Bellhop 的声场计算中每条声线 图 1 声场计算模型 BellhopMP 并行处理流程
对声场的贡献是独立叠加的,即各条声线计算之间 Fig. 1 Flow chart of BellhopMP