当前位置:文档之家› ABAQUS子程序UMAT里弹塑本构的实现 - 副本

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

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

前言

有限元法是工程中广泛使用的一种数值计算方法。它是力学、计算方法和计算机技术相结合的产物。在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。

ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。比方说,一个复合材料就不能用传统的线性分析软件包进行分析。任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。

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

非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。新一代波音 787客机将全部采用复合材料。只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。

瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。线性分析在这种情况下是不适用的。以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。所以,ABAQUS可以在一个软件完成线性和非线性分析。

ABAQUS给用户提供了强大二次开发接口,尤其是在材料本构方面,给用户开发符合实际工程的材料本构模型提供了强大帮助,本文将针对其用户材料子程序展开研究,总结常用材料模型的开发方法。

目录

摘要 ......................................................................................................................................... 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.切线刚度法程序编码........................................................... 错误!未定义书签。

5.6.程序的调试 (36)

6.程序验证 (38)

1

6.1.问题描述 (38)

6.2.本构关系 (39)

6.3.ABAQUS自带材料模型计算 (39)

6.4.常刚度法的UMAT验证 (41)

6.5.切线刚度法的UMAT验证 (43)

6.6.两种算法的比较分析 (45)

7.结论与展望 (49)

7.1.结论 (49)

7.2.展望 (49)

致谢 (51)

参考文献 (52)

附1:ABAQUS自带弹塑性材料验证的INP文件 (53)

附2:用于算法验证的INP文件 (59)

2

摘要

ABAQUS软件功能强大,特别是能够模拟复杂的非线性问题,它包括了多种材料本构关系及失效准则模型,并具有良好的开放性,提供了若干个用户子程序接口,允许用户以代码的形式来扩展主程序的功能。

本文主要研究了ABAQUS用户子程序UMAT的开发方法,采用FORTRAN语言编制了各向同性硬化材料模型的接口程序,研究该类材料的弹塑性本构关系极其实现方法。

本文紧紧围绕UMAT的二次开发技术,首先对其接口原理做了详细介绍,然后针对非线性有限元增量理论中的常刚度法和切线刚度法的算法理论做了深入的剖析,推导出了常刚度法和切线刚度法的算法理论的具体表达式,然后分别编制了两种算法的UMAT程序,最后建立了一个具体的验算模型,通过与ABAQUS自带弹塑性本构关系的计算结果相比较,验证两者的正确性。

本文还对常刚度法和切线刚度法得算法效率做了对比,得出了在非线性程度较高时切线刚度法效率高于常刚度法的结论。

关键字: ABAQUS、UMAT、有限元、材料非线性、FORTRAN、切线刚度

I

ABSTRACT

ABAQUS software powerful, especially to simulate complex non-linear problem, which includes a wide range of material constitutive model and failure criteria, and has a good open, providing a number of user subroutine interface that allows users to code form to expand the functions of the main program.

This paper studies the user subroutine UMAT of ABAQUS development methods, the use of FORTRAN language isotropic hardening material model of the interface program, studied the effects of such material is extremely elastic-plastic constitutive relation method.

This article UMAT tightly around the secondary development of technology, the first principle of its interface detail, and then for the theory of nonlinear finite element incremental stiffness of the regular tangent stiffness method and the theory of algorithms to do an in-depth analysis of deduced a regular tangent stiffness and rigidity of the law of the specific expression of algorithm theory, and then the preparation of the two algorithms, respectively, of the UMAT program, and finally the establishment of a specific model checking, bringing with ABAQUS elasto-plastic constitutive relation of the calculated results compared to verify the correctness of the two.

This article also often stiffness and tangent stiffness method was to do a comparison of algorithm efficiency is obtained when a higher degree in the non-linear tangent stiffness method more efficient than the conclusions of law often stiffness.

KEY WORDS:ABAQUS、UMAT、Finite element、Material nonlinearity、FORTRAN、Tangent stiffness

II

1.绪论

1.1. 课题的研究背景

有限单元法基本思想的提出,可以追溯到克劳夫(R.W.Clough)在1943年的工作[1],他第一次尝试应用定义在三角形区域上的分片连续函数和最小位能原理相结合,来求解St. Venant扭转问题。1960年克劳夫进一步处理了平面弹性问题,并第一次提出了“有限单元法”的名称,使人们开始认识了有限单元法的功效。

四十多年来,随着电子计算机的广泛应用和发展,有限单元法的理论和应用都得到迅速的,持续不断的发展,其应用己由弹性力学平面问题扩展到空间问题、板壳问题,由静力学问题扩展到稳定问题、动力问题和波动问题。分析的对象从弹性材料扩展到塑性、粘弹性、粘塑性和复合材料等,从固体力学扩展到流体力学、传热学等连续介质力学领域。在工程分析中的作用已从分析和校核扩展到优化设计并和计算机辅助设计。

利用有限元软件解决工程和科学问题,是有限元理论应用于工程设计和科学研究实践的主要形式。由于工程设计的巨大市场需要,有限元软件的发展是很迅速的,目前常用的大型有限元软件常见的有Sap2000,ADINA,MSC/NASTRAN,MSC Marc,ANSYS,ABAQUS等,这些软件的共同特点是具有丰富的单元库和求解器,强大而可靠的分析功能,人们利用这些软件解决了很多工程建设和工业产品设计中遇到的问题,取得了巨大的经济技术效益。

由于工程问题的千差万别,不同的用户有不同的专业背景和发展方向,通用软件不免在具体的专业方面有所欠缺,针对这些不足,大部分的通用软件都提供了二次开发功能,以帮助用户减少重复性的编程工作、提高开发起点、缩短研发周期、降低开发成本,并能简化后期维护工作,给用户带来很多方便。基于通用软件平台进行开发,是目前研究的一个重要发展方向。

ABAQUS也提供了若干用户子程序(User Subroutines)接口,它是一个功能非

1

常强大且适用的分析工具,与命令行的程序格式相比,用户子程序的限制少得多,

从而使用更加灵活方便。针对ABAQUS所提供的本构关系模型种类有限,无法满足工程应用需要的问题,用户子程序中的用户材料子程序(User-defined Materia Mechanical Behavior,简称UMAT)接口可以帮助用户定义自己的材料本构模型和算法,这是ABAQUS的独到之处。由于其操作方便,能被灵活地应用于各个领域中,尤其受到用户的青睐。

1.2. 本文的研究内容和方法

ABAQUS中用户材料子程序UMAT的开发主要解决两方面的问题:本构模型的建立和积分算法的选择。

本文主要研究非线性材料的UMAT实现方法,并重点研究其迭代算法部分,目前,用户材料子程序UMAT的迭代算法主要是常刚度法,常刚度法的优点在于算法原理较简单,程序编写较方便,缺点是当遇到复杂非线性材料时,其迭代次数较多,收敛速度也较慢,在这个情况下,本文采取的是一种迭代次数较少且收敛速度较快的切线刚度法,具体就是采用FORTRAN语言编制了基于V on-Mises模型的接口程序,并采用切线刚度算法,通过与ABAQUS自带本构关系计算的结果相比较,验证其正确性。

