ABAQUS-二次开发资料-UMAT

ABAQUS-二次开发资料-UMAT
ABAQUS-二次开发资料-UMAT

各个楼层及内容索引

2-------------------------------------什么是UMAT

3-------------------------------------UMAT功能简介

4-------------------------------------UMAT开始的变量声明

5-------------------------------------UMAT中各个变量的详细解释

6-------------------------------------关于沙漏和横向剪切刚度

7-------------------------------------UMAT流程和参数表格实例展示

8-------------------------------------FORTRAN语言中的接口程序Interface

9-------------------------------------关于UMAT是否可以用Fortran90编写的问题

10-17--------------------------------Fortran77的一些有用的知识简介

20-25\30-32-----------------------弹塑性力学相关知识简介

34-37--------------------------------用户材料子程序实例JOhn-cook模型压缩包下载

38-------------------------------------JOhn-cook模型本构简介图

40-------------------------------------用户材料子程序实例JOhn-cook模型完整程序+david详细注解[欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正确,希望共同探讨,以便更正,带"?"部分,还望各位大师\同仁指教]

1什么是UMAT???

1.1 UMAT功能简介!!![-摘自庄茁老师的书

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

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

功能。ABAQUS软件2003年度用户年会论文集

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

的任何单元;

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

的变化率。

(4)可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传

递到UMAT中场变量的数值。

1.2 UMAT开始的变量声明

由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为:

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,

1 RPL,DDSDDT,DRPLDE,DRPLDT,

2STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME

3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

C

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

-------------------------------此处,看来是将用户定义材料属性的fortran程序编入

RETURN------------------这是返回值

END------------------------结束

UMAT中各个变量的详细解释[凡是-注明david的,都是我自己猜的,仅供参考]

DDSDDE (NTENS ,NTENS)

是一个NTENS[Number of the Tensions----david]维的方阵,称作雅可比矩阵,应力增量/应变增量的偏导数,DDSDDE (I ,J)表示增量步结束时第J个应变分量的改变引起的第I个应力增量的变化!雅可比是一个对称矩阵,除非在“*USER MATERIAL”语句中加"UNSYMM"参数

STRESS (NTENS)

应力张量矩阵,对应NDI[Number of the Direct Components--david]个直接分量和NSHR[Number of the shear Components-david]个剪切分量.在增量步的开始,应力张量矩阵中的数值通过UMAT和主程序之间的接口传递到UMAT中,在增量步的结束,UMAT将对应力张量矩阵更新,即[return].对于包含刚体转动的有限应变问题,一个增量步条用UMAT之前就已经对应力张量进行了刚体转动,因此在UMAT中只需处理应力张量的共旋部分-------这部分我没看明白,敬请高手指点.UMAT中应力张量的度量为柯西(真实)应力

STATEV (NSTATEV)[STATE VARIABLES (Number of the State Variables)]

用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT中。也可在子程序USDFLD或UEXPAN中先更新数据,然后增量步开始时将更新后的数据传递到UMAT中。在增量步的结束必须更新状态变量矩阵中的数据。

和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。-----不懂,请高手指教状态变量矩阵的维数NATATEV,等于关键字“*DEPVAR”定义的数值。状态变量矩阵的维数通过ABAQUS输入文件中的关键字“*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。

材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。

PROPS (NPROPS)

材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。

SSE,SPD,SCD

分别定义每一增量步的弹性应变能[Elastic Strain Energy],塑性耗散[Plastic Dissipation]和蠕变耗散[Creep Dissipation]。它们对计算结果没有影响,仅仅作为能量输出。

STRAN (NTENS):应变矩阵;

DSTRAN (NTENS):[D--大抵代表Deta,增量的意思-david]应变增量矩阵;

DTIME:增量步的时间增量;

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

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

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

1.3关于沙漏刚度控制和横向剪切刚度

使用UMAT时需要注意单元的沙漏控制刚度和横向剪切刚度。通常减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的弹性性质定义的。这些刚度基于材料初始剪切模量的值,通常在材料定义中通过“*ELASTIC”选项定义。但是使用UMAT的时候,ABAQUS对程序输入文件进行预处理的时候得不到剪切模量的数值。所以这时候用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。

------------

一个问题:得不到剪切模量的数值

解决方案:用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度

1.4关于UMAT的流程图和参数表格实例

跟大家说说所谓的接口程序Interface--FORTRAN的知识

在Fortan语言中,主调程序和被调程序是分别编译的.由于Fortran90对过程的许多功能做了扩充,有些

状[assumed-shape]数组,或可选变元,或含键盘输入的参数,就需要interface接口块说明.一般来讲,在Fortran90程序之间需要提供interface块有三种方法:

1.将interface接口块直接写入调用程序,并复制被调用程序的参数列表这种方法简单易用,但也相应增加了维护代码的工作量,因为只要被调用程序的参数列表发生变化,就必须相应改变interface接口块和调用[call]语句.

2.可以将一个软件包中所有程序的interface块写入一个模块中,该模块被软件包中的所有程序使用.这样做的优点是只需一个模块来检查interface定义,缺点是仍需对此模块和调用语句进行维护.

3.Fortran90编译器可在contains语句后自动提供过程之间的interface块,这种interface块可用于使用模块的任何程序.

建议在同一个软件包中使用2\3的形式,在调用软件包的入口程序时采用1\2的形式!

[是不是在UMAT中,我们所编译的带接口的Fortran程序为调用程序,原ABAQUS主程序为被调用程序,调用程序中的第一部分我们先复制被调入程序的参数列表????????似乎和ABAQUS主程序调用UMAT 有些相反了???????不过个人认为interface作为一个接口块,在Fortran语法中应该放在主调程序中,且复制被调程序的参数列表.而UMAT的参数变量的声明,只不过是为了和ABAQUS使用一致的变量格式,当Fortran程序处理完材料的本构定义之后再以这一致的形式将变量值返回到ABAQUS主程序中吧] 2 关于UMAT用Fortran90可不可以的问题

在论坛上搜索了关于这个问题,某位高手说是可以的,只要你自己装的Fortran编译器能成功编译你的Fortran90程序即可,个人认为也是如此,不过我还没有证明过!

2.1关于Fortran77的一些有用的简介[1]:

Fortran77的基本结构:

1.一个Fortran源程序由一个或者多个程序单位组成,每个独立的程序单位以'end'语句结束

2.每个程序单位包括若干行[不能一行写多条语句,但是可以一个语句写成行];分为语句行[执行语

句行和非执行语句]和非语句行[注释行]

源程序的书写格式:

1.不区分大小写:每行只能80列以内,并把80列分为四个区

2.1-5列:标号区[1-5位整数;第一列为'*'或者'C'时,为注释行]

3.第6列,续行标志区[非空格或非0;最多19个续行]

4.7-72列:语句区[书写语句:一行只能写一个语句]

5.73-80列:语句注释区[一般做编号注释]

程序的编辑与运行:

1.创建源程序文件并编写源程序

2.编译并连接源文件

3.运行程序编译生成的可执行文件

常量:

六种

1.整型常量[Integer]4位:正\负整数和0

2.实型常量[Real]4位:小数和指数形式

3.双精度常量[Double precision]8位

4.复型常量[Complex]8位

5.逻辑性常量[Logical]4位

6.字符型常量[Character]1位

1.第一个字符是字母第一个字符后可跟1-5个字母或者数字

2.不区分大小写

3.空格不起作用

4.允许变量名与语言中具有特定含义的字同名,但尽量不适用

5.尽量"见名知义"

变量类型

不同的变量类型用来存放不同类型的常量数据.变量相应的也有六种;变量在使用前必须首先对其进行类型说明,三种说明方法:

按优先级别排列

1. 类型说明语句:类型变量名列表,多个变量名之间用逗号隔开,如

REAL A,B,C

DOUBLE PRECISION X,Y,Z[或者REAL*8 X,Y,Z]

CHARACTER*5 [缺省字符长度5 ] STR1,STR2*8,STR3*19

[此处,STR1未指明长度,则默认使用缺省长度5;STR2的长度为8;STR3的长度为19]

2. IMPLCIT语句:IMPLICIT 类型[字母表],类型[字母表],....

如: IMPLICIT REAL(A-D),INTERGER(I-M),DOUBLE PRECISION (X,Z)

3. I-N规则:Fortran规定,不加说明的情况下,I-N为整型,其他都为实型

几点说明

类型语句说明位于所有可执行语句的前面;IMPLICIT语句位于最前面;

IMPLICIT NONE取消IMPLICIT说明和I-N规则,所有的变量必须显式说明;只在本程序单位有效. 2.2关于Fortran77的一些有用的简介[2]:

算术表达式:

1.运算符: +, -, *, /, **

2.优先级: ( ), ** , *\ / , +\-

3.书写问题

1.* 不能省略

2.括号不分大小写,成对出现

3.多次乘方,按'先右边后左边'处理

4.运算符不能连续出现,要用小括号隔开

5.运算顺序 )---->函数---->**----->*,/----->+,-

