用户单元子程序UEL使用详解[ABAQUS]
(2015-11-05 22:34:50)用户单元子程序UEL使用详解[ABAQUS]
UEL
用户单元子程序
1.
2.
l
l
3.
4.
UEL
用户单元子程序
1.
2.
l
l
3.
4.
C
C
5.
5.1依赖于数组LFLAGS值的矩阵
RHS
该数组包含用户单元对总体系统方程右手边(right-hand-side)向量的贡献。对于多数非线性分析,NRHS=1,RHS包含残余向量。在修正的Risks静态分析时例外,此时NRHS=2,RHS第一列包含残余向量,第二列包含作用于单元上的外荷载的增量。
AMATRX
该数组包含了用户单元对雅克比刚度矩阵或其他的总体系统方程矩阵的贡献。何时为特殊的矩阵依赖于在数组LFLAGS中的项数。无论AMATRX是否是对称的,都需要定义数组AMATRX中的非零项。如果在定义用户单元时没有指定矩阵非对称,Abaqus/Standard将默认为对称阵,即 式中[A]子程序中定义的矩阵AMATRX。如果指定为非对称的,Abaqus/Standard将直接用AMATRX。
SVARS
该数组包含用户单元求解依赖状态变量值。这些变量个数用NSVARS表示。由用户定义这些变量的意义。
对一般非线性分析步,当前增量开始时该数组被传递给包含这些变量值的UEL子程序。在增量结束时,这些值应该被更新,除非程序在调用UEL子程序时没有要求更新。这依赖于LFLAGS数组中的项。对线性摄动分析步,在基本状态时,该数组被传递给包含这些变量值的UEL子程序。如果你希望输出这些工作量,包含摄动值的数组就应该返回。
当KINC等于零时,调用UEL用于零增量输出。在这种情况下,返回值将只用于输出用途,并且不再更新。
ENERGY
对一般非线性分析步,该数组包含用户单元的能量值。当调用UEL时数组中的值就是当前增量起始时的单元能量。当前增量结束时值应该被更新。对线性摄动分析步,在基本状态时将包含能量的数组传递给UEL。如果希望输出这些工作量,含有摄动值的量应该被返回。数组中的项目如下:
ENERGY(1) |
Kinetic energy. |
ENERGY(2) |
Elastic strain energy. |
ENERGY(3) |
Creep dissipation. |
ENERGY(4) |
Plastic dissipation. |
ENERGY(5) |
Viscous dissipation. |
ENERGY(6) |
“Artificial strain energy” associated with such effects as artificial stiffness introduced to control hourglassing or other singular modes in the element. |
ENERGY(7) |
Electrostatic energy. |
ENERGY(8) |
Incremental work done by loads applied within the user element. |
当KINC等于零时,调用UEL用于零增量输出。在这种情况下,返回值将只用于输出用途,并且不再更新。
5.2需要更新的变量:
PNEWDT
建议新的时间增量与当前被用时间增量(DTIME)的比值。该变量允许用户在Abaqus/Standard中为自动时间增量算法提供输入(选择自动时间增量时)。该值只对平衡迭代(正常时间增量,指明LFLAGS(3)=1)起作用。在严重不连续迭代中,该值将被忽略,该分析步中指定CONVERT SDI=YES。用法如下:
在每次调用UEL前,PNEWDT值被设为很大的值。
如果PNEWDT重定义的值小于1.0,那么Abaqus/Standard必须放弃时间增量,并且尝试用更小的时间增量再试一次。提供给自动时间整合算法的新的建议时间增量为PNEWDT*DTIME。此处PNEWDT是所有调用用户子程序(允许在这次迭代中重新定义PNEWDT)的最小值。
如果当前迭代用户子程序PNEWDT给定的值大于1.0,并且迭代中增量收敛,那么Abaqus/Standard可能会增加时间增量。提供给自动时间整合算法的新的建议时间增量为PNEWDT*DTIME。此处PNEWDT是所有调用用户子程序(允许在这次迭代中重新定义PNEWDT)的最小值。
如果在分析程序中没有选择自动时间增量,PNEWDT大于1.0将被忽略,PNEWDT小于1.0则将终止计算。
5.3传递信息的变量:
5.3.1数组:
PROPS
浮点数数组,包含用户单元NPROPS个待用实数型常量。NPROPS为用户指定的常量个数。
JPROPS
整型数组,包含用户单元NJPROP个待用整数型常量。NJPROP是用户指定的常量个数。
COORDS
包含单元结点原始坐标的数组。COORDS(K1,K2)表示单元结点K2的K1坐标值。
U,DU,V,A
包含当前增量结束时单元结点上基本求解变量当前估计值的数组(依赖于位移,旋转,温度等自变量)。值如下:
U(K1)
DU(K1,KRHS)
V(K1)
A(K1)
JDLTYP
用于为单元定义分布式荷载类型的整数数组。荷载类型Un通过JDLTYP中的整数n来识别;荷载类型UnNU通过JDLTYP中的负整数-n来识别。JDLTYP(K1,K2)表示在第K2荷载情形下第K1种分布式荷载。对于一般非线性分析步,K2通常为1.
ADLMAG
对于一般非线性分析步,ADLMAG(K1,1)表示对分布荷载类型Un在当前增量结束时第K1种分布荷载的合力。对于分布荷载类型UnNU,荷载大小在UEL中定义;因此,ADLMAG中相应项为零。对于线性摄动分析步,ADLMAG(K1,1)表示类型Un应用于基本状态的第K1种分布荷载的合力。基本状态荷载类型UnNU必须在UEL中处理。ADLMAG(K1,2),ADLMAG(K1,3)等目前没有使用。
DDLMAG
对于一般非线性分析步,DDLMAG表示单元上当前活跃的分布荷载类型为Un的分布荷载的大小值的增量。DDLMAG(K1,1)表示当前时间增量的荷载大小增量。在计算外部作业贡献时需要荷载大小增量。对于分布荷载类型为UnNU,荷载大小在UEL定义;因此,DDLMAG中相应项为零。对于线性摄动分析步,DDLMAG(K1,K2)表示对分布荷载类型Un,当前单元上活跃的分布荷载大小的摄动。K1单元上活跃的第K1种摄动荷载。K2通常为1.对于稳态动力分析例外。K2=1表示真实荷载,K2=2表示假想荷载。摄动荷载类型UnNU必须在UEL中处理。
PREDEF
包含预定义场变量值的数组,如在非耦合应力位移分析中单元结点上的温度。
数组第一个索引K1是1或2,(1表示在增量结束时场变量值,2表示场变量增量)。第二个索引K2表示变量:温度相当于索引1,预定义场变量相当于索引1和2.在温度没有定义的情形下,预定义场变量以索引1开始。第三个索引K3表示单元的局部结点号。
PREDEF(K1,1,K3)
PREDEF(K1,2,K3)
PREDEF(K1,3,K3)
…
PREDEF(K1,K2,K3)
PREDEF(1,K2,K3)
PREDEF(2,K2,K3)
PARAMS
包含与求解程序相关的参数的数组。数组中各项依赖于UEL调用时当前求解程序,通过数组LFLAGS中各项来识别(如下)。
对于隐式动力(LFLAGS(1)=11or12))PARAMS表示如下:
LFLAGS
包含描述当前求解程序和满足单元计算需求的标识的数组。Abaqus/Standard程序的详细需求在本章早期定义。
LFLAGS(1)
LFLAGS(2)=0
LFLAGS(2)=1
LFLAGS(3)=1
LFLAGS(3)=2
LFLAGS(3)=3
LFLAGS(3)=4
LFLAGS(3)=5
LFLAGS(3)=6
LFLAGS(3)=100
LFLAGS(4)=0
LFLAGS(4)=1
LFLAGS(5)=0
LFLAGS(5)=1
TIME(1)
当前子步时间
TIME(2)
当前全局时间
5.3.2标量参数
DTIME
PERIOD
NDOFEL
MLVARX
NRHS
NSVARS
NPROPS
NJPROP
MCRD
NNODE
JTYPE
KSTEP
KINC
JELEM
NDLOAD
MDLOAD
NPREDF
6. UEL使用公约
求解变量(位移,速度等)按结点或基本自由度顺序求解。第一个结点的自由度先,接下来第二个结点的自由度,…
一般非线性程序用法
略
线性摄动程序用法
略
结构和热传递用户单元
略