本文的研究工作紧紧围绕UMAT的二次开发技术,首先根据有限元方法推导材料非线性问题算法的公式,然后参考UMAT接口规范设计程序的算法流程,继而编写出该程序,最后建立一个具体的本构和具体的模型做测试,验证程序的正确性,在这一过程中,调试是一个非常重要的过程,占用了大量的时间,在调试程序时采用了将中间变量输出到文本的方式,这样能明确跟进迭代过程,发现算法或程序的缺陷。

本文采用的本构关系是经过归纳和抽象的,也就是说本文的程序并不仅仅是只针对某个具体模型和问题,而是针对所有符合抽象出的各向同性硬化材料,这样做的好处是能保证程序的通用性和复用性,避免以后的重复劳动,当然,这也是符合ABAQUS 软件设计UMAT接口的宗旨的。

2

2.基于ABAQUS软件的二次开发

2.1. ABAQUS介绍

ABAQUS是一套功能强大的基于有限元法的工程模拟软件[2],其解决问题的范围从相对简单的线性分析到最富有挑战性的非线性模拟问题。ABAQUS具备十分丰富的、可模拟任意实际形状的单元库。并与之对应拥有各种类型的材料模型库,可以模拟大多数典型工程材料的性能,其中包括金属、橡胶、高分子材料、复合材料、钢筋混凝土、可压缩弹性的泡沫材料以及岩石和土这样的地质材料。作为通用的模拟分析工具,ABAQUS 不仅能解决结构分析中的问题,还能模拟和研究各种领域中的问题,如热传导、质量扩散、电子元器件的热控制(热一电耦合分析)、声学分析、土壤力学分析(渗流——应力耦合分析)和压电介质力学分析。

ABAQUS为用户提供了广泛的功能,且使用起来又十分简明。最复杂的问题也可以很容易地建立模型[3]。例如复杂的多部件问题可以通过对每个部件定义材料模型和几何形状,然后再把它们组装起来而构成。在大部分模拟分析问题中,甚至在高度非线性问题中,用户也只需要提供结构的几何形状、材料性能、边界条件和荷载工况这样的工程数据就可以进行分析。在非线性分析中,ABAQUS能自动选择合适的荷载增量和收敛精度。不仅能选择这些参数值,而且能在分析过程中不断地调整参数来保证有效地得到高精度的解,很少需用户去定义这些参数。

2.2. ABAQUS各模块简介

ABAQUS 有两个主要的分析模块:ABAQUS/Standard 和ABAQUS/Explicit 。ABAQUS/Standard还有两个特殊用途的附加分析模块:ABAQUS/Aqua和ABAQUS/Design。另外,还有ABAQUS 分别与ADAMS/Flex,C-MOLD和Mold flow的接口模块:ABAQUS/ADAMS,ABAQUS/C-MOLD和ABAQUS/ MOLDFLOW。ABAQUS/CAE是完全的ABAQUS

3

4

工作环境模块,它包括了ABAQUS 模型的构造,交互式提交作业、监控作业过程以及评价结果的能力。ABAQUS/Viewer 是ABAQUS/CAE 的子集,它具有后处理功能,这些模块之间的关系见图2- 1

图2-1

ABAQUS/Standard

ABAQUS/Standard 是一个通用分析模块,在数值方法上采用有限元方法常用的 隐式积分。它能够求解广泛的线性和非线性问题,包括结构的静态、动态问题、热 力学场和电磁场问题等。对于通常同时发生作用的几何、材料和接触非线性可以采 用自动控制技术处理,也可以由用户自己控制。

ABAQUS/Explicit

ABAQUS/Explicit 是一个在数值方法上采用有限元显式积分的特殊模块,它利用对时间的显式积分求解动态有限元方程。它适合于分析诸如冲击和爆炸这样短暂、瞬时的动态问题,同时对高度非线性问题如模拟加工成型过程中接触条件的改变等也非常有效。

ABAQUS/CAE

ABAQUS/CAE 是ABAQUS 进行有限元分析的前后处理模块,也是建模、分析和后处理的人机交互平台。该模块根据结构的几何图形生成网格,将材料和截面的特性分配到网格上,并施加载荷和边界条件。该模块可以进一步将生成的模型投入到分析模块中进行高效率的后台运行,并对运行情况进行监测,对计算结果进行后处理。ABAQUS/CAE 的后处理支持ABAQUS 分析模块的所有功能,

并且对计算结果的描述和解释提供了范围

很广的选择,除了通常的云图,等值线和动画显示之外,还可以用列表,曲线(包括部分常用运算)等其他常用工具来完成对结果数据的处理。该模块的许多独特功能与特点,例如CAD特征化建模、参数化建模、适应设计者要求的数据管理系统等极大的方便了ABAQUS的使用者。

ABAQUS/Aqua

ABAQUS/Aqua的一系列功能可以附加在ABAQUS/Standard中应用。它偏向于模拟海上结构,如海洋石油平台。它的功能包括模拟波浪,风载荷及浮力的影响。在本指南中不讨论ABAQUS/Aqua。

ABAQUS/ADAMS

ABAQUS/ADAMS允许ABAQUS有限元模型作为柔性部件进入到MDIADAMS产品族中去进行分析。

ABAQUS/C-MOLD

ABAQUS/C-MOLD把注模分析软件C-MOLD中有限元网格、材料性质和初始应力数据转换成为ABAQUS 输入文件。

ABAQUS/Design

ABAQUS/Design 的一系列功能可附加在ABAQUS/Standard 中进行设计敏度计算。ABAQUS/MOLDFLOW

ABAQUS/MOLDFLOW 模块把MOLDFLOW 分析软件中的有限元模型信息转换成ABAQUVS 输入文件的一部分。

2.3.A BAQUS的二次开发平台

ABAQUS的脚本语言接口非常友好,其自嵌的脚本语言是Python[4],系国际上广泛使用、功能强大、具有良好开放性的一种面向对象程序设计语言。所以,应用Python 在ABAQUS中进行二次开发也比较方便,且可移植性强。ABAQUS以基于Python的语法规则向二次开发者提供了许多库函数,这些库函数主要是用来增强ABAQUS的交互式(GUI)操作功能。用户可以通过ABAQUS的交互式(GUI)界面实现分析对象的特征造型、指定材料属性、完成网格剖分和控制、提交并监控分析作业,也可以使用ABAQUS脚本

5

语言越过ABAQUS的交互式(GUI)界面直接高效地向ABAQUS内核提交任务。使用Python 可以进行参数化建模,修改交互式建立的模型,还可以一次提交多个作业。

