许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Abaqus子程序基础知识概述(下),进阶必读

Abaqus子程序基础知识概述(下),进阶必读

阅读数 4
点赞 0
article_banner


The executable standard.exe aborted with system error code 1073741819,子程序编过了但一跑就崩,错误码翻译过来是0xC0000005,内存访问违规。Fortran数组越界、空指针、变量没初始化,这三个原因占了九成。


Abaqus的子程序分两类,一类改求解过程,一类改输出。UMAT、VUMAT、UEL、DFLUX、DLOAD、USDFLD这些算改求解的,在每个增量步的每次迭代里被反复调用。UVARM、UVARM只是后处理层面的扩展,不参与求解。搞清楚这个区别很重要,决定了你写的代码会不会影响收敛。UMAT和VUMAT的接口参数列表长得不一样,UMAT是单点调用,VUMAT是按block批量处理材料点,两套东西不能互相套用。DLOAD和DFLUX是跟分析步绑定的,每个增量步调用一次,跟材料无关。


Abaqus 2023、Intel oneAPI 2022.3、ifort 2021.6.0、VS2022 Community、D:\SIMULIA\EstProducts\2023\win_b64\SMA\site\win86_64.env、D:\SIMULIA\EstProducts\2023\win_b64\SMA\site\abaqus_v6.env、D:\temp\user_sub\umat_test.for、D:\temp\user_sub\Job-1.inp。

Abaqus子程序基础知识

编译流程是abaqus job=Job-1 user=umat_test.for cpus=4 interactive,abaqus先调ifort把.for编成.obj,再调link把.obj跟abaqus提供的库链成standardU.dll。dll生成了不代表子程序被调用了。inp里必须写*USER MATERIAL, CONSTANTS=n,n跟PROPS数组的维度一致,少一个都读不到。*DEPVAR定义状态变量数量,*SOLID SECTION里MATERIAL的名字跟UMAT里CMNAME判断的字符串对不上,程序不报错,直接拿默认材料属性算,结果看着正常但全错。


头文件ABA_PARAM.INC必须Include,这行包含了浮点精度、数组维度这些编译期常量。漏了这行编译直接报错,UNDEFINED symbol满天飞。IMPLICIT REAL*8(A-H,O-Z)在ABA_PARAM.INC里已经定义了,自己代码里再写一遍也行,不冲突。


有一次做一个混凝土的UMAT,单单元验证过了,力位移曲线跟理论值完全对上。换上一个二十单元的梁模型,崩了。当时是周四下午,机房刚做完除尘,地上一股灰尘味,同事在旁边用气吹清键盘,噗噗的声音断断续续。第一反应是网格问题,把网格从10mm加密到5mm,还是崩。怀疑是材料参数问题,把塑性参数从10个减到3个,能跑完但结果不对。翻msg文件发现System error code 1073741819,内存访问违规。在UMAT里加了一堆write(*,*)定位,但命令行什么都不显示,后来改成写文件,写到第47个增量步就断了。查STATEV的用法,发现STATEV(KINC)写错了,KINC是增量步编号,不是数组下标,应该是STATEV(1)到STATEV(NSTATV),我把KINC当索引用了,STATEV(47)在NSTATV=10的时候直接越界。改过来之后跑通了。


State variable是最常见的越界来源。NSTATV的数量在*DEPVAR里定义,UMAT里STATEV数组的最大下标就是NSTATV。用STATEV(KINC)这种写法,KINC大于NSTATV的时候直接踩内存,Debug编译能报出来,Release编译不报错但结果全乱。UMAT里自己的中间变量建议都用局部数组,别往STATEV里塞,STATEV留给需要跨增量步传递的量,损伤变量、硬化参数这些。


Intel oneAPI 2022和VS2022的搭配是目前最稳的,Abaqus 2023支持到这套。更早的VS2019加IVF2020也能用,但oneAPI 2022跟Abaqus 2023的库链得更顺。命令行里abaqus命令后面加cpus=4会把子程序多线程调用,UMAT里的SAVE变量和COMMON块在多线程下会互相覆盖,单CPU能跑不代表多CPU能跑。验证环境的时候先用cpus=1跑单单元,过了再上多CPU。



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空