ABAQUS-二次开发资料-UMAT_第1页
ABAQUS-二次开发资料-UMAT_第2页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、各个楼层及内容索引2 什么是UMAT3 UMAT功能简介4 UMAT开始的变量声明5 UMAT中各个变量的详细解释6 关于沙漏和横向剪切刚度7 UMAT流程和参数表格实例展示8 FORTRAN语言中的接口程序Interface9 关于UMAT是否可以用Fortran90编写的问题10-17Fortran77的一些有用的知识简介20-2530-32弹塑性力学相关知识简介34-37用户材料子程序实例JOhn-cook模型压缩包下载38JOhn-cook模型本构简介图40用户材料子程序实例JOhn-cook模型完整程序+david详细注解欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正

2、确,希望共同探讨,以便更正,带"?"部分,还望各位大师同仁指教1什么是UMAT1.1UMAT功能简介-摘自庄茁老师的书UMAT子程序具有强大的功能,使用UMAT子程序:(1) 可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序功能。ABAQUS软件2003年度用户年会论文集(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS中的任何单元;必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化率。可以和用户子程序"USDFLD”联合使用,通过"USDFLD

3、”重新定义单元每一物质点上传递到UMAT中场变量的数值。1.2UMAT开始的变量声明由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为:SUBROUTINEUMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,4 CEL

4、ENT,DFGRDO,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)CINCLUDE'ABA_PARAM.INC'-此处是将ABAQUS本身自带的参量精度定义的文件包含进来后面详说CCHARACTER*80CMNAMEDIMENSIONSTRESS(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

5、),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)以上是变量声明吧!usercodingtodefineDDSDDE,STRESS,STATEV,SSE,SPD,SCDand,ifnecessary,RPL,DDSDDT,DRPLDE,DRPLDT,PNEWDT此处,看来是将用户定义材料属性的fortran程序编入RETURN这是返回值END结束UMAT中各个变量的详细解释凡是-注明david的,都是我自己猜的,仅供参考DDSDDE(NTENS,NTENS)是一个NTENSNumberoftheTensions-david维的方阵,称作雅可比矩阵,应力增量/应变增量的偏导数

6、,DDSDDE(I,J)表示增量步结束时第J个应变分量的改变引起的第I个应力增量的变化!雅可比是一个对称矩阵,除非在“*USERMATERIAL”语句中加"UNSYMM"参数STRESS(NTENS)应力张量矩阵,对应NDINumberoftheDirectComponents-david个直接分量和NSHRNumberoftheshearComponents-david个剪切分量.在增量步的开始,应力张量矩阵中的数值通过UMAT和主程序之间的接口传递到UMAT中,在增量步的结束,UMAT将对应力张量矩阵更新,即returnl.对于包含刚体转动的有限应变问题,一个增量步条用

7、UMAT之前就已经对应力张量进行了刚体转动,因此在UMAT中只需处理应力张量的共旋部分-这部分我没看明白,敬请高手指点.UMAT中应力张量的度量为柯西(真实)应力STATEV(NSTATEV)STATEVARIABLES(NumberoftheStateVariables)用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT中。也可在子程序USDFLD或UEXPAN中先更新数据,然后增量步开始时将更新后的数据传递到UMAT中。在增量步的结束必须更新状态变量矩阵中的数据。和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状态变量矩阵中的任何矢量或者张量都必须通过

8、旋转来考虑材料的刚体运动。-不懂,请高手指教状态变量矩阵的维数NATATEV,等于关键字“*DEPVAR”定义的数值。状态变量矩阵的维数通过ABAQUS输入文件中的关键字"*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。材料常数的个数,等于关键字"*USERMATERIAL”中"CONSTANTS”常数设定的值。PROPS(NPROPS)材料常数矩阵,矩阵中元素的数值对应于关键字"*USERMATERIAL"下面的数据行。SSE,SPD,SCD分别定义每一增量步的弹性应变能ElasticStrainEnergy,塑性耗散Pl

9、asticDissipation和蠕变耗散CreepDissipation。它们对计算结果没有影响,仅仅作为能量输出。STRAN(NTENS):应变矩阵;DSTRAN(NTENS):D-大抵代表Deta,增量的意思-david应变增量矩阵;DTIME:增量步的时间增量;NDI:直接应力分量的个数;NSHR:剪切应力分量的个数;NTENS:总应力分量的个数,NTENS=NDI+NSHR。13关于沙漏刚度控制和横向剪切刚度使用UMAT时需要注意单元的沙漏控制刚度和横向剪切刚度。通常减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的弹性性质定义的。这些刚度基于材料初始剪切模量

