Abaqus USDFLD使用教程 联系客服

发布时间 : 星期一 文章Abaqus USDFLD使用教程更新完毕开始阅读2ddaec5f5901020207409c92

·将此关系实施到用户子程序USDFLD,直接将损伤参数值分配到用于定义弹性属性的第三场变量(FV3) ·对复合材料,使用下列强度性能: 横向拉伸强度 剪切强度 基体压缩强度 纤维屈曲强度

·将强度参数集合到多轴加载的失效准则中去。在分析模型中考虑了三种不同失效模型: ——在模型中没有考虑纤维屈曲失效,因为主要失效模型是纤维-基体剪切

基体拉伸开裂

非线性剪切行为下基体拉伸开裂的失效指标是:

当此模型中复合材料失效,横向刚度与泊松比将变成0

基体压缩开裂

这种失效指标形式与拉伸开裂模型相同。在USDFLD中使用同样失效指标(场变量),因为两个模型不会在同一个点同时发生

纤维-基体剪切失效

从本质上失效准则与其他两种准则有相同形式:

这种失效机制可能与其他两种准则同时发生,因此,在USDFLD中使用了不同的失效指标 ·使用用户子程序USDFLD来计算活跃的失效指标值

用于表征基体拉伸开裂/基体压缩失效指标的值????存储为SDV(1) ——当指标超过了1.0时,f1设定为1.0

用于表征纤维——基体剪切失效指标的值??????存储为SDV(2) ——当指标超过了1.0时,f2设定为1.0

·使用子程序USDFLD来计算在非线性应力应变关系中损伤参数d ——d值存储为SDV(3)与f3 ·表4-1显示了依赖于的材料属性

部分输入数据

用户子程序 结果 备注

·并不是将失效指标值直接分配给????,相反,它们被存储为解相关的状态变量 ——即使失效指标值超过了1.0,相应的的用户定义场变量设定为1.0

——在失效指标值超过了1.0后,即使应力可能显著减少,相应的fi依然为1.0,这就确保了材料损伤后不会愈合

·应用USDFLD的材料模型确保,失效发生后,在失效方向上的应力立即变为0,这对应于没有能量吸收的脆性失效

·这种假设是非常不现实的:在现实中,失效发生后随着应变的增加应力承载能力逐渐退化 ——因此,使用这个模型并不能很好捕捉到失效开始后复合材料的行为

·此外,应力承载能力瞬间消失会使得失效后分析结果强烈依赖于有限单元网格的细化与所使用的有限单元网格

·在本例子中,模型中唯一显著非线性是复合材料的失效。因此,使用固定的时间增量非常有效 ——然而,分析结果对时间增量大小高度敏感。此模型中使用的时间增量显示,?t=0.05接近最大允许使用值(见图4-4与图4-5)

·如果在分析中呈现了另外的非线性,很有可能需要使用自动时间增量算法

——在这些分析类型中,在子程序USDFLD必须使用便利PNEWDT以控制时间增量大小 ·

子程序手册 1.1.49 USDFLD: User subroutine to redefine field variables at a material point.

Product: Abaqus/Standard 参考文献

? Section 2.1.6,在Abaqus/Standard分析中获得积分点信息(Obtaining material point information in an Abaqus/Standard analysis)

? Abaqus用户分析手册中Section 21.1.2,积分点数据定义(Material data definition) ? 用户定义场(* USER DEFINED FIELD) ? Abaqus例子手册中Section 1.1.14,层状复合板的损伤与失效(Damage and failure of a laminated composite plate) ? Abaqus验证手册中Section 4.1.24,USDFLD 概述

用户子程序USDFLD:

? 允许你在积分点定义场变量作为事件或列在输出变量标识表中积分点变量的函数(Abaqus用户分析手册Section 4.2.1,Abaqus/Standard output variable identifiers),除了用户定义的输出变量UVARM与UVARMn ? 使用它来引进解相关材料属性,既然能够轻易定义这些属性为场变量的函数

? 对于积分点包含用户定义场变量的单元来说,在其所有积分点上都能够调用子程序 ? 必须调用实用程序GETVRM来访问积分点数据 ? 能够使用并更新场变量

? 能够与用户子程序UFIELD一起使用来规定预定义场变量

明确的解依赖性

既然子程序只能在增量开始时访问积分点数据,以这种方式介绍的解依赖是明确的:在增量步中获得的结果不会影响给定增量下的材料性能。因此,结果的精度依赖于时间增量步的大小。因而,你可以通过变量PNEWDT来控制子程序中时间增量。

定义场变量

在调用用户子程序USDFLD之前,通过定义在节点上值差值方式来计算积分点上场变量的值。在用户子程序中场变量的任何改变局限于积分点:节点场变量保持最初状态、预定义场变量或在用户子程序USDFLD中的值。定义在子程序中场变量的值经常用来计算依赖于场变量的材料属性值,将它传递到能在物质点上调用的其他用户子程序中去,例如: ? CREEP ? HETVAL ? UEXPAN ? UHARD ? UHYPEL ? UMAT ? UMATHT ? UTRS

使用单元积分点输出变量FV来获得在材料点处用户定义场变量的输出(详见,Abaqus用户手册Section 4.2.1,Abaqus/Standard output variable identifiers)

访问材料点数据

在增量开始(或一个线性摄动分析步的基本状态中)通过实用子程序GETVRM来访问材料点数据(详见Section 2.1.6,Obtaining material point information in an Abaqus/Standard analysis)。通过以合适输出变量关键来调用GETVRM来获得材料点数值。以数组来恢复材料点数值,ARRAY, JARRAY ,and FLGRAY,分别代表浮点、整数与特征数。你并不能获得在增量开始时未定义的一些材料点值,例如:ER。 状态变量

既然在USDFLD中重新定义的场变量局限在当前增量步(将场变量恢复到每个增量开始时从节点差值得到的值),必须介绍通过使用这个子程序来更新材料属性的历史依赖性。

在USDFLD中能够更新状态变量,然后被传到能够在这个材料点调用的其他用户子程序中去,例如上面列举的子程序。你可以指定这些状态变量的数目,在本章末尾的例子中有说明(详见,用户分析手册Section 18.1.1,“Allocating space‖ in ―User subroutines: overview,‖)。

用户子程序界面

定义的变量

FIELD (NFIELD)

一个数组包含在当前材料点的场变量。用当前增量结束时从节点的差值来传递这些场变量,通过最初条件定义、预定义场变量定义,或用户子程序UFIELD。使用与温度差值相同的差值方法:对于线性单元使用平均值;对于二次单元使用近似线性变量(可以参考: Abaqus Analysis User‘s Manual,Section 28.1.1“Solid (continuum) elements‖)。使用更新数值来计算材料属性值,其材料属性依赖于场变量并被传递到在材料点调用的其他用户子程序(CREEP, HETVAL , UEXPAN , UHARD, UHYPEL , UMAT, UMATHT ,and UTRS)。

能够更新的变量

STATEV (NSTATV)

一个数组包含解相关变量。这些都是在增量开始时以数值传入的。在所有情况下,在子程序中能够更新STATEV,然后更新后的数值被传递到能够在材料点调用的其他用户子程序中去(CREEP, HETVAL , UEXPAN , UHARD, UHYPEL , UMAT, UMATHT ,and UTRS)。定义了与材料点相关的状态变量的数目,详见Abaqus用户分析手册Section