出了脚本语言接口,ABAQUS还为用户提供了功能强大的用户子程序接口(Abaqus User Subroutines ),以帮助用户开发基于ABAQUS内核的程序,常用的用户子程序包括UEL(User subroutine to define an element ,用户单元子程序),UMAT(User subroutine to define a material's mechanical behavior,用户材料子程序)[5],其中UMAT的使用最为广泛,它主要用于用户开发自己的材料模型,以弥补ABAQUS自带材料模型的不足,帮助用户完成各种材料分析,功能极为强大。

在国外,众多的有限元分析和研究者热衷于使用ABAQUS,一个很重要的原因就在于ABAQUS给用户提供了功能强大,使用方便的二次开发工具和接口,使得用户可以方便的进行富含个性化的有限元建模、分析和后处理,满足特定工程问题的需要。通过用户材料子程序接口,用户可定义任何补充的材料模型,不但任意数量的材料常数都可以作为资料被读取,而且ABAQUS对于任何数量的与解相关的状态变量在每一材料计数点都提供了存储功能,以便在这些子程序中应用。

2.4.A BAQUS的二次开发语言

ABAQUS的二次开发语言主要有3种:P ython,FORTRAN,C++

Python语言主要用于GUI开发,FORTRAN语言主要用于用户子程序开发,而c++语言主要专注于其他高级开发部分。

本文主要是针对用户子程序的开发,所以采用FORTRAN语言,下面简要介绍一下该语言极其特点:

FORTRAN语言是世界上第一个被正式推广使用的高级语言[6]。它是1954年被提出来的,1956年开始正式使用,至今已有三十多年的历史,但仍历久不衰,它始终是数值计算领域所使用的主要语言。

FORTRAN语言是Formula Translation的缩写,意为“公式翻译”。它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。

FORTRAN语言问世以来,根据需要几经发展,先后推出了不同的版本,主要版本有FORTRAN 77,FORTRAN90,FORTRAN 95,ABAQUS采用FORTRAN 77,通常用固定格式编写代码。

6

FORTRAN77语言同C语言一样,是一种结构化编程语言

结构化程序设计方法规定,在结构化的程序中,只能有三种基本结构:

(1)顺序结构

这是一种最简单的基本结构形式,它的特点是,在这个结构内的各个功能模块或语句序列,是按其出现的先后顺序执行的,如赋值语句、输入/输出语句等。它有一个入口和一个出口,并在入口和出口之间包含着若干个功能块,其中每一个功能块可以是一个非转移语句。因此,顺序基本结构块是由一系列的顺序执行语句组成的。(2)分支选择结构

在给定的条件下,分支选择结构判断选择哪一条路径执行,不同路径完成的功能是不同的。实现分支选择结构主要由块IF语句、ELSE语句、END IF语句以及ELSE IF 语句组成的IF-THEN-ELSE结构。

(3)循环结构

循环结构也称重复处理结构,即重复执行某一功能块,直到满足(或不满足)某一条件为止。实现循环结构的FORTRAN90语句主要是DO语句、块IF语句和逻辑IF语句的结合。

以上三种基本结构,是组成结构化程序的基本结构形式。这里有两层意思:一是结构化的程序中,各个模块均由这三种基本结构组成;二是结构化程序本身,从宏观上也是这三种基本结构形式之一。

7

8

3. 用户材料子程序UMAT

3.1. UMAT 开发环境设置

由于UMAT 是采用FORTRAN 语言编写,那么要运行UMAT 就需要安装FORTRAN 的开发环境, 同时还需要ABAQUS 的支持,本文采用的ABAQUS 版本为6.81,支持INTEL Fortran9.1-10.1,Intel Fortran 安装时又需要安装Microsoft Visual Studio 的相应版本,经过比较,本文选用ABAQUS6.81+Intel Fortran10.1+Microsoft VisualC++ 2005,相对于ABAQUS 来说,UMAT 开发环境的设置较为繁琐,这给子程序的使用带来诸多不便,为了解决这一问题,我用C#语言编制了ABAQUS 子程序编译环境设置工具,只需要将安装文件解压到ABAQUS 的安装目录,运行安装程序就可以了,整个过程不需要人工干预,也不需要安装庞大的VisualC++ 2005,如图3-1所示

3-1

3.2. UMAT注意事项

ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照Fortran语法,用户自己编写的代码。它是一个独立的程序单元,可以独立的被存储和编译,也能

被其它程序单元引用,因此,利用它可带回大量数据供引用程序使用,也可以用它

来完成各种特殊的功能。它的一般结构形式是:

SUBROUTINE S(x1,x2,……,xn)

INCLUDE‘ABA_PARAM.INC’(用于ABAQUS/Standard用户子程序中)

OR INCLUDE‘V ABA_PARAM.INC’)(用于ABAQUS/Explicit用户子程序中)

……

RETURN

END

x1,x2,……,xn是ABAQUS提供的用户子程序的接口参数,有些参数是ABAQUS 传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP、KINC、COORDS,有些是需要用户自己定义的,例如F,文件aba_param.inc和vaba_param.inc随着ABAQUS软件的安装而包含在操作系统中,它们含有重要的参数,帮助ABAQUS主求解程序对用户子程序进行编译和链接。当控制遇到RETURN语句时便返回到引用程序单元中去,END语句是用户子程序结束的标志。

在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.for为扩展名的文件中。运行带有用户子程序的算例同时有两种方法:一是在CAE中运行,在EDIT JOB菜单中的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在https://www.doczj.com/doc/ca12917980.html,MAND中运行,语法如下:abaqus job=job-name user={source-file|object-file}

编制用户子程序时应注意

(1)用户子程序相互之间不能调用,但可以调用用户自己编写的Fortran子程序和ABAQUS应用程序。ABAQUS应用程序必须由用户子程序调用。当用户编写Fortran 子程序时,建议子程序名以K开头,以免和ABAQUS内部程序冲突。

(2)当用户在用户子程序中利用OPEN打开外部文件时,要注意以下两点:一是设备号的选择是有限制的,只能取15~18和大于100的设备号,其余的都已被ABAQUS占用;二是用户需提供外部文件的绝对路径而不是相对路径。

9

(3)对于不同的用户子程序ABAQUS调用的时间是不同的,有的是在每个STEP

的开始,有的是STEP的结尾,有的是在每个INCREMENT的开始等等。当ABAQUS 调用用户子程序时,都会把当前的STEP和INCREMENT利用用户子程序的两个实

参KSTEP和KINC传给用户子程序,用户可把它们输出到外部文件中,这样就可清楚的知道ABAQUS何时调用该用户子程序。

为保证用户子程序的正确执行,子程序的书写必须遵循ABAQUS的相关规定,

下面以用户材料子程序为例详细说明。

3.3.U MAT接口的原理

用户材料子程序(User-defined Material Mechanical Behavior,简称UMAT)是ABAQUS提供给用户定义自己的材料属性的Fortran程序接口[7][8],使用户能使用ABAQUS材料库中没有定义的材料模型。用户材料子程序UMAT通过与ABAQUS主求解程序的接口实现与ABAQUS的资料交流。在输入文件中,使用关键词“*USER MATERIAL”表示定义用户材料属性。