10、的值,通常在材料定义中通过"*ELASTIC”选项定义。但是使用UMAT的时候,ABAQUS对程序输入文件进行预处理的时候得不到剪切模量的数值。所以这时候用户必须使用"*HOURGLASSSTIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用"*TRANSVERSESHEARSTIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。一个问题:得不到剪切模量的数值和解决方案:用户必须使用"*HOURGLASSSTIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用"*TRANSVERSESHEARSTIFFNESS”选

11、项来定义板、壳、梁单元的横向剪切刚度14关于UMAT的流程图和参数表格实例图1UMAT流秣圈FROV:www.SirnWerCom1UMATK科第熬PROPS-11邈;456/S物理性质杨氏模量泊松比塑性耗散比ABnCMSTATEV1-S7-12"13变量意义弹性应变槊悝应变绞效塑性应变跟大家说说所谓的接口程序Interface-FORTRAN的知识在Fortan语言中,主调程序和被调程序是分别编译的.由于Fortran90对过程的许多功能做了扩充,有些功能单靠简单的调用语句已经无法反应,因而系统也就无法进行正确的编译,这时需要在主调程序中加入interface接口块,通过它为主调程

12、序和被调程序指明一个显示的接口.如果被调用中哑元含有假定形状assumed-shape数组,或可选变元,或含键盘输入的参数,就需要interface接口块说明.一般来讲,在Fortran90程序之间需要提供interface块有三种方法:1. 将interface接口块直接写入调用程序,并复制被调用程序的参数列表这种方法简单易用,但也相应增加了维护代码的工作量,因为只要被调用程序的参数列表发生变化,就必须相应改变interface接口块和调用call语句.2. 可以将一个软件包中所有程序的interface块写入一个模块中,该模块被软件包中的所有程序使用.这样做的优点是只需一个模块来检查int

13、erface定义,缺点是仍需对此模块和调用语句进行维护.3. Fortran90编译器可在contains语句后自动提供过程之间的interface块,这种interface块可用于使用模块的任何程序.建议在同一个软件包中使用23的形式,在调用软件包的入口程序时采用12的形式!是不是在UMAT中,我们所编译的带接口的Fortran程序为调用程序,原ABAQUS主程序为被调用程序,调用程序中的第一部分我们先复制被调入程序的参数列表似乎和ABAQUS主程序调用UMAT有些相反了不过个人认为interface作为一个接口块,在Fortran语法中应该放在主调程序中,且复制被调程序的参数列表.而UMA

14、T的参数变量的声明,只不过是为了和ABAQUS使用一致的变量格式,当Fortran程序处理完材料的本构定义之后再以这一致的形式将变量值返回到ABAQUS主程序中吧2关于UMAT用Fortran90可不可以的问题在论坛上搜索了关于这个问题,某位高手说是可以的,只要你自己装的Fortran编译器能成功编译你的Fortran90程序即可,个人认为也是如此,不过我还没有证明过!2.1关于Fortran77的一些有用的简介:Fortran77的基本结构:1. 一个Fortran源程序由一个或者多个程序单位组成,每个独立的程序单位以'end'语句结束2. 每个程序单位包括若干行不能一行写多

15、条语句,但是可以一个语句写成行;分为语句行执行语句行和非执行语句和非语句行注释行源程序的书写格式:1. 不区分大小写:每行只能80列以内,并把80列分为四个区2. 1-5列:标号区1-5位整数;第一列为'*'或者'C'时,为注释行3. 第6列,续行标志区非空格或非0;最多19个续行4. 7-72列:语句区书写语句:一行只能写一个语句5. 73-80列:语句注释区一般做编号注释程序的编辑与运行:1. 创建源程序文件并编写源程序2. 编译并连接源文件3. 运行程序编译生成的可执行文件常量:六种1. 整型常量Integer4位:正负整数和02. 实型常量Real4位:

16、小数和指数形式3. 双精度常量Doubleprecision8位4. 复型常量Complex8位5. 逻辑性常量Logical4位6. 字符型常量Character位变量变量名1. 第一个字符是字母第一个字符后可跟1-5个字母或者数字2. 不区分大小写3. 空格不起作用4. 允许变量名与语言中具有特定含义的字同名,但尽量不适用5. 尽量"见名知义"变量类型不同的变量类型用来存放不同类型的常量数据.变量相应的也有六种;变量在使用前必须首先对其进行类型说明,三种说明方法:按优先级别排列1. 类型说明语句:类型变量名列表,多个变量名之间用逗号隔开,如REALA,B,CDOUBLE

