Abaqus仿真数据感知--用耳朵听你的仿真数据

所谓五感是指:视觉、嗅觉、味觉、听觉、触觉Abaqus跟五感能扯上什么关系?

当然有些人据说有第六感,能够感知到即将要发生的事情。这个不太普遍的能力太神奇了,如果笔者有幸拥有该能力。。。“是不是能很快实现更多的自由,比如财务自由!哈哈哈,大早上的,不要太兴奋啊!”--“快醒醒吧!这个月账单该还了。。。”所以,白日梦做多了,有益身体健康。

我们还是继续说五感吧。五感是安身立命之本,缺少哪个都会严重影响我们的日常生活,这里就不详细展开了,接下来我们聊聊工作中相关的思考,本文将主要探讨一下听觉相关思考。

CAE工程师大部分工作就是:建模、调模型、仿真计算以及仿真数据获取、仿真数据后处理。大部分的仿真结果的主要呈现形式为:图片、动画、曲线、仿真结论等。

所以,在查看仿真报告时主要调用了我们的视觉系统以及大脑逻辑判断(大脑逻辑与知识判断这里不讨论)。普通人一般都有五觉啊,我们能不能调用其他的感知来对仿真结果的安全性、舒适性、或者品质进行判断呢?应该怎么实现呢?

这里我们简单介绍一下仿真数据的听觉处理--用耳朵感受你的仿真数据。

有这个想法的出发点是,对于一些与振动相关的数据,如果以曲线的形式展现,我们看到的是如下图一样的样式,我们眼睛能直观的看到这三组数据的直观过程:“嗯,从时间历程曲线上看,多久就衰减到百分之多少。。。”

或者,我们可以借助时频变换,把数据中的频率特征提取出来进行定性分析,比如采用Abaqus线性动力学SSD分析得到某系统的频响特征曲线,可以直观的判断该系统需要控制的频段,以避免系统奔放的如脱缰的野马,即使你拥有一片广袤的草原。

时频变换的确是傅里叶大神留给后人的宝贵神器,但是作为一个普通人,我们可能更希望用耳朵听一听某个系统的品质到底是什么感受,因为单单通过眼睛观察以上两种曲线,我们的大脑并不能告诉我们这个系统到底是什么样的用户体验。

听感真那么重要么?告诉你听感真的很重要。前几天同学王富贵去买了个耳机,本来计划买个5块钱放耳朵上有动静就行的耳机,结果去体验店带上各种耳机一顿体验,结果最终满意的花了2000多RMB满足了自己的需求;还有村里的翠花本来打算买个自行车作为出行代步工具,结果被拉去4S店,看着销售轻轻关上车门,就因为仔细地多听了几声“嘭”、“嘭”的关门声,结果心满意足的多花了几万块买了一辆心仪的高档轿车。

商品或者结构的听感是关乎品质、关乎用户体验的,真的很重要!在我们上段“科普(Hu You)”之后,相信大家都有同感可以聊聊哈。

事情要这样讲:Abaqus基于Python语言开发了GUI交互界面以及众多Python API接口,大家都知道Python是开源面向对象的脚本语言,拥有海量的开源科学计算工具库,好好地利用这些科学计算包,就相当于给你的仿真工作插上翅膀,工程师可以浪漫的在工作空间中翱翔。

如何把仿真数据转换成音频文件呢?直接上代码:(转成wav格式)

import timeprint'''This script is used for converting data from simulation into audio (.wav) filesprepaired by  Hongxin ZHAO of DS SIMULIA'''time.sleep(1)
import waveimport structimport os
TxtFiles=[]CurPath=os.path.abspath(os.curdir)FileNames=os.listdir(CurPath)for file in FileNames: if '.txt' in file: TxtFiles.append(file)for file in TxtFiles: RawDataLeft=[] RawDataRight=[] RawTime=[] RawDataFile=open(CurPath+'\\'+file ,'r') for line in RawDataFile.readlines(): try: RawTime.append(float(line.split(',')[0])) RawDataLeft.append(float(line.split(',')[1])) except: pass try: RawDataRight.append(float(line.split(',')[2])) except: pass RawDataFile.close() ChannelNumber=1 if len(RawDataLeft)+len(RawDataRight)==len(RawTime)*2: ChannelNumber=2 SampleRate=int(len(RawTime)/RawTime[-1]) FrameNumber=len(RawTime) try: MaxValueLeft=max( abs(max(RawDataLeft)),abs(min(RawDataLeft)) ) except: pass try: MaxValueRight=max( abs(max(RawDataRight)),abs(min(RawDataRight)) ) except: pass AudioString='' for i in range(len(RawDataLeft)): try: RawDataLeft[i]=struct.pack('h',int(RawDataLeft[i]/MaxValueLeft*32767)) AudioString=AudioString+RawDataLeft[i] except: pass try: RawDataRight[i]=struct.pack('h',int(RawDataRight[i]/MaxValueRight*32767)) AudioString=AudioString+RawDataRight[i] except: pass AudioFile=wave.open(CurPath+'\\'+file.replace('txt','wav') ,'w') AudioFile.setnchannels(ChannelNumber) AudioFile.setsampwidth(2) AudioFile.setframerate(SampleRate) AudioFile.setnframes(len(RawDataLeft)) AudioFile.setcomptype('NONE','not compressed') #AudioFile.setparams(1, 2, 44100, 220500, 'NONE', 'not compressed') AudioFile.writeframes(AudioString) AudioFile.close() print 'finished process '+file

以上文件能够直接把当前工作目录(英文工作路径)中的数据文件转换成wav格式的音频文件。

三个数据分别为小球掉落鼓面后,鼓面中心点的:位移、速度、加速度

最后,欢迎大家使用Abaqus

(0)

相关推荐