放开距离采样间隔参数dr

这个提交包含在:
2023-04-10 21:19:30 +08:00
父节点 69b4a03d47
当前提交 4ff11a4b1a
共修改 5 个文件,包含 22 行新增和 34 行删除
+12 -24
查看文件
@@ -11,8 +11,6 @@ from env import Pos, Source, Dom, cInt, SSPraw, SSP, HS, BotBndry, TopBndry, Bnd
import matplotlib.pyplot as plt
from config import AtBinPath
file_cz_data = open('cz_data.txt', 'w')
class CzRangeWidth:
def __init__(self, minRange, maxRange, width):
@@ -48,11 +46,11 @@ def calZmax(ssp, sed):
return Zmax, ssp_idx
def call_Bellhop(freq, sd, bathm, ssp, sed, base,azi):
def call_Bellhop(freq, sd, dr, bathm, ssp, sed, base,azi):
# Source and receiving position
filename = 'cz'+str(azi)
Rmax = bathm.r[-1] # unit: km
dr = 0.1 # wavelength / 10, unit: km
# dr = 0.1 # wavelength / 10, unit: km
ran = np.linspace(0, Rmax, round(Rmax / dr)) # Receiving range (unit: km)
Zmax, ssp_idx = calZmax(ssp, sed)
"""RD 已修改 8.26"""
@@ -118,11 +116,11 @@ def call_Bellhop(freq, sd, bathm, ssp, sed, base,azi):
return Pos1, TL
def call_Bellhop_Rays(freq, sd, bathm, ssp, sed, base,azi):
def call_Bellhop_Rays(freq, sd, dr, bathm, ssp, sed, base,azi):
# Source and receiving position
filename = 'cz_ray'+str(azi)
Rmax = bathm.r[-1] # unit: km
dr = 0.1 # wavelength / 10, unit: km
# dr = 0.1 # wavelength / 10, unit: km
ran = np.linspace(0, Rmax, round(Rmax / dr)) # Receiving range (unit: km)
Zmax, ssp_idx = calZmax(ssp, sed)
"""RD 已修改 8.26"""
@@ -227,8 +225,6 @@ def call_hjq(r, TL):
m = r[out[0]]
n = r[out[len(out) - 1]]
l = n - m
# file_cz_data.write('\n'"会聚区距离:%.1fm"%m +"-%.1fm" %n)
# file_cz_data.write('\n'"会聚区宽度:%.1fm\n"%l )
czrangewidth_list.append(CzRangeWidth(m, n, l))
out.clear()
signal = 0
@@ -236,13 +232,10 @@ def call_hjq(r, TL):
m = r[out[0]]
n = r[out[len(out) - 1]]
l = n - m
# file_cz_data.write('\n'"会聚区距离:%.1fm" % m + "-%.1fm" % n)
# file_cz_data.write('\n'"会聚区宽度:%.1fm\n" % l )
czrangewidth_list.append(CzRangeWidth(m, n, l))
out.clear()
signal = 0
# if signal==1:
# file_cz_data.write('\n'" 没有出现会聚区\n")
# 滤波器效果图:
# plt.plot(r, TL)
# plt.plot(r, TL_R)
@@ -266,18 +259,13 @@ def call_hjq(r, TL):
return czrangewidth_list
def call_fangwei(freq, sd, bathm, ssp, sed, base, azi, isPlot=False):
def call_fangwei(freq, sd, dr, bathm, ssp, sed, base, azi, isPlot=False):
czdetail = CzDetail("", [], [])
last = len(ssp[0].c) - 1
# if ssp[0].c[0] > ssp[0].c[last]:
# file_cz_data.write('\n'"直达会聚区:无")
# file_cz_data.write('\n'"反射会聚区:")
# else:
# file_cz_data.write('\n'"直达会聚区:")
sed = None
rays_total = call_Bellhop_Rays(freq, sd, bathm, ssp, sed, base, azi)
rays_total = call_Bellhop_Rays(freq, sd, dr, bathm, ssp, sed, base, azi)
Rays = find_cvgcRays(rays_total)
[Pos, TL] = call_Bellhop(freq, sd, bathm, ssp, sed, base, azi)
[Pos, TL] = call_Bellhop(freq, sd, dr, bathm, ssp, sed, base, azi)
[x, x, x, x, Pos, pressure] = read_shd('cz'+str(azi)+'.shd')
TL = -10 * np.log10(np.square(np.abs(pressure))) # Transmission Loss
# Plot
@@ -297,12 +285,12 @@ def call_fangwei(freq, sd, bathm, ssp, sed, base, azi, isPlot=False):
czdetail.reflectCz = []
return Pos.r.range, Pos.r.depth, TL[0, 0, :, :], bathm, Rays, czdetail
def child(freq, sd, isPlot, bathm, ssp, sed, base, azi, descript):
ranges, depths, TL, bathym, Rays, czdetail = call_fangwei(freq, sd, bathm, ssp, sed, base, azi,isPlot=isPlot)
def child(freq, sd, dr, isPlot, bathm, ssp, sed, base, azi, descript):
ranges, depths, TL, bathym, Rays, czdetail = call_fangwei(freq, sd, dr, bathm, ssp, sed, base, azi, isPlot=isPlot)
czdetail.descript = descript
return CzData(azi, ranges, depths, TL, bathym, Rays, czdetail)
def call_cz(database, freq, lat, lon, azi, sourceDepth=10, isPlot=False):
def call_cz(database, freq, lat, lon, azi, sourceDepth=10, dr=0.1, isPlot=False):
sd = np.array([sourceDepth]) # Source depth
results = []
@@ -315,7 +303,7 @@ def call_cz(database, freq, lat, lon, azi, sourceDepth=10, isPlot=False):
if azi != None:
[bathm, ssp, sed, base] = GetEnv(database, 25, Coord(lon, lat), R=100, azi=azi)
if np.mean(bathm.d) >= 2000:
ranges, depths, TL, bathym, Rays, czdetail = call_fangwei(freq, sd, bathm, ssp, sed, base, azi,
ranges, depths, TL, bathym, Rays, czdetail = call_fangwei(freq, sd, dr, bathm, ssp, sed, base, azi,
isPlot=isPlot)
czdetail.descript = "{:.1f}°方向".format(azi)
results.append(CzData(0, ranges, depths, TL, bathym, Rays, czdetail))
@@ -329,7 +317,7 @@ def call_cz(database, freq, lat, lon, azi, sourceDepth=10, isPlot=False):
for i in range(8):
[bathm, ssp, sed, base] = GetEnv(database, 25, Coord(lon, lat), R=100, azi=theta[i])
if np.mean(bathm.d) >= 2000:
applyResults.append(pool.apply_async(partial(child, freq, sd, isPlot), (bathm, ssp, sed, base, theta[i], descripts[i])))
applyResults.append(pool.apply_async(partial(child, freq, sd, dr, isPlot), (bathm, ssp, sed, base, theta[i], descripts[i])))
# applyResults.append(pool.apply_async(partial(child, database, freq, lat, lon, sd, isPlot), (pi,)))
pool.close()
pool.join()