声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2812|回复: 12

[综合讨论] 如何提高Ansys瞬态计算的时间位移转化为频率位移fre文件的效率?

[复制链接]
发表于 2012-10-30 10:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
问题描述:
       辐射噪声预估过程一般为:在Ansys中进行动态响应分析后可以得到位移-时间历,要想进行辐射噪声预估需要将位移-时间转化为位移-频域值,得到.fre文件,导入sysnoise中作为声学边界条件。
       但想要得到结构表面节点的位移-频域值的.fre文件,一般非常消耗时间,比如20k nodes的规模,提取31.5Hz~16k可能需要半个多月时间(在一般的4核电脑上)。
       最近发现论坛中已经有程序可以实现这个过程(目前我也是采用这个程序,只是效率非常慢),代码的链接为http://forum.vibunion.com/thread-11129-1-1.html。相关程序为:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/POST26
NSOL,2,81984,U,Y,UY_2   ! 定义第二个变量为UY_2,值为10号节点Y方向的位移,节点可任选,但要保证其值非0
XVAR,1         ! 定义时间变量为坐标横轴
PLVAR,2
*GET,num_var,VARI,0, NSETS ! 将变量长度值赋给变量num_var
*DIM,SYSNOISE_TITLE,CHAR,5,4
SYSNOISE_TITLE(1,1)='SYSNOISE '
SYSNOISE_TITLE(1,2)=' DISPLAC  '
SYSNOISE_TITLE(1,3)='EMENTS  '
SYSNOISE_TITLE(1,4)=' FILE'
SYSNOISE_TITLE(2,1)='Rev 5.5 '
SYSNOISE_TITLE(2,2)=' IBM P2E '
SYSNOISE_TITLE(2,3)='SSL 11'
SYSNOISE_TITLE(2,4)='-AUG-02 '
SYSNOISE_TITLE(3,1)='DISPLACE'
SYSNOISE_TITLE(3,2)='MENT_St'
SYSNOISE_TITLE(3,3)='ructure '
SYSNOISE_TITLE(4,1)='11-AUG-2002  '
SYSNOISE_TITLE(4,2)=' 10:07 '
SYSNOISE_TITLE(4,3)=':13 '
SYSNOISE_TITLE(5,1)='FREQUEN'
SYSNOISE_TITLE(5,2)='CY'
*CFOPEN,DISP,fre ! 定义数据结果文件,DISP.fre
*VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)
%C%C%C%C
*get,nmax,node,,num,max, !得到节点编号的最大数
FM=30  !频率个数
FILLDATA,10,1,FM,1,50,50,  !定义变量10为频率值,起始为50,增量50,共FM个
k=3e-5 !瞬态计算时间步长
*DIM,T_U,ARRAY,FM,4! 定义保存时间历程结果的矩阵T_U,有FM行,4列
VGET,T_U(1,1,1),10 ! 矩阵的第一列保存频率变量
*dim,num_t,,1,5  !定义一个数组
*DIM,SYSNOISE_SUBT1,CHAR,1,4
SYSNOISE_SUBT1(1,1)='NODAL DI'
SYSNOISE_SUBT1(1,2)='SPLACEME '
SYSNOISE_SUBT1(1,3)='NT VALU'
SYSNOISE_SUBT1(1,4)='ES'
*do,i,1,FM,1
num_t(1,1)=T_U(i,1,1) !按次序取频率值
*VWRITE,num_t(1,1)
%20.8E
*VWRITE,SYSNOISE_SUBT1(1,1) ,SYSNOISE_SUBT1(1,2) ,SYSNOISE_SUBT1(1,3) ,SYSNOISE_SUBT1(1,4)
%C%C%C%C
*do,j,1,nmax,1
NSOL,3,j,U,X,UX ! 定义第3个变量为UX,值为j号节点X方向的位移
RESP,4,10,3,1,0.02,k,,, !将时间_位移数值转化为频率_位移数据
VGET,T_U(1,2,1),4 ! 矩阵的第2列保存第4个时间历程变量
num_t(1,2)=T_U(i,2,1) !将与i对应的j节点的X值赋给num_t的第2列
NSOL,5,j,U,Y,UY   ! 定义第5个变量为UY,值为j号节点Y方向的位移
RESP,6,10,5,1,0.02,k,,, !将时间_位移数值转化为频率_位移数据,0.02为阻尼比,最后为计算步长
VGET,T_U(1,3,1),6 ! 矩阵的第3列保存第6个时间历程变量
num_t(1,3)=T_U(i,3,1) !将与i对应的j节点的Y值赋给num_t的第3列
NSOL,8,j,U,Z,UZ   ! 定义第8个变量为UZ,值为j号节点Z方向的位移
RESP,9,10,8,1,0.02,k,,, !将时间_位移数值转化为频率_位移数据
VGET,T_U(1,4,1),9 ! 矩阵的第4列保存第9个时间历程变量
num_t(1,4)=T_U(i,4,1) !将与i对应的j节点的Z值赋给num_t的第4列
num_t(1,5)=j
*VWRITE,num_t(1,5),num_t(1,5),num_t(1,2),0,num_t(1,3) ! 将频率_位移结果数据写到数据结果文件中,0为虚部及旋转自由度值
%10I%10I%20.8E%20.8E%20.8E
*VWRITE,0,num_t(1,4),0
(20X,E20.8,E20.8,E20.8)
*VWRITE,0,0,0
(20X,E20.8,E20.8,E20.8)
*VWRITE,0,0,0
(20X,E20.8,E20.8,E20.8)
*enddo
*IF,i,EQ,FM,THEN
*EXIT
*ENDIF
*VWRITE,SYSNOISE_TITLE(1,1) ,SYSNOISE_TITLE(1,2) ,SYSNOISE_TITLE(1,3) ,SYSNOISE_TITLE(1,4)   
%C%C%C%C
*enddo
*CFCLOS
FINISH
*DEL,ALL
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

