许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Abaqus2024+VS2022+oneAPI子程序关联,视频演示全过程

Abaqus2024+VS2022+oneAPI子程序关联,视频演示全过程

阅读数 5
点赞 0
article_banner


出现一个小错误。影响不大。

abaqus job=test user=umat 一敲回车,弹 abaqus.bat 不是内部或外部命令,或者更烦的那种:LINK : fatal error LNK2019: unresolved external symbol,编译器认了但 oneAPI 的 lib 路径没进 abaqus 的眼里。

Abaqus 2024 认 MSVC 的方式跟老版本不一样,不再吃 vcvars64.bat 那套完整 VS 环境,VS2022 装的时候把“使用 C++ 的桌面开发”勾上,MSVC v143、Windows 10/11 SDK、CMake 工具集都装,少一个 SDK 后面 ifort 能跑但 link.exe 找不到 kernel32.lib,报错比子程序本身还早。

oneAPI 装 2023.2 或 2024 版都行,Intel Fortran Compiler(ifx/ifort)、Math Kernel Library 选上,HPC Toolkit 里把 Fortran 编译器装全,只装 Base Toolkit 会缺 ifort.exe,Abaqus 2024 默认先找 ifx,找不到再退 ifort,两个都没有就直接说 no Fortran compiler configured。

abaqus2024\SMA\site\custom_vars.bat 里不动,动的是同目录 abaqus_v6.env,fortran_compiler = 'intel' 这行别手改错成 intel64,compile_fortran 和 link_sl 两段要把 VS2022 和 oneAPI 的 include、lib 路径拼进去,2024 的 env 里已经留了 intel2023 的骨架,照着把 C:\Program Files (x86)\Intel\oneAPI\compiler\2024.0\bin\` 和...\windows\lib\intel64替进去,VS 那边是C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.3x\bin\Hostx64\x64和...\lib\x64,SDK 走C:\Program Files (x86)\Windows Kits\10\Lib\10.0.2xxxx.0\um\x64`。

先不写子程序,建个 null.f 空文件,abaqus job=t user=null 跑通再说,能出 .log 且最后写 COMPLETED 才算编译器链通了,出 Abaqus Error: Problem during compilation 就是 env 里路径拼错,出 LNK1104 cannot open file 'msvcprt.lib' 就是 SDK/lib 架构没对齐,x64 作业去链了 x86 的库。

系统环境变量里 PATH 把 oneAPI 的 bin、bin\intel64、windows\bin 放前面,VS 的 Hostx64\x64 也放,别放 Hostx86,放错架构 abaqus 启动不报错但编译时 cl 出来是 32 位,和 64 位 abaqus 内核对不上,后期 UMAT 一调用就 ACCESS VIOLATION。

abaqus verify -user_std 跑一遍,通过项是 Pass 不是 Ok,看到 Fail 别急着重装,看同目录 verify_user.log 里是哪段,常常是 SMAIL 例子里某个老 UMAT 用了 dimension 老写法被 ifx 警告当错误处理,关掉 ifx 的严格标准就用 fortran_compiler_flags = ['/nostandard-realloc-lhs', '/Qmkl'] 这种往 env 里塞,别去改官方例子。

写 UMAT 的人自己机器上 VS 是 2019 也行,只要 oneAPI 版本和 2024 的 ABI 不冲突,Abaqus 不管你装几个 VS,只在启动时读 env 里写死的路径,路径指到 2022 就用 2022,指到 2019 就用 2019,写两行就乱,只留一套最干净。

Abaqus2024+VS2022+oneAPI子程序关联

CAE 里点 Write Input 再命令行跑比直接在 CAE 点 Submit 容易排错,CAE 把 stderr 吞掉一半,命令行里 LNK2001 和 error #7002 直接露出来,error #7002: Error in opening the compiled module file check that the path and file name are correct 就是 include 里没把 abaqus 的 include 目录(abaqus2024\code\include)放进去,UMAT 里 include 'aba_param.inc' 找不到就卡这。

重装 oneAPI 前先把 C:\Users\xxx\AppData\Local\Temp\abaqus_ 开头的临时编译目录清掉,旧 .obj 赖着不走,新编译器出的符号跟旧的混一起,LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs 就是这么来的,清完再跑 abaqus make library=umat.f 重新打共享库,比每次 job= user= 现场编稳。

abaqus make library=myumats.f 打出来 myumats-std.lib 放 site 或工作目录,后面 user=myumats 不用带后缀,Abaqus 自己找 -std.lib,显式动态链接的 UEL/UEMAT 另说,那种还要 share_library 开关,普通 UMAT/USDFLD/VUMAT 用 std/lib 这套就够,VUMAT 走显式求解器,编译链吃 ifx 的 OpenMP 和 AVX 标志,env 里 compile_fortran 不给 /Qopenmp 就别在 VUMAT 里用 !$OMP,用了也单线程还容易段错误。

一台机器多人用就把 abaqus_v6.env 放 SMA\site 全局,个人实验性的放 %HOME%\abaqus_v6.env,Abaqus 读顺序是 安装目录site → 用户home → 当前目录,当前目录里放个脏 env 会把全局覆盖掉,同事拷你工作文件夹顺带把你的 env 拷过去,编译器路径变成你 C 盘路径,他机器上跑出来一堆 cannot find directory。

ifx 对 Fortran 2003+ 支持比 ifort 松,老 UMAT 里 do while(.true.) 没事,equivalence 和 data 混用会被警告,abaqus_v6.env 里 fortran_compiler_flags 加 '/warn:no' 能压掉一大片,但别加 /check:all,加了显式子程序里数组越界全程慢三倍,大模型跑一晚上出不来。

装完别信“重启就好”,命令行先 where abaqus、where ifx、where cl 三个都有路径才算环境活了,其中一个报“找不到”就去翻 VS Installer 里 Individual Components 是不是把 MSVC v143 - VS 2022 C++ x64/x86 build tools 取消勾了,默认勾了也常因为改 SDK 版本被连带卸掉。

关联好之后第一个真例子用 umat_mises.f 或官方 neo_hook.f 试,别一上来写各向异性 + 温度耦合 + 状态变量 30 个,编译过了 CAE 里一提交还是 System Error Code 1073741795,排半天发现是 props 长度在 env 里没和 inp 里 *User Material, Constants=n 对上,n 少写 1 个,Abaqus 不报错在传参阶段直接爆内存。


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

相关文章
技术文档
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
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空