heng520 发表于 2010-5-6 16:18:49

Dynamics-Implicit与Dynamics-Explicit

动态分析中隐式和显式有什么区别,两者应该怎么设置?

tonnyw 发表于 2010-9-3 21:32:27

Thanks for pointing me the link.

I still don't understand it. Pardon me if I am being too picky.

First of all both methods are solving the same governing equation. They gotta produce the same solution. Otherwise, it is meaningless.

It is like in nonlinear static problem, you can use updated Lagrangian formulation or total Lagrangian formulation and the results should be close.

Here for this example, it is mentioned that explicit method does not work well for loading in slow velocity. It also points out that for explicit method several parameters need to be adjusted in order to have right results. I didn't see the adjustment illustration. Is 30 miles per hour a high velocity? Is the time step size not small enough? Seems to me the time step size is about 0.0125s.

wild_field 发表于 2010-5-6 16:34:34

本帖最后由 wild_field 于 2010-5-7 11:00 编辑

不好回答,这是两种不同的算法,可以搜索下论坛的帖子。
给大家个链接,虽然软件不同,但原理相通。
http://forum.simwe.com/thread-840667-1-1.html

civil fans 发表于 2010-5-6 19:09:37

本帖最后由 civil fans 于 2010-5-6 19:20 编辑

很难说得太“白”,尽量简单点说吧,可以从两个方面理解
1、从积分推进的数学描述来说,比如,在隐式方法中,由变量A推及B,两者是相互包含关系,也可叫做耦合关系,简言之,方程两边均存在未知变量,且两者相互耦合,因此计算中需要解耦,迭代计算通常通过假定一个初始向量空间,进行迭代解耦,解耦结果具有近似逼近的特征。在瞬态分析中,由Ti推进到Ti+1也具有类似耦合关系,解耦方法和静力问题类似。求解方法以牛拉法或者其衍生方法为主。隐式算法无条件稳定,因此时间增量相对较大。
2、从物理场的变量传递来说,隐式算法的初始扰动会产生全局响应,因此,迭代求解时,每一步都需要组集该时刻对应的总刚矩阵,计算量非常大。显式动力算法,物理量以波速的形式在介质中传递,因此,无需组集每一时刻的总刚矩阵,求解直至能量趋于稳定状态时截止。比如结构倒塌,你可以求解到房屋完全倒塌直至构件丧失冲击、不再进一步破坏为止。显式算法以中心差分法为最主。显式算法有条件稳定,时间增量极小,求解量也非常大。

有一个经典的描述两种算法差异的例子:挤电梯的时候,假设电梯里面人多,你平稳走进去,大家都会合适的挪动一下,最后等你站稳之后,全部的人员都达到了新的平衡位置,这是“隐式计算的结果";假设你慌不择路冲进去,也会寻得站立位置,但靠近你附近的少数人会被你冲得“人仰马翻”,但离你较远的人可能纹丝不动,这是“显式动力计算的结果”。
理论上,隐式问题都可以通过显式算法来求解,但显式问题却不见得能采用隐式算法来求解。

lynnxiong 发表于 2010-5-7 09:24:29

ADINA的帮助文件中有很详细的解释

linking1987 发表于 2010-5-7 10:24:07

余大师描述得很形象,多谢大师的解答:)又学到了不少东西

bbssbb 发表于 2010-5-7 11:40:25

很难说得太“白”,尽量简单点说吧,可以从两个方面理解
1、从积分推进的数学描述来说,比如,在隐式方法中,由变量A推及B,两者是相互包含关系,也可叫做耦合关系,简言之,方程两边均存在未知变量,且两者相互耦合 ...
civil fans 发表于 2010-5-6 19:09 http://forum.simwe.com/images/common/back.gif
这个挤电梯的描述很有趣,赞形象。

refeihc 发表于 2010-5-19 10:00:21

谢谢楼上把我引到这里,以前我是从另一个角度理解“隐式”、“显式”2个概念的,看了civil fans的跟帖,觉得有些新意,不过还不能消化,先想想吧。

