ABAQUS UEL

任何形式转载请联系作者。

用户子程序UEL:

将针对每个需要元素计算的每个具有通用用户定义元素类型的元素(即,未由线性刚度或质量矩阵直接读取或从结果文件数据中定义)调用; 和(或用户子程序UEL调用的子程序)必须执行元素的所有计算,以适合当前的分析。

User subroutine interface

      SUBROUTINE UEL(RHS,AMATRX,SVARS,ENERGY,NDOFEL,NRHS,NSVARS,
     1 PROPS,NPROPS,COORDS,MCRD,NNODE,U,DU,V,A,JTYPE,TIME,DTIME,
     2 KSTEP,KINC,JELEM,PARAMS,NDLOAD,JDLTYP,ADLMAG,PREDEF,NPREDF,
     3 LFLAGS,MLVARX,DDLMAG,MDLOAD,PNEWDT,JPROPS,NJPROP,PERIOD)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION RHS(MLVARX,*),AMATRX(NDOFEL,NDOFEL),PROPS(*),
     1 SVARS(*),ENERGY(8),COORDS(MCRD,NNODE),U(NDOFEL),
     2 DU(MLVARX,*),V(NDOFEL),A(NDOFEL),TIME(2),PARAMS(*),
     3 JDLTYP(MDLOAD,*),ADLMAG(MDLOAD,*),DDLMAG(MDLOAD,*),
     4 PREDEF(2,NPREDF,NNODE),LFLAGS(*),JPROPS(*)


      user coding to define RHS, AMATRX, SVARS, ENERGY, and PNEWDT


      RETURN
      END

RHS——包含该元素对整个方程组的右侧向量的贡献的数组。对于大多数非线性分析程序,NRHS = 1且RHS应包含残差矢量(外力减去内力)。例外是修改后的Riks静态程序(静态应力分析),其中NRHS = 2且RHS中的第一列应包含残差向量,第二列应包含元素上外部负载的增量。 RHS(K1,K2)是K2右侧矢量中元素的第K1自由度的入口。对于直接稳态分析,设置NRHS = 2来定义实部和虚部。对于基于模式的过程,NRHS等于模态叠加中使用的特征向量的数量。

AMATRX——包含此元素对整个方程组的雅可比行列式(刚度)或其他矩阵贡献的数组。 随时需要的特定矩阵取决于LFLAGS数组中的条目(请参见下文)。

即使矩阵是对称的,也应定义AMATRX中的所有非零值条目。 如果在定义用户元素时未指定矩阵是不对称的,则Abaqus / Standard将使用由以下定义的对称矩阵: ,在这个子程序中, 矩阵定义为AMATRX。 如果在定义用户单元时指定矩阵是不对称的,Abaqus / Standard将直接使用AMATRX。

SVARS——包含与此元素关联的依赖于解的状态变量值的数组。 这些变量的数量是NSVARS(见下文)。 您可以定义这些变量的含义。

对于一般非线性步骤,此数组在当前增量开始时传递到包含这些变量值的UEL。 除非UEL被调用的过程不需要这样的更新,否则它们应该更新为增量结尾的值。 这取决于LFLAGS数组中的条目(见下文)。 对于线性微扰步骤,这个数组被传递到包含基态中这些变量值的UEL。 如果您希望输出这些数量,则应该返回包含摄动值。

ENERGY——对于一般非线性步骤,ENERGY数组包含与单元相关的能量值。 当调用UEL时,此数组中的值是当前增量开始时的单元能量。 它们应该更新为当前增量结束时的值。 对于线性扰动步骤,阵列被传递到包含基态能量的UEL。 如果您希望输出这些数量,则应该返回包含摄动值。 数组中的条目如下所示:


ENERGY(1)动能。
ENERGY(2)弹性应变能。
ENERGY(3)蠕变耗散。
ENERGY(4)塑料耗散。
ENERGY(5)粘性耗散。
ENERGY(6)伪应变能量
ENERGY(7)静电能量。
ENERGY(8)Incremental work done by loads applied within the user element。

Variable that can be updated

PNEWDT——建议的新时间增量与当前正在使用的时间增量的比率(DTIME,见下文)。此变量允许您为Abaqus / Standard中的自动时间增量算法(如果选择自动时间增量)提供输入。它仅在具有正常时间增量的平衡迭代期间有用,如LFLAGS(3)= 1所示。在严重不连续迭代过程中(如接触变化),除非CONVERT SDI = YES被指定用于此步骤,否则将忽略PNEWDT。下面讨论PNEWDT的使用。

在每次调用UEL之前,PNEWDT设置为一个较大的值。

如果将PNEWDT重新定义为小于1.0,则Abaqus / Standard必须放弃时间增量,并以较小的时间增量再次尝试。提供给自动时间积分算法的建议新时间增量是PNEWDT×DTIME,其中所使用的PNEWDT是所有对用户子程序的调用的最小值,允许在此迭代中重新定义PNEWDT。