17、PRECISIONX,Y,Z或者REAL*8X,Y,ZCHARACTER*5缺省字符长度5STR1,STR2*8,STR3*19此处,STR1未指明长度,则默认使用缺省长度5;STR2的长度为8;STR3的长度为192. IMPLCIT语句IMPLICIT类型字母表,类型字母表如:IMPLICITREAL(A-D),INTERGER(I-M),DOUBLEPRECISION(X,Z)3. I-N规则:Fortran规定,不加说明的情况下,I-N为整型,其他都为实型几点说明类型语句说明位于所有可执行语句的前面;IMPLICIT语句位于最前面;IMPLICITNONE取消IMPLICIT说明和I-

18、N规则,所有的变量必须显式说明;只在本程序单位有效.2.2关于Fortran77的一些有用的简介2:算术表达式:1. 运算符:+,-,*,/,*2. 优先级:(),*,*/,+-3. 书写问题1. *不能省略2. 括号不分大小写,成对出现3. 多次乘方,按'先右边后左边'处理4. 运算符不能连续出现,要用小括号隔开5. 运算顺序/)>函数->*>*,/>+,-6. 运算中的类型问题:运算类型相同:结果仍为原类型;不同,则自动转换成同一类型7. 误差问题:1. 溢出:超出有效数字范围>解决:很大或者很小的数用实型的指数表示2. 误差:由于有效数字的位

19、数限制,实型数运算存在误差>解决:转换成双精度型或者避免因为书写不当造成有效数字的丢失简单输出输入语句:输入输出三要素:对象哪些数据;格式;设备.输出语句输出语句的分类:格式输出'表控格式输出系统标准格式;无格式输出二进制1. 表控输出语句:按计算机系统规定的格式输出:系统自动为每种类型的数据规定了列数1. 整数的表控输出格式与具体的计算机系统有关:规定每个整数占13列,打印在右端,左补空格;2. 实数的表控输出格式:规定每个实数占17列,打印在右端,左补空格,小数部分占7列;当实数的绝对值=10*7或1时,按标准的指数格式输出,共占15列,指数4列,小数6列2.表控格式输出语句

20、:1. print*,输出表列:print*,56.8,1252. write(*,*)v输出表列输入语句输入输出三要素:对象;格式;设备.分类:同上1. 表控输入语句1. 自由格式输入-语句:read*,v输入表列;read(*,*)v输入表列2. 输入数据以逗号或者空格作为间隔3. 变量名称为输入表4. 输入的数据应和输入表的变量个数类型次序严格地一一对应;少了,程序停止,等待继续输入;多了,程序继续进行,多余的不起作用;较多的数据可以几个一组,回车,再输入几个一组,回车5. 重复数据,可以7*3-7,7,76. 每一个read(*,*)和write(*,*)语句从一个新的记录以回车结束的

21、一批输入输出数据开始读数输出1.例如:read(*,*)A,B,C2.read(*,*)D,I,J3.输入:23-63.5回车4.6.4,91.0回车5.5,8回车6.结果:A=2.3,B=-63.5,C=6.4,7.从新记录开始读数&D=5.0,I=8,J未被赋值PARAMETER语句作用:将程序中经常用到的参数或字符串定义成一个符号常量,其值不可改变.语句:parameter(p1=c1,p2=c2,.,pn=cn).5.符号常量的命名规则与变量名相同,但在程序中其值不可改变,也不能赋值;符号变量也有类型,可用前面的三种类型说明方法说明类型;参数语句是非执行语句,位于

22、所有可执行语句的前面,单位与类型说明语句的后面;一条语句可以定义多个符号常量;优点:方便修改程序END,STOP,PAUSE语句END语句:结束标志,有且仅有一条PAUSEn语句:暂定执行;用于调试程序,n可以是一个字符串或不超过5位的数STOPn语句:停止运行语句;用于调试程序,n可以是一个字符串或不超过5位的数2.3关于Fortran77的一些有用的简介:逻辑运算和选择结构关系表达式1. 构成选择判断的基本式子2. 关系运算符:1.GT.greaterthan>2.GE.greaterthanorequalto>=3.LT.limiterthan<4.LE.limiter

23、thanorequalto<=5.EQ.equalto=6.NE.notequalto3. 一般形式:算术量或者算术表达式关系运算符算术量或者算术表达式4. 运算结果:逻辑值滇.TRUE.'假.FALSE.5. 运算顺序:算术运算关系运算逻辑表达式1. 运算符:1. .and.2. .or.3. .not.4. .eqv.逻辑等5. .neqv.逻辑不等2. 一般形式:逻辑变量逻辑常量关系表达式逻辑运算符逻辑变量逻辑常量关系表达式3. 结果:逻辑值:真.TRUE.'假.FALSE.4. 运算顺序:算术运算-关系运算-逻辑运算5. 逻辑运算优先级:.not.-.and.-.

