FEA的核心思想-仿真时间步-隐式算法显示算法

有限元核心思想

很多人对有限元的理解并不是特别深刻。有限元只是求解偏微分方程的一种数值方法而已。所以理解有限元你必须要反思你学过的数值方法,比如数值分析的时候你是如何近似一个函数的,如何近似积分,近似导数?我们会发现数值方法的核心是 空间内的一组基来近似 空间内的复杂形式。简单说就是利用 一组简单的表达式来近似任何复杂的形式。拉格朗日插值不就是采用非常简单的基函数来形成的。数值积分我们都是划归到了对多项式的积分上。

理解了数值方法的核心再理解有限元就简单多了,有限元求解的对象是偏微分方程。考虑偏微分方程,最终的解的定义域是在一个区域内的,这个区域内的解析表达式是非常困难的。这时候理所当然大家就会考虑怎么求解这个问题呢?肯定是在这个区域内找一些简单函数去近似拟合,比如利用多项式 利用周期函数等等。。。。但是在这样求解的过程中又会发现,我们在整个区域内近似是非常困难的,对于很多问题还是不是那么容易求解,试想一个形状非常不规则的区域???这时候,科学家就会萌生了能否我把整个区域的问题划分成一系列的简单区域,简单区域上问题求解是非常简单的,最终的结果把所有区域结合起来不就可以了吗? 这时候科学家又会联系到,结构力学中的杆件结构,因为在杆件结构中已经有了这样的方法。所以经过一系列的推导就有了这样分片求解问题的方法 即有限元方法。
有限元并没有什么复杂的,也不要被什么最小势能,变分原理吓住,因为这些都是在逐步完善有限元方法过程中理论的完善,最小势能,变分原理是为了建立有限元的弱形式,或许你会问 弱形式是什么呢? 举个例子,如果我们分析的微分方程式二阶的,也就是方程中含有关于自变量的二阶导数,那么我们建立的近似函数是不是也要具有二阶呢?答案是肯定的,事实证明,阶段太高是非常不利于问题求解的,那么就会思考可不可有一种等效的形式,但是阶次又是比较低的?当然有了,这就是弱形式,试想如果可以用一次函数去近似是不是非常简单呢?不得不说这是有限元方法得以这么盛行的非常重要的理论基础。




时间步理解

做非线性分析的都知道时间步的问题,这里来谈谈一些注意和基本概念。简单地说,在解非线性问题的时候,我们把整个求解过程分成小段。对于结构问题,这种分段等同于把加载过程分成多个步,每步结构加载变化一点,直到完成整个加载过程。如果是动力问题,那么这个加载步可以理解为真正的时间区间(但也不一定,因为可以有子步)。如果是静力问题,这个加载步就是很多求解器所谓的伪时间步。

容易混淆的概念是,划分时间步这个计算步骤在原则上是和牛顿迭代无关的。因为牛顿迭代是在每个时间步内进行的子循环。直到迭代满足收敛条件,计算才向下一步进行。这个过程圆环套圆环的过程,导致了非线性求解的一系列特点和麻烦。

第一,收敛标准的问题。这个本质上是牛顿法需要探讨的,但是因为时间步必须解决这个难点,所以在这里需要说说。在固体力学里面,收敛标准一般是三种,简称为UPW,分别指位移(U),加载(P),和做功(W)。每个量的收敛条件,本质都是衡量所在迭代步的相对误差。理论上讲,必须三个量都收敛才能保证计算结果稳定和精确,但是如果根据问题可以放松,那么常用的量至少要保证U和P收敛。

第二,时间步的划分问题。加载步多了求解时间长,少了不准确或者根本不收敛(因为牛顿法本质上只能求局部不动点),所以时间步的划分是个艺术。这个问题没有标准答案,只能说视具体情况而定。如果你的问题不太难,求解器自带的自适应算法应该能够自动调整步长。静力自适应算法的本质,是计算到目前为止的时间步的收敛模式。简单地说,如果求解器发现现在这步收敛得快,那么下一步步长就可以放宽点,如果收敛得慢或者搞不定,那么就得缩小步长。基本上是个猜猜猜的过程。

第三,动力问题时间步的问题。和静力问题不同,动力问题有“真正”的时间,需要进行时间积分,所以时间步的划分是根据积分算法来决定的。而积分算法应该根据具体问题来选择。常用的算法,固体和结构分隐式和显式:隐式基本上都在Newmark和HHT上玩系数,目的是保证精确性但又滤掉高频的信号,而显式基本上就是保证时间步尽量大但又不大到影响稳定。流体基本上都是在Runge-Kutta和各种向后积分法中求稳定。所以当积分法定了,时间步的选择的大方向也就定了。普通用户在这个时候可以和精力情形一样,寄希望于自适应算法。动力问题的时间步自适应基本上分两类。一类是调整步长以适应特定的结构振动频率,一类是调整步长以适应特定的积分误差。

第四,多尺度的问题。下面这三类常见问题,对于时间步的决定都是让人头疼的,本质上都是因为有空间/时间多尺度的特点: 接触问题(固体),湍流问题(流体),激波问题(固体和流体)。工程上解决的方式,本质上都是给模型添加稳定性,即所谓的数值减振/衰减。




显示和隐式

显式、隐式算法,也称显式解法和隐式解法,是计算力学中常见的两个概念。

1、显式算法

基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算。显式算法,最大优点是有较好的稳定性。

动态显式算法采用动力学方程的一些差分格式,不用直接求解切线刚度,不需要平衡迭代,计算速度快,步长只要取的足够小,一般不存在收敛性问题。因此需要的内存也比隐式算法要少。但显式算法要求质量矩阵为对角矩阵,而且只有在单元级计算尽可能少时速度优势才能发挥,因而往往采用减缩积分方法,容易激发沙漏模式,影响应力和应变的计算精度。

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

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

2、隐式算法

隐式算法中,在每一增量步内都需要对静态平衡方程进行迭代求解,并且每次迭代都需要求解大型的线性方程组,这以过程需要占用相当数量的计算资源、磁盘空间和内存。该算法中的增量步可以比较大,至少可以比显式算法大得多,但实际运算中上要受到迭代次数及非线性程度的限制,需取一个合理值。

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

显示和隐式的应用范围

a)在求解动力学问题时,将方程在空间上采用有限元法(或其他方法)进行离散后,变为常微分方程组F=M(u)+C(u)+K(u)。求解这种方程的其中两种方法为,中心差分法和Newmark法。采用中心差分法解决动力学问题被称为显式算法,采用Newmark法解决动力学问题被称为隐式算法。

b)在求解动力学问题时,离散元法(也有其他方法)主要有两种思想:动态松弛法(向后时步迭代),静态松弛法(每一步要平衡)。动态松弛法是显式算法,静态松弛法是隐式算法。其中冲压成型就是动态松弛法的主要例子。

c)在求解静力学问题时,有时候将其看作动力学问题来处理而采用动态松弛法,这是显式算法。Flac就是主要例子。


显式算法

隐式算法

每步求解方法

矩阵乘法

线性方程组

时步稳定性

有条件

无条件

适用问题

动力中心差分法

动力动态松弛法

静力动态松弛法

动力Newmark

动力静态松弛法


01.png
登录后免费查看全文
立即登录
默认 最新
当前暂无评论,小编等你评论哦!
点赞 30 评论 收藏 6
关注