ABAQUS-二次开发资料.pdf
《ABAQUS-二次开发资料.pdf》由会员分享,可在线阅读,更多相关《ABAQUS-二次开发资料.pdf(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、各个楼层及内容索引 2-什么是 UMAT 3-UMAT 功能简介 4-UMAT 开始的变量声明 5-UMAT 中各个变量的详细解释 6-关于沙漏和横向剪切刚度 7-UMAT 流程和参数表格实例展示 8-FORTRAN 语言中的接口程序 Interface 9-关于 UMAT 是否可以用 Fortran90 编写的问题-Fortran77 的一些有用的知识简介 20-2530-32-弹塑性力学相关知识简介 34-37-用户材料子程序实例 JOhn-cook 模型压缩包下载 38-JOhn-cook 模型本构简介图 40-用户材料子程序实例 JOhn-cook 模型完整程序+david 详细注解欢
2、迎大家来看看,并提供意见,完全是自己的 diy 的,不保证完全正确,希望共同探讨,以便更正,带部分,还望各位大师同仁指教 1 什么是 UMAT UMAT 功能简介!-摘自庄茁老师的书 UMAT 子程序具有强大的功能,使用 UMAT 子程序:(1)可以定义材料的本构关系,使用 ABAQUS 材料库中没有包含的材料进行计算,扩充程序 功能。ABAQUS 软件 2003 年度用户年会论文集(2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予 ABAQUS 中 的任何单元;(3)必须在 UMAT 中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量 的变化率。(
3、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,NSTAT
4、V,PROPS,NPROPS,COORDS,DROT,PNEWDT,4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)C INCLUDE-此处是将 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),
5、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)是一个 NTENSNumber
6、 of the Tensions-david维的方阵,称作雅可比矩阵,应力增量/应变增量的偏导数,DDSDDE(I,J)表示增量步结束时第 J 个应变分量的改变引起的第 I 个应力增量的变化!雅可比是一个对称矩阵,除非在“*USER MATERIAL”语句中加UNSYMM参数 STRESS(NTENS)应力张量矩阵,对应 NDINumber of the Direct Components-david个直接分量和 NSHRNumber of the shear Components-david个剪切分量.在增量步的开始,应力张量矩阵中的数值通过 UMAT 和主程序之间的接口传递到 UMAT中,
7、在增量步的结束,UMAT将对应力张量矩阵更新,即return.对于包含刚体转动的有限应变问题,一个增量步条用 UMAT 之前就已经对应力张量进行了刚体转动,因此在 UMAT 中只需处理应力张量的共旋部分-这部分我没看明白,敬请高手指点.UMAT 中应力张量的度量为柯西(真实)应力 STATEV(NSTATEV)STATE VARIABLES(Number of the State Variables)用于存储状态变量的矩阵,在增量步开始时将数值传递到 UMAT 中。也可在子程序 USDFLD 或UEXPAN 中先更新数据,然后增量步开始时将更新后的数据传递到 UMAT 中。在增量步的结束必须更
8、新状态变量矩阵中的数据。和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。-不懂,请高手指教 状态变量矩阵的维数 NATATEV,等于关键字“*DEPVAR”定义的数值。状态变量矩阵的维数通过 ABAQUS输入文件中的关键字“*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。PROPS(NPROPS)材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。
9、SSE,SPD,SCD 分别定义每一增量步的弹性应变能Elastic Strain Energy,塑性耗散Plastic Dissipation和蠕变耗散Creep Dissipation。它们对计算结果没有影响,仅仅作为能量输出。STRAN(NTENS):应变矩阵;DSTRAN(NTENS):D-大抵代表 Deta,增量的意思-david应变增量矩阵;DTIME:增量步的时间增量;NDI:直接应力分量的个数;NSHR:剪切应力分量的个数;NTENS:总应力分量的个数,NTENS=NDI+NSHR。关于沙漏刚度控制和横向剪切刚度 使用 UMAT 时需要注意单元的沙漏控制刚度和横向剪切刚度。通常
10、减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的 弹性性质定义的。这些刚度基于材料初始剪切模量的值,通常在材料定义中通过“*ELASTIC”选项定义。但是使用 UMAT 的时候,ABAQUS 对程序输入文件进行预处理的时候得不到剪切模量的数值。所以这时候用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。-一个问题:得不到剪切模量的数值 和 解决方案:用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有
11、沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度 关于 UMAT 的流程图和参数表格实例 跟大家说说所谓的接口程序Interface-FORTRAN 的知识 在 Fortan 语言中,主调程序和被调程序是分别编译的.由于 Fortran90 对过程的许多功能做了扩充,有些功能单靠简单的调用语句已经无法反应,因而系统也就无法进行正确的编译,这时需要在主调程序中加入 interface 接口块,通过它为主调程序和被调程序指明一个显示的接口.如果被调用中哑元含有假定形状assumed-shape数组,或可选变元,或含键
12、盘输入的参数,就需要 interface 接口块说明.一般来讲,在Fortran90 程序之间需要提供 interface 块有三种方法:1.将 interface 接口块直接写入调用程序,并复制被调用程序的参数列表这种方法简单易用,但也相应增加了维护代码的工作量,因为只要被调用程序的参数列表发生变化,就必须相应改变 interface 接口块和调用call语句.2.可以将一个软件包中所有程序的 interface 块写入一个模块中,该模块被软件包中的所有程序使用.这样做的优点是只需一个模块来检查 interface 定义,缺点是仍需对此模块和调用语句进行维护.编译器可在 contains 语
13、句后自动提供过程之间的 interface 块,这种 interface 块可用于使用模块的任何程序.建议在同一个软件包中使用 23 的形式,在调用软件包的入口程序时采用 12 的形式!是不是在 UMAT 中,我们所编译的带接口的 Fortran 程序为调用程序,原 ABAQUS 主程序为被调用程序,调用程序中的第一部分我们先复制被调入程序的参数列表似乎和ABAQUS主程序调用UMAT有些相反了不过个人认为 interface作为一个接口块,在Fortran语法中应该放在主调程序中,且复制被调程序的参数列表.而 UMAT 的参数变量的声明,只不过是为了和 ABAQUS 使用一致的变量格式,当
14、Fortran 程序处理完材料的本构定义之后再以这一致的形式将变量值返回到 ABAQUS 主程序中吧 2 关于 UMAT 用 Fortran90 可不可以的问题 在论坛上搜索了关于这个问题,某位高手说是可以的,只要你自己装的 Fortran 编译器能成功编译你的Fortran90 程序即可,个人认为也是如此,不过我还没有证明过!关于 Fortran77 的一些有用的简介1: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 位:正负整数和 0 2.实型常量Real4 位:小数和指数形式 3.双精度常量Double precision8
16、 位 4.复型常量Complex8 位 5.逻辑性常量Logical4 位 6.字符型常量Character1 位 变量 变量名 1.第一个字符是字母第一个字符后可跟 1-5 个字母或者数字 2.不区分大小写 3.空格不起作用 4.允许变量名与语言中具有特定含义的字同名,但尽量不适用 5.尽量见名知义 变量类型 不同的变量类型用来存放不同类型的常量数据.变量相应的也有六种;变量在使用前必须首先对其进行类型说明,三种说明方法:按优先级别排列 1.类型说明语句:类型 变量名列表,多个变量名之间用逗号隔开,如 REAL A,B,C DOUBLE PRECISION X,Y,Z或者 REAL*8 X,
17、Y,Z CHARACTER*5 缺省字符长度 5 STR1,STR2*8,STR3*19 此处,STR1 未指明长度,则默认使用缺省长度 5;STR2 的长度为 8;STR3 的长度为 19 2.IMPLCIT 语句:IMPLICIT 类型字母表,类型字母表,.如:IMPLICITREAL(A-D),INTERGER(I-M),DOUBLE PRECISION(X,Z)3.I-N 规则:Fortran 规定,不加说明的情况下,I-N 为整型,其他都为实型 几点说明 类型语句说明位于所有可执行语句的前面;IMPLICIT 语句位于最前面;IMPLICIT NONE 取消 IMPLICIT 说明和
18、 I-N 规则,所有的变量必须显式说明;只在本程序单位有效.关于 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.表控格式输出语句:1.print*,:print*,125
20、 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(*
21、,*)D,I,J 3.输入:,回车 4.,回车 5.5,8回车 6.结果:A=,B=,C=,7.从新记录开始读数 8.D=,I=8,J 未被赋值 PARAMETER 语句 作用:将程序中经常用到的参数或字符串定义成一个符号常量,其值不可改变.语句:parameter(p1=c1,p2=c2,.,pn=cn)注意:1.符号常量的命名规则与变量名相同,但在程序中其值不可改变,也不能赋值;2.符号变量也有类型,可用前面的三种类型说明方法说明类型;3.参数语句是非执行语句,位于所有可执行语句的前面,单位与类型说明语句的后面;4.一条语句可以定义多个符号常量;5.优点:方便修改程序 END,STOP,P
22、AUSE 语句 END 语句:结束标志,有且仅有一条 PAUSEn语句:暂定执行;用于调试程序,n 可以是一个字符串或不超过 5 位的数 STOPn语句:停止运行语句;用于调试程序,n 可以是一个字符串或不超过 5 位的数 关于 Fortran77 的一些有用的简介3:逻辑运算和选择结构 关系表达式 1.构成选择判断的基本式子 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
23、 to 3.一般形式:4.运算结果:逻辑值:真.TRUE.假.FALSE.5.运算顺序:算术运算关系运算 逻辑表达式 1.运算符:1.and.2.or.3.not.4.eqv.逻辑等 5.neqv.逻辑不等 2.一般形式:3.结果:逻辑值:真.TRUE.假.FALSE.4.运算顺序:算术运算-关系运算-逻辑运算 5.逻辑运算优先级:.neqv.关于 Fortran77 的一些有用的简介4:IF 类选择结构 用块 IF 实现选择结构:三种典型形式 1.基本形式 1.IF(条件)THEN (块 IF 语句)2.块 1 (THEN 块)3.ELSE (ELSE 语句)4.块 2 (ELSE 块)5.
24、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 7.块 n 8.ELSE 块 n+1 9.ENDIF 逻辑 IF 语句 只用一行表示一种选择结构,当且仅当条件成立时执行,并且只执行一条语句;IF(条件)语句 算术 IF 语句 IF N1,N2,N3 当算术表达式的值 0 执行标号为
25、N1 的语句;关于 Fortran77 的一些有用的简介5:循环结构 结构形式:循环体由一些可执行的语句组成+循环控制语句控制循环的开始和结束 分类:条件型循环和计数型循环DO 循环 GOTO 语句实现循环 一般形式:GOTO其中:S1 为语句标号 功能:程序执行到此语句时,无条件的转向标号为 S1 的语句 DO 语句实现循环 当循环的初值终值循环次数都已知时,可用;组成:一个 DO 语句和循环体组成 一般形式:DOS1 I=E1,E2,E3 DO I=E1,E2,E3 .S1 .ENDDO 例如 DO10I=1,19,2 DO10I=E1,19,2 SUM=SUM+1 S1CONTINUE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAQUS 二次开发 资料
限制150内