文件
AcousticSo/rl.py
T

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()