上一次配置子环境,还是在VS2022的版本。在2026年,我们已经用上了VS2026 Community,这一免费的正版,但环境的更新也带来了一些新的问题。现在就这一篇文,记录并传播本次配置成功的心得。
现在,你花钱去找淘宝安装,如果遇到半吊子,可能他会给你装一个老版本的ABAQUS+VS2019+Intel Parallel Studio XE,后两者都已经停止维护,前者会弄乱你装好的ABAQUS环境。搞乱系统环境让我非常不爽,这便是我此次自己重装的契机。
此前有一篇专栏,分析了OneAPI取代Intel Parallel Studio XE后的环境安装变化。但那篇专栏还是以理论分析为主,实操需要门槛。这次,做一个易于理解的文档,便于后来回看和理解。
这其实没啥好说的,按照傻瓜式官方标准流程安装就行。
进入官网,安装免费的VS2026,记得把C++和科学计算相关的勾上,装好。默认路径:C:\Program Files\Microsoft Visual Studio\18\Community。其实你看出来了,2026之后版本号是18,跟之前的年份编号不一样了,记一下,这里后面要考。
进入官网,安装免费的Intel OneAPI HPC Toolkit. 这个HPCToolkit里面包含了Fortran编译器,其实理论上只需要Fortran编译器就行了。默认路径:C:\Program Files (x86)\Intel\oneAPI。
Abaqus2024,安装我就不说了。默认路径:C:\SIMULIA。
这里很多人不成功,主要是因为不理解这个编译的逻辑:
你写好的 Fortran 源文件会由 Intel 的 Fortran 编译器进行编译,转换成计算机可以识别的目标文件,随后再通过链接器将这些目标文件与 Abaqus 提供的标准接口库组合起来,最终打包生成一个动态链接库文件。
这里有一个容易被忽视的关键细节,那就是在 Windows 操作系统上,Intel 编译器本身只负责把 Fortran 代码翻译成机器语言,它并不自带能够把不同代码模块拼接成完整程序的工具,因此它必须借助微软 Visual Studio 提供的链接器和系统底层库来完成最后的组装工作,这也是为什么在编译之前必须同时配置好 Intel oneAPI 和 Visual Studio 环境的原因。
当所有编译工作完成后,Abaqus 在运行计算任务时,会读取输入文件中的用户子程序指令,然后在内存中动态加载你生成的动态链接库,找到对应的入口函数并执行其中的计算逻辑,待整个分析过程结束后,再释放这些外部资源,至此一次完整的用户子程序调用流程才算结束。
所以我们必须要让Abaqus知道如何去调用Fortran编译器(OneAPI),又如何进一步使用MSVC(VS2026)生成链接库。
首先解决在哪儿写这些代码的问题。分析Abaqus的文件调用关系,你会发现无论有无CAE的gui,所有命令都经过了"C:\SIMULIA\Commands\abq2024.bat",所以写在这里准没错。
先说结论,我加入了如下两行,在这个bat的前面,下面来解释原因:
代码块
bat
自动换行
复制代码
12
set "VS2022INSTALLDIR=C:\Program Files\Microsoft Visual Studio\18\Community"
@call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
复制成功
关键:第二行,告诉Abaqus去调用OneAPI的环境,这个setvars.bat很明显,是变量设定的意思,命名还是很直观的。这个bat其实调用了不止编译器,理论上讲没有必要,但省去了根据版本修改路径的麻烦。
关键:第一行,如果你使用了VS2022,VS2019,VS2017这些版本,根本不需要这一行,只要你系统环境变量配置正确(一般默认安装就正确了)。但是,VS2026,正如上面讲的,路径命名方式变了,且目前的OneAPI还没录入这个路径(我相信后面的版本会录入的),所以要手动设置。可以看出,这是个很暴力的“指鹿为马”——我把VS2026强行告诉Abaqus,这是VS2022,无所谓了,能找到MSVC就行。
修改好这个bat后,可以尝试运行验证命令了,这两个分别是验证两个求解器的子模型的:
代码块
bat
自动换行
复制代码
12
abaqus verify user_std
abaqus verify user_exp
复制成功
但是,Abaqus还是没找到编译器。
Intel Fortran 编译器经历了一次从经典架构到现代架构的全面换代。传统的 ifort(Intel Fortran Compiler Classic)是 Intel 基于自家专有技术栈开发的编译器,历史悠久,代码成熟,但底层架构相对老旧;而 ifx(Intel Fortran Compiler)则是 Intel 基于 LLVM 开源项目重新构建的新一代编译器,代表了 Fortran 编译技术的未来方向。从 Intel oneAPI 2025.0 版本开始,ifort 已被彻底移除,不再提供下载和更新,这意味着所有新用户和在 Windows 平台上进行 Abaqus 二次开发的用户,都必须转向 ifx。但是,Abaqus默认还没转向。
关键:找到文件"C:\SIMULIA\EstProducts\2024\win_b64\SMA\site\win86_64.env",打开它,你能找到Fortran编译器的词条。赫然写着'ifort',不要犹豫,改成'ifx',拥抱新时代吧。
现在你的子程序应该能测试通过了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删