本系列文章研究成熟的有限元理论基础及在商用有限元软件的实现方式,通过
1) 基础理论
2) 商软操作
3) 自编程序
三者结合的方式将复杂繁琐的结构有限元理论通过简单直观的方式展现出来,同时深层次的学习有限元理论和商业软件的内部实现原理。
有限元的理论发展了几十年已经相当成熟,商用有限元软件同样也是采用这些成熟的有限元理论,只是在实际应用过程中,商用CAE软件在传统的理论基础上会做相应的修正以解决工程中遇到的不同问题,且各家软件的修正方法都不一样,每个主流商用软件手册中都会注明各个单元的理论采用了哪种理论公式,但都只是提一下用什么方法修正,很多没有具体的实现公式。商用软件对外就是一个黑盒子,除了开发人员,使用人员只能在黑盒子外猜测内部实现方式。
一方面我们查阅各个主流商用软件的理论手册并通过进行大量的资料查阅猜测内部修正方法,另一方面我们自己编程实现结构有限元求解器,通过自研求解器和商软的结果比较来验证我们的猜测,如同管中窥豹一般来研究的修正方法,从而猜测商用有限元软件的内部计算方法。我们关注CAE中的结构有限元,所以主要选择了商用结构有限元软件中文档相对较完备的Abaqus来研究内部实现方式,同时对某些问题也会涉及其它的Nastran/Ansys等商软。为了理解方便有很多问题在数学上其实并不严谨,同时由于水平有限可能有许多的理论错误,欢迎交流讨论,也期待有更多的合作机会。
==几何非线性的刚度矩阵求解==
几何非线性在界面上是很容易设置的,但商软内部的处理相当复杂,我们从最基本的刚度矩阵的求解出发,看看在几何非线性设置后,刚度矩阵具体是怎么实现的。本文首先介绍几何非线性下的刚度矩阵的理论推导和计算机求解方法,说明理想的求解方式的困难点和猜测Abaqus内部的解决方法。最后利用一个简单的算例通过对比iSolver和Abaqus的结果,部分验证我们对Abaqus几何非线性的刚度矩阵的实现方式的猜测。
在前面17章:几何非线性的物理含义中,我们提到如果是非线性系统,应变能W随t的变化就是个非线性过程。每个时刻点可以求出一个斜率,这个斜率最终会形成当前时刻点的刚度矩阵。
求导后得到的刚度K:
也就是刚度矩阵将分为两块:
(1) 上式的前面一部分称为材料刚度阵,依然是以前的BDB形式,只不过B换成了当前时刻的应变位移矩阵
(2) 后面新增项一般称为几何刚度阵,在Abaqus中称为初始应力矩阵(initial stress stiffness)。
理论上受力曲线是一条光滑曲线,计算机没法求解曲线上每个时刻点的结果,只能求解部分有限间隔点的结果。非线性问题不是一条直线,所以需要多次迭代才能实现。
非线性问题求解有多种方法主要分为以下几类:增量法、迭代法、增量迭代法和弧长法。
在增量迭代法,此时时刻t和t+Δt分别表示为当前增量步的开始和结束时间。此时W求导表示为增量的形式:
上面的应力应变理论上将都应该取当前增量步的结束时间的结果。先将应力增量转换为应变和本构关系,得到:
解决上述困难点的基本原则:对一个非线性问题来说,在增量步中的斜率K即使计算不精确,只要不是偏差太大,依然收敛,而且满足精度范围。K只影响迭代的次数,不影响结果的精度。关于这个原则,具体的解释和算例验证可以看我们下面的视频:
https://www.jishulink.com/college/video/c13034
当然这个K的近似也不能偏差太大,要不然迭代次数太多或者根本无法收敛。本着这个基本原则,两个困难点的解决方法分别如下:
当然,我们不知道Abaqus的内部计算方式,但可以通过两个外部接口可以猜测Abaqus的内部实现方式。
1)困难点1:应变增量与增量步结束时刻的位移增量的关系,Abaqus可以通过单元函数实现,内部单元函数接口和Abaqus的子程序UEL的接口是一致的,如下表示:
其中,Abaqus的UEL的U和dU表示的是当前增量步最后时刻的全量和增量的缘故。刚度矩阵只与增量步的量有关,迭代步的量只是对增量值的修正,不直接反应到刚度矩阵中,固UEL输入参数没有迭代相关的任何量。Abaqus无论是内部单元还是外部单元都是通过输入增量步最后时刻的位移全量和增量来求应变增量。具体的UEL说明可参看下方视频:
https://www.jishulink.com/college/video/c14948 深入浅出有限元:基础理论->Abaqus操作->matlab编程
2)困难点2:应力增量的求法通过材料函数实现,内部材料函数接口和Abaqus的另一个UMAT接口是一致的,UMAT接口如下:
其中的上述四个关键参数中,输入的STRESS是增量步开始时刻的应力全量,STRAN和DSTRAN分别是增量步开始时刻和结束时刻的应变全量和应变增量,需要通过这三个量来求出结束时刻的应力增量,累加到STRESS上,从而输出到程序中,而求解的过程猜测无论是Abaqus内部材料还是UMAT都采用了开始时刻的材料本构关系。譬如下方为塑性材料的UMAT的应力增量求解的matlab代码。
从UEL和UMAT两个接口只能猜测Abaqus内部单元几何非线性的刚度矩阵的实现方式,为了证明我们的猜想,我们创建了一个几何非线性的悬臂梁的简单算例,采用iSolver和Abaqus分别计算,而iSolver的两个困难点按我们前面所述实现,最终的位移结果如下:
两者结果相差0.08%,基本一致,从而部分验证了本文对Abaqus几何非线性下刚度矩阵实现方式的猜测,不能说完全验证,毕竟几何非线性除了上面提到的两个困难点,想要和商软完全一致,涉及的问题很多,但至少在如果上面两个困难点的解决方法和Abaqus不一致,那么得到的结果也不会一致。该算例的视频解说及iSolver操作演示如下:
http://www.jishulink.com/college/video/c12884
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删