AbaqusUSDFLD使用教程.docx
- 文档编号:6981537
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:32
- 大小:76.19KB
AbaqusUSDFLD使用教程.docx
《AbaqusUSDFLD使用教程.docx》由会员分享,可在线阅读,更多相关《AbaqusUSDFLD使用教程.docx(32页珍藏版)》请在冰豆网上搜索。
AbaqusUSDFLD使用教程
user-subroutines-l4-usdfld课件
引言
·通常使用用户子程序USDFLD,当需要对复杂材料行为建模与用户不想要使用UMAT子程序时
——在ABAQUS/Standard中的大多数材料属性可以被定为场变量的函数
——子程序USDFLD允许在单元的每个积分点定义
——子程序可以访问计算结果数据,因此,材料属性可以是计算结果数据的函数
·子程序USDFLD只能使用在具有*Material选项的材料属性的单元(详见p.L4.18页上GETVRM所支持的单元)
Abaqus的使用
·在模型中,与DLOAD和FILM子程序相比,包括USDFLD在内的子程序需要付出更多的努力
·通常用户必须定义材料属性的依赖性,例如弹性模量或屈服应力,作为场变量的函数
——这可以通过表格输入或额外用户子程序来完成
·使用子程序USDFLD来在积分点上定义的值
——在材料定义中包括了∗USERDEFINEDFIELD选项,这表明对于使用材料定义的这些单元来说,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-dependentvariables,SDVs)
·假如你绕过USDFLD子程序(可能因为在给定步中材料属性不会改变),积分点将使用
的差值
——通常,这些差值
是分配给节点的最初值——假如没有明确给定最初值,在Abaqus会默认为0
——当定义材料属性时使用差值,很可能会造成不正确的结果。
确保你知道Abaqus在干什么。
·可以使用输出变量FV分别在*ELPRINT、*ELFILE与*ELEMENTOUTPUT选项上将单元积分点上
的值输出到.dat文件、.file文件与.odb文件
——ABAQUS/Viewer能够绘制FV#的轮廓图
访问积分点上的计算数据
·ABAQUS/Standard允许定义
为积分点上计算数据的函数,如应力、应变
·这些提供的计算数据值是从当前增量的开始
·子程序USDFLD必须能够使用ABAQUS实用程序GETVRM来访问材料积分点数据
显式方法vs.隐式方法
·既然USDFLD子程序只有在增量步开始访问材料积分点值,以这种方式介绍的解决方案是显式的
——在给定增量下材料属性不受此增量内结果的影响
——因此,结果的精度依赖于时间增量大小
——因此,用户能通过变量PNEWDT来控制USDFLD子程序中的时间增量
·对于大多数非线性材料行为(如,塑性)
ABAQUS/Standard在当前增量步结束时将使用隐式积分方法来计算材料属性
——这种隐式积分方法使得ABAQUS/Standard可以使用任何时间增量,然而依然是有条件的
使用解相关的状态变量(Solution-DependentStateVariables,SDVs)
·如果
有任何历史依赖性,在USDFLD中必须使用SDVs
——ABAQUS/Standard不会在USDFLD中存储
的值
·将在USDFLD中更新的SDVs传递到在积分点处被调用的其他用户子程序,例如列在p.L4.5中的变量(DefiningField-Variable-DependentMaterialProperties)
·用*DEPVAR选项来指定状态变量的数目
用户子程序GETVRM
子程序GETVRM提供给USDFLD用来访问分析过程中存储在数据库中的计算数据
GETVRM子程序界面
CALLGETVRM(‘VAR’,ARRAY,JARRAY,FLGRAY,JRCD,
1JMAC,JMATYP,MATLAYO,LACCFLA)
提供给GETVRM的变量
·提供给GETVRM的变量是输出变量关键,VAR,对于想要的计算结果数据,与JMAC,JAMTYP,MATLAYO,LACCFLA(在这些笔记中没有进一步讨论这些变量)
·这些可用的输出变量列在了输出列表中,ABAQUS/StandardUser’sManual,Section4.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,andARRAY(4)=S12.
——不管分析的维度,对于主值请求、最小值(第一)与最大值(第三)、,总要返回三个数值,
GETVRM所支持的单元
·既然GETVRM是关于积分点数值,对于不需要*MATERIAL定义的大部分单元类型是不适用的。
·因此,不支持以下单元类型:
DASHPOTx
SPRINGx
JOINTC
JOINTxD
DRAGxD
ITSxxx
MASS
ROTARYI
allacousticelements所有声学单元
allcontactelements所有的接触单元
allgasketelements
allhydrostaticfluidelements所有流体静力学单元
USAelementsUSA单元
USDFLD子程序界面
用户子程序USDFLD界面是
需定义的变量
·数组FIELD(NFIELD)包含当前积分点处的场变量
——传递当前增量步结束时从节点差值的数值,用*INITISLCONDITION选项与*FIELD选项来指定
——使用更新的
来计算作为场变量函数的积分点数值。
传递更新的
进其他用户子程序(CREEP,HETVAL,UEXPAN,UHARD,UHYPEL,UMAT,UMATHT,andUTRS)
可能被定义的变量
·在USDFLD中能定义包含解相关状态变量的数组STATEV(NSTATV)
——传递这些,作为增量步开始时的值
——在所有的情况下子程序中能够更新STATEV,更新后的值被传递到其他用户子程序中(CREEP,HETVAL,UEXPAN,UHARD,UHYPEL,UMAT,UMATHT,andUTRS)
——与积分点相联系的状态变量数目用*DEPVAR来定义
·给出了新建议时间增量与使用的时间增量(DTIME,如下)间的比值PNEWDT
——该变量允许用户提供输入到ABAQUS自动时间增量算法。
变量信息
·场变量(NFIELD)的数目存在在这点上
·在材料方向的全局坐标系统中方向余弦与当前积分点(DIRECT)相联系
——DIRECT(#,1)定义第一积分点方向
·方向余弦(T)
·模型中特征单元长度(CELENT)
·与*MATERIAL选项相联系的名字(CNAME)
·与单元相联系*ORIENTATION的名字(ORNAME)
·正应力分量的数目(NDI)、剪应力分量的数目(NSHR)
·分析步(KSTEP)与增量步数目(KINC),其中子程序被调用
·当前增量结束时的分析步时间值(TIME
(1)),总时间值(TIME
(2)
·当前时间增量(DTIME)
·单元数目(NOEL)与积分点数目(NPT)
·在适合时,层(LAYER)与界面点数目(KSPT)
·在积分点处坐标(COORD)
·必须传到GETVRM实用子程序的变量(JMAC,JMATYP,MATLAYO,LACCFLA)
USDFLD与自动时间增量
·ABAQUS/Standard在分析中使用自动时间增量算法来控制时间增量大小
——当不可能收敛或结果不够准确时,此算法允许ABAQUS/Standard减少时间增量大小;当很容易收敛时,允许增加时间增量
·像USDFLD这样子程序能够使算法不正常工作
——因此,这些算法使用变量PNEWDT给增量算法提供信息
·在每次调用USDFLD前,将PNEWDT设定一个大值
·假如PNEWDT重新定义为小于1.0的数,ABAQUS将放弃时间增量,并用一个较小时间增量来再次试探
——提供给自动时间算法的新建议时间增量是
PNEWDT∗DTIME,
其中:
所使用的PNEWDT是所有调用用户子程序中的最小值,用户子程序对于此次迭代允许重新定义PNEWDT
·假如对于此次迭代与增量收敛的所有调用用户子程序PNEWDT是一个给定的大于1.0的值,ABAQUS可能会增加时间增量
——提供给自动时间算法的新建议时间增量是
PNEWDT∗DTIME,
——其中:
所使用的PNEWDT是此次迭代中所有调用用户子程序中的最小值
·假如维持时间增量大小,设定PNEWDT=1.0
·假如对于分析程序没有选择自动时间增量,那将忽略大于1.0的PNEWDT的值,小于1.0的PNEWDT的值将会造成任务停止
实例:
层状复合板失效
·ABAQUSExampleProblemsManual,Section1.1.14详细描述了此实例
·此实例对中间带有孔洞的层状复合板发生的损伤进行建模,它将承受面内压缩
——此板包含石墨环氧复合材料,每层内纤维方向是-45/45
·此问题中使用了四分之一对称有限元模型(如图4-1)
——使用了两层CSP4单元,而不是壳单元——板厚足够大,面外的位移可以忽略
材料模型
·Chang与Lessard详细描述了每层的材料行为
Chang,F-K.,andL.B.Lessard,“DamageToleranceofLaminatedCompositesContaininganOpenHoleandSubjectedtoCompressiveLoadings:
PartI—Analysis,”JournalofCompositeMaterials,vol.25,pp.2–43,1991.
·最初的弹性特性是:
长度方向模量
宽度方向模量
剪切模量
泊松比
·材料计算剪切上的损伤,导致了非线性应力应变关系,形式为
其中:
为最初的剪切模量,非线性用因子
来表示
·为了考虑非线性,非线性应力应变关系(等式4.1)需以不同形式来表示
在每个增量结束时的应力应该是应变的线性函数
·最明显的方式是对非线性项线性化,则
·对等式4.2进行转换,则
这就提供了一种定义等效剪切模量的算法
——然而,这种算法不是非常合适,因为在大应变水平下它是不稳定的,这通过稳定分析很容易证明(详见例子手册)
·为了获得一个更加稳定的算法,我们把非线性应力应变法则写成
其中:
是一个未知系数
·对等式4.4表达式的稳定分析,优化的应力应变算法是:
以损伤参数d的形式进行表达,即
·将此关系实施到用户子程序USDFLD,直接将损伤参数值分配到用于定义弹性属性的第三场变量(FV3)
·对复合材料,使用下列强度性能:
横向拉伸强度
剪切强度
基体压缩强度
纤维屈曲强度
·将强度参数集合到多轴加载的失效准则中去。
在分析模型中考虑了三种不同失效模型:
——在模型中没有考虑纤维屈曲失效,因为主要失效模型是纤维-基体剪切
基体拉伸开裂
非线性剪切行为下基体拉伸开裂的失效指标是:
当此模型中复合材料失效,横向刚度与泊松比将变成0
基体压缩开裂
这种失效指标形式与拉伸开裂模型相同。
在USDFLD中使用同样失效指标(场变量),因为两个模型不会在同一个点同时发生
纤维-基体剪切失效
从本质上失效准则与其他两种准则有相同形式:
这种失效机制可能与其他两种准则同时发生,因此,在USDFLD中使用了不同的失效指标
·使用用户子程序USDFLD来计算活跃的失效指标值
用于表征基体拉伸开裂/基体压缩失效指标的值
存储为SDV
(1)
——当指标超过了1.0时,
设定为1.0
用于表征纤维——基体剪切失效指标的值
存储为SDV
(2)
——当指标超过了1.0时,
设定为1.0
·使用子程序USDFLD来计算在非线性应力应变关系中损伤参数d
——d值存储为SDV(3)与
·表4-1显示了依赖于的材料属性
部分输入数据
用户子程序
结果
备注
·并不是将失效指标值直接分配给
,相反,它们被存储为解相关的状态变量
——即使失效指标值超过了1.0,相应的的用户定义场变量设定为1.0
——在失效指标值超过了1.0后,即使应力可能显著减少,相应的
依然为1.0,这就确保了材料损伤后不会愈合
·应用USDFLD的材料模型确保,失效发生后,在失效方向上的应力立即变为0,这对应于没有能量吸收的脆性失效
·这种假设是非常不现实的:
在现实中,失效发生后随着应变的增加应力承载能力逐渐退化
——因此,使用这个模型并不能很好捕捉到失效开始后复合材料的行为
·此外,应力承载能力瞬间消失会使得失效后分析结果强烈依赖于有限单元网格的细化与所使用的有限单元网格
·在本例子中,模型中唯一显著非线性是复合材料的失效。
因此,使用固定的时间增量非常有效
——然而,分析结果对时间增量大小高度敏感。
此模型中使用的时间增量显示,
接近最大允许使用值(见图4-4与图4-5)
·如果在分析中呈现了另外的非线性,很有可能需要使用自动时间增量算法
——在这些分析类型中,在子程序USDFLD必须使用便利PNEWDT以控制时间增量大小
·
子程序手册1.1.49USDFLD:
Usersubroutinetoredefinefieldvariablesatamaterialpoint.
Product:
Abaqus/Standard
参考文献
•Section2.1.6,在Abaqus/Standard分析中获得积分点信息(ObtainingmaterialpointinformationinanAbaqus/Standardanalysis)
•Abaqus用户分析手册中Section21.1.2,积分点数据定义(Materialdatadefinition)
•用户定义场(*USERDEFINEDFIELD)
•Abaqus例子手册中Section1.1.14,层状复合板的损伤与失效(Damageandfailureofalaminatedcompositeplate)
•Abaqus验证手册中Section4.1.24,USDFLD
概述
用户子程序USDFLD:
•允许你在积分点定义场变量作为事件或列在输出变量标识表中积分点变量的函数(Abaqus用户分析手册Section4.2.1,Abaqus/Standardoutputvariableidentifiers),除了用户定义的输出变量UVARM与UVARMn
•使用它来引进解相关材料属性,既然能够轻易定义这些属性为场变量的函数
•对于积分点包含用户定义场变量的单元来说,在其所有积分点上都能够调用子程序
•必须调用实用程序GETVRM来访问积分点数据
•能够使用并更新场变量
•能够与用户子程序UFIELD一起使用来规定预定义场变量
明确的解依赖性
既然子程序只能在增量开始时访问积分点数据,以这种方式介绍的解依赖是明确的:
在增量步中获得的结果不会影响给定增量下的材料性能。
因此,结果的精度依赖于时间增量步的大小。
因而,你可以通过变量PNEWDT来控制子程序中时间增量。
定义场变量
在调用用户子程序USDFLD之前,通过定义在节点上值差值方式来计算积分点上场变量的值。
在用户子程序中场变量的任何改变局限于积分点:
节点场变量保持最初状态、预定义场变量或在用户子程序USDFLD中的值。
定义在子程序中场变量的值经常用来计算依赖于场变量的材料属性值,将它传递到能在物质点上调用的其他用户子程序中去,例如:
•CREEP
•HETVAL
•UEXPAN
•UHARD
•UHYPEL
•UMAT
•UMATHT
•UTRS
使用单元积分点输出变量FV来获得在材料点处用户定义场变量的输出(详见,Abaqus用户手册Section4.2.1,Abaqus/Standardoutputvariableidentifiers)
访问材料点数据
在增量开始(或一个线性摄动分析步的基本状态中)通过实用子程序GETVRM来访问材料点数据(详见Section2.1.6,ObtainingmaterialpointinformationinanAbaqus/Standardanalysis)。
通过以合适输出变量关键来调用GETVRM来获得材料点数值。
以数组来恢复材料点数值,ARRAY,JARRAY,andFLGRAY,分别代表浮点、整数与特征数。
你并不能获得在增量开始时未定义的一些材料点值,例如:
ER。
状态变量
既然在USDFLD中重新定义的场变量局限在当前增量步(将场变量恢复到每个增量开始时从节点差值得到的值),必须介绍通过使用这个子程序来更新材料属性的历史依赖性。
在USDFLD中能够更新状态变量,然后被传到能够在这个材料点调用的其他用户子程序中去,例如上面列举的子程序。
你可以指定这些状态变量的数目,在本章末尾的例子中有说明(详见,用户分析手册Section18.1.1,“Allocatingspace”in“Usersubroutines:
overview,”)。
用户子程序界面
定义的变量
FIELD(NFIELD)
一个数组包含在当前材料点的场变量。
用当前增量结束时从节点的差值来传递这些场变量,通过最初条件定义、预定义场变量定义,或用户子程序UFIELD。
使用与温度差值相同的差值方法:
对于线性单元使用平均值;对于二次单元使用近似线性变量(可以参考:
AbaqusAnalysisUser’sManual,Section28.1.1“Solid(continuum)elements”)。
使用更新数值来计算材料属性值,其材料属性依赖于场变量并被传递到在材料点调用的其他用户子程序(CREEP,HETVAL,UEXPAN,UHARD,UHYPEL,UMAT,UMATHT,andUTRS)。
能够更新的变量
STATEV(NSTATV)
一个数组包含解相关变量。
这些都是在增量开始时以数值传入的。
在所有情况下,在子程序中能够更新STATEV,然后更新后的数值被传递到能够在材料点调用的其他用户子程序中去(CREEP,HETVAL,UEXPAN,UHARD,UHYPEL,UMAT,UMATHT,andUTRS)。
定义了与材料点相关的状态变量的数目,详见Abaqus用户分析手册Section18.1.1Usersubroutines:
overview。
PNEWDT
PNEWDT指的是建议新的时间增量与所使用时间增量间的比例(DTIME,如下)。
此变量能够允许你在Abaqus/Standard中对自动时间增量提供输入(假如选择了自动时间增量的话)。
在每次调用USDFLD之前,将PNEWDT设定为一个大数值
如果PNEWDT被重新定义为小于1.0的数,Abaqus/Standard必须舍弃时间增量,用一个更小时间增量再次尝试。
提供给自动时间积分算法的建议新的时间增量是PNEWDT×DTIME,其中PNEWDT是允许迭代中重新定义PNEWDT的所有调用用户子程序中最小值。
如果PNEWDT是调用用户子程序中一个给定大于1.0的值,Abaqus/Standard可能会增加时间增量。
提供给自动时间积分算法的建议新的时间增量是PNEWDT×DTIME,其中PNEWDT是允许迭代中重新定义PNEWDT的所有调用用户子程序中最小值。
如果在分析程序中没有选择自动时间增量,将忽略大于1.0的PNEWDT,小于1.0的PNEWDT会造成任务停止。
传递信息的变量
DIRECT(3,3)
包含物质点关于全局方向的方向余弦的数组。
DIRECT(1,1),DIRECT(2,1),DIRECT(3,1)给出了第一材料方向上的(1,2,3)分量;DIRECT(1,2),DIRECT(2,2),DIRECT(3,2)给出了第二材料方向,等等。
对于壳单元与膜单元来说,前两个方向是在单元面内,第三个方向是法向。
对于梁单元来说,这些都是不可用的。
T(3,3)
包含相对于单元基本方向的材料方向分量的方向余弦的数组。
它定义了材料方向(DIRECT)关于单元基本方向的方向。
对于连续单元来说,T与DIRECT是完全一致的。
对于壳单元与膜单元,
,
,
,
,
,其余分量为0,其中
为法向矢量逆时针旋转角度。
如果没有使用方形,那么
是单位矩阵。
方向并不适用于梁单元。
CELENT
特征单元长度。
对于一阶单元来说,是沿单元一条线的长度;对于二阶单元来说,是同样典型长度的一半。
对于梁与桁架,是沿单元轴的特征长度。
对于膜与壳单元,它是参考面的特征长度。
对于轴对称单元,它只是(r,z)平面内的特征长度。
TIME
(1):
在当前增量步开始时的分析步时间值
TIME
(2):
在当前增量步开始时总的时间值
DTIME:
时间增量
CMNAME:
用户指定的材料名称,左对齐
ORNAME:
用户指定的局部方向名称,左对齐
NFIELD:
定义在材料点的场变量的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AbaqusUSDFLD 使用 教程