abaqus简单umat子程序

合集下载

如何配置ABAQUS的UMAT

如何配置ABAQUS的UMAT

如何配置ABAQUS的UMAT想使用UMAT吗?貌似很高深的样子,take it easy。

不过就是user defined subroutine而已,fortran里面也有subroutine,一个道理。

就把这个当作是一个外接的fortran程序好了。

当然自己要写一个UMAT不是一件容易的事情,但是今天我们不讨论这个,今天讨论的重点是如何让你的ABAQUS支持UMAT。

这个也不容易,能装好ABAQUS的人也一定经过一番挣扎了吧,既然已经经历不少艰难困苦到了这一步,那再坚持一会儿,设置一下配置,让我们拥有ABAQUS的所有功能吧!ABAQUS 6.6 和 6.7是不一样的,首先就是要阅读ABAQUS 的system requirement对于6.6来说:对于6.7来说:这些信息可以在simulia的官方网站上面看到。

一定要看清楚哦,下载准确的版本是成功的关键,不要像我想当然随便下了一个 Microsoft Visual C++ .NET 2005 然后装 Intel Visual Fortran 9.0 根本识别不出来Visual Fortran,然后降低到Microsoft Visual C++ .NET 2003,这次Visual Fortran能够识别出来来,以为可以了吧,注意,上面提到的只有 Intel Visual Fortran 8.0, 8.1, 9.1, 从来没有说过9.0。

我很郁闷,但是没有办法,又不想再重装.NET,只好又去下了一个Intel Visual Fortran 9.1,终于可以了。

走了不少弯路,至少让我以后小心点,绝对不要想当然,不然你就准备好不断重装吧。

也就是说配置UMAT之前,你需要安装Microsoft Visual C++ .NET 2003 或 2005,Intel Visual Fortran 8.0 或 8.1 或 9.1我自己装了ABAQUS 6.6 和 6.7,但是为了追求比较新的版本,所以装了Microsoft Visual C++ .NET 2003 和 Intel Visual Fortran 9.1,这样子原理上在6.7里面没有问题了,后来测试发现在6.6里面也很顺利。

子程序(UMAT)基本操作过程1

子程序(UMAT)基本操作过程1

UMAT操作过程操作过程:1、CAE建模、定义边界条件、载荷条件2、定义UMATProperty>General>User material✧Mechanical Constants 中为用户输入到子程序中的参数。

这时只能在General栏中定义参数,如密度等,这时不能再在Mechanical中定义杨氏模量等,此时杨氏模量、泊松比等数就需要在Mechanical Constants中输入到子程序中。

✧定义剪切刚度Model>Edit Keywords 中直接输入到inp文件中。

“*Shell Section”后面添加*Transverse Shear5.31e8,5.31e8,0在定义剪切刚度时一定要注意,一定要按帮助文档中公式计算而得并不是任意取值。

对于正交各项异性壳单元其中t为层合板厚度。

Depvar 中的数字与Mechanical Constants栏中定义的参数数量相等。

3编辑.for后缀的子程序3.1 推导出本构关系建立刚度矩阵时最好是直接指定刚度阵的每一项的方法得到刚度阵。

3.2更新应力下面是各项同性弹性本构关系(刚度阵)及应力更新。

DO K1=1,NTENSDO K2=1,NTENSDDSDDE(K1,K2)=ZEROEND DOEND DODO K1=1,NDIDO K2=1,NDIDDSDDE(K2,K1)=EBULK3END DOEND DODO K1=1,NDIDO K2=1,NDIDDSDDE(K1,K1)=EG2END DOEND DODO K1=NDI+1,NTENSDDSDDE(K1,K1)=EG3END DODO K1=1,NTENSDO K2=1,NTENSSTRESS(K1)=STRESS(K1)+DDSDDE(K1,K2)*DSTRAN(K2)END DOEND DO注意:UMAT子程序中并不是一定要写成增量形式,建立Jacobian矩阵,只要能做到更新应力即可,写成全量形式也可以。

ABAQUS材料用户子程序UMAT学习报告

ABAQUS材料用户子程序UMAT学习报告

