# -*- coding: utf-8 -*- import warnings warnings.filterwarnings('ignore') import argparse, json 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 pyat.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()