wyslft 发表于 2010-5-22 10:09:10

挤电梯的时候,假设电梯里面人多,你平稳走进去,大家都会合适的挪动一下,最后等你站稳之后,全部的人员都达到了新的平衡位置,这是“隐式计算的结果";假设你慌不择路冲进去,也会寻得站立位置,但靠近你附近的少数人会被你冲得“人仰马翻”,但离你较远的人可能纹丝不动,这是“显式动力计算的结果”。
4 S# Q; bu" M理论上,隐式问题都可以通过显式算法来求解,但显式问题却不见得能采用隐式算法来求解。

这个解释的真好·

refeihc 发表于 2010-5-28 10:50:37

我实在觉得3楼的解释不恰当,但这么多人说好,那就可能是我愚鲁,或者是我在钻牛角尖,但以下地方想弄明白,希望有人指教。讨论明白一点也是好的,请大家别见怪!

1“你”代表什么?“大家”又代表什么?
我觉得civli fans是在把“你”比着u(t+/Delta t),即当前时步的响应;而“大家”代表以前时步的u(t)。“大家”的位置已站好了,也就是说前面若干时步的解已求出了。那“你平稳走进去了”,还需要“大家挪动”吗?这里“挪动”是什么意思?

2“平稳走进去”和“慌不择路冲进去”分别代表什么?感觉是指取时步的大小?那“平稳走进去”就应该是取小的时步,“慌不择路冲进去”就应该是取大的时步,感觉用在这里就不恰当?

3   另外,“隐式问题”和“显式问题”这样的名称也觉得奇怪,不应该有这样的术语吧?或者civil fans有其它的想法么?

论坛讨论这个问题的帖子很多,感觉这个帖子(http://forum.simwe.com/thread-932715-1-1.html)的12楼解释是对的。

wild_field 发表于 2010-5-28 11:08:22

9# refeihc
如果不研究有限元的算法和代码,仅是从有限元应用的角度来出发,civil fans的解释已经很形象了。也就是说你既然不研究算法,那你仅需明白些表象的东西就可以了,这是civil fans说明的前提。
如果你就是要研究算法,就完全是两码事了,这时很多比喻也许就是不恰当的,这个可以理解。

refeihc 发表于 2010-5-28 11:46:23

本帖最后由 refeihc 于 2010-5-28 11:59 编辑

9# refeihc
如果不研究有限元的算法和代码,仅是从有限元应用的角度来出发,civil fans的解释已经很形象了。也就是说你既然不研究算法,那你仅需明白些表象的东西就可以了,这是civil fans说明的前提。
7 A5 O) _# J3 t! Z. G$ v如果你就是要研究算法,就完全是两码事了,这时很多比喻也许就是不恰当的,这个可以理解。
wild_field 发表于 2010-5-28 11:08 http://forum.simwe.com/images/common/back.gif

谢谢楼上给我解惑!也受3楼的启发,觉得可以如下描述:

问题:大家(所有的自由度)同时往前进(动力求解),每次都迈一步(时步),然后进行调整(迭代)直到站好位置(收敛),然后再迈一新的步子(逐步递推)。

如果选择走小路(采用显式算法),大家必须小心前进,表明采用时间步长要慎重。如果每次都是大步前进,则可能互相碰撞,甚至人仰马翻,这表明显式算法不宜采用过大的时间步长,即是条件稳定。小步前进时,不需要统一算计大家如何迈步子,每个人独立迈一小步即可。

如果选择走大路(采用隐式算法),大家的步子可以迈得大一点,但如何迈步要算计好(表明隐式算法需要统一求解),每次都通过计算然后进行调整(迭代),大家也能站好位置(收敛)。说明可以不限制步子的大小(当然也不能任意大),即无条件稳定。

wild_field 发表于 2010-5-28 12:12:05

本帖最后由 wild_field 于 2010-5-28 12:16 编辑