24、or.-.eqv.-.neqv.关于Fortran77的一些有用的简介4:IF类选择结构用块IF实现选择结构:三种典型形式1. 基本形式1. IF(条件)THEN(块IF语句)2. 块1仃HEN块)3. ELSE(ELSE语句)4. 块2(ELSE块)5. ENDIF(ENDIF语句)6. 说明:IF.THEN语句为块IF结构的入口语句;ENDIF语句为出口语句,必须对应,配对使用2. 简单结构1. IF(条件)THEN2. 块3. ENDIF4. 说明:没有else块3. 嵌套结构1. IF()THEN2. 块13. ELSEIF()THEN4. 块2.6ELSEIF()THEN7. 块n8

25、. ELSE块n+19. ENDIF逻辑IF语句只用一行表示一种选择结构,当且仅当条件成立时执行,并且只执行一条语句;IF(条件)语句算术IF语句IFv算术表达式N1,N2,N3当算术表达式的值<0执行标号为N1的语句;=0执行标号为N2的语句;>0执行标号为N1的语句;关于Fortran77的一些有用的简介:循环结构结构形式:循环体由一些可执行的语句组成+循环控制语句控制循环的开始和结束分类:条件型循环和计数型循环DO循环GOTO语句实现循环一般形式:GOTOvS1>其中:S1为语句标号功能:程序执行到此语句时,无条件的转向标号为S1的语句DO语句实现循环当循环的初值终值循

26、环次数都已知时,可用;组成:一个DO语句和循环体组成一般形式:DOS1I=E1,E2,E3DOI=E1,E2,E3S1<终端语句.ENDDO例如DO101=1,19,2DO10I=E1,19,2SUM=SUM+1S1CONTINUE10SUM=SUM+1DO1=1,19,2SUM=SUM+1ENDDO说明1. I为循环变量,S1为语句标号,是本程序单位中另一可执行语句的标号;2. 步长可以省略,缺省值=1;3. 循环初值E1,终值E2和步长E3都可以是常量变量表达式;4. 由于实数在内存中存储的误差,I,E1,E2,E3尽可能用振型量5. E1,E2,E3都可正可负,E1,E2,可为0,

27、但是E3不能为0.具体执行过程1. 执行DO语句,首先计算表达式E1,E2,E3的值,若他们的类型与循环变量I不一致,则自动转换成循环变量的类型2. 将E1的值赋予循环变量I,及执行赋值语句:I=E1;3. 计算循环次数:R=MAX0(E2-E1+E3)/E3,MAX0表示从多个整型变量中取最大的一个;4. 检查循环次数:若R=0则不执行循环体内的语句,跳出循环;RHO则执行循环体内的语句5. 执行循环终端语句:I=I+E3,即是循环变量获得一个新值,而循环次数R自动减1;6. 返回步骤4,继续执行,直到R=0. CONTINUE语句循环终端语句必须是可执行语句;那么,这种作为循环终端的语句具

28、有双重作用:一是作为循环终端的标志;而是要完成自身的功能.因此影响了程序的可读性.FORTRAN用一个专门的语句作为DO循环的终端语句,即CONTINUE语句.它自身没有任何功能. 一些规定1. 循环变量在循环体内只能被引用,不能被赋值;2. 在执行DO循环体期间,E1,E2,E3的值不能被改变,因为他们决定了循环的次数3. 离开DO循环后,循环变量可以在循环体外被引用,它的值为脱离循环时最后一次被赋的值;4. 程序中用到转移语句,规定:只允许从循环体内-体外;反之不行;5. 循环终端语句必须是除GOTO,块IF,ENDIF,END和STOP语句外的任何可执行语句 DO循环的嵌套在一个DO循环

29、中还可以包含一个或者多个完整的DO循环,这就是DO循环的嵌套.一般形式:DO101=1,10DO20J=1,1020CONTINUE10CONTINUE说明:嵌套要完整,不能交叉循环变量的名字,规定:并列的循环:循环变量的名字可以相同;嵌套的循环:循环变量的名字不可以相同若多层循环的结束语句在同一个地方,可以共用一条CONTINUE语句控制转向语句的使用体内-体外当型循环的实现在无法确定循环次数的情况下可以使用当型循环.当型循环是指执行循环体要依据实现给定的条件:当条件成立时执行循环,否则不执行.用DO-WHILE语句实现当型循环一般形式:DOS1,WHILE(条件)S1终端语句用块IF和GO

