有限元理论基础及Abaqus内部实现方式研究系列9: 编写线性UMAT Step By Step
(原创,转载请注明出处)
==概述==
本系列文章研究成熟的有限元理论基础及在商用有限元软件的实现方式。有限元的理论发展了几十年已经相当成熟,商用有限元软件同样也是采用这些成熟的有限元理论,只是在实际应用过程中,商用CAE软件在传统的理论基础上会做相应的修正以解决工程中遇到的不同问题,且各家软件的修正方法都不一样,每个主流商用软件手册中都会注明各个单元的理论采用了哪种理论公式,但都只是提一下用什么方法修正,很多没有具体的实现公式。商用软件对外就是一个黑盒子,除了开发人员,使用人员只能在黑盒子外猜测内部实现方式。
一方面我们查阅各个主流商用软件的理论手册并通过进行大量的资料查阅猜测内部修正方法,另一方面我们自己编程实现结构有限元求解器,通过自研求解器和商软的结果比较来验证我们的猜测,如同管中窥豹一般来研究的修正方法,从而猜测商用有限元软件的内部计算方法。我们关注CAE中的结构有限元,所以主要选择了商用结构有限元软件中文档相对较完备的Abaqus来研究内部实现方式,同时对某些问题也会涉及其它的Nastran/Ansys等商软。为了理解方便有很多问题在数学上其实并不严谨,同时由于水平有限可能有许多的理论错误,欢迎交流讨论,也期待有更多的合作机会。
iSolver介绍:
http://www.jishulink.com/college/video/c12884
==第9篇:编写线性UMAT Step By Step==
线性材料,即应力应变始终成正比关系的材料,常用于结构的线性静力分析,是各种常用分析的基础。而线性UMAT就是实现线性材料算法的接口,它的主要功能是计算单元的应力应变关系矩阵和单元应力,如下图所示。
Abaqus规定了UMAT的输入输出,下表就是一些关键变量的符号说明。
变量类别 |
变量名称 |
变量说明 |
需要更新的变量 |
STRESS |
输入为当前增量步开始之前的应力向量,在当前增量步内需要更新 |
DDSDDE |
Jacobian矩阵,即应力应变关系矩阵 | |
STATEV |
存储求解过程中的状态变量,用来传递状态变量,增量步结束时更新 | |
传入变量 |
STRAIN |
当前增量步开始之前的总应变向量 |
DSTRAIN |
当前增量步内的应变增量 | |
TIME |
当前分析步的时间步和总时间步 | |
DTIME |
增量步大小 | |
NDI |
直接应力分量维数 | |
NSHR |
剪切应力分量维数 | |
NTENS |
应力或应变分量的维数,等于NDI+NSHR | |
NSTATV |
状态变量维数 | |
PROPS |
自定义材料常数 | |
NPROPS |
自定义材料常数的个数 | |
NPT |
积分点序号 | |
KSTEP |
当前分析步序号 | |
KINC |
当前增量步序号 |
==演示视频==
Abaqus用户子程序UMat详解与开发工具:章节4
https://www.jishulink.com/college/video/c13034?chapter=4
==总结==
本文首先简单介绍了线性UMAT的接口功能和关键接口变量的含义,并通过简单立方体静力分析的算例详细说明了基于Matlab线性UMAT的开发步骤,最后采用同一个算例对Abaqus自带材料和用户编写的线性UMAT两者分析结果进行对比,从而证明基于Matlab的线性UMAT的正确性。
详细研究方法,见附件:
有限元理论基础及Abaqus内部实现方式研究系列9:编写线性UMAT Step By Step.pdf
以往的系列文章:
第一篇:S4壳单元刚度矩阵研究。介绍Abaqus的S4刚度矩阵在普通厚壳理论上的修正。
http://www.jishulink.com/content/post/338859
第二篇:S4壳单元质量矩阵研究。介绍Abaqus的S4和Nastran的Quad4单元的质量矩阵。
http://www.jishulink.com/content/post/343905
第三篇:S4壳单元的剪切自锁和沙漏控制。介绍Abaqus的S4单元如何来消除剪切自锁以及S4R如何来抑制沙漏的。
http://www.jishulink.com/content/post/350865
第四篇:非线性问题的求解。介绍Abaqus在非线性分析中采用的数值计算的求解方法。
http://www.jishulink.com/content/post/360565
第五篇:单元正确性验证。介绍有限元单元正确性的验证方法,通过多个实例比较自研结构求解器程序iSolver与Abaqus的分析结果,从而说明整个正确性验证的过程和iSolver结果的正确性。
https://www.jishulink.com/content/post/373743
第六篇:General梁单元的刚度矩阵。介绍梁单元的基础理论和Abaqus中General梁单元的刚度矩阵的修正方式,采用这些修正方式可以得到和Abaqus梁单元完全一致的刚度矩阵。
https://www.jishulink.com/content/post/403932
第七篇:C3D8六面体单元的刚度矩阵。介绍六面体单元的基础理论和Abaqus中C3D8R六面体单元的刚度矩阵的修正方式,采用这些修正方式可以得到和Abaqus六面体单元完全一致的刚度矩阵。
https://www.jishulink.com/content/post/430177
第八篇:UMAT用户子程序开发步骤。介绍基于Fortran和Matlab两种方式的Abaqus的UMAT的开发步骤,对比发现开发步骤基本相同,同时采用Matlab更加高效和灵活。
查看更多评论 >