上文我们讲述了 Bellhop 的使用以及使用 bellhop 绘制了声速剖面、声线轨迹及本证声线,本文我们绘制传播损失。
设定运行类型 RunType=“C”,我们就可以计算传播损失了。“C” 代表相干声压计算。对指定的接收器网格计算声压场 p, 20 lg(|p|) 就是传播损失(单位:dB)。我们还可以设定多个声源深度,这种情况下, BELLHOP 对每个深度的声源依次进行计算。现在,频率(此处为 50Hz)是非常重要的参数,因为干涉图案与波长直接相关。 同时,频率还影响衰减。
波束数目 NBeams 通常设置为 0, 以便 BELLHOP 自动选择适当的值。随着频率增加和到接收机的距离增大,波束数目需随之增大。为理解这一点,我们可以想象自由空间中的点源。 当远离声源时, 波束扇面进行扩展。同时,在某给定点处的声场基本上是由相邻波束插值得到。为了插值精确, 就需要相邻波束的波阵面足够接近。
MunkB_Coh.env
'Munk profile, coherent' ! TITLE
50.0 ! FREQ (Hz)
1 ! NMEDIA
'SVW' ! SSPOPT (Analytic or C-linear interpolation)
51 0.0 5000.0 ! DEPTH of bottom (m)
0.0 1548.52 /
200.0 1530.29 /
250.0 1526.69 /
400.0 1517.78 /
600.0 1509.49 /
800.0 1504.30 /
1000.0 1501.38 /
1200.0 1500.14 /
1400.0 1500.12 /
1600.0 1501.02 /
1800.0 1502.57 /
2000.0 1504.62 /
2200.0 1507.02 /
2400.0 1509.69 /
2600.0 1512.55 /
2800.0 1515.56 /
3000.0 1518.67 /
3200.0 1521.85 /
3400.0 1525.10 /
3600.0 1528.38 /
3800.0 1531.70 /
4000.0 1535.04 /
4200.0 1538.39 /
4400.0 1541.76 /
4600.0 1545.14 /
4800.0 1548.52 /
5000.0 1551.91 /
'A' 0.0
5000.0 1600.00 0.0 1.8 0.8 /
1 ! NSD
1000.0 / ! SD(1:NSD) (m)
501 ! NRD
0.0 5000.0 / ! RD(1:NRD) (m)
1001 ! NR
0.0 100.0 / ! R(1:NR ) (km)
'CG' ! 'R/C/I/S'
0 ! NBEAMS
-20.3 20.3 / ! ALPHA1, 2 (degrees)
50.0 5500.0 101.0 ! STEP (m), ZBOX (m), RBOX (km)
Matlab 命令:
global units
units = 'km'
bellhop MunkB_Coh
figure
plotshd MunkB_Coh.shd
我这里出现了这样的报错:
STOP Fatal Error: Check the print file for details
解决办法:
①、先运行 runtests.m 文件,会出现如下的一个弹窗,选择更改文件夹
②、再次输入上面的 Matlab 指令
当然,我们也可以采用多面板来绘图:
plotshd( 'MunkB_Coh0.shd', 2, 2, 1 )
这里的“2, 2, 1”是告诉 Matlab 我们要使用 2x2 多面板绘图中的第一个面板。
下面两个 TL 图分别是由声学工具箱中的 KRAKEN 和 SCOOTER 模型计算出的参考解。Matlab 代码如下:
bellhop( 'MunkB_Coh' )
bellhop( 'MunkB_gb' )
kraken( 'MunkK' )
scooter( 'MunkS' )
if ( exist( 'MunkB_Coh.shd', 'file' ) )
plotshd( 'MunkB_Coh.shd', 2, 2, 1 )
caxisrev( [ 50 100 ] )
end
if ( exist( 'MunkB_gb.shd', 'file' ) )
plotshd( 'MunkB_gb.shd', 2, 2, 2 )
caxisrev( [ 50 100 ] )
end
if ( exist( 'MunkK.shd.mat', 'file' ) )
plotshd( 'MunkK.shd.mat', 2, 2, 3 )
caxisrev( [ 50 100 ] )
end
if ( exist( 'MunkS.shd.mat', 'file' ) )
plotshd( 'MunkS.shd.mat', 2, 2, 4 )
caxisrev( [ 50 100 ] )
end
从上到下,从左到右分别为采用几何光束、高斯波束、KRAKEN 简正波和 SCOOTER 波数积分等得到的 Munk 声速剖面的传播损失
如前所述,Runtype=“C” 就执行一次所谓的 “相干” TL 计算。简单地将该选项第一个字母改为 “S” 或 “I”,我们就分别执行 “半相干” 和 “非相干” TL 计算。
对于这每一个选项,我们还可利用第二个字母来选择采用(几何或高斯)波束类型。
Matlab 代码如下:
global units
units = 'km';
% tests of incoherent, semi-coherent options
bellhop( 'MunkB_Coh' )
plotshd( 'MunkB_Coh.shd', 3, 2, 1 )
caxisrev( [ 50 100 ] )
bellhop( 'MunkB_Coh_gb' )
plotshd( 'MunkB_Coh_gb.shd', 3, 2, 2 )
caxisrev( [ 50 100 ] )
bellhop( 'MunkB_Semi' )
plotshd( 'MunkB_Semi.shd', 3, 2, 3 )
caxisrev( [ 50 100 ] )
bellhop( 'MunkB_Semi_gb' )
plotshd( 'MunkB_Semi_gb.shd', 3, 2, 4 )
caxisrev( [ 50 100 ] )
bellhop( 'MunkB_Inc' )
plotshd( 'MunkB_Inc.shd', 3, 2, 5 )
caxisrev( [ 50 100 ] )
bellhop( 'MunkB_Inc_gb' )
plotshd( 'MunkB_Inc_gb.shd', 3, 2, 6 )
caxisrev( [ 50 100 ] )
结果如下:
从上到下分别应用“相干”、“半相干”和“非相干”的 TL 计算;左边与右边分别采用几何波束和高斯波束 的 Munk 声速剖面的传播损失。
我的qq:2442391036,欢迎交流!