基本概念

        有限元计算微分方程由于计算机本身的从存储限制及方程的复杂性,采用数值方法来逼近真实解。有限元算法基础——欧拉法、拉格朗日算法,以欧拉法为例,主要分为forward Euler Method及backward Euler Method
    Forward Euler Method——显示算法,也即Explicit Method。
    Backward Euler Method——隐式算法,也即Implicit Method。

算法区别

1.概述

  • 在显式算法中, T ( n + 1 ) T(n+1) T(n+1)时刻的值由 T ( n ) T(n) T(n)时刻决定,也就是说当前时刻的值由上一时刻的值决定。
  • 1、求解常微分方程: d y d t = f ( t , y ) \frac{dy}{dt}=f(t,y) dtdy=f(t,y)
    2、初始条件: y ( t 0 ) = y 0 y(t_0)=y_0 y(t0)=y0
    3、设 h h h为每一步的时间步长,在tn时刻: t n = t 0 + n h t_n=t_0+nh tn=t0+nh
    4、 T ( n + 1 ) T(n+1) T(n+1)时刻数值: y n + 1 = y n + h f ( t n , y n ) y_{n+1}=y_n+hf(t_n,y_n) yn+1=yn+hf(tn,yn)
  • 在隐式算法中, T ( n + 1 ) T(n+1) T(n+1)时刻的值不仅由 T ( n ) T(n) T(n)时刻决定,还由当前时刻 T ( n + 1 ) T(n+1) T(n+1)决定;也就是说当前时刻的值由上一时刻和当前时刻的值共同决定;隐式算法往往需要求解二次方程。
  • 1、求解常微分方程: d y d t = f ( t , y ) \frac{dy}{dt}=f(t,y) dtdy=f(t,y)
    2、初始条件: y ( t 0 ) = y 0 y(t_0)=y_0 y(t0)=y0
    3、设 h h h为每一步的时间步长,在tn时刻: t n = t 0 + n h t_n=t_0+nh tn=t0+nh
    4、 T ( n + 1 ) T(n+1) T(n+1)时刻数值: y n + 1 = y n + h f ( t n + 1 , y n + 1 ) y_{n+1}=y_n+hf(t_{n+1},y_{n+1}) yn+1=yn+hf(tn+1,yn+1)

2.收敛性

  • 显示算法不存在收敛性的问题(因为不进行收敛计算),每个时刻的值由上一时刻所确定,但当时间步取得较大时,就会脱离真实值。
  • 隐式算法是无条件收敛的,在隐式算法中,在求解二次方程的同时,会通过牛顿法对每一步进行迭代收敛,直至收敛到指定的偏差。

3.时间步长的依赖性

        显示算法的准确性严重依赖于计算时间步长,要想获得比较准确的结果,时间步需要非常小,但是显式算法是绝对收敛的,对时间步长要求不高。

4.计算效率

  • 显示动力学由于是间接求得位移 x x x的,要取得足够的精度,需要取很短的时间步长,所以需要进行很多步计算,但每一步计算需要的时间很短。
  • 隐式动力学由于直接求得位移 x x x,所以不存在收敛性问题,但由于动力学分析往往涉及非线性(几何非线性、材料非线性等),可能每一步都要进行刚度的求逆,非常耗时,但时间步长相对显示算法可以取得很大。

5.适用范围

  • 显式算法:一般用于作用时间短,非线性程度高的动力学分析、准静态分析。如爆炸、碰撞、跌落及倒塌等。
  • 隐式算法:一般用于作用时间较长、非线性程度不高的动力学、静力学分析及准静态分析。
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