61 行
2.3 KiB
Python
可执行文件
61 行
2.3 KiB
Python
可执行文件
# -*- coding: utf-8 -*-
|
|
import warnings
|
|
warnings.filterwarnings('ignore')
|
|
import argparse, json
|
|
import os, sys
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))+'/pyat')
|
|
|
|
def _argparse():
|
|
parser = argparse.ArgumentParser(description='混响级计算')
|
|
parser.add_argument('-a', '--argfile', action='store', dest='argfile', required=True, help='name of arguments file')
|
|
return parser.parse_args()
|
|
|
|
def main():
|
|
parser = _argparse()
|
|
argfile = parser.argfile
|
|
if argfile[-5:] != '.json':
|
|
print('输入的参数文件名有误')
|
|
return
|
|
with open(argfile,'r') as jsonFile:
|
|
paramData = json.load(jsonFile)
|
|
if ("windSpeed" not in paramData) or ("soundLevel" not in paramData) or\
|
|
("SV" not in paramData) or ("freq" not in paramData) or\
|
|
("tau" not in paramData) or ("theta" not in paramData) or\
|
|
("length" not in paramData) or ("range" not in paramData) or\
|
|
("outParam" not in paramData):
|
|
print(f'{argfile}中的参数有误,请核实!')
|
|
return
|
|
v = float(paramData["windSpeed"])
|
|
SL = float(paramData["soundLevel"])
|
|
Sv = float(paramData["SV"])
|
|
freq = float(paramData["freq"])
|
|
tau = float(paramData["tau"])
|
|
theta = float(paramData["theta"])
|
|
l = float(paramData["length"])
|
|
r = float(paramData["range"])
|
|
outParam = paramData["outParam"]
|
|
|
|
from rlcore import call_rl
|
|
[rlss, rlsb, rlsv] = call_rl(v,SL,Sv,freq,tau,theta,l,r)
|
|
# [rlss,rlsb] = call_rl(5,170,55,10,9.5,0.3,182.5)
|
|
|
|
#输出json文件
|
|
outData = {}
|
|
outData["param"] = paramData
|
|
outData["海面混响"] = f'{round(rlss,2)}'
|
|
outData["海底混响"] = f'{round(rlsb,2)}'
|
|
outData["体积混响"] = f'{round(rlsv,2)}'
|
|
with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"rlOut.json", 'w') as jsonFile:
|
|
json.dump(outData, jsonFile, indent=2, ensure_ascii=False)
|
|
|
|
#海面混响
|
|
print("海面混响计算结果:", round(rlss,2))
|
|
#海底混响
|
|
print("海底混响计算结果:", round(rlsb,2))
|
|
#立体混响
|
|
print("体积混响计算结果:", round(rlsv,2))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|