ABAQUS-UMAT-自学知识整理贴 - 图文

更新时间:2023-03-09 09:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

各个楼层及内容索引

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的,不保证完全正确,希望共同探讨,以便更正,带\部分,还望各位大师\\同仁指教]

什么是UMAT???

UMAT:[user defined material mechanical behavior]用户材料子程序,是ABAQUS提供给用户自定义材料属性的FORTRAN程序接口;注意是接口程序,真正的定义材料的力学行为即属性,是用户自己编译的FORTRAN程序来实现的!UMAT通过与ABAQUS主求解程序的接口实现与ABAQUS的数据交流

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

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

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

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

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

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

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

递到UMAT中场变量的数值。

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, 4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC) C

INCLUDE'ABA_PARAM.INC'-----此处是将ABAQUS本身自带的参量精度定义的文件包含进来[后面详说] 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”语句中加\参数

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],塑性耗散

程序的编辑与运行:

1. 2. 3.

创建源程序文件并编写源程序 编译并连接源文件

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

常量:

六种

1. 2. 3. 4. 5. 6.

整型常量[Integer]4位:正\\负整数和0 实型常量[Real]4位:小数和指数形式 双精度常量[Double precision]8位 复型常量[Complex]8位 逻辑性常量[Logical]4位 字符型常量[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规则,所有的变量必须显式说明;只在本程序单位有效.

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

算术表达式:

1. 2. 3.

运算符: +, -, *, /, ** 优先级: ( ), ** , *\\ / , +\\- 书写问题

1. 2. 3. 4. 5. 6.

* 不能省略

括号不分大小写,成对出现 多次乘方,按'先右边后左边'处理 运算符不能连续出现,要用小括号隔开 运算顺序

)---->函数---->**----->*,/----->+,-

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

7.

误差问题:

1.

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

2.

误差:由于有效数字的位数限制,实型数运算存在误差-------->解决:转换成双精度型或者避免因为书写不当造成有效数字的丢失

简单输出\\输入语句:

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

输出语句

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

1.

表控输出语句:按计算机系统规定的格式输出:系统自动为每种类型的数据规定了列数

1.

整数的表控输出格式[与具体的计算机系统有关]:规定每个整数占13列,打印在右端,左补空格;

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. 6.

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

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

1. 2. 3. 4. 5.

例如:read(*,*) A,B,C read(*,*) D,I,J

输入: 2.3,-63.5[回车] 6.4,91.0[回车] 5,8[回车]

6. 7. 8.

结果: A=2.3,B=-63.5,C=6.4, [从新记录开始读数] 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位的数

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

逻辑运算和选择结构

?

关系表达式

1. 2.

构成选择判断的基本式子 关系运算符:

1. 2. 3. 4. 5.

.GT.[greater than] > .GE.[greater than or equal to] >= .LT.[limiter than] < .LE.[limiter than or equal to] <= .EQ.[equal

to] =

6.

3.

.NE.[not equal to] ≠

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

4. 5.

运算结果:逻辑值:真[.TRUE.]\\假[.FALSE.] 运算顺序:算术运算>关系运算

?

逻辑表达式

1.

运算符:

1. 2. 3. 4. 5.

.and. .or. .not.

.eqv.逻辑等 .neqv.逻辑不等

2.

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

3. 4. 5.

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

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

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

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

IF类选择结构

?

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

1.

基本形式

1. 2. 3. 4. 5.

IF(条件) THEN (块IF语句) 块1 (THEN块) ELSE (ELSE语句) 块2 (ELSE块) ENDIF (ENDIF语句)

6.

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

2.

简单结构

1. 2. 3. 4.

IF(条件) THEN 块 ENDIF

说明:没有else块

3.

嵌套结构

1. 2. 3. 4. 5. 6. 7. 8. 9.

IF( ) THEN 块1

ELSE IF( ) THEN 块2 ...

ELSE IF( ) THEN 块n

[ELSE 块n+1] ENDIF

?

逻辑IF语句

只用一行表示一种选择结构,当且仅当条件成立时执行,并且只执行一条

语句;

IF(条件) 语句

?

算术IF语句

IF<算术表达式> N1,N2,N3 当算术表达式的值

<0执行标号为N1的语句; =0执行标号为N2的语句; >0执行标号为N1的语句;

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

循环结构

?

结构形式:循环体[由一些可执行的语句组成]+循环控制语句[控制循环的开始和结束]

?

分类:条件型循环和计数型循环[DO循环]

GOTO语句实现循环

? ?

一般形式:GOTO 其中:S1为语句标号

功能:程序执行到此语句时,无条件的转向标号为S1的语句

DO语句实现循环

? ? ? 当循环的初值\\终值\\循环次数都已知时,可用; 组成:一个DO语句和循环体组成 一般形式: DO I=E1,E2 [,E3] ......ENDDO DO S1 I=E1,E2 [,E3] ...... S1 <终端语句> 例如

