很广的选择,除了通常的云图,等值线和动画显示之外,还可以用列表,曲线(包括部分常用运算)等其他常用工具来完成对结果数据的处理。该模块的许多独特功能与特点,例如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. ABAQUS的二次开发平台
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. ABAQUS的二次开发语言
ABAQUS的二次开发语言主要有3种:Python,FORTRAN,C++
Python语言主要用于GUI开发,FORTRAN语言主要用于用户子程序开发,而c++语言主要专注于其他高级开发部分。
本文主要是针对用户子程序的开发,所以采用FORTRAN语言,下面简要介绍一下该语言极其特点:
FORTRAN语言是世界上第一个被正式推广使用的高级语言[6]。它是1954年被提出来的,1956年开始正式使用,至今已有三十多年的历史,但仍历久不衰,它始终是数值计算领域所使用的主要语言。
FORTRAN语言是Formula Translation的缩写,意为“公式翻译”。它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。
FORTRAN语言问世以来,根据需要几经发展,先后推出了不同的版本,主要版本有FORTRAN 77,FORTRAN 90,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
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
8
3.2. UMAT注意事项
ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照Fortran语法, 用户自己编写的代码。它是一个独立的程序单元,可以独立的被存储和编译,也能 被其它程序单元引用,因此,利用它可带回大量数据供引用程序使用,也可以用它 来完成各种特殊的功能。它的一般结构形式是:
SUBROUTINE S(x1,x2,??,xn)
INCLUDE‘ABA_PARAM.INC’(用于ABAQUS/Standard用户子程序中) OR INCLUDE‘VABA_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对话框中选择用户子程序所在的文件即可;另外是在ABAQUS.COMMAND中运行,语法如下:
abaqus job=job-name user={source-file|object-file}
编制用户子程序时应注意
(1)用户子程序相互之间不能调用,但可以调用用户自己编写的Fortran子程序和ABAQUS应用程序。ABAQUS应用程序必须由用户子程序调用。当用户编写Fortran子程序时,建议子程序名以K开头,以免和ABAQUS内部程序冲突。
(2)当用户在用户子程序中利用OPEN打开外部文件时,要注意以下两点:一是设备号的选择是有限制的,只能取15~18和大于100的设备号,其余的都已被ABAQUS占用;二是用户需提供外部文件的绝对路径而不是相对路径。
9