UMAT子程序具有强大的功能,使用UMAT子程序:

(1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行

计算,扩充程序功能。

(2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋

予ABAQUS中的任何单元。

(3)必须在UMAT中提供材料本构的雅可比(Jacobian)矩阵,即应力增量对

应变增量的变化率。

由于主程序与UMAT之间存在数据传递,甚至共享一些变量,因此必须遵守有

关UMAT的书写格式,UMAT中常用的变量在文件开头予以定义,通常格式SUBROUTINE UMA T(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,NSTA TV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)

INCLUDE‘ABA_PARAM.INC’

10

11

CHARACTER*80 CMNAME

DIMENSION 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)

user coding to define DDSDDE,STRESS,STATEV ,SSE,SPD,SCD

and,if necessary,RPL,DDSDDT,DRPLDE,DRPLDT,PNEWDT

RETURN

END

UMAT 中的应力矩阵、应变矩阵以及矩阵DDSDDE 、DDSDDT 、DRPLDE 等,都是直接分量存储在前,剪切分量存储在后。直接分量有NDI 个,剪切分量有NSHR 个。各分量之间的顺序根据单元自由度的不同有一些差异,所以编写UMAT 时要考虑到所使用单元的类别。下面对UMAT 中用到的一些变量进行说明:

DDSDDE(NTENS NTENS):一个NTENS ×NTENS 的矩阵,称作Jacobian 矩阵 σ?是应力的增量,ε?是应变的增量,DDSDDE(i ,j)表示增量步结束时第j 个应变分量的改变引起的第i 个应力分量的变化。通常Jacobian 矩阵是一个对称矩阵,除非在“*USER MATERIAL ”语句中加入了“UNSYMM ”参数。

STRESS(NTENS):应力张量数组,对应NDI 个直接分量和NSHR 个剪切分量。在增量步的开始,应力张量矩阵中的数值通过UMAT 和主程序之间的接口传递到UMAT 中,在增量步的结束UMAT 将对应力张量矩阵更新。对于包含刚体转动的有限应变问题,一个增量步调用UMAT 之前就已经对应力张量进行了刚体转动,因此UMAT 中只需处理应力张量的共旋部分。UMAT 中应力张量的度量为柯西应力。

STATEV(NSTATEV):用于存储与解有关的状态变量的数组,在增量步开始时将数值传递到UMAT 中,也可在子程序USDFLD 或UEXPAN 中先更新数据,然后增量步开始时将更新后的资料传递到UMAT 中。在增量步的结束必须更新状态变量矩阵中的数据。和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的资料更新以外,与解有关的状态变量矩阵中的任何向量或者张量都必须通过旋转来考虑材料的刚体运动。

/σε??

12

状态变量矩阵的维数通过ABAQUS 输入文件中的关键词“*DEPVAR ”定义,关键词下面数据行的数值即为状态变量矩阵的维数。

PROPS(NPROPS):材料常数数组。材料常数的个数,等于关键词“*USER MATERIAL ”中“CONSTANTS ”常数设定的值。矩阵中元素的数值对应于关键词“USER MATERIAL ”下面的数据行。

SSE ,SPD ,SCD :分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。

它们对计算结果没有影响,仅仅作为能量输出。

STRAN(NTENS):应变数组。

DSTRAN(NTENS):应变增量数组。

DTIME :增量步的时间增量。

NDI :直接应力分量的个数。

NSHR :剪切应力分量的个数。

NTENS :总应力分量的个数,NTENS =NDI +NSHR 。

由于UMAT 子程序在单元的积分点上调用,增量步开始时,主程序路径将通过

UMAT 的接口进入UMAT ,单元当前积分点必要变量的初始值将随之传递给UMAT 的相应变量。在UMAT 结束时,变量的更新值将通过接口返回主程序。

3.4. U MAT 的使用方法

我们知道,有限元计算(增量方法)的基本问题[7]是:已知第n 步的结果(应力,应变等)n σ,n ε,然后给出一个应变增量1n d ε+,计算1n σ+,UMAT 要完成这一计算,并要计算DDSDDE(I,J)=/σε??。σ?是应力增量矩阵,ε?是应变增量矩阵,DDSDDE(I,J) 定义了第J 个应变分量的微小变化对第 I 个应力分量带来的变化。 该矩阵只影响收敛速度,不影响计算结果的准确性 (当然,不收敛自然得不到结果)。

有限元计算的中心问题就是求得节点的位移 (进而应变、应力),以使内力和 外力达到平衡:

int ()ext F d F = (3-1)

d 是节点位移矩阵,黑体字表示矩阵或矢量。除了小变形、线弹性问题,方程2-1是非性的,要用迭代的方法解出:

13

int 11()ext i T n n K d F F d ++?=- (3-2)

111i i n n d d d +++=+? (3-3) i 表示一个增量步内的第i 次迭代,n 表示第n 个增量步。K T 是切线刚度,由材料的Jacobian 矩阵结合单元计算组装而得。刚度矩阵其实就是力对位移的梯度。要想快速收敛,位移增量应沿该梯度方向变化,也就是说,如果Jacobian 矩阵不是那么准确,自然K T 也不怎么准确,那么满足3-1式的位移被找到的速度也就变慢,甚至发散,根本找不到。但收敛速度无论慢快,3-1式才是判断结果准确与否的唯一标准。所以Jacobian 矩阵不影响结果的准确性,只影响收敛速度的快慢。

以大变形、非性材料为例,整个计算步骤是这样的:

整个外力不是一次加上,而是一点点加上的,不然会发散得不到结果的。所以,每一个增量步开始时就是在原来的外力上加上一点点,得到int ext F 。根据3-2得到位移增量d ?,此时要知道力对位移的梯度K T ,以尽快找到满足平衡条件的位移,由材料的Jacobian 矩阵和单元结合起来组装得到(此处使用UMAT 提供的Jacobian 矩阵)。然后可计算应变增量1i n d ε+,调用UMAT ,得到新的应力,进而得到新的内力,所以,程序不在乎新的应力是由增量方法得到,还是全量方法得到,而只在乎新应力是否准确。然后回到3-2,如此循环,直至3-2右端为0,也即满足3-1。这样第n+1 步就完成了,然后开始第n+2 步,即 外力加上一点点,按同样的方法求解新的位移。直至整个外力全部施加并得到满足3-1的位移。

14

4. 材料非线性问题

弹性力学作为精确理论,从本质上都是非线性的,早期Cauchy, Green,Kirchhoff 和Kelvin 在这些方面都作出了重要贡献。后来又提出超弹性(即具有弹性势的)有限变形理论,由于理论方程的冗长而复杂,且工程应用也没有提出这方面要求而被搁置。20世纪40年代以后,由于橡胶材料、高分子合成材料的迅速发展和工业领域的大量应用,非线性弹性与超弹性的研究再次引起科学和工程界的重视,除了一般理论研究有了新的发展以外,工程应用计算方法也得到长足的发展。

4.1. 材料的弹塑性本构关系

弹塑性材料进入塑性的特征是当荷载卸去后存在不可恢复的永久变形。所以,在卸载情况下,应力应变之间不再是唯一的对应关系。这是区别于非线性弹性材料的基本属性。只以加载时应力应变关系成非线性,还不足以判断材料是非线性弹性还是弹塑性。但是一经卸载就可以看出两者的区别。非线性弹性材料沿原路径返回,而弹塑性材料将依据不同的加载历史卸载后产生不同的永久变形。

对大多数材料来说,在单调加载的情况下,存在一个明显的极限应力s σ,当应力低于s σ时,材料保持线弹性。而当应力达到s σ以后,则材料开始进入弹塑性状态。如继续加载,然后在卸载,材料始终保持永久的塑性变形。如果应力达到s σ后,应力不再增加,而材料变形可以继续增加,及变形处于不定的流动状态,则称材料为理想弹塑性的。反之如果应力达到s σ后,再增加变形,应力也必须增加,则材料是应变硬化的,这时应力s σ是塑性应变p ε的函数,可解析为:

()s s p σσε= (4-1)

本构关系反应着应力应变之间的关系。对于弹性材料变形是可以恢复的;而塑性材料变形是不可以恢复的。典型的弹塑性应变在卸载后要保持一个永久的变形。如图3-2

ABAQUS中Fortran子程序调用方法

第一种方法: / o/ J5 @6 U/ ^- o$ 1. 建立工作目录/ ]" 2. 将Abaqus安装目录\6.4-pr11\site下的aba_param_dp.inc或aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc; # ~/ |0 I0 E6 {, @4 X3 q: W3. 将编译的fortran程序拷贝到工作目录; 4. 将.obj文件拷贝到工作目录; 5. 建立好输入文件.inp; 6. 运行abaqusjob=inp_name user=fortran name即可。 第二种方法: 在Job模块里,创建工作,在EditJob对话框中选择General选项卡,在Usersubroutine file中点击Select 按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for或.f)。 , D8 i7 d/r c6 @" | 以下是网上摘录的资料,供参考:. |$ t/ }$W7 Y6 m4 h6 D6 j 用户进行二次开发时,要在命令行窗口执行下面的命令: 4 O. R+ ^,@( ? abaqus job=job_name user=sub_name ABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库standardU.lib和动态库standardU.dll,还有其它一些临时文件,而它的主程序(如standard.exe和explicit.exe等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。这种运行机制与ANSYS、LS-DYNA、marc等都不同。 : j6 g' R-o( {0 [* N2 J3 X这些生成的临时文件要到文件夹C:\Documentsand Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。 1子程序格式(程序后缀是.f; .f90; .for;.obj??) 答:我试过,.for格是应该是不可以的,至少6.2和6.3版本应该是不行,其他的没用过,没有发言权。在Abaqus中,运行abaqusj=jobname user=username时,默认的用户子程序后缀名是.for(.f,.f90应该都不行的,手册上也有讲过),只有在username.for文件没有找到的情况下,才会去搜索username.obj,如果两者都没有,就会报错误信息。 如果username包括扩展名for或obj,那么就根据各自的扩展名ABAQUS会自动选择进行操作。 2CAE中如何调用?Command下如何调用? 答:CAE中在creat job的jobmanager中的general中可以指定子程序; Command下用命令:abaqus j=jobnameuser=userfilename (无后缀); 3若有多个子程序同时存在,如何处理 答:将其写在一个文件中即可,然后用一个总的子程序调用(具体参见手册) 4我对VF不是很熟,是否可以用VC,C++编写子程序? A: 若要在vf中调试,那么应该根据需要把SITE文件夹中的ABA_PARAM_DP.INC(双精度)或ABA_PARAM_SP.INC(单精度)拷到相应的位置,并改名为ABA_PARAM.INC即可。 据说6.4的将可以,6.3的你可以尝试着将VC,C++程序编译为obj文件,没试过。在你的工作目录下应该已经存在ufield.obj和uvarm.obj这两个文件(这两个文件应该是你分别单独调试ufield.FOR和uvarm.FOR时自动编译生成的,你可以将他们删掉试试看),但是由于你的FOR文件中已经有了UV ARM 和UFIELD这两个subroutine,显然会造成重复定义,请查实。 用户子程序的使用 假设你的输入文件为:a.inp b.for 那么在ABAQUS Command 中的命令应该是这样的: abaqusjob=a user=b

ABAQUS子程序

Home 浅谈ABAQUS用户子程序 李青清华大学工程力学系 摘要本文首先概要介绍了ABAQUS的用户子程序和应用程序,然后从参数,功能两方面详细论述了DLOAD, UEXTERNALDB, URDFIL三个用户子程序和GETENVVAR,POSFIL,DBFILE三个应用程序,并详细介绍了ABAQUS的结果文件(.FIL)存储格式。 关键字ABAQUS,用户子程序,应用程序,结果文件 一、前言: ABAQUS为用户提供了强大而又灵活的用户子程序接口(USER SUBROUTINE)和应用程序接口(UTILITY ROUTINE)。ABAQUS 6.2.5一共有42个用户子程序接口,13个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数据交换等等。这些用户子程序接口使用户解决一些问题时有很大的灵活性,同时大大的扩充了ABAQUS的功能。例如:如果荷载条件是时间的函数,这在ABAQUS/CAE 和INPUT 文件中是难以实现的,但在用户子程序DLOAD中就很容易实现。 二.在ABAQUS中使用用户子程序 ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照FORTRAN语法用户自己编写的代码。在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.FOR为扩展名的文件中。运行带有用户子程序的算例时有两种方法,一是在CAE中运行,在EDIT JOB菜单的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在ABABQUS COMMAND用运行,语法如下: ABAQUS JOB=[JOB] USER?[.FOR]?C 用户在编写用户子程序时,要注意以下几点: 1.用户子程序不能嵌套。即任何用户子程序都不能调用任何其他用户子程

abaqus简单umat子程序

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT, 1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED, 2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT, 3 PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) include 'aba_param.inc' CHARACTER*8 CMNAME DIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS), 1 DDSDDT(NTENS),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS), 2 TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS),COORDS(3),DROT(3,3), 3 DFGRD0(3,3),DFGRD1(3,3) C UMAT FOR ISOTROPIC ELASTICITY C CANNOT BE USE D FOR PLAN E STRESS C ---------------------------------------------------------------- C PROPS(1) - E C PROPS(2) - NU C ---------------------------------------------------------------- C IF (NDI.NE.3) THEN WRITE (*,*) 'THIS UMAT MAY ONLY BE USED FOR ELEMENTS 1 WITH THREE DIRECT STRESS COMPONENTS' CALL XIT ENDIF open(400,file='D:\test.txt') C ELASTIC PROPERTIES EMOD=PROPS(1) ENU=PROPS(2) EBULK3=EMOD/(1-2*ENU) EG2=EMOD/(1+ENU) EG=EG2/2 EG3=3*EG ELAM=(EBULK3-EG2)/3 write(400,*) 'temp=',temp C ELASTIC STIFFNESS C DO K1=1, NDI DO K2=1, NDI DDSDDE(K2, K1)=ELAM END DO DDSDDE(K1, K1)=EG2+ELAM