DO 10 I=1,19,2 SUM=SUM+1 S1 CONTINUE DO I=1,19,2 SUM=SUM+1 ENDDO DO 10 I=E1,19 ,2 10 SUM=SUM+1

?

说明

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不一致,则自动转换成循环变量的类型 2. 将E1的值赋予循环变量I,及执行赋值语句:I=E1; 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 <终端语句>

?

用块IF和GOTO语句实现循环

一般形式:

S1 IF(条件) THEN 块

GOTO S1 ENDIF

直到型循环的实现

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

?

用逻辑IF语句实现:

S1 循环体

IF(条件) GOTO S1

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

? ?

DO循环适用于已知循环次数的情况 几种循环可以互换

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

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

?

各种循环可以相互嵌套

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

数据的输入和输出

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

系统中隐含的输入\\输出的设备为:键盘\\显示器和打印机 [说明:####(设备,格式)数据列表,当设备显示为*,为默认设备输出,好像是显示器\\或默认设备输入,键盘吧;格式为*,默认格式输出\\输入-david]

有格式的输出

输出语句的一般形式: WRITE (*,S1) <输出列表>

S1 FORMAT(格式说明) 或者

PRINT S1,<输出列表> S1 FORMAT(格式说明)

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

I 编辑符(Integer)

作用:用于整型数据的输出.一般形式:Iw或Iw.m

其中: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语句中,如果出现几个(或者几组)相同的格式编辑符,则可以利用重复系数而只写一个(或者一组)编辑符. 如FORMAT('A=',/,4(5(1X,F4,0),/))

反斜杠/编辑符

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

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.

一般形式: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. 3.

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

即要有确定的数组名和下标值,如XN(5),W(1,3),KW(1,2,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], ?

例如: DIMENSION K(2,3)

DATA((K(I,J),J=1,3),I=1,2) /90,23,20,42,14,32/--------初值列表[2维3列, I=1: 90 23 20

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语句不起任何作用!

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

子程序

FORTRAN子程序:包括函数子程序,子例行程序,数据块子程序 执行:从主程序开始执行,遇到调用语句再执行相应的子程序. 不同类型的子程序,关键字不同,调用方法也不同

?

函数子程序:一种可以作为函数来调用的子程序(\外部函数\

1. 定义:一般形式,由FUNCTION语句和子程序体组成 类型说明 FUNCTION 函数名([虚参FUNCTION 函数名([虚表]) .........(子程序体) END 参表]) 类型说明 函数名 ......(子程序体) END 2. 1. FUNCTION语句:是函数子程序的第一条语句,标志着该函数子程序的开始 1. 类型说明 FUNCTION 函数名([虚参表]) 2. 注意: 1. 虚元也有类型,需在子程序体中说明 1. 例如:REAL FUNCTION INTEP(X1,X2,X3) 2. 2. 3. INTEGER X1,X2,X3 函数名的命名规则和类型都和变量相同 虚参可以是变量名\\数组名\\子程序名,但不允许用常量和数组元素,它表示了函数自变量的个数\\顺序和类型. 2. 子程序体:完成一个具体任务的程序段 3.

注意:

1. 2.

若无虚参时,括号不能省

函数子程序中所有变量和标号(除函数名和虚参外),与其他程序单位无任何关系

3.

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

4.

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

1.

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

2.

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

5.

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

?

函数子程序的调用

1.

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

2.

说明:

1.

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

2.

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

3.

当虚参是变量名的时候,实参可以是常量\\变量\\数组元素或者表达式;但是当虚参要在函数体中被赋予初值的时候,则实参不可以是常量或者表达式[因为两者共用一个存储单元]

4.

函数子程序是一个独立的程序单位,可以作为一个单独的源程序进行存贮和编译,并与调用程序连编后才能起作用.

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

1.

与函数子程序的区别

1.

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

2.

要求返回值的方式不同:函数子程序是通过函数名将函数值带回调用程序;子例行程序是通过'虚实结合'将其新值转送回调用程序

3.

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

4.

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

2.

定义:

1.

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

1. 2.

...... END

2.

说明:

1. 2. 3.

命名规则同变量名[但不用标示类型] 如果没有虚参,括号可以省略

虚参可以是变量名\\数组名\\子程序名,但不允许是常量和数组元素

4.

它的说明部分包括对虚参和本子例行程序体所有变量和数组的说明

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语句说明这些名字.

材料本构的相关力学知识

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

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

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

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

1.

固体力学:研究固体材料及其构成的物体结构在外部干扰(载荷\\温度\\变化等)下的力学响应的科学.按不同的研究对象区分为不同的学科分支.

2.

弹性力学:研究固体材料及由其构成的物体结构在弹性变形阶段的力学行为,包括外部干扰下弹性物体的内力[应力\\,变形[应变]和位移的很不,以及与之相关的原理\\理论和方法.

3. 4.

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

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

5.

弹塑性材料:大多数材料往往都同时具有弹性和塑性性质,特别是在塑性变形阶段,变形中既有可恢复的弹性变形,又有不可恢复的塑性变形;因此有时又称弹塑性材料

6.

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

7.

塑性设计方法:结构中如果有一处或一部分材料\破坏\则认为结构失效(丧失所规定的效用).由于一般的结构都处于非均匀受力状态。当高应力点或高应力区的材料到达弹性界限时、结构的大部

分材料仍处于弹性界限之内;而实际材料在应力超过弹性界限以后并不实际发生破坏,仍具有一定的继续承受应力(载荷)的能力,只不过刚度相对地降低。因此弹性设计方法不能充分发挥材料的潜力,导致材料的某种浪费。实际上,当结构内的局部材料进入塑性变形阶段,在继续增加外载时,结构的达力(应力)分布规律与弹性阶段不同,即所谓内力(应力)重分布;这种重分布总的是使内力(应力)分布更趋均匀,使原来处于低应力区的材料承受更大的应力,从而更好地发挥材料的潜力,提高结构的承载能力。显然,以塑性分析为基础的设计比弹性设计更为优越。但是,塑性设计允许结构有更大的变形,以及完全卸载后结构将存在残余变形。因此,对于刚度要求较高及不允许出现残余变形的场合、这种设计方法不适用。

8.

弹塑性力学的研究对象和方法:是研究结构的强度、刚度和稳定性问题(有时统称为强度问题),以及结构的“破坏”准则或失效准则.在方法上是在一定的边界条件(或再加上初始条件)下求解三类基本方程:平衡(运动)方程、几何方程和本构〔物理)方程。以实验结果为依据,所得结果由实验来检验.

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

力学模型的相关知识

'模型'是'原型'的近似描述或表示。建立模型的原则,一是科学性----

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

1.

材料构造模型:

1.

连续性假设

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

任何空隙,连续紧密地分布于物体所占的整个空间。由此,我们可以认为,一些物理量如应力,应变和位移等可以表示为坐标的连续函数,从而在作数学推导时可方便地运用连续和极限的概念,事实上,一切物体都是由微粒组成的,都不可能符合这个假设。但可以想象,当微粒尺寸及各微粒之间的距离远比物体的几何尺寸小时。运用这个假设不会引起显著的误差.

2.

均匀及各向同性假设

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

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

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

2.

材料力学性质模型

1.

均弹性材料

弹性材料是对实际固体材料的一种抽象.它构成一个近似于真实材料的理想模型。弹性材料的特征是:物体在变形过程中,对应于一定的温度,应力与应变之间呈一一对应的关系,它和载荷的持续时间及变形历史无关;卸载后,其变形可以完全恢复。在变形过程中,应力与应变之间呈线性规律,即服从胡克(Hooke R)规律的弹性材料,称为线性弹性材抖;而某些金属和塑料等,其应力与应变之间呈非线性性质,称为非线性弹性材料。材料弹性规律的应用,就成为弹性力学区别于其它固体力学分支学科的本质特征。

2.

塑性材转

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

是:在变形过程中,应力和应变不再具有一一对应的关系,应变的大小与加载的历史有关但与时间无关;卸载过程中,应力与应变之间按材料固有的弹性规律变化,完全卸载后。物体保持一个永久变形,或称残余变形。变形的不可恢复性是塑性材料的基本特征。

3.

粘性材料

当材料的力学性质具有时间效应,即材料的力学性质与载

荷的待续时间和加载速率相关时,称为粘性材料。实际材料都具有不同程度的枯性性质,只不过有时可以略去不计。

3.

结构计算模型

1.

小变形假设

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

的尺寸。应用这条假设,可使计算模型大为简化。例如,在研究物体的平衡时,可不考虑由于变形所引起的物体尺寸位置的变化;在建立几何方程和物理方程时,可以略去其中的二次及更高次项,使得到的基本方程是线性偏微分方程组。与之相对立的是大变形情况,这时必须考虑几何关系中的二阶或高阶非线性项,导致变形与载荷之间为非线性关系.得到的基本方程是更难求解的非线性偏微分方程组。

2.

无初应力假设

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

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

3.

(3)荷载分类

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

称为体力和面力。

所谓体力,是分布在物体体积内的力,例如重力和惯性力二物体内各点所受的体力一般是不同的.所谓面力,是分布在物体表面上的力,如风力、流体压力、固体间的接触力等二物体上各点所受的面力一般也是不同的。作用在物体表面

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

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

1.弹塑性材料

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

本文来源:https://www.bwwdw.com/article/ptir.html

Top