user-subroutines-l4-usdfld  课件
引言
·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMAT子程序
——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数
——子程序USDFLD允许在单元的每个积分点定义
——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数
·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p. L4.18页上GETVRM所支持的单元)
Abaqus的使用
·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力
·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数
——这可以通过表格输入或额外用户子程序来完成
·使用子程序USDFLD来在积分点上定义的值
——在材料定义中包括了USER DEFINED FIELD 选项,这表明对于使用材料定义的这些单元来说,USDFLD子程序可以使用
——可以被定义为在积分点上有的计算结果数据的函数,例如应力、应变
定义场变量相关的材料属性
这里有两种方法,能够定义场变量相关的材料属性
·对于Abaqus内置的材料模型,使用表格定义方式
·使用其他用户子程序来定义材料属性为的函数,例如蠕变CREEP
表格定义
·使用在材料选项上DEPENDENCIES选项来指定对于给定材料选项存在有多少不同场变量
——弹性模量(E)是场变量#1()的函数。当增加,E减少。可以代表材料的损伤。
——热膨胀系数是与场变量#2()的函数
——值的改变都会影响弹性模量(E)与热膨胀系数
——Abaqus在表格输入的数据点间将使用线性插值。当超过了指定范围将使用最后一个数据点,它不会对数据外推
——对于每一种材料属性,的范围不必须是一样的
在用户子程序内定义场变量
·将定义在USDFLD中的值传递到下列用户子程序内:
CREEP、HETVAL、UEXPAN、UHARD、UHYPEL、UMAT、UMATHT、UTRS、UINTER
·定义在这些子程序内的材料属性可以是的函数
定义场变量
·Abaqus通常认为场变量是节点数据
·当Abaqus开始计算单元应力与刚度时(例如,一个单元循环),它将对节点数据插值到单元的积分点
·当使用子程序USDFLD时,在计算单元的材料属性前,定义在子程序USDFLD中的这些数值将取代了插值
·Abaqus并不存储USDFLD定义的这些数值
——如果你需要访问先前的值,你必须在USDFLD中把他们存储为相关解变量(solution-dependent variables,SDVs)
·假如你绕过USDFLD子程序(可能因为在给定步中材料属性不会改变),积分点将使用的差值
——通常,这些差值是分配给节点的最初值——假如没有明确给定最初值,在Abaqus会默认为0
——当定义材料属性时使用差值,很可能会造成不正确的结果。确保你知道Abaqus在干什么。
· 可以使用输出变量FV分别在*EL PRINT、*EL FILE与*ELEMENT OUTPUT选项上将单元积分点上的值输出到.dat文件、.file文件与.odb文件
——ABAQUS/Viewer能够绘制FV#的轮廓图
访问积分点上的计算数据
·ABAQUS/Standard允许定义为积分点上计算数据的函数,如应力、应变
·这些提供的计算数据值是从当前增量的开始
·子程序USDFLD必须能够使用ABAQUS实用程序GETVRM来访问材料积分点数据
显式方法vs. 隐式方法
·既然USDFLD子程序只有在增量步开始访问材料积分点值,以这种方式介绍的解决方案是显式的
——在给定增量下材料属性不受此增量内结果的影响
——因此,结果的精度依赖于时间增量大小
——因此,用户能通过变量PNEWDT来控制USDFLD子程序中的时间增量
·对于大多数非线性材料行为(如,塑性)
ABAQUS/Standard在当前增量步结束时将使用隐式积分方法来计算材料属性
——这种隐式积分方法使得ABAQUS/Standard可以使用任何时间增量,然而依然是有条件的
使用解相关的状态变量(Solution-Dependent State Variables,SDVs)
·如果有任何历史依赖性,在USDFLD中必须使用SDVs
——ABAQUS/Standard不会在USDFLD中存储的值
·将在USDFLD中更新的SDVs传递到在积分点处被调用的其他用户子程序,例如列在p. L4.5中的变量(Defining Field-Variable-Dependent Material Properties)
·用*DEPVAR选项来指定状态变量的数目
用户子程序GETVRM
子程序GETVRM提供给USDFLD用来访问分析过程中存储在数据库中的计算数据
GETVRM子程序界面
CALL GETVRM(‘VAR’, ARRAY, JARRAY, FLGRAY, JRCD,
1  JMAC, JMATYP, MATLAYO, LACCFLA)
提供给GETVRM的变量
·提供给GETVRM的变量是输出变量关键,VAR,对于想要的计算结果数据,与JMAC,JAMTYP,MATLAYO,LACCFLA(在这些笔记中没有进一步讨论这些变量)
·这些可用的输出变量列在了输出列表中,ABAQUS/Standard User’s Manual,Section 4.2.1
——对于单元积分点处的结果文件输出,这些变量必须是可用的,例如,对于应力的米塞斯应力S
GETVRM返回的变量
·包含输出变量的独立浮点部分的数组(ARRAY)
·包含输出变量的独立整数值部分的数组(JARRAY)
·一个特征数组(FLGRAY)包含对应于各个部分的标志
——标志将包含YES,NO,或N/A(不适用)
·返回代码(JRCD),JRCD=0表明GETVRM没有遇到错误,然而值1表明这里有一个输出请求错误或者所有的输出变量部分都是0
·如下写出了请求变量的组分
——单个指标分量(与没有分量的请求)返回在位置1,2,3,etc
——对于对称张量按顺序11,22,33,12,13,23返回双指标分量(张量),对于非对称张量接着是21,31,32,例如变形梯度
—因此,对于平面应力单元,返回应力为ARRAY(1) = S11, ARRAY(2) = S22, ARRAY(3) = 0.0, and ARRAY(4) = S12.
——不管分析的维度,对于主值请求、最小值(第一)与最大值(第三)、,总要返回三个数值,
GETVRM所支持的单元
·既然GETVRM是关于积分点数值,对于不需要*MATERIAL定义的大部分单元类型是不适用的。
调用子程序的例子
·因此,不支持以下单元类型:
DASHPOTx
SPRING x
JOINTC
JOINTxD
DRAGxD
ITS xxx
MASS
ROTARYI
all acoustic elements  所有声学单元
all contact elements  所有的接触单元
all gasket elements
all hydrostatic fluid elements  所有流体静力学单元
USA elements  USA单元
USDFLD子程序界面
用户子程序USDFLD界面是
需定义的变量
·数组FIELD(NFIELD)包含当前积分点处的场变量
——传递当前增量步结束时从节点差值的数值,用*INITISL CONDITION选项与*FIELD选项来指定
——使用更新的来计算作为场变量函数的积分点数值。传递更新的进其他用户子程序(CREEP, HETVAL, UEXPAN, UHARD, UHYPEL, UMAT, UMATHT, and UTRS)
可能被定义的变量
·在USDFLD中能定义包含解相关状态变量的数组STATEV(NSTATV)
——传递这些,作为增量步开始时的值
——在所有的情况下子程序中能够更新STATEV,更新后的值被传递到其他用户子程序中(CREEP, HETVAL, UEXPAN, UHARD, UHYPEL, UMAT, UMATHT, and UTRS)

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