基于https://blog.csdn.net/qq_45201106/article/details/130583098这篇进行一些细致的补充:
一、声学工具箱的下载
https://oalib-acoustics.org/
上述网址进去后,页面如下,点击MODELS&SOFTWARE,然后再点击Acoustics Toolbox:
进入后页面如下,再点击Acousitcs Toolbox:
即可得到下载的页面,点击第二个At
对声学工具箱压缩包进行下载,得到
解压后,在文件夹里首先找到tests文件夹,然后在该文件夹内找到Bellhop3DTests文件夹,该文件夹内各名称的文件夹为Bellhop3D的示例:
运行示例,以其中Munk文件夹为例,点击进去会有runtest.m文件,直接打开matlab运行即可。
二、BELLHOP-3D的使用
BELLHOP使用主要利用env文件获取环境和收发位置信息,env文件中3D模型区别2D模型的地方主要在于增加了:(以下面例程为例)
该示例中地形如下图所示:
1、角度设置
对于theta、alpha、beta:
1)theta
46行Ntheta是对某深度水平剖面的角度划分数目,整个平面以发射位置xy(0,0)为圆心,可进行360°的平面角度划分,具体划分起始和截至角度如47行所示,示例为0-360°,共划分成Ntheta-1份,示例为37-1=36份,即每10°计算一次传播损失。角度划分数越多,得到的平面传播损失越接近圆形,下图左侧Ntheta=37,右侧图Ntheta=10,可以看出明显区别。
2)alpha
49-50行的alpha与二维BELLHOP用法一样,49行为声源开角内的声线个数,50行为声源开角,下图左侧为声源开角(-90,90),右侧为(-30,30),可以看出明显区别。
3)beta
51-52行的beta为声线划分角度,51行为在某深度水平剖面划分的声线角度个数,52行为声线划分的起始和截至角度。其中,声线角度要对应theta角度,若在超过水平剖面设定的角度,则无法计算。设定如下所示,按照0-300°划分5份,即0、60、120、180、240、300°
下图左侧为平面图,右侧为旋转后的声线图。
简单总结一下:
计算传播损失时,调整theta和alpha参数,与beta无关,Ntheta个数代表传播损失计算个数;
计算声线轨迹时,可以直接将theta范围设置为(0,360),调整alpha和beta参数即可,Nbeta个数代表声线计算个数。
2、收发位置
关于收发位置,需要发射平台的xyz信息,以及接收平台的rz信息。
1)发射平台位置信息
位于示例程序的36-41行,可以改变x和y信息,将原有的37、39行的(0,0)修改(-10,-10),相应地,在计算传播损失时,以(-10,-10)为圆心进行计算,下图左侧为地形俯视图,右侧为传播损失图,可以很明显的看出,与以(0,0)为圆心计算结果不同,在左下角出现空缺,这是由于变换圆心后,以100km为直径画圆计算时,地形没有覆盖到那个位置。
改变发射深度z,与2D操作相同,这里不再过多赘述。
2)接收平台位置信息
42-45行分别为接收平台r和z的信息,42行和44行分别为在r和z方向上的插值数目,43和45行分别为r和z的起始和截至距离。与2D操作相同,也不再过多赘述。
3)根据收发位置画图
在画传播损失时,可以发现有这样一行程序:
后面这三个数字分别代表,发射的x和y位置,画图传播损失的深度z。
a、发射的x和y位置
x和y的设置主要取决于你要将圆心设置到哪个位置,像上图是根据(-10,-10)为圆心计算的传播损失,如果想将圆心设置到原点位置只需要将上行程序的x和y设置为0,0即可:
b、传播损失的深度z
如果42行接收深度插值大于1,则这个z的设置是帮你提取出相应深度的传播损失数值。通过设置不同的z可以很快得到不同深度下的传播损失图,便于观察随深度的变化趋势。
对0-5000m进行1001次插值,得到每个垂直剖面的传播损失矩阵维度为1001*1001
示例地形的海底从3000-5000米出现,通过调整z为1000、3500、4500、5000m,得到相应深度传播损失如下图所示,可以发现右上角逐渐显现出海底地形的位置。
3、海底地形
如果要加入海底地形,34行为“A~”,如果不需要海底设置为“A”即可,下面就加入海底地形的情况进行介绍。主要采用的是下面这行程序,即可生成自己想要的海底bty文件。
其中,x、y和z均为自己设置的海底地形区域和区域内的相应深度。
bty文件内格式为,“R”,x轴个数Nx,x轴参数,y轴个数Ny,y轴参数,以及Nx*Ny维度的深度矩阵。
通过plotbdry3d函数可以画出自定义的海底地形:
按照上文介绍的,得到不同深度下传播损失图为:
4、3d文件可以用于2d画图
可以用2d的画图函数对3d结果进行画图,但是只能默认为第一个角度下的结果。
左侧为接收插值为1时,plotshd的画图结果。右侧为接收插值为101时,plotshd的画图结果,与2维结果一直,所以3d文件可以画出2d的仿真图。
plotray画图结果:
文章来源:https://uudwc.com/A/y54Vy
文章来源地址https://uudwc.com/A/y54Vy