ABAQUS子程序技术文档-UEL

ABAQUS子程序技术文档

我们将有限元软件(以ABAQUS为例)分割来看,分为:前处理,单元部分,求解器。在这三个模块当中,每个主流商业软件手册中都会注明各个单元的理论采用了哪种理论公式,但是只是提一下用什么方法修正,很多没有介绍具体实现的公式。这也会让许多使用人员感觉在用黑盒子,对于分析问题的本质会造成很大的阻碍。下面我们主要讲解UEL用户子程序的使用方法。

UEL用户子程序开发步骤

用户子程序主要是用来实现特定的材料本构模型和单元算法的有效接口,便于商用软件和求解器之间的交互迭代。

编程语言主要采用Fortran,当然也可以修改子程序接口,使用Matlab或者C++等语言进行实现。

1. UEL的关键输入输出参数

|关键参数名称| 类型 |描述|
RHS输出 第一列是残余力向量;第二列是节点外部载荷增量|
AMATRX 输出 刚度/质量/阻尼矩阵,由LFLAGS决定
SVARS 输入/输出 状态相关变量,大小为NSVARS
ENERGY 输入/输出 单元能量
NDOFEL 输入 单元自由度数量
NRHS 输入 载荷向量个数RHS的列数,非线性算法一般为1
NSVARS 输入 单元状态变量的数量
PROPS 输入 用户定义的单元属性数据,浮点数组
NPROPS 输入 用户定义的单元属性数据的数量
COORDS 输入 单元节点的坐标
MCRD 输入 任意节点用户所需定义的最大坐标数的最大值
NNODE 输入 单元节点数
U, DU 输入 当前增量步单元节点的位移,位移增量
V 输入 相关变量的时间变化率
A 输入 相关变量的加速度
JTYPE 输入 定义单元类型的整型值
TIME 输入 当前分析步时间和时间总量
DTIME 输入 时间增量
KSTEP 输入 当前分析步的数
KINC 输入 当前增量步数
JELEM 输入 用户指派的单元号
PARAMS 输入 和求解过程相关的参数
NDLOAD 输入 作用在当前单元上的热力学力
JDLTYP 输入 用来定义单元分布载荷类型的整型数组
ADLMAG 输入 当前增量步结束时分布载荷相关数组
PREDEF 输入 预定义场变量数组
NPREDF 输入 预定义场变量的数目
LFLAGS 输入 当前求解步的标识数组
MLVARX 输入 当使用多个位移或右手边向量时的量纲参数
DDLMAG 输入 关于分布载荷大小的增量
MDLOAD 输入 单元上热力学力的总数量
PNEWDT 输入 建议的新时间增量与当前使用的时间增量之比
JPROPS 输入 单元中的整型属性值
NJPROP 输入 整型属性值的数量
PERIOD 输入 当前分析步的时间段

2. 基于Fortran的UEL开发步骤

  1. 定义xxx.inp文件
    文本编辑器推荐使用Sublime Text3
    在inp中定义必要的单元参数,网格信息,分析步,输出变量等信息
  2. 编写
    文本编辑器推荐使用微软推出的VS code
    子程序后缀为.for格式
  3. 编译
    采用ABAQUS6.14+Intel Fortran2013+Visual Studio2013的集成开发环境
    其余版本也可匹配集成
    在环境配置完成之后,打开ABAQUS command,输入命令Abaqus make Library=XXX.for,即开始编译,编译过程中的警告和错误都会打印在命令提示框内。(这一步为非必要步骤)
  4. 运行
    一种方式是通过command输入命令行,另一种方式则是GUI方式在创建job时进行选择。
  5. 调试(debug)
    采用在程序中加入特定程序段的方式

3. 小结
UEL开发需要打下坚实的力学基础,熟悉有限元分析过程,掌握一定的算法实现和编程能力。

你可能感兴趣的:(算法学习)