ABAQUS用户子程序

当用到某个用户子程序时,用户所关心的主要有两方面:一是ABAQUS提供的用户子程序的接口参数。有些参数是ABAQUS传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是需要用户自己定义的,例如F。二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用的时间是不同的。有些是在每个STEP的开始,有的是STEP结尾,有的是在每个INCREMENT的开始等等。当ABAQUS 调用用户子程序是,都会把当前的STEP和INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就会有更深的了解。 (子程序中很重要的就是要知道由abaqus提供的那些参量的意义,如下) 首先介绍几个子程序: 一.SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, JLTYP,SNAME) 参数: 1.F为用户定义的是每个积分点所作用的荷载的大小; 2.KSTEP,KINC为ABAQUS传到用户子程序当前的STEP和INCREMENT值;3.TIME(1),TIME(2)为当前STEP TIME和INCREMENT TIME的值;4.NOEL,NPT为积分点所在单元的编号和积分点的编号; 5.COORDS为当前积分点的坐标; 6.除F外,所有参数的值都是ABAQUS传到用户子程序中的。 功能: 1.荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。 2.用户可以从其他程序的结果文件中进行相关操作来定义积分点F的大小。 例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP变化而变化的。SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME) INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAME PARAMETER (PLOAD=100.E4) IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小 P=PLOAD ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小 P=COORDS(1)*PLOAD !施加在积分点的荷载P是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小 P=COORDS(1)**2*PLOAD ELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小 P=COORDS(1)**3*PLOAD ELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小 P=COORDS(1)**4*PLOAD END IF RETURN END UMAT 子程序具有强大的功能,使用UMAT 子程序: (1) 可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩

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 )而已。当然,最基本的一些概念和知识还是要具备的,比如: 应力(stress),应变(strain )及其分量; volumetric part 和deviatoric part ;模量(modul us )、泊松比(Poisson’s ratio)、拉梅常数(Lame constant);矩阵的加减乘除甚至求逆;还有一些高等数学知识如积分、微分等。 3、UMAT 的基本任务? 我们知道,有限元计算(增量方法)的基本问题是: 已知第n 步的结果(应力,应变等)n σ,n ε,然后给出一个应变增量1+n d ε,计算新的应力1+n σ。UMAT 要完成这一计算,并要计算Jacobian 矩阵DDSDDE(I,J) =εσΔ?Δ?/。σΔ是应力增量矩阵(张量或许更合适),εΔ是应变增量矩阵。DDSDDE(I,J) 定义了第J 个应变分量的微小变化对

