ABAQUS用户子程序小例子
- 格式:pdf
- 大小:653.75 KB
- 文档页数:26
20 ABAQUS用户单元子程序(UEL)在这一章中将列举两个在这些年里发展过的ABAQUS/Standard用户单元子程序(UEL)。
第一个例子是一个非线性的索单元,我们的目的是通过这个比较简单的例子让读者了解用户单元子程序的基本开发过程;第二个例子是一个用于计算应变梯度理论的单元,应变梯度是当今比较热点的一个科研前沿问题,有各种理论,我们为了验证新的理论,需要数值结果与实验对照来进行评价,整个例子的目的是通过它说明用户子单元可以求解的问题范围很广,但是由于内容比较艰深,程序也很长,所以这个例子我们并没有给出最后的全部程序。
另外,到目前为止,ABAQUS还只有隐式求解器ABAQUS/Standard支持用户自定义单元,而显式求解器ABAQUS/Explicit中还不支持这一功能。
20.1 非线性索单元20.1.1 背景钢索斜拉桥和斜拉索结构广泛应用于土木工程建筑上。
索力的计算分析是设计和施工的关键环节。
清华大学工程力学系在采用ABAQUS进行荆沙长江斜拉桥的计算机仿真分析(这个项目我们已在第15章“ABAQUS在土木工程中的应用(一)——荆州长江大桥南汊斜拉桥结构三维仿真分析”中讨论过)时,也曾进行了自行建立索单元的尝试。
本节介绍的就是这方面的工作。
香港理工大学土木与结构工程系采用ABAQUS有限元软件进行计算,完成了香港Ting Kau斜拉桥和Tsing Ma悬索桥的结构计算和分析。
对于钢索计算,他们采用梁单元进行模拟。
由于梁单元含有弯曲刚度,计算的高阶频率值偏高,周期较低。
一般假设索是单向受拉力的构件。
随着应变的非线性增加,索力呈非线性增加。
尽管ABAQUS单元库中有500个以上的单元类型,但是,还没有索单元。
本文发展了三维非线性索单元模型,形成ABAQUS的用户单元子程序,可以利用ABAQUS输入文件调入到具体的分析中。
通过静态和动态例题的计算比较,索单元工作良好。
20.1.2 基本公式在三维索单元计算中,如图20-1所示,坐标x 和位移u 的变量表达式为:ij ji i j ji u u u x x x -=-= (x,y,z) (u,v,w) (20-1)应变的公式为:()⎥⎦⎤⎢⎣⎡+++++=222211ji ji ji ji ji ji ji ji ji w v u w z v y u x L ε (20-2)公式(20-2)中,L 为索的长度,索的张力为:0N AE N +=ε(20-3)在公式(20-3)中,A 为截面面积,E 为弹性模量,N 0为初始张力。
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 )而已。
Hashin准则是一种常用的材料失效准则,用于模拟复合材料的损伤和失效。
在ABAQUS中,你可以使用UMAT(用户自定义材料行为)子程序来实现Hashin准则。
以下是一个简单的UMAT子程序示例,用于实现Hashin准则:```c#include "umat.h"#define N 10void UMAT(const int *nIntPoints, const int *nExtPoints, const double *dS, const double *dSP, const double *dStrain, const double*dStress, double *dStrainInc, double *dStressInc, double *dStress历史, int *nFail){double S[N], S0[N];int i;double E1 = dStrain[0];double E2 = dStrain[1];double E3 = dStrain[2];double sigma1 = dStress[0];double sigma2 = dStress[1];double sigma3 = dStress[2];double sigma历史1 = dStress历史[0];double sigma历史2 = dStress历史[1];double sigma历史3 = dStress历史[2]; double m1 = 0.0;double m2 = 0.0;double m3 = 0.0;double n1 = 0.0;double n2 = 0.0;double n3 = 0.0;for (i=0; i<N; i++) {S[i] = sqrt(dS[i]);S0[i] = sqrt(dSP[i]);m1 += S[i] / sigma1;m2 += S[i] / sigma2;m3 += S[i] / sigma3;n1 += S0[i] / sigma历史1;n2 += S0[i] / sigma历史2;n3 += S0[i] / sigma历史3;}if (m1 < 1.0e-6) m1 = 1.0e-6;if (m2 < 1.0e-6) m2 = 1.0e-6;if (m3 < 1.0e-6) m3 = 1.0e-6;if (n1 < 1.0e-6) n1 = 1.0e-6;if (n2 < 1.0e-6) n2 = 1.0e-6;if (n3 < 1.0e-6) n3 = 1.0e-6;double sigmaT = sqrt(m1*m2*m3);double sigmaLT = sqrt(n1*n2*n3);if (sigmaT < sigmaLT) {*nFail = 1; // 损伤发生,将nFail设为1表示材料失效return; // 退出UMAT函数,不再进行应力和应变增量计算} else {*nFail = 0; // 没有损伤发生,将nFail设为0表示材料仍然有效return; // 退出UMAT函数,继续进行应力和应变增量计算}}```以上代码实现了Hashin准则的简单形式,即当总剪切应力小于长纤维方向的纤维应力时,复合材料发生损伤。
ABAQUS/Standard 用户材料子程序实例-Johnson-Cook 金属本构模型卢剑锋 庄茁* 张帆清华大学工程力学系 北京 100084摘要:用户材料子程序是ABAQUS 提供给用户定义自己的材料属性的Fortran 程序接口,使用户能使用ABAQUS 材料库中没有定义的材料模型。
ABAQUS 中自有的Johnson-Cook 模型只能应用于显式ABAQUS/Explicit 程序中,而我们希望能在隐式ABAQUS/Standard 程序中更精确的实现本构积分,而且应用Johnson-Cook 模型的修正形式。
这就需要通过ABAQUS/Standard 的用户材料子程序UMAT 编程实现。
在UMAT 编程中使用了率相关塑性理论以及完全隐式的应力更新算法。
1 Johnson-Cook 强化模型简介Johnson-Cook (JC )模型用来模拟高应变率下的金属材料。
JC 强化模型表示为三项的乘积,分别反映了应变硬化,应变率硬化和温度软化。
这里使用JC 模型的修正形式:()()*01ln 11n mA B C T εσεε=+++−&& 并使参考应变率01ε=&,这样公式中的A 即为材料的静态屈服应力。
公式中包含,,,,A B n C m 五个参数,需要通过实验来确定。
2 ABAQUS 用户材料子程序用户材料子程序(User-defined Material Mechanical Behavior ,简称UMAT )通过与ABAQUS 主求解程序的接口实现与ABAQUS 的数据交流。
在输入文件中,使用关键字“*USER MATERIAL”表示定义用户材料属性。
子程序概况与接口UMAT 子程序具有强大的功能,使用UMAT 子程序:(1) 可以定义材料的本构关系,使用ABAQUS 材料库中没有包含的材料进行计算,扩充程序功能。
(2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS中的任何单元;(3)必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化率。
Home浅谈ABAQUS用户子程序李青清华大学工程力学系摘要本文首先概要介绍了ABAQUS的用户子程序和应用程序,然后从参数,功能两方面详细论述了DLOAD, UEXTERNALDB, URDFIL三个用户子程序和GETENVVAR,POSFIL,DBFILE三个应用程序,并详细介绍了ABAQUS的结果文件(.FIL)存储格式。
关键字ABAQUS,用户子程序,应用程序,结果文件一、前言:ABAQUS为用户提供了强大而又灵活的用户子程序接口(USER SUBROUTINE)和应用程序接口(UTILITY ROUTINE)。
ABAQUS 6.2.5一共有42个用户子程序接口,13个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数据交换等等。
这些用户子程序接口使用户解决一些问题时有很大的灵活性,同时大大的扩充了ABAQUS的功能。
例如:如果荷载条件是时间的函数,这在ABAQUS/CAE 和INPUT 文件中是难以实现的,但在用户子程序DLOAD中就很容易实现。
二.在ABAQUS中使用用户子程序ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照FORTRAN语法用户自己编写的代码。
在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.FOR为扩展名的文件中。
运行带有用户子程序的算例时有两种方法,一是在CAE中运行,在EDIT JOB菜单的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在ABABQUS COMMAND用运行,语法如下:ABAQUS JOB=[JOB] USER¡[.FOR]¡C用户在编写用户子程序时,要注意以下几点:1.用户子程序不能嵌套。
即任何用户子程序都不能调用任何其他用户子程Home序,但可以调用用户自己编写的FORTRAN子程序和ABAQUS应用程序。
ABAQUS用户子程序学习小结1 FORTRAN语言中的“I-N规则”:I、J、K、L、M、N开头的为整型变量,其他开头为实型变量;1.1 Fortran书写格式:1-5列:标号区;6列:续写标号区,一般就写"1";7-72列:语句区,本区内空格无效;注释行以C开头,本行内书写格式无要求;参考周煦《FORTRAN77结构化程序设计》,中国科学技术出版社,1995,38-40页 2 DIMENSION COORDS(3)表示声明一个含3个元素的数组,下标分别为1、2、3,访问形式为COORDS(n),n为1,3;3 子程序(*.for)文件中如何输出调试信息:WRITE(6,*)'COORDS(1)',COORDS(1),在*.dat文件中可看到输出,如果希望WRITE输出到msg文件中,则写为WRITE(7,*)'COORDS...;4 用户子程序DLOAD中COORDS数组的含义:COORDS(1)也是一个数组,存贮单元集合中所有单元积分点的X坐标,COORDS(2)存贮Y坐标,相应INP文件中的写法为:*DLOADPY,PYNU其中PY为单元集合名称,定义方法为:*Elset, elset=BEAM, generate1, 5, 1...*ELSET,ELSET=PYBEAM5 DLOAD中F的定义方法:F只有定义在单元积分点上才有效,例如:F=1.0*COORDS (1)附一个简单实例:beam.inp文件:*Heading** Job name: Job-1 Model name: beam *Preprint, echo=NO, model=NO, history=NO, contact=NO**** PARTS***Part, name=PART-1*End Part**** ASSEMBLY***Assembly, name=Assembly***Instance, name=PART-1-1, part=PART-1 *Node1, 0., 0.2, 20., 0.3, 40., 0.4, 60., 0.5, 80., 0.6, 100., 0. *Element, type=B311, 1, 22, 2, 33, 3, 44, 4, 55, 5, 6*Elset, elset=BEAM, generate1, 5, 1** Region: (Section-1-BEAM:BEAM), (Beam Orientation:BEAM)** Section: Section-1-BEAM Profile: Profile-1*Beam Section, elset=BEAM, material=STEEL, temperature=GRADIENTS, section=RECT0.2, 5.0.,0.,-1.*End Instance*Nset, nset=ENDS, instance=PART-1-11, 6*Nset, nset=_M4, internal, instance=PART-1-16,*Nset, nset=_M5, internal, instance=PART-1-11,*End Assembly**** MATERIALS***Material, name=STEEL*Elastic210000., 0.3*ELSET,ELSET=PYBEAM**** BOUNDARY CONDITIONS**** Name: Disp-BC-1 Type: Symmetry/Antisymmetry/Encastre*Boundary_M4, ENCASTRE** ---------------------------------------------------------------- **** STEP: Step-1***Step, name=Step-1*Static**** LOADS**** Name: CFORCE-1 Type: Concentrated force*DLOADPY,PYNU**** OUTPUT REQUESTS****** FIELD OUTPUT: F-Output-1 ***Output, field, variable=PRESELECT **** FIELD OUTPUT: F-Output-2 ***Output, field*Element OutputSF,**** HISTORY OUTPUT: H-Output-1 ***Output, history*Node Output, nset=ENDSCF1, CF2, CF3, CM1, CM2, CM3, RF1, RF2 RF3, RM1, RM2, RM3, U1, U2, U3, UR1 UR2, UR3*El Print, freq=999999*Node Print, freq=999999*End Stepbbb.for文件SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,1 JLTYP,SNAME) CINCLUDE 'ABA_PARAM.INC'CDIMENSION TIME(2), COORDS (3)CHARACTER*80 SNAMEWRITE(6,*)'COORDS(3)',COORDS(3)F=1.0*COORDS (1)RETURNEND运行方法:在Abaqus Command提示符后输入:abaqus job=beam user=bbb interactive 子程序如下~如何编写,调研子程序,子程序USDFLD中给固化度赋了一个初值1×10-4。
Home浅谈ABAQUS用户子程序李青清华大学工程力学系摘要本文首先概要介绍了ABAQUS的用户子程序和应用程序,然后从参数,功能两方面详细论述了DLOAD, UEXTERNALDB, URDFIL三个用户子程序和GETENVVAR,POSFIL,DBFILE三个应用程序,并详细介绍了ABAQUS的结果文件(.FIL)存储格式。
关键字ABAQUS,用户子程序,应用程序,结果文件一、前言:ABAQUS为用户提供了强大而又灵活的用户子程序接口(USER SUBROUTINE)和应用程序接口(UTILITY ROUTINE)。
ABAQUS 6.2.5一共有42个用户子程序接口,13个应用程序接口,用户可以定义包括边界条件、荷载条件、接触条件、材料特性以及利用用户子程序和其它应用软件进行数据交换等等。
这些用户子程序接口使用户解决一些问题时有很大的灵活性,同时大大的扩充了ABAQUS的功能。
例如:如果荷载条件是时间的函数,这在ABAQUS/CAE 和INPUT 文件中是难以实现的,但在用户子程序DLOAD中就很容易实现。
二.在ABAQUS中使用用户子程序ABAQUS的用户子程序是根据ABAQUS提供的相应接口,按照FORTRAN语法用户自己编写的代码。
在一个算例中,用户可以用到多个用户子程序,但必须把它们放在一个以.FOR为扩展名的文件中。
运行带有用户子程序的算例时有两种方法,一是在CAE中运行,在EDIT JOB菜单的GENERAL子菜单的USER SUBROUTINE FILE对话框中选择用户子程序所在的文件即可;另外是在ABABQUS COMMAND用运行,语法如下:ABAQUS JOB=[JOB] USER¡[.FOR]¡C用户在编写用户子程序时,要注意以下几点:1.用户子程序不能嵌套。
即任何用户子程序都不能调用任何其他用户子程Home序,但可以调用用户自己编写的FORTRAN子程序和ABAQUS应用程序。
abaqus用户子程序vusdfld单元积分点出的极限应变摘要:1.Abaqus 用户子程序简介2.VUSDFLD 单元概述3.积分点出的极限应变计算方法4.应用实例与结果分析5.总结与展望正文:【1.Abaqus 用户子程序简介】Abaqus 是一款广泛应用于结构分析和仿真的有限元软件。
用户子程序是Abaqus 中一种强大的功能,可以通过自定义编程实现对模型的特定处理和计算。
用户子程序可以在Abaqus 的各个分析步骤中调用,为分析过程提供更多的灵活性和可控性。
【2.VUSDFLD 单元概述】VUSDFLD 单元是Abaqus 中的一种特殊的单元类型,用于模拟材料在非常规应力状态下的行为,例如在高应变率和高应变下的材料行为。
VUSDFLD 单元可以定义材料的本构关系,即应力和应变之间的关系,以便在Abaqus 中进行分析。
【3.积分点出的极限应变计算方法】在Abaqus 中,可以通过用户子程序实现对模型中各积分点的极限应变计算。
具体步骤如下:(1)首先,在用户子程序中定义模型的几何参数、材料参数和边界条件。
(2)然后,通过循环遍历模型中的所有积分点,计算每个积分点的应力。
(3)接着,根据材料的本构关系,计算每个积分点的应变。
(4)最后,判断每个积分点的应变是否达到极限应变,如果达到则输出结果,并结束计算。
【4.应用实例与结果分析】假设有一个模型,由VUSDFLD 单元组成,需要计算在特定载荷条件下各积分点的极限应变。
可以通过编写用户子程序实现该功能。
在程序中,首先定义模型的几何参数、材料参数和边界条件,然后计算每个积分点的应力和应变,最后判断并输出极限应变结果。
【5.总结与展望】通过Abaqus 用户子程序和VUSDFLD 单元,可以实现对模型的极限应变计算。
该方法具有较强的灵活性和可控性,可以满足不同问题的分析需求。
abaqus用户子程序vusdfld单元积分点出的极限应变(最新版)目录1.Abaqus 用户子程序概述2.VUSDFLD 单元介绍3.积分点出的极限应变计算方法4.应用实例与注意事项正文【1.Abaqus 用户子程序概述】Abaqus 是一款广泛应用于工程领域的有限元分析软件,其强大的功能和灵活的接口使得用户可以根据实际需求进行自定义和扩展。
用户子程序是 Abaqus 提供的一种编程接口,可以通过编写 C 或 Fortran 语言的程序,实现对 Abaqus 求解过程的控制和结果的后处理。
【2.VUSDFLD 单元介绍】VUSDFLD 单元是 Abaqus 中的一种通用粘结滑移软弹簧非线性几何单元,适用于模拟材料在复杂应力/应变路径下的非线性行为。
该单元可以描述材料在拉伸、压缩、剪切和扭转过程中的非线性特性,广泛应用于橡胶、泡沫、复合材料等非线性材料的分析中。
【3.积分点出的极限应变计算方法】在 Abaqus 中,通过用户子程序可以实现对 VUSDFLD 单元积分点出的极限应变的计算。
具体步骤如下:(1)首先,在用户子程序中定义一个函数,用于计算 VUSDFLD 单元的积分点出的极限应变。
该函数需要接收单元的各阶导数作为输入参数,并返回积分点出的极限应变。
(2)然后,在 Abaqus 的脚本中,通过调用该函数,获取 VUSDFLD 单元的积分点出的极限应变。
【4.应用实例与注意事项】在实际应用中,用户可以根据具体的材料特性和加载条件,编写相应的用户子程序,实现对 VUSDFLD 单元积分点出的极限应变的计算。
在编写过程中,需要注意以下几点:(1)正确定义函数输入输出参数,与 Abaqus 的接口保持一致。
(2)确保函数的计算过程正确无误,避免出现数值不稳定或误差较大的情况。
(3)在实际应用中,可能需要根据不同的材料特性和加载条件,调整用户子程序的计算参数,以获得更准确的结果。