30、TO语句实现循环一般形式:S1IF(条件)THEN块GOTOS1ENDIF直到型循环的实现所谓直到型循环,是指先执行循环体,再判断条件.如果条件为'假',继续执行循环体,直到条件为'真'时终止循环.用逻辑IF语句实现:S1循环体IF(条件)GOTOS1几种循环形式的关系和比较DO循环适用于已知循环次数的情况几种循环可以互换DO循环:条件型循环可用次数作为条件当型循环:直到型循环当型:块IF语句(单边)+GOTO语句(先判断后执行)直到型:逻辑IF语句+GOTO语句(先执行后判断)各种循环可以相互嵌套2.4关于Fortran77的一些有用的简介:数据的输入和输出数

31、据输入输出需要确定的三个基本要素:输入输出的设备输入输出的格式输入输出的数据系统中隐含的输入输出的设备为:键盘显示器和打印机说明:#(设备,格式)数据列表,当设备显示为*,为默认设备输出,好像是显示器或默认设备输入,键盘吧;格式为*,默认格式输出输入-david有格式的输出输出语句的一般形式:WRITE(*,S1)<输出列表S1FORMAT(格式说明)或者PRINTS1,<输出列表S1FORMAT(格式说明)格式说明符:主要介绍:I,F,E,D,G,L,A/(撇号),Hr(重复系数),/(斜杠)I 编辑符(Integer)作用:用于整型数据的输出.一般形式:Iw或Iw.m其中:1表

32、示整型输出,w为字段宽度,m表示输出数据的最少数字位数注意:数据输出时,在指定的区域内向右靠齐;如果数据的实际位数大于指定的字段宽度w,则不输出数据,而在该区域内充满"*"号;当m大于数据的实际位数时,前面添0,若小于数据实际位数,则不起作用F编辑符(Fixedpointnumber)作用:用于实数的小数形式输出,一般形式:Fw.d其中:F表示实数的小数形式输出;w为字段宽度;d为输出数据的小数位数E编辑符(IExponent)作用:用于实数的指数形式输出,一般形式:Ew.d其中:E表示实数的指数形式输出;w为字段宽度;d为数字部分的小数位数注意:指数部分占4列,负号占1列

33、,小数点前为0.如123.45->0.12345E+03D编辑符(Doubleprecision)作用:用于双精度的指数形式输出,用法和E编辑符相仿.一般形式w.dG编辑符作用:由系统根据实际数据的大小来决定使用F编辑符还是E编辑符.一般形式:Gw.dL编辑符作用:用于逻辑型数据的输出,一般形式w其中表示整型输出,w为字段宽度A编辑符作用:用于字符型数据的输出,一般形式:Aw或A其中:A表示整型输出,w为字段宽度;若不指定,则表示按实际长度输出'(撇号)编辑符作用:用于输出字符常量,即把撇号内的字符串原样输出.注意:如果输出的字符中包含撇号,则用两个连续的撇号代表一个要输出的撇号