ABAQUS用户子程序

ABAQUS用户子程序 转自https://www.doczj.com/doc/ca12917980.html, 当用到某个用户子程序时,用户所关心的主要有两方面:一是ABAQUS提供的用户子程序的接口参数。有些参数是ABAQUS传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是需要用户自己定义的,例如F。二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用的时间是不同的。有些是在每个STEP的开始,有的是STEP结尾,有的是在每个INCREMENT的开始等等。当ABAQUS调用用户子程序是,都会把当前的STEP和INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就会有更深的了解。 (子程序中很重要的就是要知道由abaqus提供的那些参量的意义,如下) 首先介绍几个子程序: 一.SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, JLTYP,SNAME) 参数: 1. F为用户定义的是每个积分点所作用的荷载的大小; 2. KSTEP,KINC为ABAQUS传到用户子程序当前的STEP和INCREMENT值; 3. TIME(1),TIME(2)为当前STEP TIME和INCREMENT TIME的值; 4. NOEL,NPT为积分点所在单元的编号和积分点的编号; 5. COORDS为当前积分点的坐标; 6.除F外,所有参数的值都是ABAQUS传到用户子程序中的。 功能: 1.荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。 2.用户可以从其他程序的结果文件中进行相关操作来定义积分点F的大小。 例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP变化而变化的。SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME) INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER80 SNAME PARAMETER (PLOAD=100.E4) IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小 P=PLOAD ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小 P=COORDS(1)PLOAD !施加在积分点的荷载P是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小 P=COORDS(1)2PLOAD ELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小 P=COORDS(1)3PLOAD ELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小 P=COORDS(1)4PLOAD

ABAQUS子程序UMAT的应用

A B A Q U S子程序U M A T 的应用 This model paper was revised by the Standardization Office on December 10, 2020

目录

摘要 ABAQUS软件功能强大,特别是能够模拟复杂的非线性问题,它包括了多种材料本构关系及失效准则模型,并具有良好的开放性,提供了若干个用户子程序接口,允许用户以代码的形式来扩展主程序的功能。 本文主要研究了ABAQUS用户子程序UMAT的开发方法,采用FORTRAN语言编制了各向同性硬化材料模型的接口程序,研究该类材料的弹塑性本构关系极其实现方法。 本文紧紧围绕UMAT的二次开发技术,首先对其接口原理做了详细介绍,然后针 对非线性有限元增量理论中的常刚度法和切线刚度法的算法理论做了深入的剖析,推导出了常刚度法和切线刚度法的算法理论的具体表达式,然后分别编制了两种算法的UMAT程序,最后建立了一个具体的验算模型,通过与ABAQUS自带弹塑性本构关系的计算结果相比较,验证两者的正确性。 本文还对常刚度法和切线刚度法得算法效率做了对比,得出了在非线性程度较高 时切线刚度法效率高于常刚度法的结论。 关键字: ABAQUS、UMAT、有限元、材料非线性、FORTRAN、切线刚度 ABSTRACT ABAQUS software powerful, especially to simulate complex non-linear problem, which includes a wide range of material constitutive model and failure criteria, and has a good open, providing a number of user subroutine interface that allows users to code form to expand the functions of the main program.

ABAQUS子程序USDFLD

Abaqus/CAE User's Manual 12.8.5 Defining field variables at a material point (在一个材料点定义场变量) In Abaqus/Standard you can introduce dependence on solution variables with user subroutine USDFLD. This subroutine allows you to define field variables at a material point as functions of time, of any of the available material point quantities listed in “Abaqus/Standard output variable identifiers,” Section 4.2.1 of the Abaqus Analysis User's Manual, and of material directions. Material properties defined as functions of these field variables may, thus, be dependent on the solution. User subroutine USDFLD is called at each point for which the material definition includes a reference to the user subroutine. (在ABAQUS里面,你能够用子程序USDFLD来求解变量。USDFLD允许你将一个材料点上的场变量定义为时间函数,能够使用到的材料点在用户使用手册4.2.1节中“abaqus输出变量的标识码”中被提及到。材料的特性被定义作为场变量的函数,因此依赖于求解方法。) (在每个被定义材料性能的点USDFLD能够被调用) To include a reference to user subroutine USDFLD in a material definition: 1.From the menu bar in the Edit Material dialog box, select General User Defined Field. (For information on displaying the Edit Material dialog box, see “Creating or editing a material,” Section 12.7.1.) 2.Click OK to close the Edit Material dialog box. Alternatively, you can select another material behavior to define from the menus in the Edit Material dialog box (see “Browsing and modifying material behaviors,” Section 12.7.2, for more information). Abaqus/CAE User's Manual (子程序USDFLD在材料中的定义过程可参考下面:

