mazhen 发表于 2008-4-13 18:50

关于大型的声场问题的计算

对于大型问题的声场计算,不知论坛上的高手有什么好的方法没有,比如一个比较复杂的发动机,计算它的结构噪声,响应分析再加声场分析,有限元响应分析的模型肯定要比声场计算的边界元网格要细,所以在边界问题的施加上有些困难;这就引出第一个问题,就是如何将一个网格比较细的有限元分析结果,作为边界条件施加在网格比较粗糙的边界元网格上,我知道sysnoise有这么一个命令可以实现,但是简单的还可以,复杂的就不行了,不知道有那位高手实现过。

还有一个就是计算时间的问题,边界元网格1w的话计算单频就要好几个小时,有没有更好的方法或者软件可以并行计算,时间越短越好?

以上是我在使用sysnoise计算时感觉到遇到的最大困难,请大家帮忙看一下,支点招,谢谢!

kanglei 发表于 2008-4-13 20:59

你的第一个问题,我解决不了
至于第二个问题,边界元计算本身就是很慢,这是由他的计算特点决定的,除非你有超大的内存,或者换成使用有限元(利用无限元做无反射边界)。

mazhen 发表于 2008-4-13 21:37

2楼的说的用超大的内存,但是sysnoise只能使用500m的内存阿,这不是矛盾吗?

pengweicai 发表于 2008-4-14 09:28

第一个问题:
在导入有限元结果的时候可以选择插值算法, imcompatible mesh

第二个问题:
尽量优化网格,减少不必要的网格。 最实际的办法是增高CPU, 内存的影响不大,计算过程中所需要的内存不像有限元那么多。
主要的原因是我们用的盗版,而且还是多年前的版本。现在新的版本 已经提高了求解器的计算能力。

mazhen 发表于 2008-4-14 09:53

第一个问题,导入的时候出现错误,错误信息如下:
NO TRANSFER NODES ARE WITHIN TOLERANCE, POSSIBLE CAUSE ARE:
--TOLERANCE IS TOO SMALL
--MESH ARE TOO DIFFERENT
将TLERANCE 改大后还是同样的错误,大家有什么办法可以解决啊?

lyxh 发表于 2008-4-14 11:57

可能大家对边界元的最新发展不是特别清楚。如果采用快速多极算法,可以计算几十万自由度以上的问题,计算效率可以和有限元相比。

w89986581 发表于 2008-4-14 12:10

原帖由 lyxh 于 2008-4-14 11:57 发表 http://www.chinavib.com/forum/images/common/back.gif
可能大家对边界元的最新发展不是特别清楚。如果采用快速多极算法,可以计算几十万自由度以上的问题,计算效率可以和有限元相比。

呵呵,能否再介绍详细一些。

mazhen 发表于 2008-4-14 12:23

六楼的详细介绍一下吧,计算速度问题太困扰人了,用sysnoise计算的话,超过1w节点,计算有很困难了,主要是不能并行计算.如果有高效率的计算方法真是太好了.

pengweicai 发表于 2008-4-14 14:50

快速多极算法需要自己编程序,对于实际工程意义不大。

kanglei 发表于 2008-4-14 21:47

我有师兄用快速多极子算法编BEM程序,速度没实质性的改善,而且内存和CPU的需求还是巨大,和有限元相比差距可不是一点半点。

mazhen 发表于 2008-4-14 21:52

看来边界元的算法要研究研究了,期待着更好的计算方法
希望能看到并行计算技术应用到bem中,不知道现在有没有搞这方面研究的

pengweicai 发表于 2008-4-15 09:27

科学研究和工程实际不一样。
学术研究阶段:
能量边界元---解决高频问题
快速多极边界元--解决计算量问题
边界无网格法---解决低中频限制
波动边界元---解决低中频限制
瑞利边界元---解决声辐射

lyxh 发表于 2008-4-15 17:49

原帖由 kanglei 于 2008-4-14 21:47 发表 http://chinavib.com/forum/images/common/back.gif
我有师兄用快速多极子算法编BEM程序,速度没实质性的改善,而且内存和CPU的需求还是巨大,和有限元相比差距可不是一点半点。


关于快速多计算法(FMM)求解声学问题,可以参考L. Shen and YJ Liu的文章
Comput Mech (2007) 40:461-472. 他们的结果表明对10000自由度的问题,自适应FMM能提高计算效率一个量级以上。文中还有200000单元的计算结果。


对三维问题,设某一维度网格划分节点数为 O(n),
有限元的计算复杂度为O(n^3).
用边界元,总节点数为 O(n^2),FMM的计算复杂度为 O(n^2 log n),而用常规BEM则为O(n^4)。

当然在实际中,FMM的效率到不到它的理想值,一般为O(n^(2+a) (log n)^b )。 但对大型问题,FMM肯定是要比常规边界元快很多。

至于你的程序的效率不高,可能是代码的效率问题,而不是方法本身的问题。

kanglei 发表于 2008-4-15 20:20

楼上说的有道理,程序的效率会影响到计算的速度。但个人编程能做到很高的效率很难。本人其实对FMM了解并不多,倒是让各位见笑了。

个人感觉,现在一般的声学问题用有限元解决比用边界元要方便得多,至于边界元擅长的声辐射问题,只需在一定的区域添加无反射边界条件,有限元照样能做,而一些具有复杂结构的问题,边界元处理起来相当麻烦。当然,对于相当大尺度的声学问题,有限元还是很困难的。大家以为如何?
页: [1]
查看完整版本: 关于大型的声场问题的计算