问题:如何提高该程序的效率?或者有更好的办法实现噪声预估?

回复
分享到:

使用道具 举报

发表于 2012-10-30 10:21 | 显示全部楼层
兄弟,你这FRE是SYSNOISE的东西啊……这都什么年代了……LMS SYSNOISE升级为LMS Virtual.Lab已经8年时间了……现在VL与ANSYS这些接口都非常好的了……完全用不着手动去提取什么东西,直接读入就可以了……
 楼主| 发表于 2012-10-30 10:27 | 显示全部楼层
我们实验室以前都是采用ANSYS与sysnoise做的,通过噪声预估与实测对比的方式,现在购买了VL想对比两个软件以及方法。所以我想看看这个程序有没有优化的空间?
 楼主| 发表于 2012-10-30 10:28 | 显示全部楼层

我们实验室以前都是采用ANSYS与sysnoise做的,通过噪声预估与实测对比的方式,现在购买了VL想对比两个软件以及方法。所以我想看看这个程序有没有优化的空间?或者你有没有更好的方法,直接弄到VL计算。我目前已经在ANSYS中建立动态响应有限元模型,并且已经计算出来动态响应值(位移,速度,加速度)。
发表于 2012-10-30 10:37 | 显示全部楼层
公子汀 发表于 2012-10-30 10:28
我们实验室以前都是采用ANSYS与sysnoise做的,通过噪声预估与实测对比的方式,现在购买了VL想对比两个软件 ...

VL里面的传统求解器,比如声学有限元、边界元等等,就是和原来SYSNOISE一模一样的……没有任何差距,但是现在VL里面的SYSNOISE求解器功能已经强大很多了,比如说有FEM-PML FEM-AML 快速多极边界元等等,功能已经比原来的SYSNOISE强大了很多。你ANSYS里面计算的振动响应,直接以RST文件的形式直接在VL里面读入就可以了,根本不需要什么提取转化……另外,VL里面也可以做振动响应的,你可以不用在ANSYS里面算,都可以的……关于优化,VL里面有专门的模块Optimization,可以对多体动力学、结构、声学等进行综合优化……
 楼主| 发表于 2012-10-30 11:04 | 显示全部楼层