abaqus材料子程序

各向同性材料损伤本构模型 SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, + RPL,DDSDDT,DRPLDE,DRPLDT, + STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME, + NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT, + CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) INCLUDE 'ABA_PARAM.INC' CHARACTER*80 CMNAME DIMENSION STRESS(NTENS),STATEV(NSTATV), + DDSDDE(NTENS,NTENS),DDSDDT(NTENS), + DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS), + TIME(2),PREDEF(1),DPRED(1),PROPS(NPROPS), + COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3) DIMENSION STRANT(6),TSTRANT(4),PT(1) DIMENSION OLD_STRESS(6) DIMENSION DOLD_STRESS(6),D_STRESS(6) DIMENSION C(6,6),CD(6,6),DSTRESS(6),BSTRESS(6),ROOT(3), + DFMNDE(6),DDMDE(6),DCDDM(6,6),ATEMP1(6), ATEMP2(6) PARAMETER (ZERO=0.D0,ONE=1.D0,TWO=2.D0,FOUR=4.D0,HALF = 0.5D0) C start C IF (NPROPS.LT.2) THEN C WRITE(7,*) '** ERROR: UMAT REQUIRES *NPROPS=2' C STOP C EN D IF E11 =PROPS(1) V12 =PROPS(2) G12 =PROPS(1)/TWO/(ONE+PROPS(2)) C Critical values of stresses XT=PROPS(3) XC=PROPS(4) XS=PROPS(5) GX=PROPS(6) !Fracture energy in matrix ETA=0.001 C Current strain DO I = 1, NTENS STRANT(I) = STRAN(I) + DSTRAN(I) END DO C Stiffness DO I = 1, 6 DO J = 1, 6 C(I,J)=ZERO END DO END DO ATEMP = (1+V12)*(1-TWO*V12) C(1,1) = E11*(1-V12)/ATEMP C(2,2) = E11*(1-V12)/ATEMP C(3,3) = E11*(1-V12)/ATEMP C(1,2) = E11*V12/ATEMP

ABAQUS用户子程序

ABAQUS用户子程序 ABAQUS/Standard subroutines: 1.CREEP: Define time-dependent, viscoplastic behavior (creep and swelling). 定义和时间相关的、粘塑性的运动(蠕变和膨胀) 2. DFLOW: Define nonuniform pore fluid velocity in a consolidation analysis. 在压实分析中,定义非均匀孔隙流速度 3. DFLUX: Define nonuniform distributed flux in a heat transfer or mass diffusion analysis. 在热传递和质量扩散分析中,定义非均匀的分布流量 4. DISP: Specify prescribed boundary conditions. 指定规定的边界条件 5. DLOAD: Specify nonuniform distributed loads. 指定非均匀的分布荷载 6. FILM: Define nonuniform film coefficient and associated sink temperatures for heat transfer analysis. 对热传递分析指定非均匀的膜层散热系数和联合的散热器温度 7. FLOW: Define nonuniform seepage coefficient and associated sink pore pressure for consolidation analysis. 对压实分析定义非均匀的渗流系数和渗入孔隙压力 8. FRIC: Define frictional behavior for contact surfaces. 对接触面定义摩擦 9. GAPCON: Define conductance between contact surfaces or nodes in a fully coupled temperature-displacement analysis or pure heat transfer analysis. 在一个完全耦合的温度—置换分析或者是纯热传递分析中,定义接触面或节点间的导热系数。 10. GAPELECTR: Define electrical conductance between surfaces in a coupled thermal-electrical analysis. 在耦合热电分析中,定义表面间的导电系数 11. HARDINI: Define initial equivalent plastic strain and initial backstress tensor. 定义初始等效应变和初始反应力张量 12. HETVAL: Provide internal heat generation in heat transfer analysis. 在热传递分析中提供初始热 13. MPC: Define multi-point constraints. 定义多点约束 14. ORIENT: Provide an orientation for defining local material directions or local directions for kinematic coupling constraints or local rigid body

abaqus1用户材料子程序

19 ABAQUS用户材料子程序(UMAT) 虽然ABAQUS为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题;但是现实世界毕竟十分复杂,ABAQUS不可能把所有可能出现的问题都包含进去。所以ABAQUS提供了大量的用户子程序(User Subroutine)。用户子程序允许用户在找不到合适模型的情况下自行定义符合自己问题的模型。这些用户子程序涵盖了建模从载荷到单元的几乎各个部分。 ABAQUS为用户提供的这个接口,允许用户通过自定义的子程序定制ABAQUS,以实现特定的功能。用户子程序具有以下的功能和特点:(1)如果ABAQUS的一些固有选项模型功能有限;用户子程序可以提高ABAQUS中这些选项的功能;(2)通常用户子程序是用FORTRAN语言的代码写成;(3)它可以以几种不同的方式包含在模型中;(4)由于它们没有存储在restart文件中,如果需要的话,可以在重新开始运行时修改它;(5)在某些情况下它可以利用ABAQUS允许的已有程序。 要在模型中包含用户子程序,可以利用ABAQUS执行程序,在abaqus执行程序中应用user选项指明包含这些子程序的FORTRAN源程序或者目标程序的名字。 提示:ABAQUS的输入文件除了可以通过ABAQUS/CAE的作业模块中提交运行外,还可以在ABAQUS Command窗口中输入ABAQUS执行程序直接运行: ABAQUS job=输入文件名 user=用户子程序的Fortran文件名 ABAQUS/Standard和ABAQUS/Explicit都支持用户子程序功能,但是他们所支持的用户子程序种类不尽相同,读者在需要使用时请注意查询手册。 在接下来的最后两章里,我们将讨论两种常用的用户子程序——用户材料子程序和用户单元子程序。 本章将通过在ABAQUS/Standard中创建Johnson-Cook的材料模型,对编写Standard 的用户材料子程序UMAT进行一个简单介绍。ABAQUS/Explicit中的用户材料子程序VUMAT的思想与之相似,但是由于隐式和显式两种方法本身的差异,它们之间也有一些不同,请读者在自己具体使用前首先仔细查阅ABAQUS手册中的相关内容。

