AVL Excite二次开发python程序集

AVL Excite二次开发python程序集题


1、读取 AVL Excite仿真结果数据,并写入csv文件

#td_alevel::calculate gear acc level

import csv
import numpy as np
import matplotlib.pyplot as plt

# AVL modules
import gidas_read
#import gidas

import os.path

csvFullName=r'H:\D\work\PU_Transmission\13TD\ppt\ai_gear.csv'

Path=r'H:\D\work\PU_Transmission\13TD\excite\13_allG_flex_Helical_4.Excite_Set_1.Case_0550\results'
bodies=['BigG-SmallG','BigG-SmallG','IdleG2','IdleG1','IntakeG','ExG',\
           'FIPG','AirIdleG','AirG','OilIdleG','OilG']

nodes=['1','4','1','1','1','1',\
           '1','1','1','1','1']
#filePath='nodes.csv'
#with open(filePath)as file:
#    reader=csv.reader(file)
#    data=[line for line in reader]
    #print(len(data),data[0])
#data=[list(map(float,strList)) for strList in data]
#nodes=[data[i][3] for i in range(len(data))]

dofs=['4']

#test only one load:
#nodes=[nodes[0]] #nodes must be list,if nodes is str,node will be one character!!!!
#dofs=[dofs[0]]

#bodies=[bodies[1]] #set bodies calculated
coordinate_system='abs'
channel_name=['Freq', 'Acce_M']
for i,body in enumerate(bodies):
    node=nodes[i]
    for dof in dofs:
        FileName=body+'-'+node+'-'+dof+coordinate_system+'_MP_F.GID'
        FilePath=Path+'\\'+FileName
        if not os.path.exists(FilePath):
            print("GIDAS file %s does not exist!" % (FilePath))
            raise (IOError)
        index=[]
        data_x=[]
        for  j,x_channel_name in enumerate(channel_name):
            index.append(gidas_read.getChannelIndex(FilePath, x_channel_name))
            data_x.append( gidas_read.readChannelData(FilePath, index[j]))
        NumData=len(data_x[0])
        #calculata fi,ai->db:
        fi=np.array(data_x[0])
        ai=np.array(data_x[1])
        a_db=10*np.log10(np.sum(ai*ai))
        if i==0:
            with open(csvFullName,'w')as file:
                writer=csv.writer(file,lineterminator='\n') ####!!!!!\r\n
                writer.writerow(['fi']+list(fi))
                writer.writerow([FileName]+list(ai)+[a_db])
        if i<>0:
            with open(csvFullName,'a')as file:
                writer=csv.writer(file,lineterminator='\n') ####!!!!!\r\n
                #writer.writerow(['fi']+list(fi))
                writer.writerow([FileName]+list(ai)+[a_db])      
        plt.plot(fi,10*np.log10(ai*ai),label='$%s:%5.2f$'%(body,a_db))
plt.legend()
plt.xlabel('fi/Hz')
plt.ylabel('ai/dB')
plt.show()

你可能感兴趣的:(CAE,机械,python,python,开发语言)