找回密码
 注册
Simdroid-非首页
查看: 1387|回复: 20

[F. 求解器/误差] 个人理解的显式算法和隐式算法

[复制链接]
发表于 2006-9-18 11:00:15 | 显示全部楼层 |阅读模式 来自 北京
显式算法和隐式算法,有时也称为显式解法和隐式解法,是计算力学中常见的两个概念,但是它们并没有普遍认可的定义,下面只是我的一些理解。先看看一般对两种方法的理解和比较,
=============================================================
                       显式算法                   隐式算法
-------------------------------------------------------------
  (01)适用问题         动力学(动态)      静力学(静态)
  (02)阻尼             人工阻尼            数值阻尼
-------------------------------------------------------------
  (03)每步求解方法     矩阵乘法            线性方程组
  (04)大矩阵(总刚)   否                  是
  (05)数据存贮量       小                  大
  (06)每步计算速度     快                  慢
  (07)迭代收敛性       无                  有
  (08)确定解           有确定解            可能是病态无确定解
-------------------------------------------------------------
  (09)时步稳定性       有条件              无条件
  (10)时间步           小                  大
  (11)计算精度         低                  高
=============================================================
        (01)是明显不对的,只是对两种方法的初级理解,(02)也是同样。下面要详细讨论这两点。
        (03)是每一步求解的方法,(04)(05)(06)(07)(08)是由(03)所决定的,它们不是两种方法的基本特点。同样,(09)是时间步选择的方法,(10)(11)是由(09)所决定的。

        通过(03)(09)可以得到两种方法的计算特点,显式算法是每一步求解为矩阵乘法,时间步选择为条件稳定;隐式算法是每一步求解为线性方程组求解,时间步选择为无条件稳定。
        下面主要分析两种方法的应用范围。
        a)在求解动力学问题时,将方程在空间上采用有限元法(或其他方法)进行离散后,变为常微分方程组[M]{..u}+[C]{.u}+[K]{u}={f}。求解这种方程的其中两种方法为,中心差分法和Newmark法。采用中心差分法解决动力学问题被称为显式算法,采用Newmark法解决动力学问题被称为隐式算法。
        b)在求解动力学问题时,离散元法(也有其他方法)主要有两种思想:动态松弛法(向后时步迭代),静态松弛法(每一步要平衡)。动态松弛法是显式算法,静态松弛法是隐式算法。其中冲压成型就是动态松弛法的主要例子。
        c)在求解静力学问题时,有时候将其看作动力学问题来处理而采用动态松弛法,这是显式算法。Flac就是主要例子。
        最后总结,
=============================================================
                       显式算法                   隐式算法
-------------------------------------------------------------
  (01)每步求解方法     矩阵乘法            线性方程组
  (02)时步稳定性       有条件              无条件
-------------------------------------------------------------
  (03)适用问题         动力中心差分法     动力Newmark法
                       动力动态松弛法     动力静态松弛法
                       静力动态松弛法
=============================================================

附加说明:
1)求解线性静力学问题,虽然求解线性方程组,但是没有时步的关系,所以不应将其看作隐式算法。
2)求解非线性静力学问题,虽然求解过程需要迭代,或者是增量法,但是没有明显的时步问题,所以不应将其看作隐式算法。
3)静态松弛法,可以认为是将动力学问题看作静力学问题来解决,每一步达到静力平衡,需要数值阻尼。
4)动态松弛法,可以认为是将静力学问题或者动力学问题,分为时步动力学问题,采用向后时步迭代的思想计算。对于解决静力学问题时,需要人工阻尼。

评分

1

查看全部评分

发表于 2006-9-19 12:37:49 | 显示全部楼层 来自 新加坡
Simdroid开发平台
用abaqus的朋友估计对这个话题很熟悉,因为在abaqus里面经常有explicit和implicit的选择问题。
1。从数值积分意义上来说(或者说从字面上来说),explicit在方程求解过程中只涉及到历史的n和
      n-1步的信息,而当前的第 n +1步的信息(比如空间上的其他点)不会涉及到,而implicit在求解
     当前点时,会涉及到其他已 知点的第n+1步信息。
2。通常,explicit方法是条件稳定的。如果在做动力分析的时候,这将意味着时间步的大小将对计算结
     果的精度产生影响。一般在相同的结果精度要求时,expilcit比implicit要的时间步要多。而implicit方法
    是无条件稳定的,所以对时间步的要求没有explicit那么严格。