如果对于此次迭代的所有对用户子程序的调用,PNEWDT的值大于1.0,并且该迭代中的增量收敛,则Abaqus / Standard可能会增加时间增量。为自动时间积分算法提供的建议新时间增量是PNEWDT×DTIME,其中所使用的PNEWDT是此次迭代对用户子程序的所有调用的最小值。

如果未在分析过程中选择自动时间增量,则会忽略大于1.0的PNEWDT值,并且小于1.0的PNEWDT值将导致作业终止。

Variables passed in for information

数组

PROPS——包含为此单元定义的NPROPS实型属性值的浮点数组。 NPROPS是用户指定的实属性数量。

JPROPS——一个整数数组,包含为此元素定义的NJPROP整数属性值。 NJPROP是用户指定的整数属性值的数量。

COORDS——包含元素节点原始坐标的数组。 COORDS(K1,K2)是元素的第K2个节点的第K1坐标。

U,DU,V,A——包含当前增量结束时元素节点处的基本解变量(位移,旋转,温度,取决于自由度)的当前估计的阵列。 值如下:

U(K1)变量的总值。 如果这是线性扰动步骤,则它是基态的值。
DU(K1,KRHS)右侧KRHS是当前增量变量的增量值。 如果这是特征值提取步骤,则这是特征向量KRHS的特征向量幅度。 对于稳态动力学,KRHS表示扰动位移的实部,KRHS表示扰动位移的虚部。
V(K1)变量的时间变化率(速度,旋转速率)。 仅定义为隐式动力学(LFLAGS(1)11或12)。
A(K1)变量的加速度。 仅定义为隐式动力学(LFLAGS(1)11或12)。

JDLTYP

包含用于为元素定义分布式加载类型的整数的数组。 Un类型的负载由JDLTYP中的整数值n标识; UnNU类型的负载由JDLTYP中的负整数值-n标识。 JDLTYP(K1,K2)是第K2个负载情况下第K1个分布式负载的标识符。 对于一般非线性步骤,K2始终为1。

ADLMAG
对于一般非线性步骤,ADLMAG(K1,1)是Un类型的分布式负载在当前增量结束时的第K1th分布负载的总负载大小。 对于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。 必须在UEL内部处理UnNU类型的扰动负载。

PREDEF
一个数组,包含预定义字段变量的值,例如元素节点处的非耦合应力/位移分析中的温度(预定义字段)。

数组的第一个索引K1为1或2,其中1表示增量末尾的字段变量值,2表示字段变量的增量。第二个索引K2表示变量:温度对应于索引1,预定义的字段变量对应于索引2及以上。在未定义温度的情况下,预定义字段变量以索引1开头。第三个索引K3表示元素上的本地节点号。

PREDEF(K1,1,K3)温度。
PREDEF(K1,2,K3)第一个预定义的字段变量。
PREDEF(K1,3,K3)第二个预定义的字段变量。
等等。任何其他预定义的字段变量。
PREDEF(K1,K2,K3)元素的第K3个节点处的第K2个预定义字段变量的总值或增量值。
PREDEF(1,K2,K3)当前增量结束时变量的值。
PREDEF(2,K2,K3)与当前时间增量对应的增量值。

PARAMS
包含与解决方案过程关联的参数的数组。 此数组中的条目取决于调用UEL时当前使用的解决方案过程,如LFLAGS数组中的条目所示(请参见下文)。

对于隐式动力学(LFLAGS(1)= 11或12),PARAMS包含积分运算符值,如下所示:

PARAMS(1)α
PARAMS(2)β
PARAMS(3)γ

LFLAGS

包含定义当前解决方案过程和元素计算要求的标志的数组。本节前面定义了各种Abaqus / Standard程序的详细要求。

LFLAGS(1)定义过程类型。有关每个过程使用的密钥,请参阅结果文件输出格式。
LFLAGS(2)= 0 小位移分析。
LFLAGS(2)= 1 大位移分析(步骤中包含非线性几何效应;参见一般和扰动程序)。
LFLAGS(3)= 1 正常的隐式时间增量过程。用户子程序UEL必须定义RHS中的残差向量和AMATRX中的雅可比矩阵。
LFLAGS(3) = 2  仅定义当前刚度矩阵(AMATRX)。
LFLAGS(3) = 3 仅定义当前阻尼矩阵(AMATRX)。
LFLAGS(3) = 4 仅定义当前质量矩阵(AMATRX)。baqus / Standard始终在分析开始时请求初始质量矩阵。
LFLAGS(3) = 5 定义当前残差或载荷矢量。
...
 
原文地址:https://www.cnblogs.com/redfenglin/p/9254269.html