ABAQUS VUMAT初学者用户子程序小例子
Abaqus用户子程序VUMAT

Component 1 2 3 4 5 6 7 8 9
2-D Case 3-D Case
Initial calculations and checks
abaqus1用户材料子程序

19 ABAQUS用户材料子程序(UMAT)虽然ABAQUS为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题;但是现实世界毕竟十分复杂,ABAQUS不可能把所有可能出现的问题都包含进去。
所以ABAQUS提供了大量的用户子程序(User Subroutine)。
用户子程序允许用户在找不到合适模型的情况下自行定义符合自己问题的模型。
这些用户子程序涵盖了建模从载荷到单元的几乎各个部分。
ABAQUS为用户提供的这个接口,允许用户通过自定义的子程序定制ABAQUS,以实现特定的功能。
用户子程序具有以下的功能和特点:(1)如果ABAQUS的一些固有选项模型功能有限;用户子程序可以提高ABAQUS中这些选项的功能;(2)通常用户子程序是用FORTRAN语言的代码写成;(3)它可以以几种不同的方式包含在模型中;(4)由于它们没有存储在restart文件中,如果需要的话,可以在重新开始运行时修改它;(5)在某些情况下它可以利用ABAQUS允许的已有程序。
要在模型中包含用户子程序,可以利用ABAQUS执行程序,在abaqus执行程序中应用user选项指明包含这些子程序的FORTRAN源程序或者目标程序的名字。
提示:ABAQUS的输入文件除了可以通过ABAQUS/CAE的作业模块中提交运行外,还可以在ABAQUS Command窗口中输入ABAQUS执行程序直接运行:ABAQUS job=输入文件名 user=用户子程序的Fortran文件名ABAQUS/Standard和ABAQUS/Explicit都支持用户子程序功能,但是他们所支持的用户子程序种类不尽相同,读者在需要使用时请注意查询手册。
在接下来的最后两章里,我们将讨论两种常用的用户子程序——用户材料子程序和用户单元子程序。
本章将通过在ABAQUS/Standard中创建Johnson-Cook的材料模型,对编写Standard 的用户材料子程序UMAT进行一个简单介绍。
ABAQUS初学者应用算例

我们将通过ABAQUS/CAE完成上图的建模及分析过程。
首先我们创建几何体一、创建基本特征:1、首先运行ABAQUS/CAE,在出现的对话框内选择Create Model Database。
2、从Module列表中选择Part,进入Part模块3、选择Part→Create来创建一个新的部件。
在提示区域会出现这样一个信息。
4、CAE弹出一个如右图的对话框。
将这个部件命名为Hinge-hole,确认Modeling Space、Type和Base Feature的选项如右图。
5、输入200作为Approximate size的值。
点击Continue。
ABAQUS/CAE初始化草图,并显示格子。
6、在工具栏选择Create Lines: Rectangle(4 Lines),在提示栏出现如下的提示后,输入(20,20)和7、在提示框点击OK按钮。
CAE弹出Edit Basic Extrusion对话框。
8、输入40作为Depth的数值,点击OK按钮。
二、在基本特征上加个轮缘 1、在主菜单上选择Shape→Solid→Extrude。
2、选择六面体的前表面,点击左键。
3、选择如下图所示的边,点击左键。
4、如右上图那样利用 图标创建三条线段。
5、在工具栏中选择Create Arc: Center and 2 Endpoints 6、移动鼠标到(40,0.0),圆心,点击左键,然后将鼠标移到(40,20)再次点击鼠标左键,从已画好区域的外面将鼠标移到(40,20),这时你可以看到在这两个点之间出现一个半圆,点击左键完成这个半圆。
7、在工具栏选择Create Circle: Center and Perimeter8、将鼠标移动到(40,0.0)点击左键,然后将鼠标移动到(50,0.0)点击左键。
9、从主菜单选择Add→Dimension→Radial,为刚完成的圆标注尺寸。
10、选择工具栏的Edit Dimension Value图标11、选择圆的尺寸(10)点击左键,在提示栏输入12,按回车。
Abaqus关于用户子程序(simwe)