superxjw 发表于 2012-10-30 10:37
VL里面的传统求解器,比如声学有限元、边界元等等,就是和原来SYSNOISE一模一样的……没有任何差距,但是 ...

非常感谢您。
请问你又关于,在ANSYS里面计算的振动响应,然后以RST文件的形式在VL里面读入计算辐射噪声的资料或者例子没有?
发表于 2012-10-30 11:07 | 显示全部楼层
公子汀 发表于 2012-10-30 11:04
非常感谢您。
请问你又关于,在ANSYS里面计算的振动响应,然后以RST文件的形式在VL里面读入计算辐射噪声 ...

这个不需要什么例子吧……论坛里也有很多朋友问过,ANSYS计算的振动如何导入VL,其实非常简单的,只要你结果保存为了RST格式文件,VL里面直接就可以读入了。你可以看看李增刚老师那本VL声学的书,里面大多数是Nastran的计算结果OP2文件,其实步骤都是一模一样的。
 楼主| 发表于 2012-10-30 11:22 | 显示全部楼层
superxjw 发表于 2012-10-30 11:07
这个不需要什么例子吧……论坛里也有很多朋友问过,ANSYS计算的振动如何导入VL,其实非常简单的,只要你结 ...

目前我在ANSYS中计算的结果文件.rst的大小有600G左右,读入VL中速度是不是非常慢以至于跟sysynoise一样?因为它都要对表面的点进行提取位移-时间值,同时通过变换得到位移-频域值。
发表于 2012-10-30 11:28 | 显示全部楼层
公子汀 发表于 2012-10-30 11:22
目前我在ANSYS中计算的结果文件.rst的大小有600G左右,读入VL中速度是不是非常慢以至于跟sysynoise一样? ...

VL的情况比SYSNOISE好很多。我建议你这样啊,你在ANSYS里面就做频响分析……这样就是频域的啊……然后导入VL就能够计算了,否则你还要导入VL之后做DSP Case,很麻烦。另外,你ANSYS的RST文件里面也许包含了位移、速度等等信息,你在导入VL的时候可以选择的,只导入其中一种就可以了,这样能大大减小数据量。
发表于 2012-11-21 09:33 | 显示全部楼层
本帖最后由 文枫 于 2012-11-21 15:46 编辑

RESP,6,10,5,1,0.02,k,,, !将时间_位移数值转化为频率_位移数据,0.02为阻尼比,最后为计算步长
这条语句,为什么要设置阻尼比为0.02,如何确定?为什么将时间_位移数值转化为频率_位移数据的时候就需要设置阻尼比?

请版主帮忙解答!!!!!!!!!!!!!!!!!!!!!!
发表于 2013-1-4 09:28 | 显示全部楼层
superxjw 发表于 2012-10-30 11:28
VL的情况比SYSNOISE好很多。我建议你这样啊,你在ANSYS里面就做频响分析……这样就是频域的啊……然后导入 ...

主任,ANSYS导入只导位移也行吗?我看见李增刚老师的书里面都是导入速度和加速度啊,没见过可以导入位移的啊?
发表于 2013-1-4 09:35 | 显示全部楼层
wangxiloong 发表于 2013-1-4 09:28
主任,ANSYS导入只导位移也行吗?我看见李增刚老师的书里面都是导入速度和加速度啊,没见过可以导入位移的 ...

肯定可以啊,位移也可以作为边界条件啊!
发表于 2013-4-12 15:46 | 显示全部楼层
superxjw 发表于 2012-10-30 11:28
VL的情况比SYSNOISE好很多。我建议你这样啊,你在ANSYS里面就做频响分析……这样就是频域的啊……然后导入 ...

我做的那个DSP的例子,ANSYS结果文件3.9G,转换起来我没记时间,但是好像很快的,不到10分钟就好了。

点评

好!谢谢反馈!  发表于 2013-4-12 16:54

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-11 20:46 , Processed in 0.065875 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表