加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用户单元子程序UEL使用详解[ABAQUS]

(2015-11-05 22:34:50)

用户单元子程序UEL使用详解[ABAQUS]

 

UEL

用户单元子程序

1.        产品:Abaqus/Standard

2.        概述:

  在每次进行单元运算时,都需要为每个用户单元调用UEL子程序;

  UEL子程序必须为适用于当前分析的单元执行所有的运算。

3.        Wave kinematic data:

4.        子程序接口:

 

 

UEL

用户单元子程序

1.        产品:Abaqus/Standard

2.        概述:

  在每次进行单元运算时,都需要为每个用户单元调用UEL子程序;

  UEL子程序必须为适用于当前分析的单元执行所有的运算。

3.        Wave kinematic data:

4.        子程序接口:

      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

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)      KRHS时当前增量步的变量增加量。如果是特征值提取分析步,表示特征向量KRHS的特征向量大小。对于稳态动力,KRHS=1表示摄动位移的实部,KRHS=2表示摄动位移的虚部。

V(K1)    变量的时间变化率(速度,转速)。只能在隐式动力分析中定义(LFLAGS(1)=11or12)。

A(K1)    变量的加速度。只能在隐式动力分析中定义(LFLAGS(1)=11or12)。

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)    第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   通用隐式时间增量程序用户子程序UEL必须在RHS中定义残余向量,在AMATRX中定义雅克比矩阵

LFLAGS(3)=2    只定义当前刚度矩阵

LFLAGS(3)=3    只定义当前阻尼矩阵

LFLAGS(3)=4    只定义当前质量矩阵 ,Abaqus/Standard总是在分析开始时要求初始质量矩阵

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      荷载向量数。在大多数非线性问题中为1;在修正Risk静力程序中为2,在一些线性分析程序和子结构中大于1

NSVARS   用户定义的与单元相关的求解依赖状态变量个数

NPROPS   用户定义的与单元相关的实常数个数

NJPROP    用户定义的与单元相关的整数型常数个数

MCRD     用户定义的结点所需的最大坐标号和用户单元最大激活自由度,通常小于等于3.例如,如果指定最大坐标号为1和用户单元激活自由度为2,3和6,那么MCRD将为3.如果指定最大坐标号为2和用户单元激活自由度为11和12,那么MCRD将为2.

NNODE     单元上用户指定的结点个数。

JTYPE     定义单元类型的整数。在单元类型Un中指定整数值n。

KSTEP     当前子步号。

KINC     当前增量号。

JELEM     用户分配的单元号。

NDLOAD     当前单元上激活的分布荷载或流动的标识数

MDLOAD     定义在单元上的分布荷载和(或)流动总数

NPREDF     预定义场变量号,包括温度。Abaqus/Standard为用户单元每个场变量每个结点使用一个值。

6. UEL使用公约

求解变量(位移,速度等)按结点或基本自由度顺序求解。第一个结点的自由度先,接下来第二个结点的自由度,…

一般非线性程序用法

线性摄动程序用法

结构和热传递用户单元

展开全文

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有