表示单元类型,剩余四项表示此单元四个节点的编号。
CHARACTER*(*) FUNCTION DMKNAME(FNAME,DNAME,EXTEN)
C
CHARACTER*(*) FNAME,DNAME,EXTEN
C FNAME I JOBNAME
C DNAME I DIRECTORY
C EXTEN I EXTENSION
KSTEP,KINC,DTIME,TIME是ABAQUS传给用户子程序的参数。
功能:
1. 读结果文件(.FIL)中的数据。
2. 利用LSTOP开关,用户可中止ABAQUS计算
URDFIL要用到以下两个ABAQUS应用程序:POSFIL和DBFILE
文本框: Home
END DO
LTOT = LEN(DNAME)
LD = 0
DO K1 = LTOT,2,-1
IF (LD.EQ.0.AND.DNAME(K1:K1).NE.' ') LD = K1
END DO
LTOT = LEN(EXTEN)
LE = 0
为2表示文件已读到结尾后,又从头开始读起。
2.ARRAY是用来存放从结果文件中读到的那条记录的数组。要用户注意的
是ARRAY数组的大小要能存放一条记录。
3. JRCD是返回值,如果读到文件结尾,返回值为非0的整数。
功能:
读取结果文件中的一条记录。
如果想要熟练运用SUBROUTINE URDFIL,那么用户必须对结果文件(.FIL)
!打开文件
WRITE(17,*)'Opening new user external file...'
ABAQUS材料用户子程序UMAT学习报告

具有友好的用户 界面和易用的操 作流程,方便用 户进行学习和使 用
UMAT子程序简介
UMAT子程序是 ABAQUS材料用户 自定义模块,允许 用户根据实际需求 编写材料本构模型。
UMAT子程序采用C 语言编写,用户需要 具备一定的编程基础。
UMAT子程序可以实 现多种材料本构模型 ,如弹性、塑性、蠕 变等。
UMAT子程序实现细节
编程语言和接口
A B A Q U S 材 料 用 户 子 程 序 U M AT 使 用Fortran语言编写
U M AT 子 程 序 中 可 以 定 义 材 料 属 性 、 本构关系等
添加标题
添加标题
添加标题
添加标题
U M AT 子 程 序 通 过 A B A Q U S 提 供 的 接口与主程序进行交互
不足:使用门槛较高,需要用户具备一定的编程基础
未来展望:期待更多的用户参与开发,不断完善子程序功能
总结:UMAT子程序为用户提供了强大的材料模型描述能力,但使用过程中需要注意其局 限性
在ABAQUS中的未来发展方向
开发更高效的材料模型 集成人工智能和机器学习技术 增强与CAD软件的集成 扩展对多物理场模拟的支持
适用于金属材料
适用于复合材料
适用于橡胶材料
适用于陶瓷材料
参数的合理选择
参数选择需符合实际物理模型 参数选择需考虑材料特性 参数选择需经过实验验证 参数选择需注意收敛性和稳定性
收敛性和稳定性问题
收 敛 性 : U M AT 子 程 序 在 迭 代 过 程 中应满足收敛条件,否则可能导致 计算失败或结果不准确。
边界条件和初始条件
边界条件:描述模型在边界上的行为,如位移、速度等 初始条件:描述模型在初始时刻的状态,如温度、压力等
Abaqus材料用户子程序UMAT基础知识及手册例子完整解释

