UMAT子程序在复合材料强度分析中的应用
- 格式:doc
- 大小:489.00 KB
- 文档页数:27
1、为何需要使用用户材料子程序(User-Defined Material, UMAT )?很简单,当ABAQUS 没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
UMAT 子程序具有强大的功能,使用UMAT 子程序:(1)可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQU S 中的任何单元。
(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian )矩阵,即应力增量对应变增量的变化率。
(4) 可以和用户子程序“USDFLD ”联合使用,通过“USDFLD ”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
2、需要哪些基础知识?先看一下ABAQUS 手册(ABAQUS Analysis User's Manual )里的一段话:Warning: The use of this option generally requires considerable expertise(一定的专业知识). The user is cautioned that the implementation (实现) of any realistic constitutive (基本) model requires extensive (广泛的) development and testing. Initial testing on a single eleme nt model with prescribed traction loading (指定拉伸载荷) is strongly recommended. 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。
Hashin准则是一种常用的材料失效准则,用于模拟复合材料的损伤和失效。
在ABAQUS中,你可以使用UMAT(用户自定义材料行为)子程序来实现Hashin准则。
以下是一个简单的UMAT子程序示例,用于实现Hashin准则:```c#include "umat.h"#define N 10void UMAT(const int *nIntPoints, const int *nExtPoints, const double *dS, const double *dSP, const double *dStrain, const double*dStress, double *dStrainInc, double *dStressInc, double *dStress历史, int *nFail){double S[N], S0[N];int i;double E1 = dStrain[0];double E2 = dStrain[1];double E3 = dStrain[2];double sigma1 = dStress[0];double sigma2 = dStress[1];double sigma3 = dStress[2];double sigma历史1 = dStress历史[0];double sigma历史2 = dStress历史[1];double sigma历史3 = dStress历史[2]; double m1 = 0.0;double m2 = 0.0;double m3 = 0.0;double n1 = 0.0;double n2 = 0.0;double n3 = 0.0;for (i=0; i<N; i++) {S[i] = sqrt(dS[i]);S0[i] = sqrt(dSP[i]);m1 += S[i] / sigma1;m2 += S[i] / sigma2;m3 += S[i] / sigma3;n1 += S0[i] / sigma历史1;n2 += S0[i] / sigma历史2;n3 += S0[i] / sigma历史3;}if (m1 < 1.0e-6) m1 = 1.0e-6;if (m2 < 1.0e-6) m2 = 1.0e-6;if (m3 < 1.0e-6) m3 = 1.0e-6;if (n1 < 1.0e-6) n1 = 1.0e-6;if (n2 < 1.0e-6) n2 = 1.0e-6;if (n3 < 1.0e-6) n3 = 1.0e-6;double sigmaT = sqrt(m1*m2*m3);double sigmaLT = sqrt(n1*n2*n3);if (sigmaT < sigmaLT) {*nFail = 1; // 损伤发生,将nFail设为1表示材料失效return; // 退出UMAT函数,不再进行应力和应变增量计算} else {*nFail = 0; // 没有损伤发生,将nFail设为0表示材料仍然有效return; // 退出UMAT函数,继续进行应力和应变增量计算}}```以上代码实现了Hashin准则的简单形式,即当总剪切应力小于长纤维方向的纤维应力时,复合材料发生损伤。
目录摘要 (I)ABSTRACT (II)1.绪论 (1)1.1.课题的研究背景 (1)1.2.本文的研究内容和方法 (2)2.基于ABAQUS软件的二次开发 (3)2.1.ABAQUS介绍 (3)2.2.ABAQUS各模块简介 (3)2.3.ABAQUS的二次开发平台 (5)2.4.ABAQUS的二次开发语言 (6)3.用户材料子程序UMAT (8)3.1.UMAT开发环境设置 (8)3.2.UMAT注意事项 (9)3.3.UMAT接口的原理 (10)3.4.UMAT的使用方法 (12)4.材料非线性问题 (14)4.1.材料的弹塑性本构关系 (14)4.2.非线性有限元算法理论 (17)4.3.增量理论常刚度法公式推导 (20)4.4.增量理论切线刚度法公式推导 (21)5.UMAT程序设计和编码 (25)5.1.本构关系描述 (25)5.2.常刚度法程序设计 (27)5.3.常刚度法程序编码 (29)5.4.切线刚度法程序设计 (32)5.5.切线刚度法程序编码 (36)5.6.程序的调试 (39)6.程序验证 (40)16.1.问题描述 (41)6.2.本构关系 (42)6.3.ABAQUS自带材料模型计算 (42)6.4.常刚度法的UMAT验证 (44)6.5.切线刚度法的UMAT验证 (46)6.6.两种算法的比较分析 (48)7.结论与展望 (52)7.1.结论 (52)7.2.展望 (52)致谢 (54)参考文献 (55)附1:ABAQUS自带弹塑性材料验证的INP文件 (56)附2:用于算法验证的INP文件 (62)摘要ABAQUS软件功能强大,特别是能够模拟复杂的非线性问题,它包括了多种材料本构关系及失效准则模型,并具有良好的开放性,提供了若干个用户子程序接口,允许用户以代码的形式来扩展主程序的功能。
本文主要研究了ABAQUS用户子程序UMAT的开发方法,采用FORTRAN语言编制了各向同性硬化材料模型的接口程序,研究该类材料的弹塑性本构关系极其实现方法。
abaqus复合材料larc05失效准则umat子程序开发的相关案例教程开发一个用于模拟复合材料的UMAT子程序是一个复杂的过程,涉及到对材料行为的深入理解以及高级编程技巧。
下面是一个基本的案例教程,演示如何为ABAQUS开发一个用于模拟LARC05失效准则的UMAT子程序。
1. 准备工作•安装ABAQUS: 确保你已经安装了ABAQUS软件。
•编程环境: 准备一个适合C++的开发环境,如Visual Studio或Eclipse。
•材料数据: 收集或计算所需的材料属性,如弹性模量、泊松比、失效准则参数等。
2. 创建UMAT子程序框架•打开ABAQUS: 启动ABAQUS软件。
•创建新的UMAT: 在ABAQUS的插件菜单中选择“用户材料”>“用户材料子程序”>“创建”。
选择C++作为编程语言。
•编写框架: 创建一个新的C++文件,并添加必要的头文件和命名空间。
定义UMAT所需的输入和输出变量。
3. 实现LARC05失效准则•理解LARC05准则: LARC05是一种复合材料失效准则,涉及到最大应力、最大应变等参数。
确保你理解这些参数如何影响材料行为。
•编写代码: 根据LARC05准则,使用C++编写UMAT子程序代码。
这可能涉及到计算应力、应变,以及应用失效准则。
4. 测试和验证UMAT•创建测试案例: 在ABAQUS中创建一个简单的模型,用于测试UMAT子程序。
•运行模拟: 运行模拟,并检查结果是否符合预期。
如果结果不符合预期,回到代码中调试问题。
•验证: 使用更多的测试案例验证UMAT的准确性。
确保UMAT在各种工况下都能正确预测材料的失效行为。
5. 优化和调整•优化性能: 如果UMAT运行速度较慢,考虑优化代码以提高性能。
•调整参数: 根据模拟结果调整UMAT中的参数,以获得更准确的结果。
6. 文档和分享•编写文档: 为UMAT子程序编写详细的文档,包括输入和输出变量、材料参数、测试案例等。
复合材料固化仿真所用到四个子程序详解冯希金目录1. 子程序FILM详解 (3)1.1 子程序FILM的功能描述 (3)1.2 程序界面 (3)1.3 需要定义的变量 (3)1.4 从例程中传递进来的信息 (4)1.5 FILM子程序与INP文件的关系 (5)2. 用户子程序HETVAL (7)2.1子程序HETVAL的功能描述 (7)2.2 程序界面 (7)2.3 需要定义的变量 (7)2.4 可以被更新的变量 (7)2.5 传递到子程序中的信息 (8)2.6子程序HETVAL与INP文件的关系 (8)3. 子程序disp (9)3.1 子程序DISP的功能描述 (9)3.2 程序界面 (9)3.3 需要定义的变量 (9)3.4 传递到子程序中的信息 (9)1. 子程序FILM详解1.1 子程序FILM的功能描述该子程序在热交换分析中用来定义非均匀的对流换热系数和环境温度(sink temperature)。
它的应用在于:(1)可以用来定义基于节点的、基于单元的或者是基于面的非均匀对流换热系数。
(2)可以用来定义环境温度,这个环境温度可以是空间位置、时间、温度、节点号、单元号、积分点号等的函数。
(3)在允许热交换的过程中被调用,这些热交换可以是节点间的、或者是面的积分点间的,它们可以是基于节点、单元或面的非均匀对流条件。
(4)忽略了振幅(5)不论是基于单元的还是基于面的对流换热,都采用一阶热传导单元的节点作为面积分点。
1.2 程序界面1.3 需要定义的变量H(1) ——节点上的对流换热系数,单位是:JT–1L–2–1. H(1) 作为基于节点、基于单元或者是基于面的对流换热条件的数值被传递到例程中参与计算。
如果没有定义值,那么H1(1)被初始化为0,这个系数不能作为输出变量用于输出目的。
H(2) ——,在该积分点上,对流换热系数相对于表面温度的变化率。
其单位是JT–1L–2–2. 通过定义这个值,可以提高非线性分析中的收敛速度,尤其是当对流换热系数是表面温度的函数时更是如此。
1、为何需要使用用户材料子程序(User-Defined Material, UMAT )?很简单,当ABAQUS 没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
UMAT 子程序具有强大的功能,使用UMAT 子程序:(1)可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQU S 中的任何单元。
(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian )矩阵,即应力增量对应变增量的变化率。
(4) 可以和用户子程序“USDFLD ”联合使用,通过“USDFLD ”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
2、需要哪些基础知识?先看一下ABAQUS 手册(ABAQUS Analysis User's Manual )里的一段话:Warning: The use of this option generally requires considerable expertise(一定的专业知识). The user is cautioned that the implementation (实现) of any realistic constitutive (基本) model requires extensive (广泛的) development and testing. Initial testing on a single eleme nt model with prescribed traction loading (指定拉伸载荷) is strongly recommended. 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。
A n a n d粘塑性模型的U M A T子程序及验证------------------------------------------作者xxxx------------------------------------------日期xxxxAnand粘塑性模型的UMAT子程序及验证高军1。
引言电子封装及其组件在工艺或者服役过程中,由于功率耗散和环境温度的周期变化, 会因为电子印制电路板、芯片和焊点的热膨胀失配,在合金钎焊焊点处产生交变的应力应变,导致焊点的电、热或者机械失效。
焊点的热循环失效(可靠性)是电子封装及组装技术中的关键问题之一, 受到了人们的普遍关注。
焊点体积细小, 应力应变很复杂。
为了准确模拟焊点在服役条件下的应力应变响应,对可靠性进行评估,必须建立合理有效的描述钎焊合金材料力学响应的本构方程.SnPb基焊锡钎料广泛应用于电子封装领域,作为电的连接和机械的连接。
对于钎料的力学性能的试验和本构模型,许多学者都进行了研究。
通常SnPb基焊锡钎料具有很强的温度和加载速率的相关性,应该采用统一型粘塑性本构模型描述SnPb钎料的变形行为。
在统一型粘塑性本构模型中,应用最广泛的是Anand模型。
具有形式简单,模型参数少等特点,在电子焊点的寿命预测中广泛应用.它采用与位错密度、固溶体强化以及晶粒尺寸效应等相关的单一内部变量S描述材料内部状态对塑性流动的宏观阻抗,可以反映粘塑性材料与应变速度、温度相关的变形行为,以及应变率的历史效应、应变硬化和动态回复等特征。
目前,很多大型商用有限元软件,如AN SYS 、MARC 等都把An and 本构模型嵌入到通用材料模型库中供用户使用,但是,ABA QUS 的通用材料模型库中缺少Anan d模型。
因此,本报告目的在于通过ABAQU S的用户子程序接口UMA T,选择合适的算法,将An and 粘塑性本构模型引入ABAQUS 中,以便后续的研究。
2.Anand 本构方程统一型粘塑性An and 本构模型有两个基本特征:(1) 在应力空间没有明确的屈服面, 故在变形过程中不需要加载/卸载准则, 塑性变形在所有非零应力条件下产生。
UMAT子程序在复合材料强度分析中的应用本例使用UMAT用户子程序进行复合材料单层板的应力分析和渐进损伤压缩强度分析,介绍UMA T用户子程序编写方法及在Abaqus/CAE中的设置。
本章使用最大应变强度理论作为复合材料单层板的失效准则,相应的Fortran程序简单易读,便于理解UAMT子程序的工作原理。
知识要点:强度分析UMAT用户子程序最大应变理论刚度折减讲师:孔祥宏版本:Abq 6.14 难度:关键词:强度分析,UMAT&.1 本章内容简介本章通过两个实例介绍UMAT用户子程序在复合材料单层板的应力分析和强度分析中的应用。
在第一个实例中,对一个简单的复合材料单层板进行应力分析,UMAT子程序主要计算应力,不进行强度分析,本例用于验证UMA T子程序的计算精度。
在第二个实例中,对复合材料单层板进行渐进损伤强度分析,UMAT子程序用于应力计算、强度分析和刚度折减。
本章所用复合材料为T700/BA9916,材料属性如表&-1所示。
表&-1 T700/BA9916材料属性参数值强度值E1/GPa 114 X T/MPa 2688E2/GPa 8.61 X C/MPa 1458E3/GPa 8.61 Y T/MPa 69.5μ120.3 Y C/MPa 236μ130.3 Z T/MPa 55.5μ230.45 Z C/MPa 175G12/GPa 4.16 S XY/MPa 136G13/GPa 4.16 S XZ/MPa 136G23/GPa 3.0 S YZ/MPa 95.6&.2 实例一:UMAT用户子程序应力分析&.2.1问题描述复合材料单层板几何尺寸为15mm×10mm×0.15mm,纤维方向为45°,单层板的3D实体模型如图&-1所示,X轴方向为0°方向,左侧面施加X轴向对称边界条件,下侧面施加Y轴向对称边界条件,垂直于Z轴且Z=0的平面施加Z轴向对称边界条件,右侧面施加100MPa 的拉力。
图&-1 单层板边界条件及加载情况本例中单位系统为mm、MPa。
在使用UMA T用户子程序进行高级应用之前,应该先了解UMAT 子程序,熟悉UMAT子程序的工作原理,了解UMA T中的参数、变量的含义。
为了便于读者快速了解和使用UMA T,本例通过复合材料单层板的应力分析来介绍一个简单的UMA T子程序。
读者可将本例中的单层板替换为层压板,进行对比分析。
&.2.2 UMAT用户子程序本例使用的UMAT用户子程序UMA T-Stress.for的全部代码如下,字母C及“!”之后为注释内容。
1SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,2 1 RPL,DDSDDT,DRPLDE,DRPLDT,3 2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,4 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,5 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)6 C7INCLUDE'ABA_PARAM.INC'8 C9CHARACTER*80 CMNAME10DIMENSION STRESS(NTENS),STATEV(NSTATV),11 1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),12 2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),13 3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),14 4 JSTEP(4)1516DIMENSION EG(6), XNU(3,3), STRAND(6), C(6,6), STRESS0(6)17C****************************18 C EG.....E1,E2,E3,G12,G13,G2319 C XNU.....NU12,NU21,NU13,NU31,NU23,NU3220 C STRAND.....STRAINT AT THE END OF THE INCREMENT21 C C.....6X6 STIFFNESS MATRIX22 C STRESS0.....STRESS AT THE BEGINNING OF THE INCREMENT23C****************************24 C INITIALIZE XNU & C MATRIX25 XNU=026 C=027 C GET THE MATERIAL PROPERTIES---ENGINEERING CONSTANTS28 EG(1) = PROPS(1) !E1,YOUNG'S MODULUS IN DIRECTION 129 EG(2) = PROPS(2) !E2,YOUNG'S MODULUS IN DIRECTION 230 EG(3) = EG(2) !E3,YOUNG'S MODULUS IN DIRECTION 331 XNU(1,2) = PROPS(3) !POISON'S RATIO POI_1232 XNU(2,1) = XNU(1,2)*EG(2)/EG(1) !POISON'S RATIO POI_2133 XNU(1,3) = XNU(1,2) !POISON'S RATIO POI_1334 XNU(3,1) = XNU(1,3)*EG(3)/EG(1) !POISON'S RATIO POI_3135 XNU(2,3) = PROPS(4) !POISON'S RATIO POI_2336 XNU(3,2) = XNU(2,3)*EG(3)/EG(2) !POISON'S RATIO POI_3237 EG(4) = PROPS(5) !G12,SHEAR MODULUS IN 12 PLANE38 EG(5) = EG(4) !G13,SHEAR MODULUS IN 13 PLANE39 EG(6) = PROPS(6) !G23,SHEAR MODULUS IN 23 PLANE40C****************************41 C FILL THE 6X6 STIFFNESS MATRIX C(6,6)42 RNU = 1/(1-XNU(1,2)*XNU(2,1)-XNU(1,3)*XNU(3,1)-43 1 XNU(3,2)*XNU(2,3)-2*XNU(1,3)*XNU(2,1)*XNU(3,2))44 C STIFFNESS MATRIX C(6,6)45 C(1,1) = EG(1)*(1-XNU(2,3)*XNU(3,2))*RNU46 C(2,2) = EG(2)*(1-XNU(1,3)*XNU(3,1))*RNU47 C(3,3) = EG(3)*(1-XNU(1,2)*XNU(2,1))*RNU48 C(4,4) = EG(4)49 C(5,5) = EG(5)50 C(6,6) = EG(6)51 C(1,2) = EG(1)*(XNU(2,1)+XNU(3,1)*XNU(2,3))*RNU52 C(2,1) = C(1,2)53 C(1,3) = EG(1)*(XNU(3,1)+XNU(2,1)*XNU(3,2))*RNU54 C(3,1) = C(1,3)55 C(2,3) = EG(2)*(XNU(3,2)+XNU(1,2)*XNU(3,1))*RNU56 C(3,2) = C(2,3)57 C**************************** 58 C CALCULATE STRAIN 59 DO I = 1, 660 STRAND(I) = STRAN(I)+DSTRAN(I) 61 ENDDO62 C CALCULATE STRESS 63 DO I = 1, 664 STRESS0(I) = STRESS(I) 65 STRESS(I) = 0 66 DO J = 1, 667 STRESS(I) = STRESS(I)+C(I,J)*STRAND(J) 68 ENDDO 69 ENDDO70 C CALCULATE SSE 71 DO I = 1, 672 SSE = SSE+0.5*(STRESS0(I)+STRESS(I))*DSTRAN(I) 73 ENDDO74 C**************************** 75 C UPDATE DDSDDE 76 DO I = 1, 6 77 DO J = 1, 678 DDSDDE(I,J) = C(I,J) 79 ENDDO 80 ENDDO 81 RETURN 82 END第1到14行及第81、82行为UMAT 子程序固定格式,其中,第1到5行括号内的变量为UMAT 子程序中可以使用的变量,第10到14行定义各变量数组的维数和长度。
部分主要变量的含义如表&-2所示。
表&-2 UMA T 部分变量名及其含义STRESS增量步开始时的应力(S11, S22, ...),用增量步结束时的应力计算结果对其更新 STATEV(NSTATV) 状态变量(状态变量个数),如果在材料中定义了状态变量,则在UMA T 中需要对其更新STRAN 增量步开始时的应变(E11, E22, ...) DSTRAN当前增量步的应变增量(ΔE11, ΔE22, ...) NDI, NSHR, NTENS 应力、应变的个数,NDI 为正应力或正应变的个数,NSHR 为剪应力或剪应变的个数,NTENS=NDI+NSHR PROPS, NPROPS 材料参数、材料参数的个数 DDSDDE 雅克比矩阵,εσ∆∂∆∂/SSE, SPD, SCD特定的弹性应变能、塑性耗散、蠕变耗散,只对能量输出有影响,对其他计算结果无影响,在UMAT 中需要对其更新CELENT单元特征长度第15到83行为用户自己编写的固定格式的Fortran 程序,用于计算刚度矩阵、应力、应变能、雅克比矩阵。
由于本例中没有使用状态变量,因此不需要更新STATEV ,只需要更新STRESS 、DDSDDE 和SSE 即可。