34、H编辑符作用:用于输出字符常量.一般形式:nH<str>其中:H表示输出字符常量;n为输出字符个数;str为输出的字符串(较少使用)X编辑符作用:用于输出空格.一般形式:nx其中:X表示输出空格;n表示输出的空格数重复系数r在format语句中,如果出现几个(或者几组)相同的格式编辑符,则可以利用重复系数而只写一个(或者一组)编辑符.如FORMAT('A=',/,4(5(1X,F4,0),/)反斜杠/编辑符作用:结束本记录的输出,开始下一个记录的输出,通常指换行.WRITE语句和FORMAT语句的相互作用WRITE语句的输出变量个数与FORMAT语句的编辑符(不含撇

35、号,H和X)个数可以相等,也可以不等;如果编辑符个数多,则剩余的编辑符不起作用;如果变量的个数多,则当编辑符用完后,重新使用该格式说明,当如果格式说明含带重复系数的编辑符组,则格式说明用完后,只有最右面一个带重复系数的编辑符组(包含重复系数)及其右面的编辑符被重复使用.可以有空格式说明,如FORMAT。,用于输出一个空行.有格式的输入有格式的输入语句一般形式:READ(*,S1)输入列表S1FORMAT(格式说明由各种格式编辑符构成)例如:READ(*,100)A,B,C100FORMAT(F5.1,E12.2,F7.2)END键盘输入:_15.7_2345.67E+04_705.83ente

36、r在PRINTWRITEREAD语句中包含格式说明例如:PRINT100,K,Y100FORMAT(18,F7.2)也可以写成:PRINT'(18,F7.2)',K,Y注意写法:'()'关于Fortran77的一些有用的简介7:数组使用原则:"先声明,后使用"说明方法:用类型说明语句(显式说明)用DIMENSION语句(隐式说明)数组的说明和数组元素的引用用类型语句说明数组1. 一般形式:类型说明数组说明符2. 其中:数组说明符的一般形式为:数组名(维数说明符,.)维数说明符,由"下标下界:下标上界"组成3. 例如:REA

37、LX(1:10),W(1:2,1:3),K(10:20)或者INTEGERB(1:100),PY(0:2,0:3,0:5)用DIMENSION语句说明数组1.一般形式:DIMENSION数组说明符,说明:1. 在数组说明符中,维数说明符(下标)的个数成为数组的维数2. 维数说明符只能使用整型常量或者整型符号常量表达式:如PARANETER(I=1,J=1O)REALKX(l:J+5)3. 维数说明符的下标下界为1时,可以省略.如:REALX(1:10)->REALX(10)4. 数组说明语句必须写在所有可执行的语句之前.属于非执行语句数组元素的引用1. 一般形式:数组名(下标,)2. 即

38、要有确定的数组名和下标值,如XN(5),W(1,3),KW(1,2,3)3. 引用数组元素时,下标可用算术表达式,如果算术表达式的值为实行,则自动取整.数组的逻辑结构和存储结构逻辑结构:数组所表示的实际数据结构存储结构:数组在机器内存储时的排列结构 一维数组逻辑结构:依次排列的一串数据存储结构:一组连续存放的一列数据块二维数组逻辑结构:一张二维数据表存储结构:一组按列连续存放的数据块三维数组逻辑结构:若干张二维数据表存储结构:一组按页连续存放的数据块数组的输入和输出三种方式:用DO循环用隐含DO循环用数组名用DO循环实现数组的输入输出1. 优点:数组元素的输入输出次序可由用户控制2. 缺点:做

39、一次循环就换行输入或输出用隐含DO循环实现数组的输入输出1. 优点:既能控制数组元素的输入输出顺序,又能控制一行内输入输出数据的个数2. 例如:READ(*,*)(G(I,J),J=1,3),I=1,2),由于是一个READ语句,所以既可以一行输入,也可以多行输入,键盘输入如下:86,75,72enter87,70,83enter3. 注意:一个READ语句可以多行输入;但是多个READ语句时,每一个READ语句必须从心的一行读数.用数据名进行数组的输入输出使用时,其顺序要与数组元素在机器内的存储顺序一致例如:DIMENSIONK(5)READ*,K对数组进行整体操纵等价于:READ*,K(1

40、),K,K(3),K,K(5)也等价于:READ*,(K(I),I=1,5)使用DATA语句给数组赋初值 一般形式:DATA变量列表初值表,变量列表初值表功能:在程序编译期间给变量或者数组赋初值.其中,变量列表可以是变量名数组名数组元素隐DO循法;初值表只能是常量,不允许出现任何形式的表达式例如:DATAA,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,例如:DIMENSIONK(2,3)DATA(K(I,J),J=1,3),I=1,2)/90,23,20,42,14,32/初值列表2维3列,

41、I=1:9023201=2:421432或DATAK/90,42,23,14,20,32/-排列为按列排,排满一列之后,再排下一列;902320david421432例如:DIMENSIONA(10)DATAA/10*1.0/(表示'10个1.0')注意:DATA语句属于说明语句,但是它可以放在END语句之前的任意行;当程序中有多个DATA语句给同一个变量赋初值时,以最后一条为准;程序在编译期间给变量赋予初值,在程序执行期间,DATA语句不起任何作用!2.5关于Fortran77的一些有用的简介8子程序FORTRAN子程序:包括函数子程序,子例行程序,数据块子程序执行:从主程序

42、开始执行,遇到调用语句再执行相应的子程序.不同类型的子程序,关键字不同,调用方法也不同函数子程序:一种可以作为函数来调用的子程序("外部函数")FUNCTION(虚参表)类型说明函数名1.定义:一般形式,由FUNCTION语句和子程序体组成类型说明FUNCTION函数名(虚参表)(子程序体)END序体)END2.1. FUNCTION语句:是函数子程序的第一条语句,标志着该函数子程序的开始1.类型说明FUNCTION函数名(虚参表)2.注意:1. 虚元也有类型,需在子程序体中说明1. 例如:REALFUNCTIONINTEP(X1,X2,X3)2. INTEGERX1,X2

