ABAQUS-二次开发资料-UMAT
如何配置ABAQUS的UMAT
如何配置ABAQUS的UMAT想使用UMAT吗?貌似很高深的样子,take it easy。
不过就是user defined subroutine而已,fortran里面也有subroutine,一个道理。
就把这个当作是一个外接的fortran程序好了。
当然自己要写一个UMAT不是一件容易的事情,但是今天我们不讨论这个,今天讨论的重点是如何让你的ABAQUS支持UMAT。
这个也不容易,能装好ABAQUS的人也一定经过一番挣扎了吧,既然已经经历不少艰难困苦到了这一步,那再坚持一会儿,设置一下配置,让我们拥有ABAQUS的所有功能吧!ABAQUS 6.6 和 6.7是不一样的,首先就是要阅读ABAQUS 的system requirement对于6.6来说:对于6.7来说:这些信息可以在simulia的官方网站上面看到。
一定要看清楚哦,下载准确的版本是成功的关键,不要像我想当然随便下了一个 Microsoft Visual C++ .NET 2005 然后装 Intel Visual Fortran 9.0 根本识别不出来Visual Fortran,然后降低到Microsoft Visual C++ .NET 2003,这次Visual Fortran能够识别出来来,以为可以了吧,注意,上面提到的只有 Intel Visual Fortran 8.0, 8.1, 9.1, 从来没有说过9.0。
我很郁闷,但是没有办法,又不想再重装.NET,只好又去下了一个Intel Visual Fortran 9.1,终于可以了。
走了不少弯路,至少让我以后小心点,绝对不要想当然,不然你就准备好不断重装吧。
也就是说配置UMAT之前,你需要安装Microsoft Visual C++ .NET 2003 或 2005,Intel Visual Fortran 8.0 或 8.1 或 9.1我自己装了ABAQUS 6.6 和 6.7,但是为了追求比较新的版本,所以装了Microsoft Visual C++ .NET 2003 和 Intel Visual Fortran 9.1,这样子原理上在6.7里面没有问题了,后来测试发现在6.6里面也很顺利。
第 章 ABAQUS用户材料子程序二次开发及应用
图 10-1 ABAQUS 调用 UMAT 的过程示意图
10.3 本构积分算法
材料本构模型的有限元实现主要包括两方面的内容: 采用一定的方法对本构方程进行局部积分以得到在给定应变增量下的应力增量; 推导相应的一致性切线刚度矩阵。 当应力超出屈服面后,要进行应力调整,使之返回更新后的屈服面,采用的方法称为本构积分 算法。近年来,对金属材料本构模型各种积分算法的理论分析与研究取得重大进展,发现隐式积分 法具有精度好、效率高、无条件稳定等许多优点,且已越来越广泛地应用于非线性计算力学中,出 现了各种一致性切线刚度法。然而目前对岩土非线性本构模型的隐式积分算法的研究不如金属材料 这么成熟,其原因在于:一方面由于采用非相关联流动法则使切线刚度矩阵不对称,给有限元计算 与程序设计造成一些特殊困难;另一方面, 岩土本构模型的复杂性如“奇异角点”问题也使直接计 算岩土弹塑性本构矩阵和切线刚度矩阵遇到困难。
第 10 章 ABAQUS 用户材料子程序二次开发及应用
知识要点:
; ABAQUS 材料模型库和单元库简介 ; 用户子程序 UMAT 接口原理 ; 本构积分算法 ; ABAQUS 对于材料非线性问题的处理 ; UMAT 材料子程序实现及应用 ; D-P 模型与 M-C 模型参数之间的关系 ; 算例分析
本章导读:
本章主要介绍了 ABAQUS 材料模型库和单元库、用户子程序 UMAT 接口原理以及 ABAQUS 对于材料非线性问题的处理,然后就岩土介质弹塑性本构积分算法以及 Drucker-Prager 模型和 Mohr-Coulomb 模型参数之间的转换关系进行了推导。最后,以修正的 Mohr-Coulomb 模型为例, 对用户材料子程序 UMAT 二次开发进行了讲解,并给出算例验证所开发子程序的可靠性和精确性。
abaqus二次开发
Abaqus 使用FQA:Q: abaqus的图形如何copy?A: file>print>file格式为png,可以用Acdsee打开。
Q: 用Abaqus能否计算[Dep]不对称的问题?A: 可以,并且在step里面的edit step对话框other里面的matrix solver有个选项。
Q: 弹塑性矩阵【D】与ddsdde有何联系?A: stress=D*stran;d(stress)=ddsdde*d(stran)。
Q: 在abaqus中,如果采用umat,利用自己的本构,如何让abaqus明白这种材料的弹塑性应变,也就是说,如何让程序返回弹性应变与塑性应变,好在output中输出,我曾想用最笨地方法,在uvarm中定义输出,利用getvrm获取材料点的值,但无法获取增量应力,材料常数等,研究了帮助中的例子,umatmst3.inp,umatmst3.for,他采用mises J2 流动理论,我在output history 显示他已进入塑性状态,但他的PE仍然为0!!?A: 用uvar( )勉强成功。
Q: 本人在用umat作本构模型时,*static,1,500,0.000001,0.1 此时要求的增量步很多,即每次增量要很小,*static1,500 时,在弹性向塑性过度时,出现错误,增量过大,出现尖点.?A: YOU CAN TRY AS FOLLOWS:*STEP,EXTRAPOLA TION=NO,INC=2000000*STA TIC0.001,500.0,0.00001,0.1。
Q: 模型中存在两个物体的接触,计算过程中报错,怎么回事?A: 接触问题不收敛有两个方面不妨试试:一、在*CONTACT PAIR 里调试ADJUST参数;二、调一些模型参数,比如FRICTION等。
Q: 在边界条件和加载时,总是有initial这个步,然后是我们自己定义的加载步,请问这个initial步,主要作用是什么?能不能去掉?A: 不能去掉,所有的分析都有,是默认的步。
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里弹塑本构的实现
前言有限元法是工程中广泛使用的一种数值计算方法。
它是力学、计算方法和计算机技术相结合的产物。
在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。
所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。
ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。
非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。
比方说,一个复合材料就不能用传统的线性分析软件包进行分析。
任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。
多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。
这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。
非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。
航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。
新一代波音 787客机将全部采用复合材料。
只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。
在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。
分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。
在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。
瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。
线性分析在这种情况下是不适用的。
以往有一些专门的软件来分析碰撞问题,但现在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 )而已。
abaqus子程序umat编写hashin准则
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子程序UMAT里弹塑本构的实现之欧阳科创编
前言有限元法是工程中广泛使用的一种数值计算方法。
它是力学、计算方法和计算机技术相结合的产物。
在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。
所以,伴随着有限元理论以及计算机技术的发展,大有限元软件的应用证变得越来越普及。
ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。
非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。
比方说,一个复合材料就不能用传统的线性分析软件包进行分析。
任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。
多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。
这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。
非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。
航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。
新一代波音 787客机将全部采用复合材料。
只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。
在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。
分析汽车的整体和各个子系统的性能要求(如悬挂系统等)需要进行非线性分析。
在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以及沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。
瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。
线性分析在这种情况下是不适用的。
以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。
如何配置ABAQUS的UMAT
如何配置ABAQUS的UMAT想使用umat吗?貌似很高深的样子,takeiteasy。
不过就是userdefinedsubroutine 而已,fortran里面也有subroutine,一个道理。
就把这个当作是一个外接的fortran程序好了。
当然自己要写一个umat不是一件容易的事情,但是今天我们不讨论这个,今天讨论的重点是如何让你的abaqus支持umat。
这个也不容易,能装好abaqus的人也一定经过一番挣扎了吧,既然已经经历不少艰难困苦到了这一步,那再坚持一会儿,设置一下配置,让我们拥有abaqus的所有功能吧!Abaqu6。
6不同于6.7。
首先是阅读ABAQUS的系统需求。
对于6.6:buildingpostprocessing对于6.7:buildingpostprocessing? microsoftvisualintelfortran8。
零点零三九intelc++8.0.058c++c++。
net2022applications(abaqusmakeutility使用C++>c++.net2021usersubroutinesandbuildingfortran?智能视觉fortran(abaqusmakeutilitywithfortranandabaqususersubroutines>视觉福特8。
十二“e:\\programme\\2021\\vc7\\bin\\vcvars32.bat”&&c:\\windows\\system32\\cmd。
Exe/K修改属性:“e:\\programme\\2021\\vc7\\bin\\vcvars32.bat”&&最后,当您运行验证时,您将得到以下结果:ABAQUS产品安装验证。
周一2122:10:482022runningsystemrequirementchecks.要求:windows2000、windowsxp、WindowsServer2022标准edition,orwindowsvista产品:allabaqusproductsproduct:abaqusmakeutilitywithfortranandabaquswithusersubroutines包装DW_UFC_UC_U9.1.028。
一起学习UMAT 的一些公式注释
一起学习UMAT的一些公式注释ZHANG chunyuherrliubs comments in formulas知识积累和储备在进行ABAQUS子程序UMAT的编写前,要弄清楚:ABAQUS调用UMAT子程序流程;要建立的材料模型的本构关系和屈服准则等;UMAT子程序中相关参数、以及矩阵的表达。
主要求解过程:每一个增量步开始,ABAQUS主程序在单元积分点上调用UMAT 子程序,并转入应变增量、时间步长及荷载增量,同时也传入当前已知的状态的应力、应变及其他求解过程相关的变量;UMAT子程序根据本构方程求解应力增量及其他相关的变量,提供Jacobian矩阵给ABAQUS主程序以形成整体刚度矩阵;主程序结合当前荷载增量求解位移增量,继而进行平衡校核;如果不满足指定的误差,ABAQUS将进行迭代直到收敛,然后进行下一增量步的求解。
弹性力学相关知识(基本)仿真论坛(/forum.php ... &highlight=UMAT)ABAQUS二次开发版块这个人帖子结合例子,列出了弹性力学的基本公式。
UMAT变量含义UMAT中可以得到的量增量步开始时刻的,应力(Stress),应变(Strain), 状态变量(Solution-dependent state variables (SDVs))增量步开始时刻的,应变增量(Strain increment),转角增量(Rotation increment),变形梯度(Deformation gradient)时间总值及增量(Total and incremental values of time),温度(Temperature),用户定义场变量材料常数,材料点的位置,特征单元长度当前分析步,增量步必须定义的变量应力,状态变量,材料Jacobian矩阵(本构关系)可以定义的变量应变能,塑性耗能,蠕变耗能新建议的时间增量变量分类UMAT中可以直接调用(Call ……)的子程序或子函数SINV(STRESS,SINV1,SINV2,NDI,NSHR)——用于计算应力不变量。
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中的二次开发
Abaqus中的二次开发Abaqus中的二次开发可以分为两大类:1)基于FORTRAN语言的用户子程序开发;2)基于Python的脚本开发。
其中第二大类基于Python的脚本开发又可以细分为如下三大类:1)通过Python脚本实现Abaqus参数化建模;2)通过Python脚本实现用户定制化后处理;3)应用Python语言通过FoxGUI Toolkit编写GUI(可视化用户界面)。
今天首先对Abaqus子程序二次开发进行一个概括性的介绍。
虽然Abaqus为用户提供了大量的单元库和求解模型,使用户能够利用这些模型处理绝大多数的问题,但是实际问题毕竟非常复杂,Abaqus不可能求解所有可能出现的问题,所以Abaqus提供了大量的用户自定义子程序(UserSubroutine),允许用户再找不到合适模型的情况下自定义符合自己问题的模型。
这些用户子程序涵盖了建模、载荷到单元的几乎各个部分。
用户子程序具有以下功能和特点:1、如果Abaqus的一些固有模块功能有限,用户子程序可以提高和扩展Abaqus中相应的功能;2、通常用户子程序是用FORTRAN语言的代码写成(Abaqus也提供C++接口);3、它可以以不同的方式运行在模型的不同计算步骤和位置;4、可以在一次计算中包含多个用户子程序。
常用的Abaqus用户子程序举例:DLOAD:用户自定义载荷,例如在复杂工况下,载荷随时间和温度变化;FILM:用户自定义film coefficient,例如定义复杂热交换界面上的热交换系数;UEL:用户自定义单元,是Abaqus用户子程序中功能最强大的,理论上可以实现任意类型的有限元单元定义,通过用户自定义单元和Abaqus的高效求解器,实现任意类型的偏微分方程问题的数值求解;UMAT:用户自定义材料属性,可以用来定义复杂材料的连续模型,用以补充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 而已。
abaqus umat于计算力学之应用
abaqus umat是一种在计算力学中广泛应用的有限元分析软件。
它可以通过用户自定义的子程序(也称为umat)进行材料本构关系的定义,使得在模拟复杂材料行为时能够更加精确地描述材料的非线性和非均匀性等特性。
abaqus umat能够有效地模拟材料的机械性能,并在工程领域具有广泛的应用。
1. 什么是abaqus umat?abaqus umat是abaqus软件中用于用户自定义材料本构关系的子程序。
它可以实现对材料行为的精确描述,包括材料的非线性、非均匀性等特性。
通过abaqus umat,用户可以自定义材料的本构关系和材料参数,以满足对于各种材料行为的精确模拟需求。
2. abaqus umat的实现原理abaqus umat的实现依赖于有限元分析方法。
用户可以通过编写程序,在abaqus中调用该程序来定义材料的本构关系。
在有限元分析中,材料的本构关系是描述材料应力和应变之间关系的重要参数,通过用户自定义的umat程序,可以实现对材料行为的更为精确的描述。
3. abaqus umat的应用领域abaqus umat在工程领域有着广泛的应用。
例如在航空航天领域,abaqus umat可以用于模拟飞机结构的材料行为,预测飞机在不同载荷下的应力应变分布,进行疲劳分析等。
在汽车工业中,abaqus umat可以用于模拟汽车结构在碰撞时的材料行为,以及进行车身强度分析等。
abaqus umat还被广泛应用于建筑、船舶、能源等领域,在模拟复杂材料行为时发挥着重要作用。
4. abaqus umat的优势相较于其他有限元分析软件,abaqus umat的优势在于其灵活性和精确性。
用户可以通过编写自定义的umat程序,实现对材料行为的精确描述,满足各种复杂条件下的模拟需求。
abaqus umat还具有较强的兼容性和扩展性,可以与abaqus的其他模块结合使用,实现更为全面的分析和模拟。
5. 用户如何编写abaqus umat程序编写abaqus umat程序需要一定的编程和材料力学知识。
ABAQUS-UMAT弹塑本构二次开发地实现
word前言有限元法是工程中广泛使用的一种数值计算方法。
它是力学、计算方法和计算机技术相结合的产物。
在工程应用中,有限元法比其它数值分析方法更流行的一个重要原因在于:相对与其它数值分析方法,有限元法对边界的模拟更灵活,近似程度更高。
所以,伴随着有限元理论以与计算机技术的开展,大有限元软件的应用证变得越来越普与。
ABAQUS软件一直以非线性有限元分析软件而闻名,这也是它和ANSYS,Nastran等软件的区别所在。
非线性有限元分析的用处越来越大,因为在所用材料非常复杂很多情况下,用线性分析来近似已不再有效。
比方说,一个复合材料就不能用传统的线性分析软件包进展分析。
任何与时间有关联,有较大位移量的情况都不能用线性分析法来处理。
多年前,虽然非线性分析能更适合、更准确的处理问题,但是由于当时计算设备的能力不够强大、非线性分析软件包线性分析功能不够健全,所以通常采用线性处理的方法。
这种情况已经得到了极大的改善,计算设备的能力变得更加强大、类似ABAQUS这样的产品功能日臻完善,应用日益广泛。
非线性有限元分析在各个制造行业得到了广泛应用,有不少大型用户。
航空航天业一直是非线性有限元分析的大客户,一个重要原因是大量使用复合材料。
新一代波音 787客机将全部采用复合材料。
只有像 ABAQUS这样的软件,才能分析包括多个子系统的产品耐久性能。
在汽车业,用线性有限元分析来做四轮耐久性分析不可能得到足够准确的结果。
分析汽车的整体和各个子系统的性能要求〔如悬挂系统等〕需要进展非线性分析。
在土木工程业, ABAQUS能处理包括混凝土静动力开裂分析以与沥青混凝土方面的静动力分析,还能处理高度复杂非线性材料的损伤和断裂问题,这对于大型桥梁结构,高层建筑的结构分析非常有效。
瞬态、大变形、高级材料的碰撞问题必须用非线性有限元分析来计算。
线性分析在这种情况下是不适用的。
以往有一些专门的软件来分析碰撞问题,但现在ABAQUS在通用有限元软件包就能解决这些问题。
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材料用户子程序UMAT学习报告
DSTRAN(NTENS) :应变增量数组。
DSTRAN(NTENS) :应变增量数组。 TIME:当前增量开始时总时间的值。 DTIME:增量步的时间增量 。 TEMP:开始的温度。 DTEMP:增量步的温度增量。 PREDEF:预定场内变量基于节点处的插值值。 DPRED:预定场内变量的增量。 CMNAME:用户定义材料的名称。
7、其他用户子程序
此外, 还包括特殊类型用途的子程序, 如定义多点约束的子 程序 MPC, 定义局部坐标的 ORIENT子程序等。上述子程序的分 类仅限于在岩土工程领域,其他领域有不同的分类方法。
UMAT使用方法
1、UMAT简介
用户材料子程序( User-defined Material Mechanical
6、用户定义的状态变量
状态变量主要包括定义场变量、与求解过程相关的状态变量,以 后重新定义材料点的状态变量,主要有 UFIELD 子程序、 SDVINI
子程序和 USDFLD 子程序。 此外还包括定义摩擦接触属性的子程序
,如定义摩擦接触行为的 FRIC 子程序,以及接触面行为定义的 UINTER 子程序等。
最后查看可视化后处理,得到如下云图。
2、验证利用UMAT进行二次开发的实例
实例:最简单的杆件单轴拉伸,材料本构模型采用线 弹性模型,E= 206000MPa, ν=0.3。左端约束,右端施加均 布力 q=1MPa。 分析:这是一个简单的杠杆拉
伸模型,ABAQUS内部就有这种模
型,但也可以使用材料用户子程序 UMAT对ABAQUS进行二次开发进 行求解。
NDI:某一点上直接应力组件数。 NSHR:某一点上剪切应力组件数。 NTENS:总应力分量个数,(=NDI+NSHR)。 NSTATV:存储与解有关的状态变量数组个数。 PROPS (NPROPS):材料常数数组。 COORDS:当前积分点坐标。DROT(3,3) :旋转增量矩阵。
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
各个楼层及内容索引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_二次开发详解
#开头的为注释行.第一步,建立建模环境,这一步中p y将从a b a q u s中导入建模所需的所有程序模块.f r o m p a r t i m p o r t*接下来定义草图环境m d b.m o d e l s['M o d e l A'].S k e t c h(n a m e='__p r o f i l e__',s h e e t S i z e=200.0)m d b.m o d e l s['M o d e lA'].s k e t c h e s['__p r o f i l e__'].s k e t c h O p t i o n s.s e t V a l u e s(c o n s t r u c t i o n G e o m e t r y=O N,d e c i m a l P l a c e s=2,d i m e n s i o n T e x t H e i g h t=5.0,g r i d=O N,g r i d F r e q u e n c y=2,g r i d S p a c i n g=5.0,s h e e t S i z e=200.0,v i e w S t y l e=A X I S Y M)上面的设定为大小200*200,格栅间距为5,文字标注高度为5.m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].O b l i q u e C o n s t r u c t i o n L i n e(p o i n t1=(0.0,-100.0),p o i n t2=(0.0,100.0))本句语句设定轴对称模型的对称轴线位置m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__'].r e c t a n g l e(p o i n t1=(0.0,0.0),p o i n t2=(40.0, -40.0))该语句绘制矩形,从点0,0至点40,-40m d b.m o d e l s['M o d e l A'].P a r t(d i m e n s i o n a l i t y=A X I S Y M M E T R I C,n a m e='B o d e n',t y p e=D E F O R M A B L E_B O D Y)定义模型为轴对称,名字为b o d e n,为可变形体m d b.m o d e l s['M o d e l A'].p a r t s['B o d e n'].B a s e S h e l l(s k e t c h=m d b.m o d e l s['M o d e lA'].s k e t c h e s['__p r o f i l e__'])d e l m d b.m o d e l s['M o d e l A'].s k e t c h e s['__p r o f i l e__']绘图完成丌要忘记收回建模环境所占的内存第二节:材料定义--------------------2楼第三节:装配--------------------3楼第四节:分析步定义--------------------4楼第五节:接触定义--------------------5楼第六节:荷载边界定义-----------------6楼第七节:网格划分控制------------------7楼第八节,任务提交及杂项功能--------8楼关于如何在p y t h o n中提交多个任务的问题9楼第二节,材料定义f r o m m a t e r i a l i m p o r t*f r o m s e c t i o n i m p o r t*从A B A Q U S提供的接口中导入材料库和组件库m d b.m o d e l s['M o d e l-A'].M a t e r i a l(n a m e='B o d e n')定义材料名m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].D e n s i t y(t a b l e=((2000.0,),))定义材料密度m d b.m o d e l s['M o d e l A'].m a t e r i a l s['B o d e n'].E l a s t i c(t a b l e=((210546.3,0.3333),))定义材料线弹性模量和泊松比,其它的材料,如弹塑性,粘弹性材料均对应丌同的对象函数. m d b.m o d e l s['M o d e l A'].H o m o g e n e o u s S o l i d S e c t i o n(m a t e r i a l='B o d e n',n a m e='b o d e n',t h i c k n e s s=1.0)m d b.m o d e l s['M o d e lA'].p a r t s['B o d e n'].a s s i g n S e c t i o n(r e g i o n=R e g i o n(f a c e s=m d b.m o d e l s['M o d e lA'].p a r t s['B o d e n'].f a c e s[0:1]),s e c t i o n N a m e='b o d e n')设定组件为坐标无关性材料,厚度为单位厚度,并将属性附给所用的组件第三节,装配f r o m a s s e m b l y i m p o r t*首先,导入装配所用到的对象m d b.m o d e l s['M o d e lA'].r o o t A s s e m b l y.D a t u m C s y s B y T h r e e P o i n t s(c o o r d S y s T y p e=C Y L I N D R I C A L,o r i g i n=(0.0, 0.0,0.0),p o i n t1=(1.0,0.0,0.0),p o i n t2=(0.0,0.0,-1.0))定义坐标类型为柱坐标,原点0,0,0,另外两个为单位向量,确定该坐标轴的方向.m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.I n s t a n c e(n a m e='B o d e n-1',p a r t=m d b.m o d e l s['M o d e l A'].p a r t s['B o d e n'])生成草图对像b o d e n的实体,名字叨B o d e n-1.无偏移插入第四节,定义分析步f r o m s t e p i m p o r t*象其它步一样,先导入分析步要用到的模块m d b.m o d e l s['M o d e l A'].I m p l i c i t D y n a m i c s S t e p(i n i t i a l I n c=0.005,m a x N u m I n c=1024,n a m e='S t e p-1',n o S t o p=O F F,n o h a f=O F F,p r e v i o u s='I n i t i a l',t i m e I n c r e m e n t a t i o n M e t h o d=F I X E D,t i m e P e r i o d=5.12)定义对劢力隐式分析,时长为0.005*1024=5.12个时间单位,前一步为I n i t i a lm d b.m o d e l s['M o d e l A'].f i e l d O u t p u t R e q u e s t s['F-O u t p u t-1'].s e t V a l u e s(v a r i a b l e s=('U',))定义输出到O D B文件的数据,这里叧定义了位移输出m d b.m o d e l s['M o d e l A'].f i e l d O u t p u t R e q u e s t s['F-O u t p u t-1'].s e t V a l u e s(f r e q u e n c y=1)定义位移输出的频率为每步都输出m d b.m o d e l s['M o d e l A'].s t e p s['S t e p-1'].R e s t a r t(f r e q u e n c y=1,o v e r l a y=O N)定义重启劢析,每一步记录,叧记录最后一次的正确状态第五节,定义接触f r o m i n t e r a c t i o n i m p o r t*依然是先导入所用的模块m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.P a r t i t i o n E d g e B y P a r a m(e d g e s=(m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'].e d g e s[3],),p a r a m e t e r=0.975)在上部即第3面的97.5%的地方设定一个点,用于定义接触m d b.m o d e l s['M o d e l A'].C o n t a c t P r o p e r t y('I n t P r o p-1')定义接触属性名m d b.m o d e l s['M o d e l A'].i n t e r a c t i o n P r o p e r t i e s['I n t P r o p-1'].T a n g e n t i a l B e h a v i o r(f o r m u l a t i o n=F R I C T I O N L E S S)m d b.m o d e l s['M o d e l A'].i n t e r a c t i o n P r o p e r t i e s['I n t P r o p-1'].N o r m a l B e h a v i o r(a l l o w S e p a r a t i o n=O F F,a u g m e n t e d L a g r a n g e=O F F,p r e s s u r e O v e r c l o s u r e=H A R D)定义接触特性,为无摩擦硬接触丌允许分开m d b.m o d e l s['M o d e l A'].S u r f a c e T o S u r f a c e C o n t a c t S t d(a d j u s t M e t h o d=N O N E,c r e a t e S t e p N a m e='I n i t i a l',i n t e r a c t i o n P r o p e r t y='I n t P r o p-1',m a s t e r=R e g i o n(s i d e1E d g e s=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['f u n-1'].e d g e s[0:1]) ,n a m e='I n t-1',s l a v e=R e g i o n(s i d e1E d g e s=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'].e d g e s[4:5]),s l i d i n g=F I N I T E)这一句是建立接触对,分别为两个面上的一条边,这里边的定义由A B A Q U S内定,具体可以查阅参考手册第六节,荷载边界定义f r o m l o a d i m p o r t*m d b.m o d e l s['M o d e l A'].P e r i o d i c A m p l i t u d e(a_0=1.0,d a t a=((3.0,1.1),(3.2,1.7)),f r e q u e n c y=2.454,n a m e='F o u r i e r',s t a r t=0.0,t i m e S p a n=S T E P)定义f o u r i e r级数表示的荷载m d b.m o d e l s['M o d e l A'].P r e s s u r e(a m p l i t u d e='F o u r i e r',c r e a t e S t e p N a m e='S t e p-1',d i s t r i b u t i o n=U N I F O R M,m a g n i t u d e=50.0,n a m e='L o a d-1',re g i o n=R e g i o n(s i d e1E d g e s=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['f u n-1'].e d g e s[2:3]))定义压强,设定加载的分析步,区域及放大系数m d b.m o d e l s['M o d e l A'].D i s p l a c e m e n t B C(a m p l i t u d e=U N S E T,c r e a t e S t e p N a m e='I n i t i a l',d i s t r i b u t i o n=U N I F O R M,l o c a l C s y s=N o n e,n a m e='B C-1',r e g i o n=R e g i o n(e d g e s=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'].e d g e s[0:1]+\m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'].e d g e s[2:3]+\m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['f u n-1'].e d g e s[3:4]), u1=S E T,u2=U N S E T,u r3=U N S E T)m d b.m o d e l s['M o d e l A'].D i s p l a c e m e n t B C(a m p l i t u d e=U N S E T,c r e a t e S t e p N a m e='I n i t i a l',d i s t r i b u t i o n=U N I F O R M,l o c a l C s y s=N o n e,n a m e='B C-2',re g i o n=R e g i o n(e d g e s=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'].e d g e s[1:2]),u1=U N S E T,u2=S E T,u r3=U N S E T)设定边界位移为0的边界条件,注意语法中对象相加的方法.第七节,网格划分控制f r o m m e s h i m p o r t*i m p o r t m e s h导入网格划分模块e l e m T y p e1=m e s h.E l e m T y p e(e l e m C o d e=C A X8,e l e m L i b r a r y=S T A N D A R D,s e c o n d O r d e r A c c u r a c y=O F F,h o u r g l a s s C o n t r o l=S T I F F N E S S,d i s t o r t i o n C o n t r o l=O F F)e l e m T y p e2=m e s h.E l e m T y p e(e l e m C o d e=C A X6M,e l e m L i b r a r y=S T A N D A R D)a1=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l yf1=a1.i n s t a n c e s['B o d e n-1'].f a c e sf a c e s1=f1[0:1]r e g i o n s=(f a c e s1,)a1.s e t E l e m e n t T y p e(r e g i o n s=r e g i o n s,e l e m T y p e s=(e l e m T y p e1,e l e m T y p e2))定义其中一个物体的网格为二次8结点单元,如果其中有无法划分成四边形单元的情况,则用三角形二次6结点单元.e l e m T y p e1=m e s h.E l e m T y p e(e l e m C o d e=C A X4,e l e m L i b r a r y=S T A N D A R D)e l e m T y p e2=m e s h.E l e m T y p e(e l e m C o d e=C A X3,e l e m L i b r a r y=S T A N D A R D)a1=m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l yf1=a1.i n s t a n c e s['f u n-1'].f a c e sf a c e s1=f1[0:1]r e g i o n s=(f a c e s1,)a1.s e t E l e m e n t T y p e(r e g i o n s=r e g i o n s,e l e m T y p e s=(e l e m T y p e1,e l e m T y p e2))定义其中一个物体的网格为一次4结点单元,如果其中有无法划分成四边形单元的情况,则用三角形一次3结点单元.m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.s e e d P a r t I n s t a n c e(r e g i o n s=(m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['f u n-1'],),s i z e=0.5)m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.s e e d P a r t I n s t a n c e(r e g i o n s=(m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'],),s i z e=1)定义网格划分全局单元大小.m d b.m o d e l s['M o d e l A'].r o o t A s s e m b l y.g e n e r a t e M e s h(r e g i o n s=(m d b.m o d e l s['M o d e lA'].r o o t A s s e m b l y.i n s t a n c e s['B o d e n-1'],m d b.m o d e l s['M o d e lA'].r o o t A s s e m b l y.i n s t a n c e s['f u n-1']))按照定义划分单元第八节,任务提交及杂项功能m d b.m o d e l s.c h a n g e K e y(f r o m N a m e='M o d e l A',t o N a m e='F a l l-M u s t e r')修改模型名称m d b.M o d e l(n a m e='F a l l-015',o b j e c t T o C o p y=m d b.m o d e l s['F a l l-M u s t e r'])拷贝模型m d b.m o d e l s['F a l l-015'].m a t e r i a l s['B o d e n'].e l a s t i c.s e t V a l u e s(t a b l e=((210546.3,0.15),))修改模型中的材料属性m d b.J o b(c o n t a c t P r i n t=O F F,d e s c r i p t i o n='',e c h o P r i n t=O F F,e x p l i c i t P r e c i s i o n=S I N G L E,h i s t o r y P r i n t=O F F,m o d e l='F a l l-015',m o d e l P r i n t=O F F,m u l t i p r o c e s s i n g M o d e=T H R E A D S,n a m e='J o b-015',n o d a l O u t p u t P r e c i s i o n=S I N G L E, n u m C p u s=1,n u m D o m a i n s=1,p a r a l l e l i z a t i o n M e t h o d E x p l i c i t=L O O P,p a r a l l e l i z a t i o n M e t h o d S t a n d a r d=T R E E,p r e M e m o r y=1024.0,s c r a t c h='',s t a n d a r d M e m o r y=2048.0,s t a n d a r d M e m o r y P o l i c y=M O D E R A T E,t y p e=A N A L Y S I S, u s e r S u b r o u t i n e='')生成任务m d b.s a v e A s(p a t h N a m e='D:/t e m p/F u n d a m e n t S c h w i n g u n g S t u d i e')保存模型m d b.j o b s['J o b-015'].s u b m i t()提交任务关于如何在p y t h o n中提交多个任务的问题:如果您使用下面这样的命令做的提交m d b.j o b s['J o b-01'].s u b m i t()m d b.j o b s['J o b-02'].s u b m i t()m d b.j o b s['J o b-03'].s u b m i t()你就会看到,所有的任务是一次性提交的,多个任务在一起运行,这肯定丌是你想看到的结果,如何完成一个接着一个的提交呢,其实很简单,在每个任务后面加上一句m d b.j o b s['J o b-01'].w a i t F o r C o m p l e t i o n()就可以了.那么上面的语句就改为m d b.j o b s['J o b-01'].s u b m i t()m d b.j o b s['J o b-01'].w a i t F o r C o m p l e t i o n()m d b.j o b s['J o b-02'].s u b m i t()m d b.j o b s['J o b-02'].w a i t F o r C o m p l e t i o n()m d b.j o b s['J o b-03'].s u b m i t()m d b.j o b s['J o b-03'].w a i t F o r C o m p l e t i o n()......就一切O K了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
各个楼层及内容索引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材料库中没有包含的材料进行计算,扩充程序功能。
ABAQUS软件2003年度用户年会论文集(2)几乎可以用于力学行为分析的任何分析过程,几乎可以把用户材料属性赋予ABAQUS中的任何单元;(3)必须在UMAT中提供材料本构模型的雅可比(Jacobian)矩阵,即应力增量对应变增量的变化率。
(4)可以和用户子程序“USDFLD”联合使用,通过“USDFLD”重新定义单元每一物质点上传递到UMAT中场变量的数值。
1.2 UMAT开始的变量声明由于主程序与UMAT之间存在数据传递,甚至共用一些变量,因此必须遵守有关书写格式,UMAT中常用的变量在文件开头予以定义,通常格式为:SUBROUTINE UMAT(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 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)CINCLUDE'ABA_PARAM.INC'-----此处是将ABAQUS本身自带的参量精度定义的文件包含进来[后面详说]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)-------------------------------以上是变量声明吧!user coding to define DDSDDE,STRESS,STATEV,SSE,SPD,SCDand,if necessary,RPL,DDSDDT,DRPLDE,DRPLDT,PNEWDT-------------------------------此处,看来是将用户定义材料属性的fortran程序编入RETURN------------------这是返回值END------------------------结束UMAT中各个变量的详细解释[凡是-注明david的,都是我自己猜的,仅供参考]DDSDDE (NTENS ,NTENS)是一个NTENS[Number of the Tensions----david]维的方阵,称作雅可比矩阵,应力增量/应变增量的偏导数,DDSDDE (I ,J)表示增量步结束时第J个应变分量的改变引起的第I个应力增量的变化!雅可比是一个对称矩阵,除非在“*USER MATERIAL”语句中加"UNSYMM"参数STRESS (NTENS)应力张量矩阵,对应NDI[Number of the Direct Components--david]个直接分量和NSHR[Number of the shear Components-david]个剪切分量.在增量步的开始,应力张量矩阵中的数值通过UMAT和主程序之间的接口传递到UMAT中,在增量步的结束,UMAT将对应力张量矩阵更新,即[return].对于包含刚体转动的有限应变问题,一个增量步条用UMAT之前就已经对应力张量进行了刚体转动,因此在UMAT中只需处理应力张量的共旋部分-------这部分我没看明白,敬请高手指点.UMAT中应力张量的度量为柯西(真实)应力STATEV (NSTATEV)[STATE VARIABLES (Number of the State Variables)]用于存储状态变量的矩阵,在增量步开始时将数值传递到UMAT中。
也可在子程序USDFLD或UEXPAN中先更新数据,然后增量步开始时将更新后的数据传递到UMAT中。
在增量步的结束必须更新状态变量矩阵中的数据。
和应力张量矩阵不同的是:对于有限应变问题,除了材料本构行为引起的数据更新以外,状态变量矩阵中的任何矢量或者张量都必须通过旋转来考虑材料的刚体运动。
-----不懂,请高手指教状态变量矩阵的维数NATATEV,等于关键字“*DEPVAR”定义的数值。
状态变量矩阵的维数通过ABAQUS输入文件中的关键字“*DEPVAR”定义,关键字下面数据行的数值即为状态变量矩阵的维数。
材料常数的个数,等于关键字“*USER MATERIAL”中“CONSTANTS”常数设定的值。
PROPS (NPROPS)材料常数矩阵,矩阵中元素的数值对应于关键字“*USER MATERIAL”下面的数据行。
SSE,SPD,SCD分别定义每一增量步的弹性应变能[Elastic Strain Energy],塑性耗散[Plastic Dissipation]和蠕变耗散[Creep Dissipation]。
它们对计算结果没有影响,仅仅作为能量输出。
STRAN (NTENS):应变矩阵;DSTRAN (NTENS):[D--大抵代表Deta,增量的意思-david]应变增量矩阵;DTIME:增量步的时间增量;NDI:直接应力分量的个数;NSHR:剪切应力分量的个数;NTENS:总应力分量的个数,NTENS =NDI +NSHR。
1.3关于沙漏刚度控制和横向剪切刚度使用UMAT时需要注意单元的沙漏控制刚度和横向剪切刚度。
通常减缩积分单元的沙漏控制刚度和板、壳、梁单元的横向剪切刚度是通过材料属性中的弹性性质定义的。
这些刚度基于材料初始剪切模量的值,通常在材料定义中通过“*ELASTIC”选项定义。
但是使用UMAT的时候,ABAQUS对程序输入文件进行预处理的时候得不到剪切模量的数值。
所以这时候用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度。
------------一个问题:得不到剪切模量的数值和解决方案:用户必须使用“*HOURGLASS STIFFNESS”选项来定义具有沙漏模式的单元的沙漏控制刚度,使用“*TRANSVERSE SHEAR STIFFNESS”选项来定义板、壳、梁单元的横向剪切刚度1.4关于UMAT的流程图和参数表格实例跟大家说说所谓的接口程序Interface--FORTRAN的知识在Fortan语言中,主调程序和被调程序是分别编译的.由于Fortran90对过程的许多功能做了扩充,有些功能单靠简单的调用语句已经无法反应,因而系统也就无法进行正确的编译,这时需要在主调程序中加入interface接口块,通过它为主调程序和被调程序指明一个显示的接口.如果被调用中哑元含有假定形状[assumed-shape]数组,或可选变元,或含键盘输入的参数,就需要interface接口块说明.一般来讲,在Fortran90程序之间需要提供interface块有三种方法:1.将interface接口块直接写入调用程序,并复制被调用程序的参数列表这种方法简单易用,但也相应增加了维护代码的工作量,因为只要被调用程序的参数列表发生变化,就必须相应改变interface接口块和调用[call]语句.2.可以将一个软件包中所有程序的interface块写入一个模块中,该模块被软件包中的所有程序使用.这样做的优点是只需一个模块来检查interface定义,缺点是仍需对此模块和调用语句进行维护.3.Fortran90编译器可在contains语句后自动提供过程之间的interface块,这种interface块可用于使用模块的任何程序.建议在同一个软件包中使用2\3的形式,在调用软件包的入口程序时采用1\2的形式![是不是在UMAT中,我们所编译的带接口的Fortran程序为调用程序,原ABAQUS主程序为被调用程序,调用程序中的第一部分我们先复制被调入程序的参数列表似乎和ABAQUS主程序调用UMAT 有些相反了不过个人认为interface作为一个接口块,在Fortran语法中应该放在主调程序中,且复制被调程序的参数列表.而UMAT的参数变量的声明,只不过是为了和ABAQUS使用一致的变量格式,当Fortran程序处理完材料的本构定义之后再以这一致的形式将变量值返回到ABAQUS主程序中吧] 2 关于UMAT用Fortran90可不可以的问题在论坛上搜索了关于这个问题,某位高手说是可以的,只要你自己装的Fortran编译器能成功编译你的Fortran90程序即可,个人认为也是如此,不过我还没有证明过!2.1关于Fortran77的一些有用的简介[1]:Fortran77的基本结构:1.一个Fortran源程序由一个或者多个程序单位组成,每个独立的程序单位以'end'语句结束2.每个程序单位包括若干行[不能一行写多条语句,但是可以一个语句写成行];分为语句行[执行语句行和非执行语句]和非语句行[注释行]源程序的书写格式:1.不区分大小写:每行只能80列以内,并把80列分为四个区2.1-5列:标号区[1-5位整数;第一列为'*'或者'C'时,为注释行]3.第6列,续行标志区[非空格或非0;最多19个续行]4.7-72列:语句区[书写语句:一行只能写一个语句]5.73-80列:语句注释区[一般做编号注释]程序的编辑与运行:1.创建源程序文件并编写源程序2.编译并连接源文件3.运行程序编译生成的可执行文件常量:六种1.整型常量[Integer]4位:正\负整数和02.实型常量[Real]4位:小数和指数形式3.双精度常量[Double precision]8位4.复型常量[Complex]8位5.逻辑性常量[Logical]4位6.字符型常量[Character]1位变量•变量名1.第一个字符是字母第一个字符后可跟1-5个字母或者数字2.不区分大小写3.空格不起作用4.允许变量名与语言中具有特定含义的字同名,但尽量不适用5.尽量"见名知义"•变量类型不同的变量类型用来存放不同类型的常量数据.变量相应的也有六种;变量在使用前必须首先对其进行类型说明,三种说明方法:按优先级别排列1. 类型说明语句:类型变量名列表,多个变量名之间用逗号隔开,如REAL A,B,CDOUBLE PRECISION X,Y,Z[或者REAL*8X,Y,Z]CHARACTER*5 [缺省字符长度5 ]STR1,STR2*8,STR3*19[此处,STR1未指明长度,则默认使用缺省长度5;STR2的长度为8;STR3的长度为19]2. IMPLCIT语句:IMPLICIT 类型[字母表],类型[字母表],....如: IMPLICIT REAL(A-D),INTERGER(I-M),DOUBLE PRECISION(X,Z)3. I-N规则:Fortran规定,不加说明的情况下,I-N为整型,其他都为实型几点说明类型语句说明位于所有可执行语句的前面;IMPLICIT语句位于最前面;IMPLICIT NONE取消IMPLICIT说明和I-N规则,所有的变量必须显式说明;只在本程序单位有效. 2.2关于Fortran77的一些有用的简介[2]:算术表达式:1.运算符: +, -,*,/,**2.优先级: ( ),** ,*\ / ,+\-3.书写问题1.* 不能省略2.括号不分大小写,成对出现3.多次乘方,按'先右边后左边'处理4.运算符不能连续出现,要用小括号隔开5.运算顺序)---->函数---->**----->*,/----->+,-6.运算中的类型问题:运算类型相同:结果仍为原类型;不同,则自动转换成同一类型7.误差问题:1.溢出:超出有效数字范围-------->解决:很大或者很小的数用实型的指数表示2.误差:由于有效数字的位数限制,实型数运算存在误差-------->解决:转换成双精度型或者避免因为书写不当造成有效数字的丢失简单输出\输入语句:输入\输出三要素:对象[哪些数据];格式;设备.输出语句输出语句的分类:格式输出'表控格式输出[系统标准格式];无格式输出[二进制]1.表控输出语句:按计算机系统规定的格式输出:系统自动为每种类型的数据规定了列数1.整数的表控输出格式[与具体的计算机系统有关]:规定每个整数占13列,打印在右端,左补空格;2.实数的表控输出格式:规定每个实数占17列,打印在右端,左补空格,小数部分占7列;[当实数的绝对值>=10**7或<1时,按标准的指数格式输出,共占15列,指数4列,小数6列2.表控格式输出语句:1.print*,<输出表列>:print*,56.8,1252.write(*,*)<输出表列>输入语句输入\输出三要素:对象;格式;设备.分类:同上1.表控输入语句1.自由格式输入-->语句:read*,<输入表列>;read(*,*)<输入表列>2.输入数据以逗号或者空格作为间隔3.变量名称为输入表4.输入的数据应和输入表的变量个数\类型\次序严格地一一对应;少了,程序停止,等待继续输入;多了,程序继续进行,多余的不起作用;较多的数据可以几个一组,回车,再输入几个一组,回车...5.重复数据,可以7*3---->7,7,76.每一个read(*,*)和write(*,*)语句从一个新的记录[以回车结束的一批输入\输出数据]开始读数\输出1.例如:read(*,*)A,B,C2.read(*,*)D,I,J3.输入: 2.3,-63.5[回车]4. 6.4,91.0[回车]5.5,8[回车]6.结果:A=2.3,B=-63.5,C=6.4,7.[从新记录开始读数]8.D=5.0,I=8,J未被赋值PARAMETER语句作用:将程序中经常用到的参数或字符串定义成一个符号常量,其值不可改变.语句:parameter(p1=c1,p2=c2,...,pn=cn)注意:1.符号常量的命名规则与变量名相同,但在程序中其值不可改变,也不能赋值;2.符号变量也有类型,可用前面的三种类型说明方法说明类型;3.参数语句是非执行语句,位于所有可执行语句的前面,单位与类型说明语句的后面;4.一条语句可以定义多个符号常量;5.优点:方便修改程序END,STOP,PAUSE语句END语句:结束标志,有且仅有一条PAUSE[n]语句:暂定执行;用于调试程序,n可以是一个字符串或不超过5位的数STOP[n]语句:停止运行语句;用于调试程序,n可以是一个字符串或不超过5位的数2.3关于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 to]≠3.一般形式:<算术量或者算术表达式><关系运算符><算术量或者算术表达式>4.运算结果:逻辑值:真[.TRUE.]\假[.FALSE.]5.运算顺序:算术运算>关系运算•逻辑表达式1.运算符:1..and.2..or.3..not.4..eqv.逻辑等5..neqv.逻辑不等2.一般形式:<逻辑变量\逻辑常量\关系表达式><逻辑运算符><逻辑变量\逻辑常量\关系表达式>3.结果:逻辑值:真[.TRUE.]\假[.FALSE.]4.运算顺序:算术运算--->关系运算--->逻辑运算5.逻辑运算优先级:.not.--->.and.--->.or.--->.eqv.--->.neqv.关于Fortran77的一些有用的简介[4]:IF类选择结构•用块IF实现选择结构:三种典型形式1.基本形式1.IF(条件)THEN(块IF语句)2.块1(THEN块)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.ELSE IF() THEN4.块25....6.ELSE IF()THEN7.块n8.[ELSE块n+1]•说明1.I为循环变量,S1为语句标号,是本程序单位中另一可执行语句的标号;2.步长可以省略,缺省值=1;3.循环初值[E1],终值[E2]和步长[E3]都可以是常量\变量\表达式;4.由于实数在内存中存储的误差,I,E1,E2,E3尽可能用振型量5.E1,E2,E3都可正可负,E1,E2,可为0,但是E3不能为0.•具体执行过程1.执行DO语句,首先计算表达式E1,E2,E3的值,若他们的类型与循环变量I不一致,则自动转换成循环变量的类型2.将E1的值赋予循环变量I,及执行赋值语句:I=E1;3.计算循环次数:R=MAX0(E2-E1+E3)/E3,MAX0表示从多个整型变量中取最大的一个;4.检查循环次数:若R=0则不执行循环体内的语句,跳出循环;R≠0 则执行循环体内的语句5.执行循环终端语句:I=I+E3,即是循环变量获得一个新值,而循环次数R自动减1;6.返回步骤4,继续执行,直到R=0.•CONTINUE语句循环终端语句必须是可执行语句;那么,这种作为循环终端的语句具有双重作用:一是作为循环终端的标志;而是要完成自身的功能.因此影响了程序的可读性.FORTRAN用一个专门的语句作为DO循环的终端语句,即CONTINUE语句.它自身没有任何功能.•一些规定1.循环变量在循环体内只能被引用,不能被赋值;2.在执行DO循环体期间,E1,E2,E3的值不能被改变,因为他们决定了循环的次数3.离开DO循环后,循环变量可以在循环体外被引用,它的值为脱离循环时最后一次被赋的值;4.程序中用到转移语句,规定:只允许从循环体内----->体外;反之不行;5.循环终端语句必须是除GOTO,块IF,ENDIF,END和STOP语句外的任何可执行语句•DO循环的嵌套在一个DO循环中还可以包含一个或者多个完整的DO循环,这就是DO循环的嵌套.一般形式:DO 10I=1,10...DO20J=1,10...20CONTINUE...10CONTINUE说明:•嵌套要完整,不能交叉•循环变量的名字,规定:并列的循环:循环变量的名字可以相同;嵌套的循环:循环变量的名字不可以相同•若多层循环的结束语句在同一个地方,可以共用一条CONTINUE语句•控制转向语句的使用[体内----->体外]当型循环的实现在无法确定循环次数的情况下可以使用当型循环.当型循环是指执行循环体要依据实现给定的条件:当条件成立时执行循环,否则不执行.•用DO-WHILE语句实现当型循环一般形式:DO S1 [,]WHILE(条件)...S1<终端语句>•用块IF和GOTO语句实现循环一般形式:S1IF(条件)THEN块GOTO S1ENDIF直到型循环的实现所谓直到型循环,是指先执行循环体,再判断条件.如果条件为'假',继续执行循环体,直到条件为'真'时终止循环.•用逻辑IF语句实现:S1循环体IF(条件)GOTO S1几种循环形式的关系和比较•DO循环适用于已知循环次数的情况•几种循环可以互换DO循环:条件型循环[可用次数作为条件]当型循环:直到型循环当型:块IF语句(单边)+GOTO语句(先判断后执行)直到型:逻辑IF语句+GOTO语句(先执行后判断)•各种循环可以相互嵌套2.4关于Fortran77的一些有用的简介[6]:数据的输入和输出数据输入\输出需要确定的三个基本要素:输入\输出的设备输入\输出的格式输入\输出的数据系统中隐含的输入\输出的设备为:键盘\显示器和打印机[说明:####(设备,格式)数据列表,当设备显示为*,为默认设备输出,好像是显示器\或默认设备输入,键盘吧;格式为*,默认格式输出\输入-david]有格式的输出输出语句的一般形式:WRITE (*,S1) <输出列表>S1FORMAT(格式说明)或者PRINT S1,<输出列表>S1FORMAT(格式说明)格式说明符:主要介绍:I,F,E,D,G,L,A,'(撇号),H,X,r(重复系数),/(斜杠)I 编辑符(Integer)作用:用于整型数据的输出.一般形式:Iw或Iw.m其中:I表示整型输出,w为字段宽度,m表示输出数据的最少数字位数注意:数据输出时,在指定的区域内向右靠齐;如果数据的实际位数大于指定的字段宽度w,则不输出数据,而在该区域内充满"*"号;当m大于数据的实际位数时,前面添0,若小于数据实际位数,则不起作用F 编辑符(Fixed point number)作用:用于实数的小数形式输出,一般形式:Fw.d其中:F表示实数的小数形式输出;w为字段宽度;d为输出数据的小数位数E 编辑符(IExponent)作用:用于实数的指数形式输出,一般形式:Ew.d其中:E表示实数的指数形式输出;w为字段宽度;d为数字部分的小数位数注意:指数部分占4列,负号占1列,小数点前为0.如123.45--->0.12345E+03D 编辑符(Double precision)作用:用于双精度的指数形式输出,用法和E 编辑符相仿.一般形式w.dG 编辑符作用:由系统根据实际数据的大小来决定使用F编辑符还是E编辑符.一般形式:Gw.dL 编辑符作用:用于逻辑型数据的输出,一般形式w其中表示整型输出,w为字段宽度A 编辑符作用:用于字符型数据的输出,一般形式:Aw或A其中:A表示整型输出,w为字段宽度;若不指定,则表示按实际长度输出' (撇号) 编辑符作用:用于输出字符常量,即把撇号内的字符串原样输出.注意:如果输出的字符中包含撇号,则用两个连续的撇号代表一个要输出的撇号H 编辑符作用:用于输出字符常量.一般形式:nH<str>其中:H表示输出字符常量;n为输出字符个数;str为输出的字符串 (较少使用)X 编辑符作用:用于输出空格.一般形式:nX其中:X表示输出空格;n表示输出的空格数重复系数r在format语句中,如果出现几个(或者几组)相同的格式编辑符,则可以利用重复系数而只写一个(或者一组)编辑符.如FORMAT('A=',/,4(5(1X,F4,0),/))反斜杠/编辑符作用:结束本记录的输出,开始下一个记录的输出,通常指换行.WRITE语句和FORMAT语句的相互作用WRITE语句的输出变量个数与FORMAT语句的编辑符(不含撇号,H和X)个数可以相等,也可以不等;如果编辑符个数多,则剩余的编辑符不起作用;如果变量的个数多,则当编辑符用完后,重新使用该格式说明,当如果格式说明含带重复系数的编辑符组,则格式说明用完后,只有最右面一个带重复系数的编辑符组(包含重复系数)及其右面的编辑符被重复使用.可以有空格式说明,如FORMAT(),用于输出一个空行.有格式的输入有格式的输入语句一般形式:READ(*,S1)<输入列表>S1FORMAT(格式说明[由各种格式编辑符构成])例如:READ(*,100)A,B,C100FORMAT(F5.1,E12.2,F7.2)END键盘输入:_15.7_2345.67E+04_705.83enter在PRINT\WRITE\READ语句中包含格式说明例如:PRINT 100,K,Y100FORMAT(18,F7.2)也可以写成:PRINT'(18,F7.2)',K,Y关于Fortran77的一些有用的简介[7]:数组使用原则:"先声明,后使用"说明方法:•用类型说明语句(显式说明)•用DIMENSION语句(隐式说明)数组的说明和数组元素的引用•用类型语句说明数组1.一般形式:类型说明数组说明符2.其中:数组说明符的一般形式为:数组名(维数说明符,...)[维数说明符,由"下标下界:下标上界"组成3.例如:REAL X(1:10),W(1:2,1:3),K(10:20)或者INTEGER B(1:100),PY(0:2,0:3,0:5)•用DIMENSION语句说明数组1.一般形式:DIMENSION 数组说明符,...•说明:1.在数组说明符中,维数说明符(下标)的个数成为数组的维数2.维数说明符只能使用整型常量或者整型符号常量表达式:如PARANETER(I=1,J=10)REAL KX(I:J+5)3.维数说明符的下标下界为1时,可以省略.如:REAL X(1:10)---->REAL X(10)4.数组说明语句必须写在所有可执行的语句之前.[属于非执行语句]•数组元素的引用1.一般形式:数组名(下标,...)2.即要有确定的数组名和下标值,如XN(5),W(1,3),KW(1,2,3)3.引用数组元素时,下标可用算术表达式,如果算术表达式的值为实行,则自动取整.数组的逻辑结构和存储结构逻辑结构:数组所表示的实际数据结构存储结构:数组在机器内存储时的排列结构•一维数组逻辑结构:依次排列的一串数据存储结构:一组连续存放的一列数据块•二维数组逻辑结构:一张二维数据表存储结构:一组按列连续存放的数据块•三维数组逻辑结构:若干张二维数据表存储结构:一组按页连续存放的数据块数组的输入和输出三种方式:用DO循环\用隐含DO循环\用数组名•用DO循环实现数组的输入输出1.优点:数组元素的输入输出次序可由用户控制2.缺点:做一次循环就换行输入或输出•用隐含DO循环实现数组的输入输出1.优点:既能控制数组元素的输入输出顺序,又能控制一行内输入输出数据的个数2.例如:READ(*,*)((G(I,J),J=1,3),I=1,2),由于是一个READ语句,所以既可以一行输入,也可以多行输入,键盘输入如下:86,75,72[enter]87,70,83[enter]3.注意:一个READ语句可以多行输入;但是多个READ语句时,每一个READ语句必须从心的一行读数.用数据名进行数组的输入输出使用时,其顺序要与数组元素在机器内的存储顺序一致例如:DIMENSION K(5)READ *,K----------对数组进行整体操纵等价于:READ*,K(1),K(2),K(3),K(4),K(5)也等价于:READ*,(K(I),I=1,5)使用DATA语句给数组赋初值•一般形式: DATA变量列表\初值表\,变量列表\初值表......•功能:在程序编译期间给变量或者数组赋初值.其中,变量列表可以是变量名\数组名\数组元素\隐DO循法;初值表只能是常量,不允许出现任何形式的表达式•例如:DATA A,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],•例如: DIMENSION K(2,3)DATA((K(I,J),J=1,3),I=1,2)/90,23,20,42,14,32/--------初值列表[2维3列,I=1:902320I=2: 42 14 32或DATA K/90,42,23,14,20,32/----排列为按列排,排满一列之后,再排下一列; 90 23 20 --------david42 14 32• 例如:DIMENSION A(10)DATA A/10*1.0/(表示'10个1.0')注意:DATA 语句属于说明语句,但是它可以放在END 语句之前的任意行;当程序中有多个DATA 语句给同一个变量赋初值时,以最后一条为准;程序在编译期间给变量赋予初值,在程序执行期间,DATA 语句不起任何作用!2.5关于Fortran77的一些有用的简介[8]1. FUNCTION 语句:是函数子程序的第一条语句,标志着该函数子程序的开始2. 3.3.函数体的说明部分包括对虚参和本函数体内所用变量和数组的说明4.函数体中可设置一条或者多条RETURN语句,表示执行到此语句时返回调用程序.1.当RETURN语句和END语句紧挨着的时候,可省略RETURN语句2.也可以不设RETURN语句,但需从中间返回时,必须设置RETURN语句5.函数名的作用:函数名在函数体中一定要被赋值,因为函数名把函数值带回调用程序.•函数子程序的调用1.一般形式:调用方式和内部函数相似:函数名(实参数) 或函数名( )2.说明:1.调用程序中函数名必须与函数子程序中定义的函数名相同2.实参与虚参在个数\类型\位置上必须一一对应,但名字可以不同3.当虚参是变量名的时候,实参可以是常量\变量\数组元素或者表达式;但是当虚参要在函数体中被赋予初值的时候,则实参不可以是常量或者表达式[因为两者共用一个存储单元]4.函数子程序是一个独立的程序单位,可以作为一个单独的源程序进行存贮和编译,并与调用程序连编后才能起作用.4 材料本构的相关力学知识虽然目前要做的工作就是用UMAT把一个新的材料的本构加进ABAQUS中调用,但是我并不想仅仅局限于此.在这个过程中,我会把自己遇到的所有相关问题学懂弄透再去编这个程序.所以估计我这个帖子会很长滴!我力学知识不是很好,所以这两天要好好学习一下力学知识,主要是弹塑性力学吧!说说弹塑性力学----1弹性力学\塑性力学\弹塑性力学弹性力学和塑性力学时固体力学的两个重要分支.1.固体力学:研究固体材料及其构成的物体结构在外部干扰(载荷\温度\变化等)下的力学响应的科学.按不同的研究对象区分为不同的学科分支.2.弹性力学:研究固体材料及由其构成的物体结构在弹性变形阶段的力学行为,包括外部干扰下弹性物体的内力[应力\,变形[应变]和位移的很不,以及与之相关的原理\理论和方法.3.塑性力学:则研究他们在塑性变形阶段的力学响应.4.弹性和塑性的区别与联系:大多数材料都同时具有弹性和塑性性质,当外载较小时,材料呈现为弹性的或者基本弹性的;当荷载渐渐增加时,材料将进入塑性变形阶段,即材料的行为呈现塑性的.所谓弹性和塑性,只是材料力学性质的流变学分类法中两个典型性质或理想模型;同意种材料在不同条件下可以主要表现为弹性的或塑性的.因此,所谓弹性材料或弹性物体是指在一定条件下主要呈现弹性性质的材料或物体.塑性材料或者塑性无私的含义与此相类.5.弹塑性材料:大多数材料往往都同时具有弹性和塑性性质,特别是在塑性变形阶段,变形中既有可恢复的弹性变形,又有不可恢复的塑性变形;因此有时又称弹塑性材料6.弹性设计方法:是以弹性分析为基础的结构设计,假定材料为理想弹性地,相应地这种设计观点便以分析结果的实际使用范围作为设计的失效准则,即认为应力[严格地说是应力的某一函数值]达到一定限值[弹性界限],将进入塑性变形阶段时,材料将破坏.7.塑性设计方法:结构中如果有一处或一部分材料"破坏",则认为结构失效(丧失所规定的效用).由于一般的结构都处于非均匀受力状态。