既然你这么感兴趣,我也多说两句,但我也不是搞算法吧,仅是应用的程度而已。
隐式算法,很多人可能认为,只要能收敛,时间步长取多少无所谓,这种说法是欠考虑的,对于非线性问题,隐式算法的时间步依然不能很大,否则即便收敛有解,但结果不一定准确。
显式算法,时间步长与模型的参数及单元都是有关系的,所以显式算法时间步长可以由系统自动确定,一般不需要用户设定,所谓条件稳定,就是时间步长大了就不行。
再多说一句,余老师的比喻是很恰当的,只是你没有理解好而已。

refeihc 发表于 2010-5-28 22:18:18

关于隐式算法和显式算法,你的观点我同意。

我还想补充说明的是,所谓“时间步依然不能很大”和“时间步长 大了就不行”是比较主观的说法。究竟时间步怎样才算“很大”,大到怎样的程度就“不行”,其实是有规律的。

有时哪怕时间步长只1毫秒也太大,而某些情况下,时间步长即使几个小时也不算长,这取决于具体问题,不妨多思考。

关于余老师(civil fans)的比喻,我想说的是仁者见仁,智者见智。虽然是个小概念问题,但意义不小。参加讨论的人能借此提高认识,以后看到这个帖子的人能因此解惑,我本人也有收获——已在我的帖子里说明,这才是最有价值的事情。

如果论坛版块能多些这样的讨论,人气一定会越聚越高。

bbssbb 发表于 2010-5-28 22:54:44

同意楼上的观点,时间步长的选择与问题定义有关,也与空间离散有关。
只要能让人思考的贴就是好贴,不管严密与否,通俗与否。

sunxiaoling 发表于 2010-7-24 09:59:38

挤电梯的例子我首先是在《基于abaqus的有限元分析和应用》一书第13章
abaqus/explicit准静态分析 中看到的
要表达的意思是:
只要加载速度足够小,就可以忽略惯性效应,用动力学的方法解决静力问题
和 隐式算法和显式算法 没什么关系

luxz 发表于 2010-8-17 17:59:03

可以参考我们的讲义,幻灯片 171-192
讲义发表在:
http://forum.simwe.com/thread-936274-1-1.html

fengjun4318 发表于 2010-8-21 20:11:27

"有一个经典的描述两种算法差异的例子:挤电梯的时候,假设电梯里面人多,你平稳走进去,大家都会合适的挪动一下,最后等你站稳之后,全部的人员都达到了新的平衡位置,这是“隐式计算的结果";假设你慌不择路冲进去,也会寻得站立位置,但靠近你附近的少数人会被你冲得“人仰马翻”,但离你较远的人可能纹丝不动,这是“显式动力计算的结果”。"

这个应该是缓慢加载和快速加载的差别,abaqus帮助文件中有论述

luxz 发表于 2010-8-21 20:19:28

说得对,其实隐式动力算法如果步长取得很小,同样可以达到显式动力算法的效果。

从某种意义上说,隐式动力算法通过减小步长,可以完全达到显动力算法式的效果。只有两个问题需要考虑:一个是非线性计算的收敛性问题,一个是计算耗时问题。但是这都不是隐式动力算法自身的问题。

17# fengjun4318

luxz 发表于 2010-8-21 20:20:17

现在概念混淆的人太多了,ft

refeihc 发表于 2010-8-31 14:47:49

挤电梯的例子我首先是在《基于abaqus的有限元分析和应用》一书第13章
abaqus/explicit准静态分析 中看到的
要表达的意思是:
只要加载速度足够小,就可以忽略惯性效应,用动力学的方法解决静力问题
和 隐式算法和 ...
sunxiaoling 发表于 2010-7-24 09:59 http://forum.simwe.com/images/common/back.gif

同意15楼的理解,这个例子是在说明惯性的影响,而不是用来说明隐式算法和显式算法的差别。
页: [1] 2 3
查看完整版本: Dynamics-Implicit与Dynamics-Explicit