Abaqus材料用户子程序UMAT基础知识与手册例子完整解释
子程序(UMAT)基本操作过程1
UMAT操作过程操作过程:1、CAE建模、定义边界条件、载荷条件2、定义UMATProperty>General>User material✧Mechanical Constants 中为用户输入到子程序中的参数。
这时只能在General栏中定义参数,如密度等,这时不能再在Mechanical中定义杨氏模量等,此时杨氏模量、泊松比等数就需要在Mechanical Constants中输入到子程序中。
✧定义剪切刚度Model>Edit Keywords 中直接输入到inp文件中。
“*Shell Section”后面添加*Transverse Shear5.31e8,5.31e8,0在定义剪切刚度时一定要注意,一定要按帮助文档中公式计算而得并不是任意取值。
对于正交各项异性壳单元其中t为层合板厚度。
Depvar 中的数字与Mechanical Constants栏中定义的参数数量相等。
3编辑.for后缀的子程序3.1 推导出本构关系建立刚度矩阵时最好是直接指定刚度阵的每一项的方法得到刚度阵。
3.2更新应力下面是各项同性弹性本构关系(刚度阵)及应力更新。
DO K1=1,NTENSDO K2=1,NTENSDDSDDE(K1,K2)=ZEROEND DOEND DODO K1=1,NDIDO K2=1,NDIDDSDDE(K2,K1)=EBULK3END DOEND DODO K1=1,NDIDO K2=1,NDIDDSDDE(K1,K1)=EG2END DOEND DODO K1=NDI+1,NTENSDDSDDE(K1,K1)=EG3END DODO K1=1,NTENSDO K2=1,NTENSSTRESS(K1)=STRESS(K1)+DDSDDE(K1,K2)*DSTRAN(K2)END DOEND DO注意:UMAT子程序中并不是一定要写成增量形式,建立Jacobian矩阵,只要能做到更新应力即可,写成全量形式也可以。
ABAQUS材料用户子程序UMAT学习报告
7、其他用户子程序
此外, 还包括特殊类型用途的子程序, 如定义多点约束的子 程序 MPC, 定义局部坐标的 ORIENT子程序等。上述子程序的分 类仅限于在岩土工程领域,其他领域有不同的分类方法。
UMAT使用方法
1、UMAT简介
用户材料子程序( User-defined Material Mechanical
6、用户定义的状态变量
状态变量主要包括定义场变量、与求解过程相关的状态变量,以 后重新定义材料点的状态变量,主要有 UFIELD 子程序、 SDVINI
子程序和 USDFLD 子程序。 此外还包括定义摩擦接触属性的子程序
,如定义摩擦接触行为的 FRIC 子程序,以及接触面行为定义的 UINTER 子程序等。
写到后处理结果文件中,如 UVARM 子程序;此外,读取结 边界的 DISP ;面力载荷可采用 DLOAD ;特殊分布的牵 果文件可采用 URDFIL ;温度场边界的 子程序。 引力的 UTRACLOAD UTEMP 。
4、用户定义的单元
对于特殊类型的单元,可采用 UEL 子程序进行定义。
5、用户定义的材料特性和本构关系
最后查看可视化后处理,得到如下云图。
2、验证利用UMAT进行二次开发的实例
实例:最简单的杆件单轴拉伸,材料本构模型采用线 弹性模型,E= 206000MPa, ν=0.3。左端约束,右端施加均 布力 q=1MPa。 分析:这是一个简单的杠杆拉
伸模型,ABAQUS内部就有这种模
型,但也可以使用材料用户子程序 UMAT对ABAQUS进行二次开发进 行求解。
NDI:某一点上直接应力组件数。 NSHR:某一点上剪切应力组件数。 NTENS:总应力分量个数,(=NDI+NSHR)。 NSTATV:存储与解有关的状态变量数组个数。 PROPS (NPROPS):材料常数数组。 COORDS:当前积分点坐标。DROT(3,3) :旋转增量矩阵。
ABAQUS_Standard用户材料子程序实例
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 m A 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)矩阵,即应力增量对应变增量的变化率。
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-二次开发资料-UMAT
各个楼层及内容索引2-------------------------------------什么是UMAT3-------------------------------------UMAT功能简介4-------------------------------------UMAT开始的变量声明5-------------------------------------UMAT中各个变量的详细解释6-------------------------------------关于沙漏和横向剪切刚度7-------------------------------------UMAT流程和参数表格实例展示8-------------------------------------FORTRAN语言中的接口程序Interface9-------------------------------------关于UMAT是否可以用Fortran90编写的问题10-17--------------------------------Fortran77的一些有用的知识简介20-25\30-32-----------------------弹塑性力学相关知识简介34-37--------------------------------用户材料子程序实例JOhn-cook模型压缩包下载38-------------------------------------JOhn-cook模型本构简介图40-------------------------------------用户材料子程序实例JOhn-cook模型完整程序+david详细注解[欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正确,希望共同探讨,以便更正,带""部分,还望各位大师\同仁指教]1什么是UMAT1.1UMAT功能简介!!![-摘自庄茁老师的书UMAT子程序具有强大的功能,使用UMAT子程序:(1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序功能。
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 )而已。
《2024年ABAQUS用户材料子程序开发及应用》范文
《ABAQUS用户材料子程序开发及应用》篇一一、引言随着计算机技术的迅猛发展,有限元分析软件在工程领域的应用越来越广泛。
ABAQUS作为一款功能强大的有限元分析软件,其在材料子程序开发方面的应用,为用户提供了更精确、更高效的材料模拟方法。
本文将详细介绍ABAQUS用户材料子程序的开发过程及其应用。
二、ABAQUS用户材料子程序开发1. 开发环境与工具ABAQUS提供了丰富的用户材料子程序接口,如UMAT (User Material Anisotropy)、VUMAT(Visco-UMAT)等,用户可以根据自己的需求选择合适的接口进行开发。
开发过程中需要使用到C++编程语言以及相应的开发环境。
2. 开发流程(1)需求分析:明确模拟的目标、材料的性质以及所需的参数等。
(2)编写代码:根据需求编写相应的C++代码,实现材料本构关系的描述。
(3)编译与调试:将代码编译成可在ABAQUS中运行的动态链接库文件,并进行调试,确保程序的正确性。
(4)集成与验证:将编译好的动态链接库文件集成到ABAQUS中,进行验证与分析。
三、用户材料子程序在ABAQUS中的应用1. 弹塑性材料模拟通过用户材料子程序,可以实现对弹塑性材料的精确模拟。
例如,在金属加工、结构力学等领域,通过编写相应的本构关系代码,可以模拟材料的弹塑性行为,提高分析的准确性。
2. 复合材料模拟复合材料由多种材料组成,具有复杂的力学性能。
通过用户材料子程序,可以实现对复合材料的精确模拟,包括纤维、基体等各组分的力学性能以及它们之间的相互作用。
这有助于提高复合材料的设计和制造水平。
3. 粘弹性材料模拟粘弹性材料具有粘性和弹性的双重性质,广泛应用于橡胶、聚合物等材料。
通过用户材料子程序,可以实现对粘弹性材料的精确模拟,包括材料的应力松弛、蠕变等行为。
这有助于提高粘弹性材料的性能预测和优化设计。
四、案例分析以某汽车零部件的有限元分析为例,该零部件采用高强度钢材料。
用户子程序UMAT设置
ABAQUS用户子程序UMAT的设置在property模块进行。
Creat material→General→User Material,输入Mechanical Constants,即为子程序中需要输入的参数,如下图所示。
Creat material→General→Depvar,在这里面设置状态变量的个数,与子程序中变量STATEV(NSTATEV)有关,如下图所示。
而用户子程序的格式可以通过搜索ABAQUS Documentation,在该文档中可以找到子程序UMAT的书写方法以及相关变量的含义。
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2 STRAN,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,JSTEP,KINC)CINCLUDE 'ABA_PARAM.INC'CCHARACTER*80 CMNAMEDIMENSION 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),4 JSTEP(4)user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCDand, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDTRETURNEND必须在子程序UMAT中提供材料本构的雅可比(Jacobian)矩阵(即变量DDSDDE),即应力增量对应变增量的变化率。
ABAQUS-UMAT-自学知识整理贴
各个楼层及内容索引2-------------------------------------什么是UMAT3-------------------------------------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程序,真正的定义材料的力学行为即属性,是用户自己编译的FORTRAN 程序来实现的!UMAT通过与ABAQUS主求解程序的接口实现与ABAQUS的数据交流UMAT功能简介[-摘自庄茁老师的书]UMAT子程序具有强大的功能,使用UMAT子程序:(1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序功能。
一起学习户定义材料(User-definedmaterial,UMAT)解读
一起学习UMATZHANG chunyu1、什么时候用用户定义材料(User-defined material, UMAT )?很简单,当ABAQUS 没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS 已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
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 element model with prescribed traction loading is strongly recommended.但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation )而已。
当然,最基本的一些概念和知识还是要具备的,比如应力(stress),应变(strain )及其分量; volumetric part 和deviatoric part ;模量(modulus )、泊松比(Poisson ’s ratio)、拉美常数(Lame constant);矩阵的加减乘除甚至求逆;还有一些高等数学知识如积分、微分等。
ABAQUS-二次开发资料-UMAT
各个楼层及内容索引2-------------------------------------什么是UMAT3-------------------------------------UMAT功能简介4-------------------------------------UMAT开始的变量声明5-------------------------------------UMAT中各个变量的详细解释6-------------------------------------关于沙漏和横向剪切刚度7-------------------------------------UMAT流程和参数表格实例展示8-------------------------------------FORTRAN语言中的接口程序Interface9-------------------------------------关于UMAT是否可以用Fortran90编写的问题10-17--------------------------------Fortran77的一些有用的知识简介20-25\30-32-----------------------弹塑性力学相关知识简介34-37--------------------------------用户材料子程序实例JOhn-cook模型压缩包下载38-------------------------------------JOhn-cook模型本构简介图40-------------------------------------用户材料子程序实例JOhn-cook模型完整程序+david详细注解[欢迎大家来看看,并提供意见,完全是自己的diy的,不保证完全正确,希望共同探讨,以便更正,带"?"部分,还望各位大师\同仁指教]1 什么是UMAT???1.1 UMAT功能简介!!![-摘自庄茁老师的书UMAT子程序具有强大的功能,使用UMAT子程序:(1)可以定义材料的本构关系,使用ABAQUS材料库中没有包含的材料进行计算,扩充程序功能。
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 )而已。
21ABAQUS用户材料子程序_1502407
21 ABAQUS用户材料子程序(UMAT)虽然ABAQUS为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题;但是实际问题毕竟非常复杂,ABAQUS不可能直接求解所有可能出现的问题。
所以ABAQUS提供了大量的用户自定义子程序(User Subroutine),允许用户在找不到合适模型的情况下自行定义符合自己问题的模型。
这些用户子程序涵盖了建模、载荷到单元的几乎各个部分。
用户子程序具有以下的功能和特点:(1)如果ABAQUS的一些固有选项模型功能有限,用户子程序可以提高ABAQUS中这些选项的功能;(2)通常用户子程序是用FORTRAN语言的代码写成;(3)它可以以几种不同的方式包含在模型中;(4)由于它们没有存储在restart文件中,如果需要的话,可以在重新开始运行时修改它;(5)在某些情况下它可以利用ABAQUS允许的已有程序。
要在模型中包含用户子程序,可以利用ABAQUS执行程序,在执行程序中应用user 选项指明包含这些子程序的FORTRAN源程序或者目标程序的名字。
提示:ABAQUS的输入文件除了可以通过ABAQUS/CAE的作业模块中提交运行外,还可以在ABAQUS Command窗口中输入ABAQUS执行程序直接运行:ABAQUS job=输入文件名 user=用户子程序的Fortran文件名ABAQUS/Standard和ABAQUS/Explicit都支持用户子程序功能,但是他们所支持的用户子程序种类不尽相同,读者在需要使用时请注意查询手册。
在接下来的两章里,我们将讨论两种常用的用户子程序——用户材料子程序和用户单元子程序。
本章将通过在ABAQUS/Standard中创建Johnson-Cook的材料模型,介绍编写ABAQUS/Standard的用户材料子程序UMAT。
在ABAQUS/Explicit中编写用户材料子程序VUMAT与之相似,但是由于隐式和显式两种方法本身的差异,它们之间也有一些不同,请读者在具体使用前仔细查阅ABAQUS手册中的相关内容。
umat
材料本构模型及编程实现:简介一起学习UMATZHANG chunyu1、什么时候用用户定义材料(User-defined material, UMAT)?很简单,当ABAQUS没有提供我们需要的材料模型时。
所以,在决定自己定义一种新的材料模型之前,最好对ABAQUS已经提供的模型心中有数,并且尽量使用现有的模型,因为这些模型已经经过详细的验证,并被广泛接受。
2、好学吗?需要哪些基础知识?先看一下ABAQUS手册(ABAQUS Analysis User's Manual)里的一段话:Warning: The use of this option generally requires consider able expertise. The user is cautioned that the implementationof any realistic constitutive model requires extensive devel opment and testing. Initial testing on a single element model with prescribed traction loading is strongly recommended.但这并不意味着非力学专业,或者力学基础知识不很丰富者就只能望洋兴叹,因为我们的任务不是开发一套完整的有限元软件,而只是提供一个描述材料力学性能的本构方程(Constitutive equation)而已。
当然,最基本的一些概念和知识还是要具备的,比如应力(stress),应变(strain)及其分量;volumetric part和deviatoric part;模量(modulus)、泊松比(Poisson’s ratio)、拉美常数(Lame constant);矩阵的加减乘除甚至求逆;还有一些高等数学知识如积分、微分等。
ABAQUS用户材料子程序UMAT介绍
(一)UMAT简介
用户可以定义包括:边界条件、荷载条件、 接触条件、材料特性以及利用用户子程序 和其它应用软件进行数值交换等等。这些 用户子程序接口使得用户解决一些问题时 有很大的灵活性,同时大大的扩充了 ABAQUS 的功能。
(一)UMAT简介
通过用户材料子程序(User-defined Material Mechanical Behavior,简称UMAT) 接口,用户可定义任何补充的材料模型, 不但任意数量的材料常数都可以作为资料 被读取,而且ABAQUS 对于任何数量的与 解相关的状态变量在每一材料计数点都提 供了存储功能,以便在这些子程序中应用。
(四)子程序的调用
将这两个文件拷贝到分析目录D:>Temp下,将 子程序的后缀改为.for,然后在D:\Temp下面 用运行 在command中: abaqus job=your job name user=your umat
在cae中调用子程序可以采用以下方法:打开 job下面的edit菜单,点general,点击user subroutine后面的select,即可选择你所需要的 用户子程序。
PROPS(NPROPS)材料常数矩阵,矩阵中 元素的数值对应于关键字“*USER MATERIAL”下面的数据行。 SSE , SPD , SCD分别定义每一增量步 的弹性应变能,塑性耗散和蠕变耗散。 它们对计算结果没有影响,仅仅作为能 量输出。
(三)编程思路
其他变量: STRAN ( NTENS ) :应变矩阵; DSTRAN ( NTENS ) :应变增量矩阵; DTIME :增量步的时间增量; NDI :直接应力分量的个数; NSHR :剪切应力分量的个数; NTENS :总应力分量的个数, NTENS = NDI + NSHR 。
ABAQUS VUMAT初学者用户子程序小例子
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)
4 tempOld, stretchOld, defgradOld, fieldOld,
3 stressOld, stateOld, enerInternOld, enerInelasOld,
6 tempNew, stretchNew, defgradNew, fieldNew,
C Write only -
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
用户子程序文件可以使用文本编辑器进行编辑当然也可以用fortran编译器如果对自己的用户子程序文件的语法不放心可以先用fortan编译器进行编译不过编译前要先建立project关于fortran编译这里不再介绍
上一次发过《ABAQUS 初学者用户子程序小例子》,給学习 UMAT 的初学者带来了一定的帮助。现在用到 VUMAT,发现网上 这种小例子很少,关于 VUMAT 的资料也不多。摸索了一天,做个 VUMAT 的小例子供大家分享。
ABAQUS材料用户子程序UMAT学习报告
NDI:某一点上直接应力组件数。 NSHR:某一点上剪切应力组件数。 NTENS:总应力分量个数,(=NDI+NSHR)。
NSTATV:存储与解有关的状态变量数组个数。 PROPS (NPROPS):材料常数数组。 COORDS:当前积分点坐标。DROT(3,3) :旋转增量矩阵。 CELENT:特征元素长度。
载入 输入文件umat.inp,得到如下图形。
按下图所示操作载入umat.for子程序文件 按下图所示创建作业(Job)
点一击段S时ub间m后it之,后结,果结如果下如图下所图示所。示。
最后查看可视化后处理,得到如下云图。
2、验证利用UMAT进行二次开发的实例
实例:最简单的杆件单轴拉伸,材料本构模型ARDMLO子A程D序;;特此殊外分,布读的取牵结
果引文力件的可U采T用RAUCRLODAFIDL ;子温程度序场。边界的 UTEMP 。
4、用户定义的单元
对于特殊类型的单元,可采用 UEL 子程序进行定义。
5、用户定义的材料特性和本构关系
几乎可以用于力学行为分析的任何分析过程,几乎可 以把用户材料属性赋予 ABAQUS 中的任何单元。
必须在 UMAT 中提供材料本构的雅可比( Jacobian) 矩阵,即应力增量对应变增量的变化率。
2、UMAT书写格式
定义了一些相关参数与变量的 精确度,从 ABAQUS 安装目 录下可找到
UMAT 中的应力矩阵、应变矩阵以及矩阵 DDSDDE、 DDSDDT、 DRPLDE 等,都是直接分量存储在前,剪切分 量存储在后。直接分量有 NDI 个,剪切分量有 NSHR 个。 各分量之间的顺序根据单元自由度的不同有一些差异,所以 编写 UMAT 时要考虑到所使用单元的类别。
ABAQUS-二次开发资料-UMAT
ABAQUS-⼆次开发资料-UMAT各个楼层及内容索引2-------------------------------------什么是UMAT3-------------------------------------UMAT功能简介4-------------------------------------UMAT开始的变量声明5-------------------------------------UMAT中各个变量的详细解释6-------------------------------------关于沙漏和横向剪切刚度7-------------------------------------UMAT流程和参数表格实例展⽰8-------------------------------------FORTRAN语⾔中的接⼝程序Interface9-------------------------------------关于UMAT是否可以⽤Fortran90编写的问题10-17--------------------------------Fortran77的⼀些有⽤的知识简介20-25\30-32-----------------------弹塑性⼒学相关知识简介34-37--------------------------------⽤户材料⼦程序实例JOhn-cook模型压缩包下载38-------------------------------------JOhn-cook模型本构简介图40-------------------------------------⽤户材料⼦程序实例JOhn-cook模型完整程序+david详细注解[欢迎⼤家来看看,并提供意见,完全是⾃⼰的diy的,不保证完全正确,希望共同探讨,以便更正,带"?"部分,还望各位⼤师\同仁指教]1什么是UMAT1.1 UMAT功能简介[-摘⾃庄茁⽼师的书UMAT⼦程序具有强⼤的功能,使⽤UMAT⼦程序:(1)可以定义材料的本构关系,使⽤ABAQUS材料库中没有包含的材料进⾏计算,扩充程序功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 )而已。
当然,最基本的一些概念和知识还是要具备的,比如:应力(stress),应变(strain )及其分量; volumetric part 和deviatoric part ;模量(modul us )、泊松比(Poisson’s ratio)、拉梅常数(Lame constant);矩阵的加减乘除甚至求逆;还有一些高等数学知识如积分、微分等。
3、UMAT 的基本任务?我们知道,有限元计算(增量方法)的基本问题是: 已知第n 步的结果(应力,应变等)n σ,n ε,然后给出一个应变增量1+n d ε,计算新的应力1+n σ。
UMAT 要完成这一计算,并要计算Jacobian 矩阵DDSDDE(I,J) =εσΔ∂Δ∂/。
σΔ是应力增量矩阵(张量或许更合适),εΔ是应变增量矩阵。
DDSDDE(I,J) 定义了第J 个应变分量的微小变化对第I 个应力分量带来的变化。
该矩阵只影响收敛速度,不影响计算结果的准确性(当然,不收敛自然得不到结果)。
4、怎样建立自己的材料模型?本构方程就是描述材料应力应变(增量)关系的数学公式,不是凭空想象出来的,而是根据实验结果作出的合理归纳。
比如对弹性材料,实验发现应力和应变同步线性增长,所以用一个简单的数学公式描述。
为了解释弹塑性材料的实验现象,又提出了一些弹塑性模型,并用数学公式表示出来。
对各向同性材料(Isotropic material),经常采用的办法是先研究材料单向应力-应变规律(如单向拉伸、压缩试验),并用一数学公式加以描述,然后把该规律推广到各应力分量。
这叫做“泛化“(generalization)。
5、一个完整的例子及解释由于主程序与UMAT之间存在数据传递,甚至一些公共变量,因此必须遵循有关UMAT的书写格式,UMAT 中常用的变量在文件开头予以定义,通常格式为:SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL, DDSDDT, DRPLDE, DRPLDT,2 STRAN, 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)INCLUDE 'ABA_PARAM.INC'CHARACTER*80 CMNAMEDIMENSION 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, SCDand, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDTRETURNENDCOORDS 当前积分点的坐标DDSDDE ( NTENS NTENS)大小为NTENS×NTENS的Jacobian矩阵(εσΔ∂∂/),DΔDSDDE(I,J) 定义了第J个应变分量的微小变化对第I 个应力分量带来的变化。
通常Jacobian矩阵是一个对称矩阵,除非在“*USER MATERIAL”语句中加入了“UNSYMM”参数;需要更新DROT对Finite strain问题,应变应该排除旋转部分,该矩阵提供了旋转矩阵,详见下面的解释;已知DSTRAN (NTENS)应变增量dε,已知n1+DTIME增量步的时间增量dt;已知KSTEP,KINC 传到用户子程序当前的STEP和INCREMENT值NDI直接应力、应变个数,对三维问题、轴对称问题自然是3(11,22,33),平面问题是2(11,22);已知NOEL,NPT 积分点所在单元的编号和积分点的编号NSHR剪切应力、应变个数,三维问题时3(12,13,23),轴对称问题是1(12);已知NTENS=NDI+ NSHR,总应力分量的个数;已知PNEWDT可用来控制时间步的变化。
如果设置为小于1的数,则程序放弃当前计算,并用新的时间增量DTIME X PNEWDT作为新的时间增量计算;这对时间相关的材料如聚合物等有用;如果设为大余1的数,则下一个增量步加大DTIME为DTIME X PNEWDT。
可以更新。
PROPS (NPROPS)材料常数数组,如模量啊,粘度系数等等;材料参数的个数,等于关键词“*USER MATERIAL”中“CONSTANTS”常数设定的值;矩阵中元素的数值对应于关键词“USER MATERIAL”下面的数据行。
作为已知量传入;已知SSE,SPD,SCD 分别定义每一增量步的弹性应变能,塑性耗散和蠕变耗散。
它们对计算结果没有影响,仅仅作为能量输出STATEV (NSTATEV)状态变量矩阵,用来保存用户自己定义的一些变量,如累计塑性应变,粘弹性应变等等。
增量步开始时作为已知量传入,增量步结束应该更新STRAN (NTENS)当前应变数组ε,已知nSTRESS (NTENS)应力张量数组,对应NDI个直接分量和NSHR个剪切分σ中的数值通过U量。
在增量步的开始,应力张量矩阵nMAT和主程序之间的接口传递到UMAT中,在增量步的σ。
对于包含刚结束UMAT将对应力张量矩阵更新为1+n体转动的有限应变问题,一个增量步调用UMAT之前就已经对应力张量进行了刚体转动,因此UMAT中只需处理应力张量的共旋部分。
UMAT中应力张量的度量为柯西(真实)应力。
下面这个UMAT取自ABAQUS手册,是一个用于大变形下的弹塑性材料模型,注意的是这里需要了解J2理论。
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,RPL,DDSDDT,1 DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,2 CMNAME,NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,3 PNEWDT,CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)CINCLUDE 'ABA_PARAM.INC'定义了一些相关参数与变量什么,从ABAQUS安装目录下的子文件夹“…\site”中可找到CCHARACTER*8 CMNAMECDIMENSION STRESS(NTENS),STATEV(NSTATV),DDSDDE(NTENS,NTENS),1 DDSDDT(NTENS)(应变矩阵),DRPLDE(NTENS),STRAN(NTENS),DSTRAN(NTENS)(应变增量矩阵),2 PREDEF(1),DPRED(1),PROPS(NPROPS)(材料常数矩),COORDS(3),DROT(3,3)(旋转矩阵),3 DFGRD0(3,3),DFGRD1(3,3)声明矩阵的尺寸CC LOCAL ARRAYSC ----------------------------------------------------------------C EELAS - ELASTIC STRAINSC EPLAS - PLASTIC STRAINSC FLOW - DIRECTION OF PLASTIC FLOWC ----------------------------------------------------------------C局部变量,用来暂时保存弹性应变、塑性应变分量以及流动方向DIMENSION EELAS(6),EPLAS(6),FLOW(6)CPARAMETER(ZERO=0.D0,ONE=1.D0,TWO=2.D0,THREE=3.D0,SIX=6.D0,1 ENUMAX=.4999D0,NEWTON=10,TOLER=1.0D-6)CC ----------------------------------------------------------------C UMAT FOR ISOTROPIC ELASTICITY AND ISOTROPIC MISES PLASTICITYC CANNOT BE USED FOR PLANE STRESSC ----------------------------------------------------------------C PROPS(1) - EC PROPS(2) - NUC PROPS(3..) - SYIELD AN HARDENING DATAC CALLS HARDSUB FOR CURVE OF YIELD STRESS VS. PLASTIC STRAINC ----------------------------------------------------------------CC ELASTIC PROPERTIESC获取杨氏模量,泊松比,作为已知量由PROPS 向量传入EMOD=PROPS(1) EENU=PROPS(2) νEBULK3=EMOD/(ONE-TWO*ENU) 3K )21(3ν−=EkEG2=EMOD/(ONE+ENU) 2G )1(2υ+=EG EG=EG2/TWO G )1(2υ+=EG EG3=THREE*EG 3GELAM=(EBULK3-EG2)/THREE λ 3)23(G k −=λ DO K1=1,NTENSDO K2=1,NTENSDDSDDE(K1,K2)=ZEROEND DOEND DO 弹性部分,Jacobian 矩阵很容易计算⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡+++=G G G J 2G 2G 2G λλλλλλλλλ 注意,在ABAQUS 中,剪切应变采用工程剪切应变的定义j,i i,j ij u u +=γ,所以剪切部分模量是G 而不是2GC Jacobian 矩阵的程序C ELASTIC STIFFNESSCDO K1=1,NDIDO K2=1,NDIDDSDDE(K2,K1)=ELAMEND DODDSDDE(K1,K1)=EG2+ELAMEND DODO K1=NDI+1,NTENSDDSDDE(K1,K1)=EGEND DOCC RECOVER ELASTIC AND PLASTIC STRAINS AND ROTATE FORWARDC ALSO RECOVER EQUIVALENT PLASTIC STRAINC读取弹性应变分量,塑性应变分量,并旋转(调用了ROTSIG ),分别保存在EELAS 和EPLAS 中;CALL ROTSIG(STATEV( 1),DROT,EELAS,2,NDI,NSHR)CALL ROTSIG(STATEV(NTENS+1),DROT,EPLAS,2,NDI,NSHR)读取等效塑性应变EQPLAS=STATEV(1+2*NTENS)先假设没有发生塑性流动,按完全弹性变形计算试算应力 .1σσσεJ σΔ+=Δ=Δ+n nCC CALCULATE PREDICTOR STRESS AND ELASTIC STRAINCDO K1=1,NTENSDO K2=1,NTENSSTRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)END DOEELAS(K1)=EELAS(K1)+DSTRAN(K1)弹性应变分量END DOC计算Mises应力C CALCULATE EQUIVALENT VON MISES STRESSCSMISES=(STRESS(1)-STRESS(2))**2+(STRESS(2)-STRESS(3))**21 +(STRESS(3)-STRESS(1))**2DO K1=NDI+1,NTENSSMISES=SMISES+SIX*STRESS(K1)**2END DOSMISES=SQRT(SMISES/TWO)C 根据当前等效塑性应变,调用HARDSUB得到对应的屈服应力C GET YIELD STRESS FROM THE SPECIFIED HARDENING CURVECNVALUE=NPROPS/2-1CALL HARDSUB(SYIEL0,HARD,EQPLAS,PROPS(3),NVALUE)CC DETERMINE IF ACTIVELY YIELDINGC 如果Mises应力大余屈服应力,屈服发生,计算流动方向IF (SMISES.GT.(ONE+TOLER)*SYIEL0) THENCC ACTIVELY YIELDINGC SEPARATE THE HYDROSTATIC FROM THE DEVIATORIC STRESS C CALCULATE THE FLOW DIRECTIONCSHYDRO=(STRESS(1)+STRESS(2)+STRESS(3))/THREEDO K1=1,NDIFLOW(K1)=(STRESS(K1)-SHYDRO)/SMISESEND DODO K1=NDI+1,NTENSFLOW(K1)=STRESS(K1)/SMISESEND DOC根据J2理论并应用Newton-Rampson方法求得等效塑性应变增量C SOLVE FOR EQUIVALENT VON MISES STRESSC AND EQUIVALENT PLASTIC STRAIN INCREMENT USING NEWTON ITERATIO NCSYIELD=SYIEL0DEQPL=ZERODO KEWTON=1,NEWTONRHS=SMISES-EG3*DEQPL-SYIELDDEQPL=DEQPL+RHS/(EG3+HARD)CALL HARDSUB(SYIELD,HARD,EQPLAS+DEQPL,PROPS(3),NVALUE)IF(ABS(RHS).LT.TOLER*SYIEL0) GOTO 10END DOCC WRITE WARNING MESSAGE TO THE .MSG FILECWRITE(7,2) NEWTON2 FORMAT(//,30X,'***WARNING - PLASTICITY ALGORITHM DID NOT ',1 'CONVERGE AFTER ',I3,' ITERATIONS')10 CONTINUEσ,应变分量C更新应力n1+C UPDATE STRESS, ELASTIC AND PLASTIC STRAINS ANDC EQUIVALENT PLASTIC STRAINCDO K1=1,NDISTRESS(K1)=FLOW(K1)*SYIELD+SHYDROEPLAS(K1)=EPLAS(K1)+THREE/TWO*FLOW(K1)*DEQPLEELAS(K1)=EELAS(K1)-THREE/TWO*FLOW(K1)*DEQPLEND DODO K1=NDI+1,NTENSSTRESS(K1)=FLOW(K1)*SYIELDEPLAS(K1)=EPLAS(K1)+THREE*FLOW(K1)*DEQPLEELAS(K1)=EELAS(K1)-THREE*FLOW(K1)*DEQPLEND DOEQPLAS=EQPLAS+DEQPLCC CALCULATE PLASTIC DISSIPATIONCSPD=DEQPL*(SYIEL0+SYIELD)/TWOCC 计算塑性变形下的Jacobian矩阵FORMULATE THE JACOBIAN (MATERIAL TANGENT)C FIRST CALCULATE EFFECTIVE MODULICEFFG=EG*SYIELD/SMISESEFFG2=TWO*EFFGEFFG3=THREE/TWO*EFFG2EFFLAM=(EBULK3-EFFG2)/THREEEFFHRD=EG3*HARD/(EG3+HARD)-EFFG3c...if (props(7).lt..001) go to 99c...DO K1=1,NDIDO K2=1,NDIDDSDDE(K2,K1)=EFFLAMEND DODDSDDE(K1,K1)=EFFG2+EFFLAMEND DODO K1=NDI+1,NTENSDDSDDE(K1,K1)=EFFGEND DODO K1=1,NTENSDO K2=1,NTENSDDSDDE(K2,K1)=DDSDDE(K2,K1)+EFFHRD*FLOW(K2)*FLOW(K1) END DOEND DOc...99 continuec...ENDIFC将弹性应变,塑性应变分量保存到状态变量中,并传到下一个增量步C STORE ELASTIC AND (EQUIVALENT) PLASTIC STRAINSC IN STATE VARIABLE ARRAYCDO K1=1,NTENSSTATEV(K1)=EELAS(K1)STATEV(K1+NTENS)=EPLAS(K1)END DOSTATEV(1+2*NTENS)=EQPLASCRETURNENDc...c...子程序,根据等效塑性应变,利用插值的方法得到对应的屈服应力SUBROUTINE HARDSUB(SYIELD,HARD,EQPLAS,TABLE,NVALUE)CINCLUDE 'ABA_PARAM.INC'CDIMENSION TABLE(2,NVALUE)CPARAMETER(ZERO=0.D0)CC SET YIELD STRESS TO LAST VALUE OF TABLE, HARDENING TO ZERO CSYIELD=TABLE(1,NVALUE)HARD=ZEROC IF MORE THAN ONE ENTRY, SEARCH TABLECIF(NVALUE.GT.1) THENDO K1=1,NVALUE-1EQPL1=TABLE(2,K1+1)IF(EQPLAS.LT.EQPL1) THENEQPL0=TABLE(2,K1)IF(EQPL1.LE.EQPL0) THENWRITE(7,1)1 FORMAT(//,30X,'***ERROR - PLASTIC STRAIN MUST BE `,1 `ENTERED IN ASCENDING ORDER')CALL XITENDIFCC CURRENT YIELD STRESS AND HARDENING CDEQPL=EQPL1-EQPL0SYIEL0=TABLE(1,K1)SYIEL1=TABLE(1,K1+1)DSYIEL=SYIEL1-SYIEL0HARD=DSYIEL/DEQPLSYIELD=SYIEL0+(EQPLAS-EQPL0)*HARDGOTO 10ENDIFEND DO10 CONTINUEENDIFRETURNEND。