43、,X32. 函数名的命名规则和类型都和变量相同3. 虚参可以是变量名数组名子程序名,但不允许用常量和数组元素,它表示了函数自变量的个数顺序和类型.2. 子程序体:完成一个具体任务的程序段3. 注意:1. 若无虚参时,括号不能省2. 函数子程序中所有变量和标号(除函数名和虚参外),与其他程序单位无任何关系3. 函数体的说明部分包括对虚参和本函数体内所用变量和数组的说明4. 函数体中可设置一条或者多条RETURN语句,表示执行到此语句时返回调用程序.1. 当RETURN语句和END语句紧挨着的时候,可省略RETURN语句2. 也可以不设RETURN语句,但需从中间返回时,必须设置RETURN语句5

44、. 函数名的作用:函数名在函数体中一定要被赋值,因为函数名把函数值带回调用程序.函数子程序的调用1. 一般形式:调用方式和内部函数相似:函数名(实参数)或函数名()2. 说明:1. 调用程序中函数名必须与函数子程序中定义的函数名相同2. 实参与虚参在个数类型位置上必须一一对应,但名字可以不同3. 当虚参是变量名的时候,实参可以是常量变量数组元素或者表达式;但是当虚参要在函数体中被赋予初值的时候,则实参不可以是常量或者表达式因为两者共用一个存储单元4. 函数子程序是一个独立的程序单位,可以作为一个单独的源程序进行存贮和编译,4材料本构并与相关力学知跻虽然目前要做的工作就是用UMAT把一个新的材料

45、的本构加进ABAQUS中调用,但是我并不想仅仅局限于此.在这个过程中,我会把自己遇到的所有相关问题学懂弄透再去编这个程序.所以估计我这个帖子会很长滴!我力学知识不是很好,所以这两天要好好学习一下力学知识,主要是弹塑性力学吧!说说弹塑性力学一1弹性力学塑性力学弹塑性力学弹性力学和塑性力学时固体力学的两个重要分支.1. 固体力学:研究固体材料及其构成的物体结构在外部干扰(载荷温度变化等)下的力学响应的科学.按不同的研究对象区分为不同的学科分支.2. 弹性力学:研究固体材料及由其构成的物体结构在弹性变形阶段的力学行为,包括外部干扰下弹性物体的内力应力,变形应变和位移的很不,以及与之相关的原理理论和方

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

47、;因此有时又称弹塑性材料6. 弹,性设计方法:是以弹性分析为基础的结构设计,假定材料为理想弹性地,相应地这种设计观点便以分析结果的实际使用范围作为设计的失效准则,即认为应力严格地说是应力的某一函数值/达到一定限值弹性界晦将进入塑性变形阶段时材料将破坏7. 塑,性设计方法:结构中如果有一处或一部分材料"破坏",则认为结构失效(丧失所规定的效用).由于一般的结构都处于非均匀受力状态。当高应力点或高应力区的材料到达弹性界限时、结构的大部分材料仍处于弹性界限之内;而实际材料在应力超过弹性界限以后并不实际发生破坏,仍具有一定的继续承受应力(载荷)的能力,只不过刚度相对地降低。因此弹性

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

49、的"破坏”准则或失效准则.在方法上是在一定的边界条件(或再加上初始条件)下求解三类基本方程:平衡(运动)方程、几何方程和本构物理)方程。以实验结果为依据,所得结果由实验来检验.4.1说说弹塑性力学2力学模型的相关知识'模型'是'原型'的近似描述或表示。建立模型的原则,一是科学性一能尽可能地近似表示原型;二是实用性-能方便地应用。显然,一种科学(力学)模型的建立,要受到科学技术水平的制约。总的来说,力学模型大致有三个层次:材料构造模塑,材料力学性质模型,以及结构计算模型。第一类模型属于基本的,它们属于科学假设范畴。因此,往往以“假设”的形式出现。模型&#

50、39;有时还与一种理论相对应;因而在有些情况下,模型'、假设'和'理论'可以是等义的。1. 材料构造模型:1. 连续性假设2. 假定固体材料是连续介质,即组成物体的质点之间不存在3. 任何空隙,连续紧密地分布于物体所占的整个空间。由此,我们可以认为,一些物理量如应力,应变和位移等可以表示为坐标的连续函数,从而在作数学推导时可方便地运用连续和极限的概念,事实上,一切物体都是由微粒组成的,都不可能符合这个假设。但可以想象,当微粒尺寸及各微粒之间的距离远比物体的几何尺寸小时。运用这个假设不会引起显著的误差.4. 均匀及各向同性假设5. 假设物体由同一类型的均匀材料组成