1、为何需要使用用户材料子程序(User-Defined Material, UMAT )?很简单,当ABAQUS 没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
UMAT 子程序具有强大的功能,使用UMAT 子程序:(1)可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQU S 中的任何单元。
(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian )矩阵,即应力增量对应变增量的变化率。
(4) 可以和用户子程序“USDFLD ”联合使用,通过“USDFLD ”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
2、需要哪些基础知识?先看一下ABAQUS 手册(ABAQUS Analysis User's Manual )里的一段话:Warning: The use of this option generally requires considerable expertise(一定的专业知识). The user is cautioned that the implementation (实现) of any realistic constitutive (基本) model requires extensive (广泛的) development and testing. Initial testing on a single eleme nt model with prescribed traction loading (指定拉伸载荷) is strongly recommended. 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。
学习VUMAT

学习VUMATVUMATUser subroutine to define material behavior.定义材料本构用户子程序Product: ABAQUS/ExplicitWarning: The use of this user subroutine generally requires considerable expertise.You are cautioned that the implementation of any realistic constitutive model requires extensive development and testing. Initial testing on a single-element model withprescribed traction loading is strongly recommended.注意:用户子程序的使用通常需要一定的专长。
用户需要知道执行任何实际的本构模型需要大量的试验数据。
强烈建议用户对用户子程序进行在指定拉力作用下单个单元的验证测试。
The component ordering of the symmetric and nonsymmetric tensors for thethree-dimensional case using C3D8R elements is different from the ordering specified in , and the ordering used in ABAQUS/Standard.C3D8R单元三维轴对称及非轴对称张量成分顺序与及ABAQUS/Standard中指定的顺序不同。
References•“User-defined mechanical m•*USER MATERIALOverviewUser subroutine VUMAT:用户子程序VUMAT•is used to define the mechanical constitutive behavior of a material;•用来定义材料的力学本构关系•will be called for blocks of material calculation points for which the material is defined in a user subroutine ();•可以被用户子程序定义材料计算点调用•can use and update solution-dependent state variables;•可以使用和更新结果依赖状态变量•can use any field variables that are passed in;•可以使用传入的任何场变量•is described further in ; and•在中详细论述;•cannot be used in an adiabatic analysis.•可以被用于绝热分析Component ordering in tensors 张量组成顺序The component ordering depends upon whether the tensor is symmetric or nonsymmetric.张量组成顺序取决于其是否为对称或非对称张量。
Abaqus材料用户子程序UMAT基础知识及手册例子完整解释

1、为何需要使用用户材料子程序(User-Defined Material, UMAT )?很简单,当ABAQUS 没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
UMAT 子程序具有强大的功能,使用UMAT 子程序:(1)可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2) 几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQU S 中的任何单元。
(3) 必须在UMAT 中提供材料本构模型的雅可比(Jacobian )矩阵,即应力增量对应变增量的变化率。
(4) 可以和用户子程序“USDFLD ”联合使用,通过“USDFLD ”重新定义单元每一物质点上传递到UMAT 中场变量的数值。
2、需要哪些基础知识?先看一下ABAQUS 手册(ABAQUS Analysis User's Manual )里的一段话:Warning: The use of this option generally requires considerable expertise(一定的专业知识). The user is cautioned that the implementation (实现) of any realistic constitutive (基本) model requires extensive (广泛的) development and testing. Initial testing on a single eleme nt model with prescribed traction loading (指定拉伸载荷) is strongly recommended. 但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
alamda = twomu * ( e - twomu ) / ( sixmu - two * e )
term = one / ( twomu * ( one + hard/thremu ) )
con1 = sqrt( twoThirds )
C
do 100 i = 1,nblock
C
C Trial stress
SUBROUTINE VUMAT(
C Read only -
1 nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
2 stepTime, totalTime, dt, cmname, coordMp, charLength,
3 props, density, strainInc, relSpinInc,
1 enerInternNew(nblock), enerInelasNew(nblock)
C
character*80 cmname
C
parameter( zero = 0., one = 1., two = 2., three = 3.,
1 third = one/three, half = .5, twoThirds = two/three,
6
stateNew(i,4) = stateOld(i,4) + factor * s4
C
C Update the stress
factor = twomu * dgamma
stressNew(i,1) = sig1 - factor * ds1
stressNew(i,2) = sig2 - factor * ds2
C
STATE(*,4) = back stress component 12
4
C
STATE(*,5) = equivalent plastic strain
C
C
C All arrays dimensioned by (*) are not used in this algorithm
dimension props(nprops), density(nblock),
Author: xueweek@
1 材料本构模型:
在 Property 中定义材料时,在 General 下选中 User Material,输入 210000、0.3、200、 10000,以上两个数值代表 E、ν,、fy、E’。在用户子程序中代表着 PROPS(1)、PROPS(2)、 PROPS(3)、PROPS(4)。然后在 General 下选中 Depvar,由于该例子中使用了五个状态变量 (背应力张量和累积塑性应变变量),因此在第一项中输入大于 5 的数值即可。另外还需要 输入密度。
C
C The state variables are stored as:
C
STATE(*,1) = back stress component 11
C
STATE(*,2) = back stress component 22
C
STATE(*,3) = back stress component 33
1
建模大家都会,故省略
2 ABAQUS 中 STEP 的设置
由于 VUMAT 需要用到 Explicit 求解,因此需要在 step 步骤中设置 explicit 选项,如下图, 其设置可以用默认设置。
2
3 ABAQUS 调用 VUMAT 用户子程序
同 UMAT 用户子程序的调用方法。 在 Job Manager 中点击 Edit 选项,在 General 选项的最后一项中选择自己建立好的用户 子程序文件。(注:用户子程序文件可以使用文本编辑器进行编辑,当然也可以用 Fortran 编译器,如果对自己的用户子程序文件的语法不放心,可以先用 Fortan 编译器进行编译, 不过编译前要先建立 Project,关于 Fortran 编译,这里不再介绍)。 完成后,点击 submit 即可进行分析。
上一次发过《ABAQUS 初学者用户子程序小例子》,給学习 UMAT 的初学者带来了一定的帮助。现在用到 VUMAT,发现网上 这种小例子很少,关于 VUMAT 的资料也不多。摸索了一天,做个 VUMAT 的小例子供大家分享。
实例:简单的平面平板拉伸,材料本构模型采用随动强化模型, E=210000MPa, ν=0.3,fy=200MPa, E’=10000MPa。左端约束, 右端施加位移载荷 V=0.2mm。
4 结果 以下两张图分布是用户子程序和 ABAQUS 自带的材料模型(Standard 求
解器)得到的应力云图,可以看出两种图形基本相同。
3
5 VUMAT 子程序
对于初学者来说,需要注意的是,FORTRAN 对于程序语言格式上的要求。例如,对于 FORTRAN 语言,前六个字符必须空出来,等等。检查语法最好的方法就是在 FORTRAN 编 译器上进行编译。
4 tempOld, stretchOld, defgradOld, fieldOld,
3 stressOld, stateOld, enerInternOld, enerInelasOld,
6 tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
5 stressNew, stateNew, enerInternNew, enerInelasNew )
C
include 'vaba_param.inc'
C
C J2 Mises Plasticity with kinematic hardening for plane
C strቤተ መጻሕፍቲ ባይዱin case.
C Elastic predictor, radial corrector algorithm.
1 coordMp(nblock,*),
2 charLength(*), strainInc(nblock,ndir+nshr),
3 relSpinInc(*), tempOld(*),
4 stretchOld(*), defgradOld(*),
5 fieldOld(*), stressOld(nblock,ndir+nshr),
1 + ( stressOld(i,2)+stressNew(i,2) )*strainInc(i,2)
1 + ( stressOld(i,3)+stressNew(i,3) )*strainInc(i,3)
1 + two*( stressOld(i,4)+stressNew(i,4) )*strainInc(i,4) )
trace = strainInc(i,1) + strainInc(i,2) + strainInc(i,3)
sig1 = stressOld(i,1) + alamda*trace + twomu*strainInc(i,1)
sig2 = stressOld(i,2) + alamda*trace + twomu*strainInc(i,2)
stressNew(i,3) = sig3 - factor * ds3
stressNew(i,4) = sig4 - factor * s4
C
C Update the specific internal energy -
stressPower = half * (
1 ( stressOld(i,1)+stressNew(i,1) )*strainInc(i,1)
2 threeHalfs = 1.5 )
C
e = props(1)
xnu = props(2)
yield = props(3)
hard = props(4)
C
twomu = e / ( one + xnu )
thremu = threeHalfs * twomu
sixmu = three * twomu
sig3 = stressOld(i,3) + alamda*trace + twomu*strainInc(i,3)
sig4 = stressOld(i,4)
+ twomu*strainInc(i,4)
C
C Trial stress measured from the back stress
5
s1 = sig1 - stateOld(i,1) s2 = sig2 - stateOld(i,2) s3 = sig3 - stateOld(i,3) s4 = sig4 - stateOld(i,4) C C Deviatoric part of trial stress measured from the back stress smean = third * ( s1 + s2 + s3 ) ds1 = s1 - smean ds2 = s2 - smean ds3 = s3 - smean C C Magnitude of the deviatoric trial stress difference dsmag = sqrt( ds1**2 + ds2**2 + ds3**2 + 2.*s4**2 ) C C Check for yield by determining the factor for plasticity, C zero for elastic, one for yield radius = con1 * yield facyld = zero if( dsmag - radius .ge. zero ) facyld = one C C Add a protective addition factor to prevent a divide by zero C when dsmag is zero. If dsmag is zero, we will not have exceeded C the yield stress and facyld will be zero. dsmag = dsmag + ( one - facyld ) C C Calculated increment in gamma (this explicitly includes the C time step) diff = dsmag - radius dgamma = facyld * term * diff C C Update equivalent plastic strain deqps = con1 * dgamma stateNew(i,5) = stateOld(i,5) + deqps C C Divide dgamma by dsmag so that the deviatoric stresses are C explicitly converted to tensors of unit magnitude in the C following calculations dgamma = dgamma / dsmag C C Update back stress factor = hard * dgamma * twoThirds stateNew(i,1) = stateOld(i,1) + factor * ds1 stateNew(i,2) = stateOld(i,2) + factor * ds2 stateNew(i,3) = stateOld(i,3) + factor * ds3