6.运算中的类型问题:运算类型相同:结果仍为原类型;不同,则自动转换成同一类型

7.误差问题:

1.溢出:超出有效数字范围-------->解决:很大或者很小的数用实型的指数表示

2.误差:由于有效数字的位数限制,实型数运算存在误差-------->解决:转换成双精度

型或者避免因为书写不当造成有效数字的丢失

简单输出\输入语句:

输入\输出三要素:对象[哪些数据];格式;设备.

输出语句

输出语句的分类:格式输出'表控格式输出[系统标准格式];无格式输出[二进制]

补空格;

2.实数的表控输出格式:规定每个实数占17列,打印在右端,左补空格,小数部分占7列;[当

实数的绝对值>=10**7或<1时,按标准的指数格式输出,共占15列,指数4列,小数6列

2.表控格式输出语句:

1.print*,<输出表列>: print*,56.8,125

2.write(*,*)<输出表列>

输入语句

输入\输出三要素:对象;格式;设备.

分类:同上

1.表控输入语句

1.自由格式输入-->语句:read*,<输入表列>;read(*,*)<输入表列>

2.输入数据以逗号或者空格作为间隔

3.变量名称为输入表

4.输入的数据应和输入表的变量个数\类型\次序严格地一一对应;少了,程序停止,等待继续

输入;多了,程序继续进行,多余的不起作用;较多的数据可以几个一组,回车,再输入几个一

组,回车...

5.重复数据,可以7*3---->7,7,7

6.每一个read(*,*)和write(*,*)语句从一个新的记录[以回车结束的一批输入\输出数据]开

始读数\输出

1.例如:read(*,*) A,B,C

2. read(*,*) D,I,J

3.输入: 2.3,-63.5[回车]

4. 6.4,91.0[回车]

5.5,8[回车]

6.结果: A=2.3,B=-63.5,C=6.4,

7.[从新记录开始读数]

8.D=5.0,I=8,J未被赋值

PARAMETER语句

作用:将程序中经常用到的参数或字符串定义成一个符号常量,其值不可改变.

语句:parameter(p1=c1,p2=c2,...,pn=cn)

注意:

1.符号常量的命名规则与变量名相同,但在程序中其值不可改变,也不能赋值;

2.符号变量也有类型,可用前面的三种类型说明方法说明类型;

3.参数语句是非执行语句,位于所有可执行语句的前面,单位与类型说明语句的后面;

4.一条语句可以定义多个符号常量;

5.优点:方便修改程序

END,STOP,PAUSE语句

END语句:结束标志,有且仅有一条

PAUSE[n]语句:暂定执行;用于调试程序,n可以是一个字符串或不超过5位的数

STOP[n]语句:停止运行语句;用于调试程序,n可以是一个字符串或不超过5位的数

2.3关于Fortran77的一些有用的简介[3]:

逻辑运算和选择结构

2.关系运算符:

1..GT.[greater than] >

2..GE.[greater than or equal to] >=

3..LT.[limiter than] <

4..LE.[limiter than or equal to] <=

5..EQ.[equal to] =

6..NE.[not equal to] ≠

3.一般形式:<算术量或者算术表达式><关系运算符><算术量或者算术表达式>

4.运算结果:逻辑值:真[.TRUE.]\假[.FALSE.]

5.运算顺序:算术运算>关系运算

?逻辑表达式

1.运算符:

1..and.

2..or.

3..not.

4..eqv.逻辑等

5..neqv.逻辑不等

2.一般形式:<逻辑变量\逻辑常量\关系表达式><逻辑运算符><逻辑变量\逻辑常量\关系表

达式>

3.结果:逻辑值:真[.TRUE.]\假[.FALSE.]

4.运算顺序:算术运算--->关系运算--->逻辑运算

5.逻辑运算优先级:.not.--->.and.--->.or.--->.eqv.--->.neqv.

关于Fortran77的一些有用的简介[4]:

IF类选择结构

?用块IF实现选择结构:三种典型形式

1.基本形式

1.IF(条件) THEN (块IF语句)

2.块1 (THEN块)

3.ELSE (ELSE语句)

4.块2 (ELSE块)

5.ENDIF (ENDIF语句)

6.说明:IF...THEN语句为块IF结构的入口语句;ENDIF语句为出口语句,必须一一对应,

配对使用

2.简单结构

1.IF(条件) THEN

2.块

3.ENDIF

4.说明:没有else块

3.嵌套结构

1.IF( ) THEN

2.块1

3.ELSE IF( ) THEN

4.块2

5....

6.ELSE IF( ) THEN

?说明

1.I为循环变量,S1为语句标号,是本程序单位中另一可执行语句的标号;

2.步长可以省略,缺省值=1;

3.循环初值[E1],终值[E2]和步长[E3]都可以是常量\变量\表达式;

4.由于实数在内存中存储的误差,I,E1,E2,E3尽可能用振型量

5.E1,E2,E3都可正可负,E1,E2,可为0,但是E3不能为0.

?具体执行过程

1.执行DO语句,首先计算表达式E1,E2,E3的值,若他们的类型与循环变量I不一致,则自动

3.计算循环次数:R=MAX0(E2-E1+E3)/E3,MAX0表示从多个整型变量中取最大的一个;

4.检查循环次数:若R=0则不执行循环体内的语句,跳出循环;R≠0 则执行循环体内的语句

5.执行循环终端语句:I=I+E3,即是循环变量获得一个新值,而循环次数R自动减1;

6.返回步骤4,继续执行,直到R=0.

?CONTINUE语句

循环终端语句必须是可执行语句;那么,这种作为循环终端的语句具有双重作用:一是作为循环终端的标志;而是要完成自身的功能.因此影响了程序的可读性.FORTRAN用一个专门的语句作为DO循环的终端语句,即CONTINUE语句.它自身没有任何功能.

?一些规定

1.循环变量在循环体内只能被引用,不能被赋值;

2.在执行DO循环体期间,E1,E2,E3的值不能被改变,因为他们决定了循环的次数

3.离开DO循环后,循环变量可以在循环体外被引用,它的值为脱离循环时最后一次

被赋的值;

4.程序中用到转移语句,规定:只允许从循环体内----->体外;反之不行;

5.循环终端语句必须是除GOTO,块IF,ENDIF,END和STOP语句外的任何可执行语句

?DO循环的嵌套

在一个DO循环中还可以包含一个或者多个完整的DO循环,这就是DO循环的嵌套.

一般形式:

DO 10 I=1,10

.

.

.

DO 20 J=1,10

.

.

.

20 CONTINUE

.

.

.

10 CONTINUE

说明:

?嵌套要完整,不能交叉

?循环变量的名字,规定:并列的循环:循环变量的名字可以相同;嵌套的循环:循环变量的名字不可以相同

?若多层循环的结束语句在同一个地方,可以共用一条CONTINUE语句

?控制转向语句的使用[体内----->体外]

当型循环的实现

在无法确定循环次数的情况下可以使用当型循环.当型循环是指执行循环体要依据实现给定的条件:当条件成立时执行循环,否则不执行.

?用DO-WHILE语句实现当型循环

一般形式:

DO S1 [,] WHILE(条件)

...

S1 <终端语句>

S1 IF(条件) THEN

GOTO S1

ENDIF

直到型循环的实现

所谓直到型循环,是指先执行循环体,再判断条件.如果条件为'假',继续执行循环体,直到条件为'真'时终止循环.

?用逻辑IF语句实现:

S1 循环体

IF(条件) GOTO S1

几种循环形式的关系和比较

?DO循环适用于已知循环次数的情况

?几种循环可以互换

DO循环:条件型循环[可用次数作为条件]

当型循环:直到型循环

当型:块IF语句(单边)+GOTO语句(先判断后执行)

直到型:逻辑IF语句+GOTO语句(先执行后判断)

?各种循环可以相互嵌套

2.4关于Fortran77的一些有用的简介[6]:

数据的输入和输出

数据输入\输出需要确定的三个基本要素:

输入\输出的设备

输入\输出的格式

输入\输出的数据

系统中隐含的输入\输出的设备为:键盘\显示器和打印机

[说明:####(设备,格式)数据列表,当设备显示为*,为默认设备输出,好像是显示器\或默认设备输入,键盘吧;格式为*,默认格式输出\输入-david]

有格式的输出

输出语句的一般形式:

WRITE (*,S1) <输出列表>

S1 FORMAT(格式说明)

或者

PRINT S1,<输出列表>

S1 FORMAT(格式说明)

格式说明符: 主要介绍:I,F,E,D,G,L,A,'(撇号),H,X,r(重复系数),/(斜杠)

I 编辑符(Integer)

其中:I表示整型输出,w为字段宽度,m表示输出数据的最少数字位数

注意:数据输出时,在指定的区域内向右靠齐;如果数据的实际位数大于指定的字段宽度w,则不输出数据,而在该区域内充满"*"号;当m大于数据的实际位数时,前面添0,若小于数据实际位数,则不起作用

F 编辑符(Fixed point number)

作用:用于实数的小数形式输出,一般形式:Fw.d

其中:F表示实数的小数形式输出;w为字段宽度;d为输出数据的小数位数

E 编辑符(IExponent)

作用:用于实数的指数形式输出,一般形式:Ew.d

其中:E表示实数的指数形式输出;w为字段宽度;d为数字部分的小数位数

注意:指数部分占4列,负号占1列,小数点前为0.如123.45--->0.12345E+03

D 编辑符(Double precision)

作用:用于双精度的指数形式输出,用法和E 编辑符相仿.一般形式w.d

G 编辑符

作用:由系统根据实际数据的大小来决定使用F编辑符还是E编辑符.一般形式:Gw.d

L 编辑符

作用:用于逻辑型数据的输出,一般形式w

其中表示整型输出,w为字段宽度

A 编辑符

作用:用于字符型数据的输出,一般形式:Aw或A

其中:A表示整型输出,w为字段宽度;若不指定,则表示按实际长度输出

' (撇号) 编辑符

作用:用于输出字符常量,即把撇号内的字符串原样输出.

注意:如果输出的字符中包含撇号,则用两个连续的撇号代表一个要输出的撇号

H 编辑符

作用:用于输出字符常量.一般形式:nH

其中:H表示输出字符常量;n为输出字符个数;str为输出的字符串 (较少使用)

X 编辑符

作用:用于输出空格.一般形式:nX

其中:X表示输出空格;n表示输出的空格数

重复系数r

在format语句中,如果出现几个(或者几组)相同的格式编辑符,则可以利用重复系数而只写一个(或者一组)编辑符.

反斜杠/编辑符

作用:结束本记录的输出,开始下一个记录的输出,通常指换行.

WRITE语句和FORMAT语句的相互作用

WRITE语句的输出变量个数与FORMAT语句的编辑符(不含撇号,H和X)个数可以相等,也可以不等;如果编辑符个数多,则剩余的编辑符不起作用;如果变量的个数多,则当编辑符用完后,重新使用该格式说明,当如果格式说明含带重复系数的编辑符组,则格式说明用完后,只有最右面一个带重复系数的编辑符组

(包含重复系数)及其右面的编辑符被重复使用.

可以有空格式说明,如FORMAT(),用于输出一个空行.

有格式的输入

有格式的输入语句

一般形式:

READ(*,S1) <输入列表>

S1 FORMAT(格式说明[由各种格式编辑符构成])

例如:

READ(*,100) A,B,C

100 FORMAT(F5.1,E12.2,F7.2)

END

键盘输入:_15.7_2345.67E+04_705.83enter

在PRINT\WRITE\READ语句中包含格式说明

例如: PRINT 100,K,Y

100 FORMAT(18,F7.2)

也可以写成: PRINT'(18,F7.2)',K,Y

关于Fortran77的一些有用的简介[7]:

数组

使用原则:"先声明,后使用"

说明方法:

?用类型说明语句(显式说明)

?用DIMENSION语句(隐式说明)

数组的说明和数组元素的引用

?用类型语句说明数组

1.一般形式: 类型说明数组说明符

2.其中:数组说明符的一般形式为:数组名(维数说明符,...)[维数说明符,由"下标下界:下标上

界"组成

3.例如:REAL X(1:10),W(1:2,1:3),K(10:20)或者INTEGER B(1:100),PY(0:2,0:3,0:5)

?用DIMENSION语句说明数组

1.在数组说明符中,维数说明符(下标)的个数成为数组的维数

2.维数说明符只能使用整型常量或者整型符号常量表达式:如

PARANETER(I=1,J=10) REAL KX(I:J+5)

3.维数说明符的下标下界为1时,可以省略.如:REAL X(1:10)---->REAL X(10)

4.数组说明语句必须写在所有可执行的语句之前.[属于非执行语句]

?数组元素的引用

1.一般形式:数组名(下标,...)

2.即要有确定的数组名和下标值,如XN(5),W(1,3),KW(1,2,3)

3.引用数组元素时,下标可用算术表达式,如果算术表达式的值为实行,则自动取整.

数组的逻辑结构和存储结构

逻辑结构:数组所表示的实际数据结构

存储结构:数组在机器内存储时的排列结构

?一维数组

逻辑结构:依次排列的一串数据

存储结构:一组连续存放的一列数据块

?二维数组

逻辑结构:一张二维数据表

存储结构:一组按列连续存放的数据块

?三维数组

逻辑结构:若干张二维数据表

存储结构:一组按页连续存放的数据块

数组的输入和输出

三种方式:用DO循环\用隐含DO循环\用数组名

?用DO循环实现数组的输入输出

1.优点:数组元素的输入输出次序可由用户控制

2.缺点:做一次循环就换行输入或输出

?用隐含DO循环实现数组的输入输出

1.优点:既能控制数组元素的输入输出顺序,又能控制一行内输入输出数据的个数

2.例如:READ(*,*) ((G(I,J),J=1,3),I=1,2),由于是一个READ语句,所以既可以一行输入,

也可以多行输入,键盘输入如下:86,75,72[enter]87,70,83[enter]

3.注意:一个READ语句可以多行输入;但是多个READ语句时,每一个READ语句必须

从心的一行读数.

用数据名进行数组的输入输出

使用时,其顺序要与数组元素在机器内的存储顺序一致

例如:

DIMENSION K(5)

READ *,K----------对数组进行整体操纵

等价于:READ*,K(1),K(2),K(3),K(4),K(5)

也等价于:READ*,(K(I),I=1,5)

使用DATA语句给数组赋初值

?一般形式: DATA 变量列表\初值表\,变量列表\初值表......

?功能:在程序编译期间给变量或者数组赋初值.其中,变量列表可以是变量名\数组名\数组元素\隐DO循法;初值表只能是常量,不允许出现任何形式的表达式

?例如: DATA A, B/7.85,9.1/[代表赋初值A=7.85,B=9.1--david],I,J, K /5,10,15/[代表赋初值I=5,J=10,K=15--david],

I=2: 42 14 32

DATA K/90,42,23,14,20,32/----排列为按列排,排满一列之后,再排下一列; 90 23 20 --------david

42 14 32

? 例如

:

DIMENSION A(10)

DATA A/10*1.0/(表示'10个1.0')

注意:DATA 语句属于说明语句,但是它可以放在END 语句之前的任意行;当程序中有多个DATA 语句给同一个变量赋初值时,以最后一条为准;程序在编译期间给变量赋予初值,在程序执行期间,DATA 语句不起任何作用!

2.5关于Fortran77的一些有用的简介[8]

1. FUNCTION 语句:是函数子程序的第一条语句,标志着该函数子程序的开始

2. 3.

3.函数体的说明部分包括对虚参和本函数体内所用变量和数组的说明

4.函数体中可设置一条或者多条RETURN语句,表示执行到此语句时返回调

用程序.

1.当RETURN语句和END语句紧挨着的时候,可省略RETURN语句

2.也可以不设RETURN语句,但需从中间返回时,必须设置RETURN语

5.函数名的作用:函数名在函数体中一定要被赋值,因为函数名把函数值带回

调用程序.

函数子程序的调用

1.一般形式:调用方式和内部函数相似: 函数名(实参数) 或函数名( )

2.说明:

1.调用程序中函数名必须与函数子程序中定义的函数名相同

2.实参与虚参在个数\类型\位置上必须一一对应,但名字可以不同

3.当虚参是变量名的时候,实参可以是常量\变量\数组元素或者表达式;但是当虚参

要在函数体中被赋予初值的时候,则实参不可以是常量或者表达式[因为两者共用

一个存储单元]

4.函数子程序是一个独立的程序单位,可以作为一个单独的源程序进行存贮和编译,

并与调用程序连编后才能起作用.

4 材料本构的相关力学知识

虽然目前要做的工作就是用UMAT把一个新的材料的本构加进ABAQUS中调用,但是我并不想仅仅局限于此.在这个过程中,我会把自己遇到的所有相关问题学懂弄透再去编这个程序.所以估计我这个帖子会很长滴!我力学知识不是很好,所以这两天要好好学习一下力学知识,主要是弹塑性力学吧!

说说弹塑性力学----1

弹性力学\塑性力学\弹塑性力学

弹性力学和塑性力学时固体力学的两个重要分支.

1.固体力学:研究固体材料及其构成的物体结构在外部干扰(载荷\温度\变化等)下的力学响应的

科学.按不同的研究对象区分为不同的学科分支.

2.弹性力学:研究固体材料及由其构成的物体结构在弹性变形阶段的力学行为,包括外部干扰下弹

性物体的内力[应力\,变形[应变]和位移的很不,以及与之相关的原理\理论和方法.

3.塑性力学:则研究他们在塑性变形阶段的力学响应.

4.弹性和塑性的区别与联系:大多数材料都同时具有弹性和塑性性质,当外载较小时,材料呈现为

弹性的或者基本弹性的;当荷载渐渐增加时,材料将进入塑性变形阶段,即材料的行为呈现塑性的.所谓弹性和塑性,只是材料力学性质的流变学分类法中两个典型性质或理想模型;同意种材料在不同条件下可以主要表现为弹性的或塑性的.因此,所谓弹性材料或弹性物体是指在一定条件下主要呈现弹性性质的材料或物体.塑性材料或者塑性无私的含义与此相类.

5.弹塑性材料:大多数材料往往都同时具有弹性和塑性性质,特别是在塑性变形阶段,变形中既有

可恢复的弹性变形,又有不可恢复的塑性变形;因此有时又称弹塑性材料

6.弹性设计方法:是以弹性分析为基础的结构设计,假定材料为理想弹性地,相应地这种设计观点

便以分析结果的实际使用范围作为设计的失效准则,即认为应力[严格地说是应力的某一函数值]达到一定限值[弹性界限],将进入塑性变形阶段时,材料将破坏.

7.塑性设计方法:结构中如果有一处或一部分材料"破坏",则认为结构失效(丧失所规定的效用).由

于一般的结构都处于非均匀受力状态。当高应力点或高应力区的材料到达弹性界限时、结构的大部分材料仍处于弹性界限之内;而实际材料在应力超过弹性界限以后并不实际发生破坏,仍

继续增加外载时,结构的达力(应力)分布规律与弹性阶段不同,即所谓内力(应力)重分布;这种重分布总的是使内力(应力)分布更趋均匀,使原来处于低应力区的材料承受更大的应力,从而更好地发挥材料的潜力,提高结构的承载能力。显然,以塑性分析为基础的设计比弹性设计更为优越。但是,塑性设计允许结构有更大的变形,以及完全卸载后结构将存在残余变形。因此,对于刚度要求较高及不允许出现残余变形的场合、这种设计方法不适用。

8.弹塑性力学的研究对象和方法:是研究结构的强度、刚度和稳定性问题(有时统称为强度问题),

以及结构的“破坏”准则或失效准则.在方法上是在一定的边界条件(或再加上初始条件)下求解三类基本方程:平衡(运动)方程、几何方程和本构〔物理)方程。以实验结果为依据,所得结果由实验来检验.

4.1说说弹塑性力学----2

力学模型的相关知识

'模型'是'原型'的近似描述或表示。建立模型的原则,一是科学性----能尽可能地近似表示原型;二是实用性----能方便地应用。显然,一种科学(力学)模型的建立,要受到科学技术水平的制约。总的来说,力学模型大致有三个层次:材料构造模塑,材料力学性质模型,以及结构计算模型。第一类模型属于基本的,它们属于科学假设范畴。因此,往往以“假设”的形式出现。'模型'有时还与一种理论相对应;因而在有些情况下,'模型'、'假设'和'理论'可以是等义的。

1.材料构造模型:

1.连续性假设

2.假定固体材料是连续介质,即组成物体的质点之间不存在

3.任何空隙,连续紧密地分布于物体所占的整个空间。由此,我们可以认为,一些物理量

如应力,应变和位移等可以表示为坐标的连续函数,从而在作数学推导时可方便地运用

连续和极限的概念,事实上,一切物体都是由微粒组成的,都不可能符合这个假设。但

可以想象,当微粒尺寸及各微粒之间的距离远比物体的几何尺寸小时。运用这个假设不

会引起显著的误差.

4.均匀及各向同性假设

5.假设物体由同一类型的均匀材料组成,即物体内各点与各

6.方向上的物理性质相同(各向同性);物体各部分具有相同的物

7.理性质.不会随坐标的改变而变化(均匀性)

2.材料力学性质模型

1.均弹性材料

2.弹性材料是对实际固体材料的一种抽象.它构成一个近似于真实材料的理想模型。弹

性材料的特征是:物体在变形过程中,对应于一定的温度,应力与应变之间呈一一对应

的关系,它和载荷的持续时间及变形历史无关;卸载后,其变形可以完全恢复。在变形

过程中,应力与应变之间呈线性规律,即服从胡克(Hooke R)规律的弹性材料,称为线性

弹性材抖;而某些金属和塑料等,其应力与应变之间呈非线性性质,称为非线性弹性材

料。材料弹性规律的应用,就成为弹性力学区别于其它固体力学分支学科的本质特征。

3.塑性材转

4.塑性材料也是固体材料的一种理想模型。塑性材料的特征

5.是:在变形过程中,应力和应变不再具有一一对应的关系,应变的大小与加载的历史有

关但与时间无关;卸载过程中,应力与应变之间按材料固有的弹性规律变化,完全卸载

后。物体保持一个永久变形,或称残余变形。变形的不可恢复性是塑性材料的基本特征。

6.粘性材料

只不过有时可以略去不计。

3.结构计算模型

1.小变形假设

2.假定物体在外部因素作用下所产生的位移远小于物体原来

3.的尺寸。应用这条假设,可使计算模型大为简化。例如,在研究物体的平衡时,可不考

虑由于变形所引起的物体尺寸位置的变化;在建立几何方程和物理方程时,可以略去其

中的二次及更高次项,使得到的基本方程是线性偏微分方程组。与之相对立的是大变形

情况,这时必须考虑几何关系中的二阶或高阶非线性项,导致变形与载荷之间为非线性

关系.得到的基本方程是更难求解的非线性偏微分方程组。

4.无初应力假设

5.假定物体原来是处于一种无应力的自然状态。即在外力作

6.用以前,物体内各点应力均为零。我们的分析计算是从这种状态出发的。

7. (3)荷载分类

8.作用于物体的外力可以分为体积力和表面力,两者分别简

9.称为体力和面力。

10.所谓体力,是分布在物体体积内的力,例如重力和惯性力二物体内各点所受的体力

一般是不同的.所谓面力,是分布在物体表面上的力,如风力、流体压力、固体间的接

触力等二物体上各点所受的面力一般也是不同的。作用在物体表面

11.上的力都占有一定的面积;当作用面很小或呈狭长形时.可分别理想化为集中力或线集中

力。

4.2说说弹塑性力学----3

1.弹塑性材料

固体材料在受力后产生变形,从变形开始到破坏一般要经历弹性变形和塑性变形这两个阶段。根据材料力学性质的不同,有的弹性阶段较明显,而塑性阶段很不明显,象铸铁等脆性材料,往往经历弹性阶段后就破坏。有的则弹性阶段很不明显,从开始变形就伴随着塑性变形,弹塑性变形总是耦联产生,象混凝土材料就是这洋。而大部分固体材料都呈现出明显的弹性变形阶段和塑性变形阶段。今后我们主要是讨论这种有弹性与塑性变形阶段的固体材料,并统称为弹塑性材料。

2.鲍辛格效应

由于预加塑性拉伸荷载而使压缩屈服应力降低的现象称为Bauschinger效应.正是由于这种效应,塑性变形时一种各向异性的过程,Bauschinger效应是一种由塑性应变引起的特殊的方向各向异性的形式,因为在后继逆向荷载作用下,一个方向的初始塑性变形会减小其反方向的屈服一个应力.在多轴应力情况下,与这种现象对应的是具有不同方向屈服应力之间的相互影响和横向效应,某一方向的预加应变达到塑性范围将会改变其所有方向的屈服应力值.因此Bauschinger效应对于多维问题更重要,包括荷载方向有明显改变的复杂应力历史,比如应力改变符号和循环荷载的情况.

3.弹性变形与塑性变形的区别:

1.卸除载荷后。变形可以完全恢复,是弹性变形的基本特征,而变形的不可恢复性是塑性变形的

基本特征。弹性与塑性的基本区别不在于它们的应力一应变关系是否线性,例如,在比例极限与弹性极限之间的AB曲线段,应力与应变不再成比例,进入了非线性阶段,但在B点以前卸除载荷,变形仍将完成恢复,属于弹性变形阶段。因此,弹性和塑性的基本区别在于卸载后,是否保留一个永久变形(塑性应变〕.

2.在弹性变形阶段,应力与应变之间呈一一对应的关系。而在塑性变形阶段,应力与应变之间不

再是单值关系,对应于同一个应力状态,如果加载的历史不同,所又寸应的应变就不同.这并

1.材料的屈服应力或加载应力。它是用来区别材料是处于弹性阶段还是已进入塑性阶段的

特证值。在屈服应力之前,应力一应变服从胡克定律;

2.加载准则。在材料进入塑性变形阶段后,应力和应变在加载和卸载的情况下服从两个不

同的规律,需要有一个判别材料是加载还是卸载的准则,称为加载或卸载准则。在应力

等于屈服应力或加载应力时,应力的变化有两种可能、它可写成加载和卸载两种不同的

公式形式.

3.从某个初始状态到现时的全部变形(或加载)历史。对某

4.现时来说,我们知道了应力增量和应变增量之间的关系如(1. 6)式所示。明确了变形或加

载的历史,就可以对增量积分,求得应力全量与应变全量的关系,从而确定该现时材料

中的应力和应变。

3.弹性变形是可逆的,而塑性变形是不可逆的,由于卸载后永久变形的存在,导致在塑性变形中

所做的塑性功也是不可逆的.塑性功恒大于零,是耗散功。所以说弹性变形储存能量[变形恢复时释放能量,不耗散能量],而塑性变形耗散能量,耗散大小为滞回环的面积.

4.3说说弹塑性力学----4

1.简单的拉伸试验

请参照某本主流教材即可

2.残余应力

所谓残余应力,就是对一个处干自然状态的结构施加载荷,又完全卸去载荷后,在结构内存在的、自我平衡的应力(没有外载时满足平衡条件的应力)。而残余应变则是载荷完全卸去后,结构仍保留的变形.前面己指出,弹性变形是可逆过程,当加上载荷又卸去之后,结构将回到初始状态、不会存在残余应力和残余变形。由此可见,只有当结构内发生塑性变形(即使是结构的一部分)之后,才可能出现残余应力和残余变形。结构内存在残余应力的必要条件是结构已发生塑性变形,并且已发生的塑性变形不能满足几何连续条件。

3 子例行程序[ -------UMAT的类型 ]

1.与函数子程序的区别

1.名字的作用不同:函数子程序除了供调用外,还代表函数值;子例行程序只能被调

用;

2.要求返回值的方式不同:函数子程序是通过函数名将函数值带回调用程序;子例行

程序是通过'虚实结合'将其新值转送回调用程序

3.子例行程序可以带回一批值(数组),或者完成特定的操作,如交换\排序等;

4.调用方式不同:函数子程序的调用出现在表达式中,而子例行程序必须用一条独立

的语句调用.

2.定义:

1.一般形式: SUBROUTINE 子例行程序名(虚参表)

1.......

2. END

2.说明:

1.命名规则同变量名[但不用标示类型]

2.如果没有虚参,括号可以省略

5.子例行程序的名字只起标识作用,没有值的概念,仅仅为了调用

3.调用:

1.一般形式:CALL 子例行程序名(实参表) 或CALL 子例行程序名

4.实参和虚参之间的数据传递

虚参可以是变量名\数组名\子程序名\函数名和星号*

1.变量名作为虚参时的'虚实结合'

1.对应的实参:同类型的常量\变量\数组元素

2.结合方式:按地址结合,两者共用一个存储单元

3.注意:

1.当实参是数组元素时,虚实结合的过程和变量名相同

2.如果虚参是字符变量,则其定义长度必须<=对应实参的长度,或用'*',

表示长度不定;当调用子程序时,具有不定长度的虚参将自动定义为

与对应实参相同的长度

2.数组名作为虚参时的'虚实结合'

1.对应的实参:同类型的数组名或者数组元素

2.结合方式:

1.实参为数组名时:按地址结合,即实参数组的第一个元素与对应虚参

数组的第一个元素结合;实参数组的第二个元素与对应虚参数组的

第二个元素结合,...,以此类推;

2.实参为数组元素时:仍按地址结合,当该数组元素的第一个元素与对

应虚参数组的第一个元素结合;该数组元素的下一个元素与对应虚

参数组的第二个元素结合,...,以此类推;

3.注意:虚参数组的最后一个元素必须落在实参数组的范围内,否则会出现'

超界错误'

3.虚参是可调数组

1.可调数组:只能在子程序中使用,其上\下界可以是整型虚参数变量,其值通

过对应的实参传递.

2.注意:

1.可调数组只能出现在子程序中,不能出现在主程序中

2.可调数组的数组名和界都必须作为虚参出现在虚参表中

3.虚参数组的最后一维的上届可以用"*"表示

4.如果在实参表中出现内部函数名时,必须在条用程序的说明部分用

INTRISIC语句说明

5.在调用程序单位中,如果实参中出现了函数子程序或者子例行程序

时,必须在调用程序单位的说明部分用EXTERNAL语句说明这些名

字.

4.4说说弹塑性力学----5

应力状态理论

一个在外界因素作用下的物体将产生内力和变形。用以描述物体中任何部位的内力和变形特征的力学量是应力和应变。

1.应力概念

然,各微分面上的应力一般是不相同的。

2.张量概念

由三个正应力,六个剪应力组成的九个应力分量定义了一个新的量。它描述了一点处的应力状态。数学上,在坐标变换时,服从一定坐标变换式的九个数所定义的量叫二阶张量,应力为二阶张量,它称为柯西(Cauchy A L)应力张量,简称为应力张量。张量中的每一个分量为应力张量在某基矢量的坐标系中的分量,简称为应力分量。应力张量常用矩阵形式表示. 应当指出,物体内各点的应力状态一般是不相同的。应为坐标x的函数,所以,应力张量与给定点的空问位置有关,应力张量总是针对物体中的某一确定点而言的.只要知道了一点的九个应力分量,就可求出通过该点的各个微分面上的应力.应力张量完全确定了一点处的应力状态.

3.转轴时应力分量的变换

坐标系作平移变换时,同一点的各应力分量不会改变;显然,转轴后各应力分量都改变了.但这九个量作为一个“整体”所描述的一点的应力状态是不会改变的,因而又一次证明了应力是二阶张量,在坐标转换时具有不变性。在不计体力偶时应力张量具对称性,为对称张量,其独立的应力分量只有六个。

4.主应力和应力不变量

当坐标系转动时,受力物体内任一确定点的九个应力分量

将随着改变。在坐标系不断转动的过程中,必然能找到一个坐标

系,使得该点在该坐标系中只有正应力分量,而剪应力分量为

零。也就是说,对于任一确定的点,总能找到三个互相垂直的微

分面,其上只有正应力而无剪应力。我们把这祥的微分面称为主

微分平面,简称主平面,其法线方向称为应力主方向,而其上的

应力称为主应力。在应力状态的特征方程中,它的三个根即为主应力,按代数值大小一次成为第一主应力,第二主应力和第三主应力.他们是三个不同截面上的应力矢量的模,而不是某个应力矢量的三个分量.状态特征方程的三个系数分别称为应力张量的第一\第二和第三不变量。其不变的含义是:当坐标系转动时,虽然每个应力分量都随之改变,但这三个量是不变的。更直观地说,因为方程的根代表的是一点的三个主应力,它们的大小与方向在物体的形状及引起内力的因素确定后是完全确定的,即它们是不会随坐标系的改变而改变的。由于应力状态特征方程的根不变,故方程中的系数一定为不变量.以三个主应力为坐标曲线的坐标系称为主坐标系,也称为主向空间一般地说,主坐标系是正交曲线坐标系。

主应力的几个重要性质:

1.不变性

2.由于特征方程的系数是不变量,所以作为特征根的主应力及相应的主方向,都是不变量。

从物理意义可知,它们

3.都是物体内部受外部确定因素作用时客观存在的量,与人为选择参考坐标无关。

4.实数性

5.由于应力张量为对称张量,其各元素均为实数,故必有实特征根,即三个主应力都是实数。

这意味着任何应力状态都存在三个主应力.

6.正交性

7.当特征方程无重根时,三个主应力必两两正交;当特征方程有一对重根时,如第一和第二主应力

相等,与第三主应力不等,则与第三主应力垂直的平面内任意两个相互垂直的方向均可作为主方向(如双向等拉或等压应力状态);当特征方程出现三重根,任意三个相互正交的方向都可作为主方向。

8.极值性

9.在通过同一点的所有微分面的正应力中。最大和最小的正应力是主应力。

5.最大剪应力和八面体应力

ABAQUS-二次开发资料-UMAT

各个楼层及内容索引 2-------------------------------------什么是UMAT 3-------------------------------------UMAT功能简介 4-------------------------------------UMAT开始的变量声明 5-------------------------------------UMAT中各个变量的详细解释 6-------------------------------------关于沙漏和横向剪切刚度 7-------------------------------------UMAT流程和参数表格实例展示 8-------------------------------------FORTRAN语言中的接口程序Interface 9-------------------------------------关于UMAT是否可以用Fortran90编写的问题 10-17--------------------------------Fortran77的一些有用的知识简介 20-25\30-32-----------------------弹塑性力学相关知识简介 34-37--------------------------------用户材料子程序实例JOhn-cook模型压缩包下载 38-------------------------------------JOhn-cook模型本构简介图 40-------------------------------------用户材料子程序实例JOhn-cook模型完整程序+david详细注解[欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正确,希望共同探讨,以便更正,带"?"部分,还望各位大师\同仁指教] 1什么是UMAT??? 1.1 UMAT功能简介!!![-摘自庄茁老师的书 UMAT子程序具有强大的功能,使用UMAT子程序: (1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序 功能。ABAQUS软件2003年度用户年会论文集 (2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS中 的任何单元; (3)必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量 的变化率。 (4)可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传 递到UMAT中场变量的数值。 1.2 UMAT开始的变量声明 由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为: SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD, 1 RPL,DDSDDT,DRPLDE,DRPLDT, 2STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME 3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

ABAQUS-UMAT弹塑本构二次开发的实现

前言 有限元法是工程中广泛使用的一种数值计算方法。它是力学、计算方法和计算机技术相结合的产物。在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。 ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。比方说,一个复合材料就不能用传统的线性分析软件包进行分析。任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。 这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。 非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。新一代波音 787客机将全部采用复合材料。只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。 瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。线性分析在这种情况下是不适用的。以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。所以,ABAQUS可以在一个软件完成线性和非线性分析。 ABAQUS给用户提供了强大二次开发接口,尤其是在材料本构方面,给用户开发符合实际工程的材料本构模型提供了强大帮助,本文将针对其用户材料子程序展开研究,总结常用材料模型的开发方法。

基于Python的Abaqus二次开发实例讲解

基于Python的Abaqus二次开发实例讲解 (asian58 2013.6.26) 基于Python的Abaqus的二次开发便捷之处在于: 1、所有的代码均可以先在Abaqus\CAE中操作一遍后再通过rp文件读取,然后再在此基础上进行相应的修改; 2、Python是一种解释性语言,读起来非常清晰,因此在修改程序的过程中,不存在程序难以理解的问题; 3、Python是一种通用性的、功能非常强大的面向对象编程语言,有许多成熟的类似于Matlab函数的程序在网络上流传,为后期进一步的数据处理提供了方便。 为了更加方便地完成Abaqus的二次开发,需进行一些相关约定: 1、所有参数化直接通过点的坐标值进行,直接对几何尺寸的参数化反而更加繁琐; 2、程序参数化已不允许在模型中添加太多的Tie,因此不同零部件的绑定直接通过共节点来进行,这就要求建模方法与常规的建模方法有所区别。思路如下: 将一个整机拆成几个大的Part来建立,一个Part中包含许多零件,这样在划分网格式时就可以自动实现共节点的绑定。不同的零件可通过建立不同的Set来进行区分,不同Part 的绑定可以通过Tie来实现。将一个复杂的结构拆成几个恰当的Part来建立,一方面可以将复杂的模型简单化,使建立复杂模型成为可能;另一方面,不同的Part可单独调用,从而又可实现程序的模块化,增加程序的适应范围,延长程序的使用寿命,也方便后期程序的维护和修改。 3、通过py文件建立起的模型要进行参数优化,已不适合采用Isight中Abaqus模块,需要用到Isight的Simcode模块。 下面详细解释一个臂架的py文件。 #此程序用来绘制臂架前段 #导入相关模块 # -*- coding: mbcs -*- from abaqus import * from abaqusConstants import * #定义整个臂架的长、宽、高 L0=14300 W0=1650 H0=800

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发人生苦短,我用Python 作者:Fan Shengbao Python2、7 2017年12月

目录 第一章Python程序基本语法 (1) 1、1Python语法结构 1 1、2Python元组 1 1、3Python列表 1 1、4Python字典 2 1、5Python集合 3 1、6Python字符串 3 1、7Python分支语句 4 1、8Python循环语句 5 1、8、1for循环 5 1、8、2while循环 5 1、9Python定义函数 5 1、10Python模块 6 1、11Python包 7 1、12Python文件与目录 7

1、1 2、1目录操作 7 1、1 2、2文件操作 7 1、13Python异常处理 8 第二章ABAQUS/Python二次开发 (9) 2、1ABAQUS执行Python程序 9 2、2编写ABAQUS/Python程序 10 2、3ABAQUS录制Python程序 10 2、4ABAQUS/Python对象介绍 11 2、4、1 session对象 (11) 2、4、2 mdb对象 (11) 2、4、3 odb对象 (13) 2、5ABAQUS完整二次开发示例 13 2、6ABAQUS二次开发常用函数 15 2、6、1 Part模块常用函数 (15)

第一章Python程序基本语法 1.1Python语法结构 Python语言以缩进来约束每个程序块,编写程序时要特别注意每一行的缩进量,同一层次的语句应具有相同的缩进量。下面就是一段Python程序示例: #-*- coding:utf-8 -*- for i in range(1,10): for j in range(1,i+1): print str(j)+'x'+str(i)+' = '+str(i*j), print 该段程序主要功能就是实现乘法口诀表输出打印,其中“#-*- coding:utf-8 -*-”就是约定文档的编码方式。程序主体部分由两个嵌套的for循环语句组成,可以瞧到每一个for循环块的内部都具有相同的缩进量。程序输出结果如下: 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 Python程序中一行中“#”号后面的内容为注释,“#”号只支持单行注释,多行注释可使用“’’’ …‘’’”注释符。 ''' Abaqus6、14 Python ''' 1.2Python元组 Python中的元组(tuple)相当于C语言中的数组简化版,其内容与长度均不可变,只能对其内容进行访问。 tt1 =(1,2,3,4,5) print tt1[1] 程序执行结果: 2 1.3Python列表 Python中的列表(list)相当于C语言中的数组,但比C语言中的数组使用起来更加方便灵活。其长度与内容均可修改,列表就是编程时使用较多的结构。

Abaqus二次开发

Abaqus二次开发——Abaqus/python入门体会入门实例 #=========================================================== 自己的论文要用到有限元进行数值模拟分析,以前都用ansys计算,可ansys中岩土的本构模型只有D-P模型,无法准确的反映土的硬化/软化性质,模拟计算出的结果因此也和实际差别很大。Abaqus有着丰富的材料模型,超强的非线性分析能力,岩土的模型也很多,因此才转学Abaqus。Abaqus的cae建模功能还是很好的,但科研课题一般都要进行参数分析,采用cae的建模方法有些不切实际,学了没几天就放弃cae开始学习inp,也是学了一阵子才知道inp不能建立实体模型,只能直接建节点和单元。复杂的模型inp也无法建立,但采用Python建模就可以解决这个问题。 由于Abaqus的学习资料不多,过了好些日子才知道Abaqus也可以采用Python语言进行建模计算,只是比Ansys的Apdl语言复杂得多,并且除了手册上的Script资料之外,没有较为系统的教程,刚一接触真是让人头痛。通过查看Simwe论坛上关于Python的帖子,和论坛朋友的帮助,自己在慢慢积累,现在对Python有了一点点了解,算是入了个门。 接触Abaqus也没多久,对python更是一知半解,绝大多数地方根本都不清楚,抽空写一点认识体会主要是给像自己一样刚学习Abqus Python的朋友,能少走一些弯路,节约一些时间。同时希望大家批评指正、共同讨论、补充。 #-------------------------------------------------------------------------------------------------- 学习Abaqus/Python基础:Abaqus的cae建模有比较全面的认识;了解一些Python语法知识(大家都不会有太多时间单独学习Python语言本身,只需要有概念了解即可,不懂的地方可以随时查询Python script手册) Abaqus/Python学会使用不太难,可要精通应用还是要付出一定的劳动。大家所分析的课题专业不同,方向也千差万别,所用到的Abaqus的功能也就有很大的差别,能对自己的工作领域熟练应用就算成功。Abaqus毕竟只是软件,如何考虑专业知识成功建模才是最困难的。

ABAQUSFortran二次开发

目录 摘要.................................................................... ABSTRACT................................................................. 1.绪论 0 1.1.课题的研究背景 0 1.2.本文的研究内容和方法 (1) 2.基于ABAQUS软件的二次开发 (2) 2.1.ABAQUS介绍 (2) 2.2.ABAQUS各模块简介 (2) 2.3.ABAQUS的二次开发平台 (5) 2.4.ABAQUS的二次开发语言 (6) 3.用户材料子程序UMAT (7) 3.1.UMAT开发环境设置 (7) 3.2.UMAT注意事项 (8) 3.3.UMAT接口的原理 (10) 3.4.UMAT的使用方法 (14)

4.材料非线性问题 (15) 4.1.材料的弹塑性本构关系 (16) 4.2.非线性有限元算法理论 (20) 4.3.增量理论常刚度法公式推导 (22) 4.4.增量理论切线刚度法公式推导 (23) 5.UMAT程序设计和编码 (25) 5.1.本构关系描述 (25) 5.2.常刚度法程序设计 (27) 5.3.常刚度法程序编码 (28) 5.4.切线刚度法程序设计 (36) 5.5.切线刚度法程序编码 (38) 5.6.程序的调试 (46) 6.程序验证 (48) 6.1.问题描述 (49) 6.2.本构关系 (49) 6.3.ABAQUS自带材料模型计算 (49)

6.4.常刚度法的UMAT验证 (50) 6.5.切线刚度法的UMAT验证 (52) 6.6.两种算法的比较分析 (54) 7.结论与展望 (55) 7.1.结论 (55) 7.2.展望 (56) 致谢 (57) 参考文献 (57) 附1:ABAQUS自带弹塑性材料验证的INP文件 (58) 附2:用于算法验证的INP文件 (81)

ABAQUS前_后处理模块二次开发的应用_朱兆华

文章编号:1001-2265(2009)01-0030-04 收稿日期:2008-08-11  *基金项目:江西省科技厅科技支撑项目[2007];江西省教育厅2009年度一般科技项目(G J J 09025);江西省教育厅科技研究项目(G J J 08429) 作者简介:朱兆华(1979—)男,江苏涟水人,南昌大学机电学院硕士研究生,助理工程师,研究方向为材料加工新技术,(E-m a i l )b y j 245@163. c o m 。 A B A Q U S 前、后处理模块二次开发的应用 * 朱兆华1 ,黄菊花1 ,张庭芳1 ,谢世坤2 ,白引娟 3 (1.南昌大学机电工程学院,南昌 330031;2.井冈山大学工学院,江西吉安 343009;3.江西协中汽车 内饰有限公司,南昌 330032) 摘要:文章以实例说明了P y t h o n 脚本语言和A B A Q U S G U I T o o l k i t 在A B A Q U S 的前、后处理模块二次开发中的应用,并阐述了不同模块之间的调用流程。通过二次开发程序控制A B A Q U S 的建模和装配的过程,有效地解决了模型装配时的繁琐、易错等问题,提高了前处理的效率;因A B A Q U S 对板料拉深进行数值 模拟的后处理功能不够全面,为扩展后处理的功能,更好地查看和分析模拟的结果,文章对A B A Q U S 后处理进行二次开发来达到这一目的。 关键词:A B A Q U S ;P y t h o n ;A B A Q U S G U I T o o l k i t ;二次开发中图分类号:T H 16;T G 65 文献标识码:A A p p l i c a t i o no f S e c o n d -d e v e l o p e d o n A B A Q U S P r e -p r e c e s s a n d P o s t -p r o c e s s Z H UZ h a o -h u a 1,H U A N GJ u -h u a 1,Z H A N GT i n g -f a n g 1,X I ES h i -k u n 2,B A I Y i n -j u a n 3 (1.S c h o o l o f M e c h a n i c a l a n dE l e c t r i c a l E n g i n e e r i n g ,N a n c h a n g U n i v e r s i t y ,N a n c h a n g 330031;2.C o l l e g e o f E n g i n e e r i n g ,J i n g g a n g s h a n U n i v e r s i t y ,J i a n g x i J i 'a n 343009,C h i n a ) A b s t r a c t :T h i s a r t i c l e u s i n g a n e x a m p l e t o e x p l a i n P y t h o n a n d A B A Q U S G U I T o o l k i t p r o g r a m m e f o r A B A Q U S p r e -p r o c e s s a n d p o s t -p r o c e s s s e c o n d -d e v e l o p m e n t a n de x p o u n dt h e p r o c e s s a m o n g d i f f e r e n t m o d u l e s 。T h o u g h s e c o n d -d e v e l o p m e n t t h e p r o c e s s o f m o d e l a n da s s e m b l e c a n b e c o n t r o l l e d ,t h e t e d i o u s 、e r r o r -p r o n e a n do t h e r p r o b l e m s c a n b e e f f e c t i v e l y s o l v e d ,s o t h ew o r k i n g e f f i c i e n c y c a nb e h i g h l y i m p r o v e di nt h e p r e -p r o c e s s ;F o r d r a w i n g s h e e t ,p o s t -p r o c e s s f u n c t i o n s p r o v i d e db y A B A Q U S a r ei n s u f f i c i e n t .I no r d e r t o e x t e n dp o s t -p r o c e s s f u n c t i o n s a n d e x a m i n e s i m u l a t i o n r e s u l t e f f e c t i v e l y s e c o n d d e v e l o p o n A B A Q U S p o s t -p r o c e s s i s u s e d i n t h i s p a -p e r . K e y w o r d s :A B A Q U S ;P y t h o n ;A B A Q U S G U I T o o l k i t ;s e c o n d -d e v e l o p m e n t 0 引言 A B A Q U S 是国际上最先进的大型通用有限元计算分析软件之一,可以模拟绝大部分工程材料的线性和非线性行为。A B A Q U S 自带的C A E 是进行有限元分析的前后处理模块,也是建模、分析和后处理的人机交互平台,它具有良好的人机对话界面,因此A B A Q U S 软件在工程中得到了广泛的应用。 P y t h o n 是一种面向对象的脚本语言,它功能强大,既可以独立运行,也可以用作脚本语言。特别适用于 快速的应用程序开发。 1 A B A Q U S /C A E 处理过程和二次开发接口 介绍 A B A Q U S /C A E 处理有两个程序:①内核程序;②G U I 程序。内核程序实际上就是它的脚本语言,它采用的是P y t h o n 语言,同时扩展了P y t h o n 语言,额外提供了大约500个对象模型,对象模型之间的关系复杂,它们间部分关系如图1所示。 图1中,C o n t a i n e r 表示容器,里面包括其他对象, · 30·

ABAQUS_Fortran二次开发

目录 摘要 ......................................................................................................................................... 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) 1

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发人生苦短,我用Python 作者:Fan Shengbao 2017年12月

目录 第一章Python程序基本语法 (1) 1.1Python语法结构 (1) 1.2Python元组 (1) 1.3Python列表 (1) 1.4Python字典 (2) 1.5Python集合 (3) 1.6Python字符串 (3) 1.7Python分支语句 (4) 1.8Python循环语句 (5) 1.8.1for循环 (5) 1.8.2while循环 (5) 1.9Python定义函数 (5) 1.10Python模块 (6) 1.11Python包 (7) 1.12Python文件和目录 (7) 1.12.1目录操作 (7) 1.12.2文件操作 (7) 1.13Python异常处理 (8) 第二章ABAQUS/Python二次开发 (9) 2.1ABAQUS执行Python程序 (9) 2.2编写ABAQUS/Python程序 (10) 2.3ABAQUS录制Python程序 (10) 2.4ABAQUS/Python对象介绍 (11) 2.4.1 session对象 (11) 2.4.2 mdb对象 (11) 2.4.3 odb对象 (13) 2.5ABAQUS完整二次开发示例 (14) 2.6ABAQUS二次开发常用函数 (16) 2.6.1 Part模块常用函数 (16)

第一章Python程序基本语法 1.1Python语法结构 Python语言以缩进来约束每个程序块,编写程序时要特别注意每一行的缩进量,同一层次 的语句应具有相同的缩进量。下面是一段Python程序示例: #-*- coding:utf-8 -*- for i in range(1,10): for j in range(1,i+1): print str(j)+'x'+str(i)+' = '+str(i*j), print 该段程序主要功能是实现乘法口诀表输出打印,其中“#-*- coding:utf-8 -*-”是约定文档的编码方式。程序主体部分由两个嵌套的for循环语句组成,可以看到每一个for循环块的内部都 具有相同的缩进量。程序输出结果如下: 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 Python程序中一行中“#”号后面的内容为注释,“#”号只支持单行注释,多行注释可使 用“‘‘‘ …?‘‘”注释符。 ''' Abaqus6.14 Python ''' 1.2Python元组 Python中的元组(tuple)相当于C语言中的数组简化版,其内容和长度均不可变,只能对其内容进行访问。 tt1 =(1,2,3,4,5) print tt1[1] 程序执行结果: 2 1.3Python列表 Python中的列表(list)相当于C语言中的数组,但比C语言中的数组使用起来更加方便灵活。其长度和内容均可修改,列表是编程时使用较多的结构。 1

abaqus_二次开发详解

#开头的为注释行. 第一步,建立建模环境,这一步中p y将从a b a q u s中导入建模所需的所有程序模块.#@ f r o m p a r t i m p o r t*m+ 接下来定义草图环境#w+ m d b.m o d e l s['M o d e l A'].S k e t c h(n a m e='__p r o f i l e__',s h e e t S i z e=200.0)+ m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].s k e t c h O p t i o n s.s e t V a l u e s(c o n s t r u c t i o n G e o m e t r y=O N, d e c i m a l P l a c e s=2,d i m e n s i o n T e x t H e i g h t=5.0,g r i d=O N,~@ g r i d F r e q u e n c y=2,g r i d S p a c i n g=5.0,s h e e t S i z e=200.0,v i e w S t y l e=A X I S Y M) 上面的设定为大小200*200,格栅间距为5,文字标注高度为5. m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].O b l i q u e C o n s t r u c t i o n L i n e(p o i n t1=(0.0,-100.0),p o i n t2=(0.0,100.0)) 本句语句设定轴对称模型的对称轴线位置M m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].r e c t a n g l e(p o i n t1=(0.0,0.0),p o i n t2=(40.0, -40.0)) 该语句绘制矩形,从点0,0至点40,-40+% m d b.m o d e l s['M o d e l A'].P a r t(d i m e n s i o n a l i t y=A X I S Y M M E T R I C,n a m e='B o d e n', t y p e=D E F O R M A B L E_B O D Y) 定义模型为轴对称,名字为b o d e n,为可变形体 m d b.m o d e l s['M o d e l A'].p a r t s['B o d e n'].B a s e S h e l l(s k e t c h=m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'])%@ d e l m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__']w 绘图完成丌要忘记收回建模环境所占的内存W^+ %#^# 第二节:材料定义--------------------2楼M 第三节:装配--------------------3楼+W m^ 第四节:分析步定义--------------------4楼 第五节:接触定义--------------------5楼M+% 第六节:荷载边界定义-----------------6楼 第七节:网格划分控制------------------7楼 第八节,任务提交及杂项功能--------8楼 关于如何在p y t h o n中提交多个任务的问题9楼 第二节,材料定义 f r o m m a t e r i a l i m p o r t*%m f r o m s e c t i o n i m p o r t*O 从A B A Q U S提供的接口中导入材料库和组件库 m d b.m o d e l s['M o d e l-A'].M a t e r i a l(n a m e='B o d e n') 定义材料名+~ m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].D e n s i t y(t a b l e=((2000.0,),))w# 定义材料密度m m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].E l a s t i c(t a b l e=((210546.3,0.3333),)) 定义材料线弹性模量和泊松比,其它的材料,如弹塑性,粘弹性材料均对应丌同的对象函数. m d b.m o d e l s['M o d e l A'].H o m o g e n e o u s S o l i d S e c t i o n(m a t e r i a l='B o d e n', n a m e='b o d e n',t h i c k n e s s=1.0)#O m d b.m o d e l s['M o d e l

ABAQUS二次开发教程

ABAQUS(Python语言)二次开发 令狐采学 人生苦短,我用Python 作者:Fan Shengbao Python2.7 2017年12月

目录 第一章 Python程序基本语法 (1) 1.1 Python语法结构 (1) 1.2 Python元组 (1) 1.3 Python列表 (1) 1.4 Python字典 (2) 1.5 Python集合 (3) 1.6 Python字符串 (3) 1.7 Python分支语句 (4) 1.8 Python循环语句 (5) 1.8.1 ................................................................................................................... f or循环 5 1.8.2 .............................................................................................................. while循环 5 1.9 Python定义函数 (5) 1.10 Python模块 (6) 1.11 Python包 (7) 1.12 Python文件和目录 (7) 1.12.1 目录操作 (7) 1.12.2 文件操作 (7) 1.13 Python异常处理 (8) 第二章 ABAQUS/Python二次开发 (9) 2.1 ABAQUS执行Python程序 (9) 2.2 编写ABAQUS/Python程序 (10) 2.3 ABAQUS录制Python程序 (10) 2.4 ABAQUS/Python对象介绍 (11) 2.4.1 session对象 (11) 2.4.2 mdb对象 (11) 2.4.3 odb对象 (13) 2.5 ABAQUS完整二次开发示例 (14) 2.6 ABAQUS二次开发常用函数 (16) 2.6.1 Part模块常用函数 (16)

abaqus二次开发

Abaqus 使用FQA: Q: abaqus的图形如何copy? A: file>print>file格式为png,可以用Acdsee打开。 Q: 用Abaqus能否计算[Dep]不对称的问题? A: 可以,并且在step里面的edit step对话框other里面的matrix solver有个选项。 Q: 弹塑性矩阵【D】与ddsdde有何联系? A: stress=D*stran;d(stress)=ddsdde*d(stran)。 Q: 在abaqus中,如果采用umat,利用自己的本构,如何让abaqus明白这种材料的弹塑性应 变,也就是说,如何让程序返回弹性应变与塑性应变,好在output中输出,我曾想用最笨 地方法,在uvarm中定义输出,利用getvrm获取材料点的值,但无法获取增量应力,材料常 数等,研究了帮助中的例子,umatmst3.inp,umatmst3.for,他采用mises J2 流动理论,我 在output history 显示他已进入塑性状态,但他的PE仍然为0!!? A: 用uvar( )勉强成功。 Q: 本人在用umat作本构模型时, *static, 1,500,0.000001,0.1 此时要求的增量步很多,即每次增量要很小, *static 1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.? A: YOU CAN TRY AS FOLLOWS: *STEP,EXTRAPOLATION=NO,INC=2000000 *STATIC 0.001,500.0,0.00001,0.1。 Q: 模型中存在两个物体的接触,计算过程中报错,怎么回事? A: 接触问题不收敛有两个方面不妨试试: 一、在*CONTACT PAIR 里调试ADJUST参数; 二、调一些模型参数,比如FRICTION等。。 Q: 在边界条件和加载时,总是有initial这个步,然后是我们自己定义的加载步,请问这 个initial步,主要作用是什么?能不能去掉? A: 不能去掉,所有的分析都有,是默认的步。 Q: A solid extrusion base feature 这句话是什么意思?

ABAQUS二次开发基础

第9章
知识要点:
ABAQUS 二次开发基础
; ; ; ;
ABAQUS 二次开发概述 ABAQUS 用户子程序接口 ABAQUS 用户子程序介绍 应用举例
本章导读:
本章主要介绍了大型有限元软件 ABAQUS 二次开发的基本情况,主要包括:ABAQUS 二次开 发概述、ABAQUS 用户子程序接口、ABAQUS 用户子程序介绍等,最后给出两个算例,介绍采用 ABAQUS 进行二次开发以及建立 ABAQUS 主程序与用户子程序之间口的基本过程。
9.1 ABAQUS 二次开发概述
随着计算技术和计算机的快速发展,有限元软件的发展速度迅速,功能日渐强大。目前国际上 被广泛采用的通用有限元软件有 ANSYS、MSC、ABAQUS 等。利用商业软件进行计算现在已是科 学研究中的一项重要手段。由于工程问题的千差万别,不同的用户有不同的专业背景和发展方向, 通用软件不免在具体的专业方面有所欠缺,针对这些不足,大部分的通用软件都提供了二次开发功 能,以帮助用户减少重复性的编程工作、提高开发起点、缩短研发周期、降低开发成本,并能简化 后期维护工作,给用户带来很多方便。基于通用软件平台进行开发,是目前研究的一个重要发展方 向。ABAQUS 也提供了若干用户子程序(User Subroutines)接口,它是一个功能非常强大且适用 的分析工具,与命令行的程序格式相比,用户子程序的限制少得多,从而使用更加灵活方便。 ABAQUS 不仅提供标准的有限元分析程序,而且具有良好的开放性,可利用它提供的用户子程 序接口生成非标准的分析程序来满足用户的需要,在实际工程中得到广泛应用。ABAQUS 允许用 户通过子程序以代码的形式来扩展主程序的功能,并给用户提供了强大而又灵活的用户子程序接口 和应用程序接口(Utility Routine) ,ABAQUS 共有 42 个用户子程序接口,15 个应用程序接口,用 户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进 行数值交换等等。这些用户子程序接口使得用户解决一些问题时有很大的灵活性,同时大大的扩充 了 ABAQUS 的功能。例如:通过用户定义单元接口,用户自定义的任何类型的线性或非线性单元 都可以被引入模型中,对于线性单元刚度矩阵和质量矩阵可以直接确定。例如:如果荷载条件是时 间的函数,这在 ABAQUS/CAE 和 INPUT 文件中是难以实现的,但在用户子程序 DLOAD 中就很 容易实现。同时,用户子程序也可被用来定义这些单元的线性和非线性特性。 通过用户材料子程序接口,用户可定义任何补充的材料模型,不但任意数量的材料常数都可以 作为资料被读取,而且 ABAQUS 对于任何数量的与解相关的状态变量在每一材料计数点都提供了 存储功能,以便在这些子程序中应用。

相关主题
相关文档
最新文档