声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1822|回复: 0

[计算力学] 显式和隐式动力分析比较

[复制链接]
发表于 2016-3-7 16:29 | 显示全部楼层 |阅读模式

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

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

x
  随着国内各种动力弹塑性的兴起,对动力时程分析中提到的方法多有各种说法,对于设计院的人来说更是云里雾里的多,今天看到一篇文章讲得不错,于是结合下自己的看法大概说说显式和隐式动力分析的差别。

  首先简单的解释下:

  显式分析:用上一步的结果和当前步的结果计算下一步的计算结果。有条件收敛,要求时间步较小。通常做动力分析用这种方法。

  隐式分析:用当前步结果和下一步未知结果反复迭代下一步结果,必须通过迭代得到。无条件收敛。是一种能量平衡的结果。通常做静力分析用这种方法。

  两者均是求解动力方程,只是显式求解的每一步不是绝对平衡,而隐式求解是在每一步都是近似绝对平衡的。

  显式算法:

  显式算法最大优点是有较好的稳定性。

  动态显式算法采用动力学方程的一些差分格式(如广泛使用的中心差分法、线性加速度法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取的足够小,一般不存在收敛性问题。 显式算法不需要迭代,也不需要组集总刚,因此需要的内存也比隐式算法要少。并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥, 因而往往采用减缩积分方法,容易激发沙漏模式,影响应力和应变的计算精度。"

  静态显式法基于率形式的平衡方程组与Euler向前差分法,不需要迭代求解。由于平衡方程式仅在率形式上得到满足,所以得出的结果会慢慢偏离正确值。为了减少相关误差,必须每步使用很小的增量。这个方法目前应用比较少。

  总之显式方法不需要迭代是个利好,每步的时间基本是固定的,可以根据设置的波长和分析步长估算出计算总时间。根据上面论述可以看出,一般多采用动态显式,一般有中心差分法、线加速度法等,也有人列出精细积分法为显式算法。其中中心差分法的变种也非常多,有蛙跳式、向后差分式等。由于其算法上当前步结果只跟上一步结果有关,因此只要对角化质量矩阵和阻尼矩阵即可不需要联立动力方程,可解耦到每个单元的差分公式,大大简化了计算过程。但为了保持好的精度,需要当前步和上两步之间尽量是线性关系,因此需要很小的时间步长,通常算法也就用于高速冲击、碰撞上,这些运动可天然的弥补其步长短的问题,但现在随着计算机硬件的能力提升,也开始用到普通运动求解上。

  隐式算法 :

  在每一增量步内都需要对静态平衡方程进行迭代求解,并且每次迭代都需要求解大型的线性方程组,这以过程需要占用相当数量的计算资源、磁盘空间和内存。该算法中的增量步可以比较大,至少可以比显式算法大得多,但是实际运算中上要受到迭代次数及非线性程度的限制,需要取一个合理值。通常在一个时间增量下,隐式算法在弹塑性后期此时刚度比较奇异了,难以收敛,也就需要采用二分法把当前的分析步折半继续解方程,并且不断二分下去直到方程求解完成,所以隐式算法时在前面计算速度还不错,但越往后越慢,时间也是不可估量的,可能在地震波20s就算不下去了等等。但是隐式算法有个好处就是只要算了步数其结果一般一定是正确的,不会像显式那样虽然算完了,其结果可能是发散的。

  隐式算法在求解运动方程时是当前步结果除了更上一步有关外还跟当前步有关,因此不能解耦大型方程组,需要组集刚度,用得多是newmark法和wilson-theta法,其中的beta、alpha和theta值的确定可改变方法的稳定性、计算效率等。隐式求解法的最大优点是它具有无条件稳定性,即时间步长可以任意大。

  计算时间:

  上面大致说了下,不过一般经验表明:

  使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小单元的尺寸成反比

  应用隐式方法,经验表明对于许多问题的计算成本大致与自由度数目的平方成正比,这是在保证能计算完的情况下, 因此如果网格是相对均匀的,随着模型尺寸的增长,显式方法表明比隐式方法更加节省计算成本。

  通常认为两者有此区别:

  =============================================================

  显式算法 隐式算法

  -------------------------------------------------------------

  (01)适用问题 动力学(动态) 静力学(静态)

  (02)阻尼 人工阻尼 数值阻尼

  -------------------------------------------------------------

  (03)每步求解方法 矩阵乘法 线性方程组

  (04)大矩阵(总刚) 否 是

  (05)数据存贮量 小 大

  (06)每步计算速度 快 慢

  (07)迭代收敛性 无 有

  (08)确定解 有确定解 可能是病态无确定解

  ------------------------------------------------------------

  (09)时步稳定性 有条件 无条件

  (10)时间步 小 大

  (11)计算精度 低 高

  =============================================================

  从上面大致可以出,有些认识只是表象而已,其中(1)是明显的错误,因为两种方法都可以用于动力学和静力学问题,只是一种选择而已,(2)也是错误的,阻尼的选择不是算法本身,而是求解需求。(03)是算法的本质,也决定了(04)(05)(06)(07)(08),这是算法的特点所在,04~08并非算法本身的特点而是每一步求解方法的特征。同理(09)是算法的特点,决定了(10)(11)。

  过(03)(09)可以得到两种方法的计算特点,显式算法是每一步求解为矩阵乘法,时间步选择为条件稳定;隐式算法是每一步求解为线性方程组求解,时间步选择为无条件稳定。

  附加说明:

  {1)求解线性静力学问题,虽然求解线性方程组,但是没有时步的关系,所以不应将其看作隐式算法。而是静力学隐式方程求解问题。

  (2)求解非线性静力学问题,虽然求解过程需要迭代,或者是增量法,但是没有明显的时步问题,所以不应将其看作隐式算法。仍归结为隐式方程求解问题

  3)静态松弛法,可以认为是将动力学问题看作静力学问题来解决,每一步达到静力平衡,需要数值阻尼。

  4)动态松弛法,可以认为是将静力学问题或者动力学问题,分为时步动力学问题,采用向后时步迭代的思想计算。对于解决静力学问题时,需要人工阻尼。

  最后说下软件:

  abaqus中是既有隐式也有显式算法的,隐式采用的是改进的newmark法,是HHT方法,显式采用的是中心差分法。目前来说abaqus吧这两种方法都做到了极致

  LS-dyna:显式算法的鼻祖,有隐式算法和显式算法,newmark wilson(这个不确定)和中心差分

  sausage:采用中心差分法,没有隐式算法


转自:http://blog.sina.com.cn/s/blog_9925e04d0102uxmd.html
回复
分享到:

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 15:07 , Processed in 0.062782 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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