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的集成开发环境
其余版本也可匹配集成
vs编程软件
在环境配置完成之后,打开ABAQUS command,输⼊命令Abaqus make Library=XXX.for,即开始编译,编译过程中的警告和错误都会打印在命令提⽰框内。(这⼀步为⾮必要步骤)
4. 运⾏
⼀种⽅式是通过command输⼊命令⾏,另⼀种⽅式则是GUI⽅式在创建job时进⾏选择。
5. 调试(debug)
采⽤在程序中加⼊特定程序段的⽅式
3. ⼩结
UEL开发需要打下坚实的⼒学基础,熟悉有限元分析过程,掌握⼀定的算法实现和编程能⼒。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。