具有友好的用户 界面和易用的操 作流程,方便用 户进行学习和使 用
UMAT子程序简介
UMAT子程序是 ABAQUS材料用户 自定义模块,允许 用户根据实际需求 编写材料本构模型。
UMAT子程序采用C 语言编写,用户需要 具备一定的编程基础。
UMAT子程序可以实 现多种材料本构模型 ,如弹性、塑性、蠕 变等。
UMAT子程序实现细节
编程语言和接口
A B A Q U S 材 料 用 户 子 程 序 U M AT 使 用Fortran语言编写
U M AT 子 程 序 中 可 以 定 义 材 料 属 性 、 本构关系等
添加标题
添加标题
添加标题
添加标题
U M AT 子 程 序 通 过 A B A Q U S 提 供 的 接口与主程序进行交互
不足:使用门槛较高,需要用户具备一定的编程基础
未来展望:期待更多的用户参与开发,不断完善子程序功能
总结:UMAT子程序为用户提供了强大的材料模型描述能力,但使用过程中需要注意其局 限性
在ABAQUS中的未来发展方向
开发更高效的材料模型 集成人工智能和机器学习技术 增强与CAD软件的集成 扩展对多物理场模拟的支持
适用于金属材料
适用于复合材料
适用于橡胶材料
适用于陶瓷材料
参数的合理选择
参数选择需符合实际物理模型 参数选择需考虑材料特性 参数选择需经过实验验证 参数选择需注意收敛性和稳定性
收敛性和稳定性问题
收 敛 性 : U M AT 子 程 序 在 迭 代 过 程 中应满足收敛条件,否则可能导致 计算失败或结果不准确。
边界条件和初始条件
边界条件:描述模型在边界上的行为,如位移、速度等 初始条件:描述模型在初始时刻的状态,如温度、压力等

ABAQUS子程序UMAT里弹塑本构的实现

ABAQUS子程序UMAT里弹塑本构的实现

前言有限元法是工程中广泛使用的一种数值计算方法。

它是力学、计算方法和计算机技术相结合的产物。

在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。

所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。

ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。

非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。

比方说,一个复合材料就不能用传统的线性分析软件包进行分析。

任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。

多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。

这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。

非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。

航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。

新一代波音 787客机将全部采用复合材料。

只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。

在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。

分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。

在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。

瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。

线性分析在这种情况下是不适用的。

以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。

Abaqus材料用户子程序UMAT基础知识及手册例子完整解释

Abaqus材料用户子程序UMAT基础知识及手册例子完整解释

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 )而已。

abaqus子程序umat编写hashin准则

abaqus子程序umat编写hashin准则

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准则的简单形式,即当总剪切应力小于长纤维方向的纤维应力时,复合材料发生损伤。

ABAQUS流程图

ABAQUS流程图

下面第一张图代表的是ABAQUS/standard运行的一个流程:
下面一张图代表的是子程序的思路:
下面一张图代表的是UMAT的流程:
总结一下对于UMAT的求解过程:每一个增量步开始时,abaqus在单元的积分点上调用umat,并传入应变增量,时间步长以及荷载增量,
同时也根据当前已知状态的应力、应变和求解相关的状态变量;然后UMAT根据本构方程求解应力增量,应变及其他相关的变量,提供J阵给
ABAQUS主程序以供形成整体的刚度阵;主程序根据当前荷载增量求解位移增量,然后进行平衡校核,如果不满足误差,abaqus要进行下一步的迭代,只要收敛。

(摘自华中科大硕士论文)。

用户子程序UMAT设置

用户子程序UMAT设置

ABAQUS用户子程序UMAT的设置在property模块进行。

Creat material→General→User Material,输入Mechanical Constants,即为子程序中需要输入的参数,如下图所示。

Creat material→General→Depvar,在这里面设置状态变量的个数,与子程序中变量STATEV(NSTATEV)有关,如下图所示。

而用户子程序的格式可以通过搜索ABAQUS Documentation,在该文档中可以找到子程序UMAT的书写方法以及相关变量的含义。

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)CINCLUDE 'ABA_PARAM.INC'CCHARACTER*80 CMNAMEDIMENSION STRESS(NTENS),STATEV(NSTATV),1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),4 JSTEP(4)user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCDand, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDTRETURNEND必须在子程序UMAT中提供材料本构的雅可比(Jacobian)矩阵(即变量DDSDDE),即应力增量对应变增量的变化率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档