ABAQUS中Fortran子程序调用方法—自己总结

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for 或.f)。 第二种方法: 1. 建立工作目录 2. 将Abaqus安装目录\\site下的或拷贝到工作目录,并改名为; 3. 将编译的fortran程序拷贝到工作目录; 4. 将.obj文件拷贝到工作目录; 5. 建立好输入文件.inp; 6. 运行abaqus job=inp_name user=fortran name即可。 以下是网上摘录的资料,供参考: 用户进行二次开发时,要在命令行窗口执行下面的命令: abaqus job=job_name user=sub_name ABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库和动态库,还有其它一些临时文件,而它的主程序(如和等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。这种运行机制与ANSYS、LS-DYNA、marc等都不同。 这些生成的临时文件要到文件夹C:\Documents and Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。 1 子程序格式(程序后缀是.f; .f90; .for;.obj) 答:我试过,.for格是应该是不可以的,至少和版本应该是不行,其他的没用过,没有发言权。 在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for (.f,.f90应该都不行的,手册上也有讲过),只有在文件没有找到的情况下,才会去搜索,如果两者都没有,就会报错误信息。 如果username包括扩展名for或obj,那么就根据各自的扩展名ABAQUS会自动选择进行操作。 2 CAE中如何调用Command下如何调用 答:CAE中在creat job的job manager中的general中可以指定子程序; Command下用命令:abaqus j=jobname user=userfilename(无后缀); 3 若有多个子程序同时存在,如何处理 答:将其写在一个文件中即可,然后用一个总的子程序调用(具体参见手册) 4 我对VF不是很熟,是否可以用VC,C++编写子程序

abaqus中UMAT子程序编写方法

UMAT User subroutine to define a material's mechanical behavior. Product: Abaqus/Standard Warning: The use of this subroutine generally requires considerable expertise. You are cautioned that the implementation of any realistic constitutive model requires extensive development and testing. Initial testing on a single-element model with prescribed traction loading is strongly recommended. References ?“User-defined mechanical material behavior,” Section 25.7.1 of the Abaqus Analysis User's Manual ?“User-defined thermal material behavior,” Section 25.7.2 of the Abaqus Analysis User's Manual ?*USER MATERIAL ?“SDVINI,” Section 4.1.11 of the Abaqus Verification Manual ?“UMAT and UHYPER,” Section 4.1.21 of the Abaqus Verification Manual Overview User subroutine UMAT: ?can be used to define the mechanical constitutive behavior of a material; ?will be called at all material calculation points of elements for which the material definition includes a user-defined material behavior; ?can be used with any procedure that includes mechanical behavior; ?can use solution-dependent state variables; ?must update the stresses and solution-dependent state variables to their values at the end of the increment for which it is called; ?must provide the material Jacobian matrix, , for the mechanical constitutive model; ?can be used in conjunction with user subroutine USDFLD to redefine any field variables before they are passed in; and

21ABAQUS用户材料子程序_1502407

21 ABAQUS用户材料子程序(UMAT) 虽然ABAQUS为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题;但是实际问题毕竟非常复杂,ABAQUS不可能直接求解所有可能出现的问题。所以ABAQUS提供了大量的用户自定义子程序(User Subroutine),允许用户在找不到合适模型的情况下自行定义符合自己问题的模型。这些用户子程序涵盖了建模、载荷到单元的几乎各个部分。 用户子程序具有以下的功能和特点:(1)如果ABAQUS的一些固有选项模型功能有限,用户子程序可以提高ABAQUS中这些选项的功能;(2)通常用户子程序是用FORTRAN语言的代码写成;(3)它可以以几种不同的方式包含在模型中;(4)由于它们没有存储在restart文件中,如果需要的话,可以在重新开始运行时修改它;(5)在某些情况下它可以利用ABAQUS允许的已有程序。 要在模型中包含用户子程序,可以利用ABAQUS执行程序,在执行程序中应用user 选项指明包含这些子程序的FORTRAN源程序或者目标程序的名字。 提示:ABAQUS的输入文件除了可以通过ABAQUS/CAE的作业模块中提交运行外,还可以在ABAQUS Command窗口中输入ABAQUS执行程序直接运行: ABAQUS job=输入文件名 user=用户子程序的Fortran文件名 ABAQUS/Standard和ABAQUS/Explicit都支持用户子程序功能,但是他们所支持的用户子程序种类不尽相同,读者在需要使用时请注意查询手册。 在接下来的两章里,我们将讨论两种常用的用户子程序——用户材料子程序和用户

ABAQUS子程序

ABAQUS用户子程序 当用到某个用户子程序时,用户所关心的主要有两方面:一是ABAQUS提供的用户子程序的接口参数。有些参数是ABAQUS传到用户子程序中的,例如SUBROUTINE DLOAD中的KSTEP,KINC,COORDS;有些是需要用户自己定义的,例如F。二是ABAQUS何时调用该用户子程序,对于不同的用户子程序ABAQUS调用的时间是不同的。有些是在每个STEP的开始,有的是STEP结尾,有的是在每个INCREMENT的开始等等。当ABAQUS调用用户子程序是,都会把当前的STEP和INCREMENT利用用户子程序的两个实参KSTEP和KINC传给用户子程序,用户可编个小程序把它们输出到外部文件中,这样对ABAQUS何时调用该用户子程序就会有更深的了解。 (子程序中很重要的就是要知道由abaqus提供的那些参量的意义,如下) 首先介绍几个子程序: 一.SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, JLTYP,SNAME) 参数: 1.F为用户定义的是每个积分点所作用的荷载的大小; 2.KSTEP,KINC为ABAQUS传到用户子程序当前的STEP和INCREMENT值; 3.TIME(1),TIME(2)为当前STEP TIME和INCREMENT TIME的值; 4.NOEL,NPT为积分点所在单元的编号和积分点的编号; 5.COORDS为当前积分点的坐标; 6.除F外,所有参数的值都是ABAQUS传到用户子程序中的。 功能: 1.荷载可以被定义为积分点坐标、时间、单元编号和单元节点编号的函数。 2.用户可以从其他程序的结果文件中进行相关操作来定义积分点F的大小。 例1:这个例子在每个积分点施加的荷载不仅是坐标的函数,而且是随STEP变化而变化的。SUBROUTINE DLOAD(P,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS, 1 JLTYP,SNAME) INCLUDE 'ABA_PARAM.INC' C DIMENSION TIME(2),COORDS(3) CHARACTER*80 SNAME PARAMETER (PLOAD=100.E4) IF (KSTEP.EQ.1) THEN !当STEP=1时的荷载大小 P=PLOAD ELSE IF (KSTEP.EQ.2) THEN !当STEP=2时的荷载大小 P=COORDS(1)*PLOAD !施加在积分点的荷载P是坐标的函数 ELSE IF (KSTEP.EQ.3) THEN !当STEP=3时的荷载大小 P=COORDS(1)**2*PLOAD ELSE IF (KSTEP.EQ.4) THEN !当STEP=4时的荷载大小 P=COORDS(1)**3*PLOAD ELSE IF (KSTEP.EQ.5) THEN !当STEP=5时的荷载大小 P=COORDS(1)**4*PLOAD END IF RETURN END UMAT 子程序具有强大的功能,使用UMAT 子程序:

相关主题
文本预览
相关文档 最新文档