3。从系数矩阵的计算上来说,在explicit中,第n+1步的系数矩阵可以转化成对角阵,这样一来,在
      每一时间步计算系数矩阵就很容易。而implicit方法中,系数矩阵是不可以转化成对角阵的,所以在
      每个时间步的计算中花的时间会比较多。而且由于矩阵形状的差异,impilcit需要更多的存储空间。

评分

1

查看全部评分

发表于 2006-9-19 13:27:21 | 显示全部楼层 来自 LAN
cchang 所说极是,完全同意。
 楼主| 发表于 2006-9-19 16:14:55 | 显示全部楼层 来自 北京
只在abaqus上理解,显式和隐式,有些狭义。
发表于 2006-9-19 20:51:54 | 显示全部楼层 来自 上海徐汇区
虽然还没完全理解这个帖子的精华,但是感觉不错!另外,我有一个问题:轧制应该是显式还是隐式?还是两者都行?
 楼主| 发表于 2006-9-20 17:30:47 | 显示全部楼层 来自 北京
轧制是一个问题,只涉及到用那种方法好,或者用那种软件。
我觉得高速的冲压用显式,低速就用隐式
发表于 2006-9-21 13:08:06 | 显示全部楼层 来自 上海交通大学
谢谢楼上
发表于 2006-9-23 14:26:10 | 显示全部楼层 来自 新加坡
深有所的。谢
发表于 2006-11-26 20:33:55 | 显示全部楼层 来自 欧洲
帖子挺好的,编辑可不可以考虑给楼上两位加分?
发表于 2006-12-3 21:30:48 | 显示全部楼层 来自 上海
楼上的,aj2000,好呀,同意你的意见
发表于 2009-3-26 09:42:54 | 显示全部楼层 来自 北京
还是不太明白,有没有FLAC方面的例子!
回复 不支持

使用道具 举报

发表于 2009-3-27 14:55:42 | 显示全部楼层 来自 清华大学
这两种方法是指动力微分方程的时间积分方法,跟具体工程问题无关
回复 不支持

使用道具 举报

发表于 2011-4-30 13:33:34 | 显示全部楼层 来自 湖北武汉
不错,学习了!
回复 不支持

使用道具 举报

发表于 2011-4-30 16:17:21 | 显示全部楼层 来自 河北石家庄
记得计算连续介质力学里提到过,所谓的隐式与显式算法只是个数学概念,只是求解方程时采用的不同手段而已。显式算法就是可以由tn时刻的已知量递推出下一时刻tn+1的未知量,即未知量和已知量分别在方程的左右两端,两者之间没有耦合,比如求解动力学问题用到的中心差分法就是显式算法;而隐式算法不能直接递推出来,在需要积分求解的方程的左端是未知量,而右端既有已知量也有未知量,已知量和未知量之间存在耦合,其往往需要迭代或其他方法,比如在简单的弹塑性本构方程的积分计算中,通常涉及到用向后欧拉方法将非线性方程转化为一系列可供迭代求解的线性方程的隐式算法。
回复 不支持

使用道具 举报

发表于 2011-5-5 23:53:49 | 显示全部楼层 来自 吉林长春
谢谢版主,真深刻呀。
回复 不支持

使用道具 举报

发表于 2011-6-2 12:43:32 | 显示全部楼层 来自 辽宁大连
学习了 ~~    貌似我以前的理解不准确哦~~
回复 不支持

使用道具 举报

发表于 2011-6-3 19:30:46 | 显示全部楼层 来自 上海
学习!学习!受教!
回复 不支持

使用道具 举报

发表于 2011-6-5 16:33:06 | 显示全部楼层 来自 北京
都说flac是显示算法的差分软件,可是flac的网格又不同于一般意义上的有限差分网格(正交网格)
也有人说flac是介于有限元与有限差分之间的软件
弄得我很糊涂
这里面的奥秘
请楼主示下
回复 不支持

使用道具 举报

 楼主| 发表于 2011-6-9 12:23:08 | 显示全部楼层 来自 北京
非常同意14楼的观点,显式还是隐式,主要还是数学观点。
动力中心差分法,动力Newmark法,动力动态松弛法,动力静态松弛法,静力动态松弛法这些方法都是针对某类力学问题使用某种数学方法解决问题的概括。使用了显式的数学解法就是显式的。关键的问题还是这类力学问题为什么可以使用这样的数学方法来解决。
回复 不支持

使用道具 举报

 楼主| 发表于 2011-6-9 12:24:28 | 显示全部楼层 来自 北京
关于18楼的问题,主要是网格方面的问题。我不精通。
最好能单独出个帖子,大家讨论讨论。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-4 03:46 , Processed in 0.055168 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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