ABAQUS材料子程序UMAT with FORTRAN 从一些入门常识开始

0. 编译环境搭建:

要运行UMAT子程序,需要安装FORTRAN编译器。网上给出的abaqus+vs+ivf的组合版本大多数很老旧,提供个较为新的搭配。

参考:

VS2013+IVF2013+ABAQUS2016  https://www.bilibili.com/video/av48975699

VS2015+Intel Parallel Studio XE 2018 + ABAQUS 2018 https://www.bilibili.com/video/av49917712

我的配置:VS2015+Intel Parallel Studio XE 2018 + ABAQUS 2017  success, 且我是先装的abaqus

方法:先装VS才能装IVF,abaqus的先后没关系,最后更改abaqus启动文件配置vs和ivf的路径就好。

tips:

  1. 对于VS和IVF的版本匹配不确定时,可先下载想用的,较新的IVF,运用安装程序,正式开始安装之前,它会自动检测并告诉你,他需要的配套的VS版本,在按照它自己显示的下载安装对应的VS。
  2. 针对添加vs和ivf路径,仅需要abq2018.bat 即可, 无需像视频说的更改所以bat文件。

errors I meet:

  • Abaqus Error: Problem during linking - Abaqus/Standard User Subroutines.
  • This error may be due to a mismatch in the Abaqus user subroutine arguments.
  • These arguments sometimes change from release to release, so user subroutines
  • used with a previous release of Abaqus may need to be adjusted.

at beginning i used abaqus2017+vs2015+Intel Parallel Studio XE 2018, and the same error present in the log file.

then i try abaqus 2018 in the same environment, it worked. 

因此,确保abaqus版本适配,可采用网上别人验证过的组合。我用2017的时候子程序也可以编译,运行的时候才出错。

1. UMAT是.for文件,编写应遵守Fix Fortran格式规范(而非Free Frotran)

2. UMAT基本任务

 UMAT 的基本任务?  我们知道,有限元计算(增量方法)的基本问题是:已知第 n 步的结果(应力,应变等)σ[n],ε[n],然后给出一个应变增量 dε[n+1],计算新的应力σ[n+1]。 UMAT 要完成这一 计算, 并要计算 Jacobian 矩阵 DDSDDE(I,J) =Δσ/Δε 。 Δσ 是应力增量矩阵(张量或许更合适), Δε 是应变增量矩阵。 DDSDDE(I,J) 定义了第 J 个应变分量的微小变化对第 I 个应力分量带来的变化。  该矩阵只影响收敛速度,不影响计算结果的准确性(当然,不收敛自然得不到结果)。 

参考: Abaqus用户子程序umat的学习 https://www.cnblogs.com/baowee/p/9556837.html

3. 行动 - 在你的电脑上如何编写and编译

新建一个.for文件即可编写程序;

子程序在abaqus中运行方法:材料属性选择User Master, 设置材料参数数组(即 PROPS(NPROPS));

选择Deper,中设置状态变量STATEV的数组长度NSTATV;

Field Output 设置勾选SDV,会结果中显示状态变量云图

参考:http://blog.sina.com.cn/s/blog_6465f2ed0102x3ab.html;

运行后,error会写在abaqus工作目录下对应job的log里。

子程序用VS编译调试方法:https://blog.csdn.net/auguster110/article/details/83042045  程序中设置等待(如读取键盘输入), 用VS中的Debug - Attach to Process

4. 

error: 800 elements have been defined with zero hour glass stiffness.

单元类型默认是缩减积分单元,暂时还不懂,但是按照网上说的设置成完全积分单元或者incompatibles modes. 可惜我没找到完全缩减积分单元怎么设置,只找到了incompatible modes,暂时能用。

 

 

------***************************************************

以下仅对个人工作需要的一些设置备忘,可忽略

materials - 设置状态变量说。 但是状态变量的初值如何设置? 网上只说在input里面可添加一行初值,cae里还不清楚。 

step - step2, 迭代次数100, increment size 1-1

 

 

你可能感兴趣的:(abaqus,子程序)