51、,即物体内各点与各6. 方向上的物理性质相同(各向同性);物体各部分具有相同的物7. 理性质.不会随坐标的改变而变化(均匀性)2. 材料力学性质模型1. 均弹性材料2. 弹性材料是对实际固体材料的一种抽象.它构成一个近似于真实材料的理想模型。弹性材料的特征是:物体在变形过程中,对应于一定的温度,应力与应变之间呈对应的关系,它和载荷的持续时间及变形历史无关;卸载后,其变形可以完全恢复。在变形过程中,应力与应变之间呈线性规律,即服从胡克(HookeR)规律的弹性材料,称为线性弹性材抖;而某些金属和塑料等,其应力与应变之间呈非线性性质,称为非线性弹性材料。材料弹性规律的应用,就成为弹性力学区别于其它

52、固体力学分支学科的本质特征。3. 塑性材转4. 塑性材料也是固体材料的一种理想模型。塑性材料的特征5. 是:在变形过程中,应力和应变不再具有对应的关系,应变的大小与加载的历史有关但与时间无关;卸载过程中,应力与应变之间按材料固有的弹性规律变化,完全卸载后。物体保持一个永久变形,或称残余变形。变形的不可恢复性是塑性材料的基本特征。6. 粘性材料7. 当材料的力学性质具有时间效应,即材料的力学性质与载8. 荷的待续时间和加载速率相关时,称为粘性材料。实际材料都具有不同程度的枯性性质,只不过有时可以略去不计。3. 结构计算模型1. 小变形假设2. 假定物体在外部因素作用下所产生的位移远小于物体原来3

53、. 的尺寸。应用这条假设,可使计算模型大为简化。例如,在研究物体的平衡时,可不考虑由于变形所引起的物体尺寸位置的变化;在建立几何方程和物理方程时,可以略去其中的二次及更高次项,使得到的基本方程是线性偏微分方程组。与之相对立的是大变形情况,这时必须考虑几何关系中的二阶或高阶非线性项,导致变形与载荷之间为非线性关系.得到的基本方程是更难求解的非线性偏微分方程组。4. 无初应力假设5. 假定物体原来是处于一种无应力的自然状态。即在外力作6. 用以前,物体内各点应力均为零。我们的分析计算是从这种状态出发的。7. 荷载分类8. 作用于物体的外力可以分为体积力和表面力,两者分别简9. 称为体力和面力。10

54、. 所谓体力,是分布在物体体积内的力,例如重力和惯性力二物体内各点所受的体力一般是不同的.所谓面力,是分布在物体表面上的力,如风力、流体压力、固体间的接触力等二物体上各点所受的面力一般也是不同的。作用在物体表面11. 上的力都占有一定的面积;当作用面很小或呈狭长形时.可分别理想化为集中力或线集中力。4.2说说弹塑性力学31. 弹塑性材料固体材料在受力后产生变形,从变形开始到破坏一般要经历弹性变形和塑性变形这两个阶段。根据材料力学性质的不同,有的弹性阶段较明显,而塑性阶段很不明显,象铸铁等脆性材料,往往经历弹性阶段后就破坏。有的则弹性阶段很不明显,从开始变形就伴随着塑性变形,弹塑性变形总是耦联产

55、生,象混凝土材料就是这洋。而大部分固体材料都呈现出明显的弹性变形阶段和塑性变形阶段。今后我们主要是讨论这种有弹性与塑性变形阶段的固体材料,并统称为弹塑性材料。2. 鲍辛格效应由于预加塑性拉伸荷载而使压缩屈服应力降低的现象称为Bauschinger效应.正是由于这种效应,塑性变形时一种各向异性的过程,Bauschinger效应是一种由塑性应变引起的特殊的方向各向异性的形式,因为在后继逆向荷载作用下,一个方向的初始塑性变形会减小其反方向的屈服一个应力.在多轴应力情况下,与这种现象对应的是具有不同方向屈服应力之间的相互影响和横向效应,某一方向的预加应变达到塑性范围将会改变其所有方向的屈服应力值.因此Bauschinger效应对于多维问题更重要,包括荷载方向有明显改变的复杂应力历史,比如应力改变符号和循环荷载的情况.3. 弹性变形与塑性变形的区别:1. 卸除载荷后。变形可以完全恢复,是弹性变形的基本特征,而变形的不可恢复性是塑性变形的基本特征。弹性与塑性的基本区别不在于它们的应力一应变关系是否线性,例如,在比例极限与弹性极限之间的AB曲线段,应力与应变不再成比例,进入了非线性阶段,但在B点以前卸除载荷,变形仍将完成恢复,属于弹性变形阶段。因此,单性和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论