显式与隐式算法区别
- 格式:doc
- 大小:877.25 KB
- 文档页数:10
有限元分析基础- 显式与隐式算法的区别所谓显式和隐式,是指求解方法的不同,即在数学上的计算方法不一样,是两种不同针对时间的积分方法。
显式求解是对时间进行差分,不存在迭代和收敛问题,最小时间步取决于最小单元的尺寸。
过多或过小的时间步都会导致求解时间非常漫长,但总能给出一个计算结果。
隐式求解和时间无关,采用的是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就得不到结果。
在某些情况下,显式算法的计算效率远高于隐式算法,尤其是在多处理器并行运算的场景下,对于自由度较大的三维结构,显式算法可能具有较高的计算效率。
然而,对于自由度较小的二维结构,隐式算法可能更适合,因为它在每个增量步内不需要进行迭代,从而减少了计算时间。
总结来说,隐式方法适用于需要高计算精度和稳定性的场景,而显式方法则适用于需要高计算效率的场景。
ABAQUS显式与隐式的区别ABAQUS中动态分析包括两大类基本方法:振型叠加法:用于求解线性动态问题;直接积分法:主要用于求解非线性动态问题。
ABAQUS显式(explicit)和隐式(standard)算法分别对应着直接积分法中的中心差分法(显式)和Newmark(隐式)法等。
比较两种算法,显式中心差分法非常适合研究波的传播问题,如碰撞、高速冲击、爆炸等。
显式中心差分法的M与C矩阵是对角阵,如给定某些有限元节点以初始扰动,在经过一个时间步长后,和它相关的节点进入运动,即U中这些节点对应的分量成为非零量,此特点正好和波的传播特点相一致。
另一方面,研究波传播的过程需要微小的时间步长,这也正是中心差分法的特点。
而Newmark法更加适合于计算低频占主导的动力问题,从计算精度考虑,允许采用较大的时间步长以节省计算时间,同时较大的时间步长还可以过滤掉高阶不精确特征值对系统响应的影响。
隐式方法要转置刚度矩阵,增量迭代,通过一系列线性逼近(Newton-Raphson)来求解。
正因为隐式算法要对刚度矩阵求逆,所以计算时要求整体刚度矩阵不能奇异,对于一些接触高度非线性问题,有时无法保证收敛。
下面分别介绍这两种算法。
1 显式算法(中心差分法)假定0,1t ,2t ,…,n t 时刻的节点位移,速度与加速度均为已知,现求解)(t t t n ∆+时刻的结构响应。
中心差分法对加速度,速度的导数采用中心差分代替,即为:)(21)2(12t t t t t t t t t t t U U tU U U U t U ∆-∆+∆+∆--∆=+-∆= (1) 将(1)式代入运动方程后整理得到tt t R U M ˆˆ=∆+(2) 式(2)中C tM t M ∆+∆=211ˆ2(3) t t t t t U C tM t U M t K R R ∆-∆-∆-∆--=)211()2(ˆ22(4) 分别称为有效质量矩阵,有效载荷矢量。
大多数非线性动力学问题一般多是采用显式求解方法,特别是在求解大型结构的瞬时高度非线性问题时,显示求解方法有明显的优越性。
下面先简要对比一下隐式求解法和显示求解法。
动态问题涉及到时间域的数值积分方法问题。
在80年代中期以前,人们基本上采用纽曼法进行时间域的积分。
根据纽曼法,位移、速度和加速度有着如下关系:u(i+1)=u(i)+△t*v(i)[(1—2p)a(i)+2p*a(i+1)] (1)v(i+1)=V(i)+△t[(1-2q)a(i)+2qa(i+1)] (2)上面式子中 u(i+1),u(i)分别为当前时刻和前一时刻的位移,v(i+1)和V(i)为当前时刻和前一时刻的速度,a(i+1)和a(i)为当前时刻和前一时刻的加速度,p和q为两个待定参数,△t 为当前时刻与前一时刻的时问差,符号* 为乘号。
由式(1)和式(2)可知,在纽曼法中任一时刻的位移、速度、加速度都相互关联,这就使得运动方程的求解变成一系列相互关联的非线性方程的求解,这个求解过程必须通过迭代和求解联立方程组才能实现。
这就是通常所说的隐式求解法。
隐式求解法可能遇到两个问题。
一是迭代过程不一定收敛,二是联立方程组可能出现病态而无确定的解。
隐式求解法最大的优点是它具有无条件稳定性,即时间步长可以任意大。
如果采用中心差分法来进行动态问题的时域积分,则有如下位移、速度和加速度关系式:u(i+1)=2u(i)-u(i-1)+a(i)(△t)^2 (3)v (i+1)=[u (i+1)-u (i-1)]/2(△t) (4)式中u(i-1),为i -1时刻的位移。
由式(3)可以看出,当前时刻的位移只与前一时刻的加速度和位移有关,这就意味着当前时刻的位移求解无需迭代过程。
另外,只要将运动过程中的质量矩阵和阻尼矩阵对角化,前一时刻的加速度求解无需解联立方程组,从而使问题大大简化,这就是所谓的显式求解法。
显式求解法的优点是它既没有收敛性问题,也不需要求解联立方程组,其缺点是时间步长受到数值积分稳定性的限制,不能超过系统的临界时间步长。
1.1. 弹性动力学有限元基本解法结构系统的通用运动学方程为:tR KU U C U M =++ (1) 求解该动力学振动响应主要有三类方法:(1)时域法(2)频域法(3)响应谱法 时域法又可分为:(1)直接积分法,(2)模态叠加法。
直接积分法又可分为中心差分法(显式),Wilson θ(隐式)法以及Newmark (隐式)法等。
本文介绍中心差分法(显式)与Newmark (隐式)法。
1 中心差分法(显式)假定0,1t ,2t ,…,n t 时刻的节点位移,速度与加速度均为已知,现求解)(t t t n ∆+时刻的 结构响应。
中心差分法对加速度,速度的导数采用中心差分代替,即为:)2(12t t t t t t U U U t U ∆+∆-+-∆= )(21t t t t t U U tU ∆-∆+-∆= (2) 将(2)式代入(1)式后整理得到tt t R U M ˆˆ=∆+ (3) 式(3)中C tM t M ∆+∆=211ˆ2 t t t t t U C tM t U M t K R R ∆-∆-∆-∆--=)211()2(ˆ22 分别称为有效质量矩阵,有效载荷矢量。
R ,M ,C ,K 为结构载荷,质量,阻尼,刚度矩阵。
求解线性方程组(3),即可获得t t ∆+时刻的节点位移向量t t U ∆+,将t t U ∆+代回几何方程与物理方程,可得t t ∆+时刻的单元应力和应变。
中心差分法在求解t t ∆+瞬时的位移t t U ∆+时,只需t t ∆+时刻以前的状态变量t U 和t t U ∆-,然后计算出有效质量矩阵M ˆ,有效载荷矢量tR ˆ,即可求出t t U ∆+,故称此解法为显式算法。
中心差分法,在开始计算时,需要仔细处理。
t =0时,要计算t U ∆,需要知道tU ∆-的值。
因此应该有一个起始技术,因而该算法不是自动起步的。
由于0U ,0U ,0U 是已知的,由t =0时的(2)式可知:02002U t U t U U t ∆+∆-=∆- 中心差分法中时间步长t ∆的选择涉及两个方面的约束:数值算法的稳定性和计算时间。
以下内容转自abaqus版面的总结:显式一般用于动态问题的分析, 对于大型问题, 或复杂的接触情况可能需要几百万的增量步的计算, 所用时间可能是几天或更长. 而隐式的增量步长要长得多, 一般用于静态问题的求解.显式算法别explicit method use direct iterative method, which has small cost in eachtime increment but require relatively small increment. Abaqus pre-determinethe time increment based on wave propagation speed and minimum meshsize. This method could be efficient for highly nonlinear and contact problem.For quasi-static problem, properly adjust model parameter as density and totaltime is important to achieve good computation time.standard-隐式算法Implicit method use newton method for iteration, which means high cost foreach time increment but could mean large time increment. Convergencecould be a problem in this case. It could be efficient for linear and some nonlinear problem. More materials, elements and procedures are available in standard.所谓显式和隐式,是指求解方法的不同,即数学上的出发点不一样。
显式与隐式方法对比显式与隐式方法对比:隐式时间积分——不考虑惯性效应([C]and[M])。
——在t+△t时计算位移和平均加速度:{u}={F}/[K]。
——线性问题时,无条件稳定,可以用大的时间步。
——非线性问题时,通过一系列线性逼近(Newton-Raphson)来求解;要求转置非线性刚度矩阵[k];收敛时候需要小的时间步;对于高度非线性问题无法保证收敛。
显式时间积分——用中心差法在时间t求加速度:{a}=([F(ext)]-[F(int)])/[M]。
——速度与位移由:{v}={v0}+{a}t,{u}={u0}+{v}t——新的几何构型由初始构型加上{X}={X0}+{U}——非线性问题时,块质量矩阵需要简单的转置;方程非耦合,可以直接求解;无须转置刚度矩阵,所有的非线性问题(包括接触)都包含在内力矢量中;内力计算是主要的计算部分;无效收敛检查;保存稳定状态需要小的时间步。
关于文件组织:jobname.k——lsdyna输入流文件,包括所有的几何,载荷和材料数据jobname.rst——后处理文件主要用于图形后处理(post1),它包含在相对少的时间步处的结果。
jobname.his——在post26中使用显示时间历程结果,它包含模型中部分与单元集合的结果数据。
时间历程ASCII文件——包含显式分析额外信息,在求解之前需要用户指定要输出的文件,它包括:GLSTAT全局信息,MATSUM材料能量,SPCFORC节点约束反作用力,RCFORC接触面反作用力,RBDOUT刚体数据,NODOUT节点数据,ELOUT单元数据……在显式动力分析中还可以生成下列文件:D3PLOT——类似ansys中jobname.rstD3THDT——时间历程文件,类似ansys中jobname.his关于单元:ANSYS/LSDYNA有7中单元(所有单元均为三维单元):LINK160:显式杆单元;BEAM161:显式梁单元;SHELL163:显式薄壳单元;SOLID164:显式块单元;COMBI165:显式弹簧与阻尼单元;MASS166:显式结构质量;LINK167:显式缆单元显式单元与ansys隐式单元不同:——每种单元可以用于几乎所有的材料模型。
显式和隐式动力分析比较随着国内各种动力弹塑性的兴起,对动力时程分析中提到的方法多有各种说法,对于设计院的人来说更是云里雾里的多,今天看到一篇文章讲得不错,于是结合下自己的看法大概说说显式和隐式动力分析的差别。
首先简单的解释下:显式分析:用上一步的结果和当前步的结果计算下一步的计算结果。
有条件收敛,要求时间步较小。
通常做动力分析用这种方法。
隐式分析:用当前步结果和下一步未知结果反复迭代下一步结果,必须通过迭代得到。
无条件收敛。
是一种能量平衡的结果。
通常做静力分析用这种方法。
两者均是求解动力方程,只是显式求解的每一步不是绝对平衡,而隐式求解是在每一步都是近似绝对平衡的。
显式算法:显式算法最大优点是有较好的稳定性。
动态显式算法采用动力学方程的一些差分格式(如广泛使用的中心差分法、线性加速度法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取的足够小,一般不存在收敛性问题。
显式算法不需要迭代,也不需要组集总刚,因此需要的内存也比隐式算法要少。
并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。
但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥, 因而往往采用减缩积分方法,容易激发沙漏模式,影响应力和应变的计算精度。
"静态显式法基于率形式的平衡方程组与Euler向前差分法,不需要迭代求解。
由于平衡方程式仅在率形式上得到满足,所以得出的结果会慢慢偏离正确值。
为了减少相关误差,必须每步使用很小的增量。
这个方法目前应用比较少。
总之显式方法不需要迭代是个利好,每步的时间基本是固定的,可以根据设置的波长和分析步长估算出计算总时间。
根据上面论述可以看出,一般多采用动态显式,一般有中心差分法、线加速度法等,也有人列出精细积分法为显式算法。
其中中心差分法的变种也非常多,有蛙跳式、向后差分式等。
由于其算法上当前步结果只跟上一步结果有关,因此只要对角化质量矩阵和阻尼矩阵即可不需要联立动力方程,可解耦到每个单元的差分公式,大大简化了计算过程。
显式算法与隐式算法得区别1、显式算法最大优点就是有较好得稳定性。
动态显式算法采用动力学方程得一些差分格式(如广泛使用得中心差分法、线性加速度法、Newmark法与wilson法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取得足够小,一般不存在收敛性问题。
因此需要得内存也比隐式算法要少。
并且数值计算过程可以很容易地进行并行计算,程序编制也相对简单。
但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥。
因而往往采用减缩积分方法,容易激发沙漏模式,影响应力与应变得计算精度。
静态显式法基于率形式得平衡方程组与Euler向前差分法,不需要迭代求解。
由于平衡方程式仅在率形式上得到满足,所以得出得结果会慢慢偏离正确值。
为了减少相关误差,必须每步使用很小得增量。
2、隐式算法隐式算法中,在每一增量步内都需要对静态平衡方程进行迭代求解,并且每次迭代都需要求解大型得线性方程组,这以过程需要占用相当数量得计算资源、磁盘空间与内存。
该算法中得增量步可以比较大,至少可以比显式算法大得多,但就是实际运算中上要受到迭代次数及非线性程度得限制,需要取一个合理值。
3、求解时间t使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小单元得尺寸成反比;应用隐式方法,经验表明对于许多问题得计算成本大致与自由度数目得平方成正比;因此如果网格就是相对均匀得,随着模型尺寸得增长,显式方法表明比隐式方法更加节省计算成本。
所谓显式与隐式,就是指求解方法得不同,即数学上得出发点不一样。
并不就是说显式只能求动力学问题,隐式只能求静力学问题,只就是求解策略不通。
显式求解就是对时间进行差分,不存在迭代与收敛问题,最小时间步取决于最小单元得尺寸。
过多与过小得时间步往往导致求解时间非常漫长,但总能给出一个计算结果。
解题费用非常昂贵。
因此在建模划分网格时要非常注意。
隐式求解与时间无关,采用得就是牛顿迭代法(线性问题就直接求解线性代数方程组),因此存在一个迭代收敛问题,不收敛就得不到结果。
显式(explicit)和隐式(implicit)这两个词在有限元分析中大家可能经常看到,特别是涉及到动力学分析时。
但其实广义的说他们分别对应着两种不同的算法:显式算法(explicit method)和隐式算法(implicit method)。
所以不论在动力学或者静力学中都有涉及到。
显式算法:不直接求解切线刚度,不进行平衡迭代,计算速度快,时间步长只需要足够小,一般不存在收敛问题,需要的内存也小。
隐式算法:每一增量步都需要对静态方程进行平衡迭代,且每次迭代需要求解大量的线性方程组,这一特点使之占用大量的资源。
但该算法增量步可以很大,至少比显式算法大的多,实际计算中会受到迭代次数及非线性程度的影响
我们都知道有限元分析FEA在计算微分方程(differential equations)时,由于计算本身的局限,比如计算机储存的位数有限,以及方程本身的复杂性,计算机运用的是数值算法(numerical algorithm)来逼近真实解的。
有限元分析中数值算法的基础是欧拉法(Euler method),欧拉法又分为forward Euler method 和backward Euler method,这两种方法被简称为显式法(explicit method)和隐式法(implicit method)。
中心差分法:
(动力学分析)用有限差分代替位移对时间的求导,将运动方程中的速度与加速度用位移的某种组合来标示,这样就将常微分方程组的求解问题转化为代数方程组的求解问题,并假设在每个小的时间间隔内满足运动方程。
首先我们来看看这两种算法的区别。
显式算法(explicit method )(forward Euler method )
考虑常微分方程:
初始条件:
设为每一步的时间步长, 在Tn 时刻,
. (n=0,1,2,3...),在T(n+1)
时刻有:
所以在显式算法中,T(n+1)时刻的值由T(n)时刻决定,也就是说当前时刻的值由上一时刻
的值决定。
隐式算法(implicit method)(backward Euler method)
考虑同一个方程,在T(n+1)时刻有:
所以在隐示算法中,T(n+1)时刻的值不光由T(n)时刻决定,还由当前时刻T(n+1)决定。
也就是说当前时刻的值由上一时刻和当前时刻的值共同决定。
隐式算法往往需要求解二次方程。
我们来看看一个具体事例:
设常微分方程:
根据上面的方法,对于显示算法有:
得出:
对于隐式算法有:
导出二次方程:
求解得:
所以很明显,在隐式算法中,要求得K+1时刻的值,就需要求解二次方程的根。
关于收敛性
o显式算法不存在收敛性的问题(因为不进行收敛计算),从方程中可以看出来,每个时刻的值由上一时刻所确定,所以一步一步进行下去,当时间步取得较大时,就会偏离真实值。
显式算法的过程(蓝色为真实值)
o隐式算法是无条件收敛的,在隐式算法中,在求解二次方程的同时,会通过Newton–Raphson method算法对每一步进行迭代收敛,直至收敛到指定的偏差。
如下图所示:
o
隐式算法的过程(每个时间步长中,通过Newton–Raphson method算法不断进行收敛迭代,
直至接近真实值为止)
时间步长(time integration)的依赖性(时间变量只在动力学中涉及)
o显式算法要获得准确的结果,需要取很小的时间步长
o隐式算法对时间步长要求不高,由于是绝对收敛的,往往可以取较大的时间步长。
运用上面的方法,我们以方程为例,通过数值算法求得f(u)。
当把时间步长取为1时,显式(explicit)和隐式(implicit)的结果如下图所示:
可以看出,隐式算法是绝对收敛的,每一步都没有偏离真实值,而由于时间步长取得很长,所以显式算法的结果远远偏离了真实值。
当把时间步缩小到0.05时,显示算法的结果如下图所示:
可以看出,当把时间步取得很小时,显示算法可以很接近真实值。
上面主要讲了隐式和显式算法的差别,下面我们来看看这两种方法在动力学分析中的运用和差别。
动力学分析(Dynamics Analysis)
静力学(static)分析不考虑质量/阻尼和时间,而动力学分析需要考虑系统阻尼和时间的变化。
首先大家要知道有限元分析FEA的输出是什么,虽然我们可以从仿真后处理中得到很多的结果,如应力,应变,位移等等,但本质上,所有的物理量都是通过先计算出节点处的位移,然后导出应变,再通过应变根据材料力学的理论导出其它物理量的,这一点大家要记住。
在有限元分析中,动力学分析的基本方程是由如下方程导出和决定的:
[M]{a} + [C]{v} + [K]{x} = {F}
其中[M]是质量矩阵,[C]为阻尼矩阵,[K]为刚度矩阵,a为加速度,v为速度,x为位移,{F}表示外力。
如果我们把方程写为导数的形式,则有:
所以这里的加速度,速度和位移是彼此关联的,这很有用。
这个方程大家可能不陌生,在前面讲到模态分析时提到过这个方程,当时说的模态分析是不需要考虑质量和阻尼的,所以方程也较简单,只考虑刚度。
刚度的导出大家可能不怎么熟悉,刚度在有限元分析中占有很重要的地位。
隐式动力学(explicit dynamic)
在动力学分析中,隐式分析直接计算位移x,而要求得位移x,就需要对刚度矩阵K进行求逆(inversion),而计算机在进行矩阵求逆时,需要耗费大量时间和计算机内存。
可能有人会问为什么需要对刚度矩阵K求逆呢,学过线形代数的都知道,要求位移x,那么我们需要对方程做如下变动:
而,所以有:
所以对刚度矩阵K求逆是必须的。
显式动力学(explicit dynamic)
在动力学分析中,显式分析先计算加速度a,再通过积分算法分别导出速度v和位移x。
比如一旦在时刻n求得了加速度,速度会在n+1/2时刻计算出,然后位移在n+1时刻求出(相当于一个时间步长),然后通过位移导出应变(strain),在通过应变导出应力(stress)。
可能有人会问,和隐式动力学类似,要求得加速度a,不是一样要对质量矩阵M求逆吗,是的,但这里M的导出远远比刚度矩阵简单很多,而且M可以简化为对角矩阵,所以对M不需要直接求逆,通过简单的矩阵乘法就可以得出逆矩阵。
计算的效率
在动力学分析中,显式法和隐式法在计算时间上各有优缺点
o显示动力学由于是间接求得位移x的,和前面类似,要取得足够的精度,需要取很短的时间步长,所以需要进行很多步计算,但每一步计算需要的时间很短
o隐式动力学由于是直接求得位移x,所以不存在收敛性问题,但由于动力学分析往往涉及到非线性(几何非线性,材料非线性等),可能每一步都要进行刚度的求逆,非常耗时,但时间步长相对显示算法可以取得很大。
适用范围
o虽然在计算效率上各有优势,但总的来说,在动力学分析中,主要还是采用显式算法,因为在动力学分析中,如频率响应分析,响应谱分析等等,往往时间很短,要获得较好的结果,需要取很短的时间步长来捕捉瞬时的响应,这时候显示动力学就很有用,而且在计算时间上也具有较大优势。
o隐式算法主要还是用于时间周期较长的非线性分析(Nonlinear analysis),属于静力学分析的范畴,当然也包括动力学分析里面特殊的准静力分析(quasi-static)。
静力学分析中是不会用到显式算法的,动力学分析中主要采用显式算法(特别是响应时间很短的问题),当然也可以采用隐式算法,但需要选择较为合适的时间步长,当时间步长取得合适时,抛开计算时间,两种算法的结果是相差不大的,同一个问题大家可以两种方法都试一试,但总的来说,动力学分析大多数问题还是采用显示算法的。
显式算法的例子:
物体以高速(比如2000m/s)落在一个平板上,交互时间为0.2秒时
飞机着陆时的瞬时响应隐式算法的例子:
钣金成型过程的非线性分析。