ABAQUS关联FORTRAN(传统方法)

ABAQUS关联FORTRAN(传统方法)

前言

abaqus求解器采用Fortran进行计算。如果需要使用一些二次开发Fortran子程序(subroutine)的话,需要关联Fortran编译器。

本文所谓传统方法,就是网络上抄得最多的这一套ABAQUS+ONEAPI+VS的解决方案。我在此处再抄一遍,然后顺便总结一下我发现的可能出错的问题。

步骤

ABAQUS的安装顺序无关紧要,什么时候都可以。唯一需要注意的是,必须安装CAA API。关于Fortran的编译环境,需要按照这个顺序进行安装和设置。

  1. 先安装Visual Studio(简称VS)
  2. 安装oneAPI Base Toolkit
  3. 安装oneAPI HPC Toolkit
  4. 将abaqus启动命令关联Fortran编译器

组件的简介和版本搭配

Visual Studio是一个IDE(注意,不是Visual Studio Code),可以直接搜索引擎找到微软官网,然后下载。

Intel oneAPI 是一个统一的编程模型,我们需要的是base Toolkit和HPC Toolkit两个产品。第一个Base Toolkit是所有场景都一定要下载的,第二个HPC Toolkit包括我们需要的Fortran。

需要注意的是,Visual Studio和ONEAPI的版本不能太高,最好不高过Abaqus的版本,否则可能会出问题。关于版本搭配,建议在网上找到已有的教程,然后严格按照人家的版本搭配来做。

虽然下面我会说最少建议安装哪些模块,但是在你不知道这些选择分别意味着什么,且你的硬盘没有压力的情况下,可以考虑把所有组件一并安装,以免你的系统存在某些奇葩设置导致过程中出现一些奇怪的问题(也可以说是为了提升$robustness$)。

如果这套东西在安装完后无法运行,就得从头开始再来一遍,完全卸载再完全重装,我觉得这个过程真的很折腾。

安装过程

安装Visual Studio

在微软官网上面安装的VS默认最新版,前面提到可能存在版本问题,所以建议在网上自己找匹配版本的安装包。选择社区版(community)就够用了。这是VS2022的链接。

Visual Studio 下载界面

安装过程为:确定确定确定确定,一路冲下去。在workload/选择安装组件那步,如果你真的只用这玩意当一个C++和Fortran的编译环境组件的话,选择“使用C++的桌面开发”即可。

自定义安装路径的时候,一定不能有特殊字符,只能有英文+英文标点。下同。

全都安装的话,大概要50G吧,还是挺大的。
Visual Studio安装设置

安装oneAPI Base Toolkit

一路确定下一步即可。
在右下角customize处调整安装路径,安装的组件等。

Base Toolkit 安装界面1

建议至少选框选出来这些东西,因为全选的话需要31.2GB,硬盘还是有点压力的。

建议至少安装这几个

我们最需要的是其中的C++ comlier,在你取消选择某些组件的时候,会弹出提示“This tool is required for other tool(s) in your download package [toolnameA]。意思是说,如果需要安装toolnameA,就必须先安装这个东西作为前置条件。遇到这种情况建议保留这个工具。

提示信息

如果机器没有显卡的话,它会提示你,需要开发运行GPU加速应用时候需要安显卡,这一步确认过去即可(此处截图的地方是虚拟机)。有没有显卡自己肯定清楚。

无显卡提示

关联版本,安装多个版本vs也只能选一个。

关联vs版本
最后用户协议确定就可以安装了。

安装oneAPI HPC Toolkit

HPC Toolkit过程类似,选择组件的时候至少选择Fortran complier

选择安装包
其他东西一样,一路确定即可。

将abaqus启动命令关联Fortran编译器

添加环境变量

需要把oneAPI的vars.bat和vs2022的vcvarsall.bat的文件路径添加到windows环境变量Path里面。

如果安装得是盗版abaqus,添加环境变量你一定做过一次了,跳过这部分吧如果忘了怎么添加环境变量,通过我的电脑→属性→高级系统设置→环境变量→在系统变量中找到Path→编辑→新建找到,或者直接windows左下角搜索“环境变量”进去。

默认安装的话,两个路径分别是

C:\Program Files (x86)\Intel\oneAPI\compiler\2022.2.1\env
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build

oneAPI的vars.bat一定要找complier文件夹下面那个。

编辑abaqus的启动命令

在安装abaqus的时候,会让你设置一个命令文件夹,即,你的abaqus命令都在这里面。如下图所示:

如果你忘记了这个文件夹的位置,可以通过开始菜单找到abaqus cae的快捷方式,然后右键菜单选择“属性”,找到目标位置,一层层往下找,直到找到一个bat文件为止。

此外,建议找到abaqus_v6.env这个文件(一般在C:\SIMULIA\Dassault Systemes\SimulationServices\V6R2022x\win_b64\SMA\site文件夹里面,找不到就自己搜索)最后面加一行compile_Fortran += ['/names:lowercase',]意思是开启Fortran代码的小写支持。

现在前置工作都弄完了,有两种bat文件的编辑方案:

注意:编辑之前,请把原来的.bat文件都复制一份作为备份。

第一种:
找到abq2022.bat或者abaqus.bat(只有一个abaqus版本的话,建议添加到abaqus.bat里面),在第一行添加这些内容(原来的别删):

call "C:\Program Files (x86)\Intel\oneAPI\compiler\2022.1.1\env\vars.bat" amd64 vs2022

完成。

如果感觉不好用,就再加一行,变成:

call "C:\Program Files (x86)\Intel\oneAPI\compiler\2022.1.1\env\vars.bat" 
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64

第二种:

新建一个.txt文件(建议添加到abaqus 的commands directory里面),输入这些玩意

@"C:\Program Files (x86)\Intel\oneAPI\compiler\2022.2.1\env\vars.bat"^
-arch amd64 vs2022 & abq2022 cae

然后修改后缀名为.bat。起一个名字。两种写法是等效的。

验证是否成功关联

打开abaqus commands快捷方式(或者随便在哪里打开一个终端),第一步:输入:

abaqus info=system

此时会出来一堆信息,查看有没有Fortran Complier即可。

然后再分别输入

abaqus verify -user_exp

abaqus verify -user_std

分别检查你的complier是否关联到了explicit求解器和standard求解器。
如果报错,就按照给的错误提示修改,一般情况下,错误原因都是某某地方的环境变量没添加上。这些个东西,若无意外都是安装过程中自动添加的。

abaqus verify这个命令会检查很多东西,我们输入后面这俩的目的是仅仅检查这两小部分。abaqus遇到其他未知问题的话可以用这个abaqus verify整个过一遍看看问题发生在哪,当然时间会很长。

关于bat文件编辑的一些说明

为什么写到abaqus.bat里面?

abaqus.bat文件,默认长这样:

@echo off
"C:\SIMULIA\Commands\abq2022\abq2022.bat" %*

可以看到,abaqus.bat的作用其实就是打开abq2022.bat。

至于,abq2022.bat文件,默认长这样:

@echo off
setlocal
set ABA_COMMAND=%~nx0
set ABA_COMMAND_FULL=%~f0
"C:\SIMULIA\EstProducts\2022\win_b64\code\bin\SMALauncher.exe" %*
endlocal

也就是说,当你在电脑终端里面输入abaqus cae的时候,电脑是通过abaqus.bat启动abq2022.bat,再通过abq2022.bat启动了abaqus的前处理cae。

所以如果你把关联命令添加到了abaqus.bat,当你在终端输入abaqus cae的时候,可以关联启动Fortran编译环境,而输入abq2022 cae的时候,就不会启动这个编译环境。这个编译环境会拖慢运行速度,所以我非必要不启动。

因为我电脑里有abaqus2022和2024两个版本,所以我的做法是,额外写了两个命令,关联到abq2022.bat和abq2024.bat里面。比如,我写了一个abq2022f.bat,长这样:

call "C:\Program Files (x86)\Intel\oneAPI\compiler\2022.2.1\env\vars.bat" amd64 vs2022
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64

@echo off
"C:\SIMULIA\Commands\abq2022\abq2022.bat" %*

这样的话:

我在终端输入abaqus cae 运行的是有fortran的2024(2024后装)

输入abq2022 cae和abq2024 cae,分别运行没有fortran的2022和2024;

输入abq2022f cae和abq2024f cae,分别运行有fortran的2022和2024;

同理,把abq2022f写成“第二种”样式也行,这样就是运行有fortran的2022。这个abq2022f是我自己命名,愿意命名成abq114514之类的都随便。

@"C:\Program Files (x86)\Intel\oneAPI\compiler\2022.2.1\env\vars.bat"^
-arch amd64 vs2022 & abq2022 cae

显然,如果你没动abaqus.bat,而是创建了一个abq2022f.bat关联启动fortran编译器的话,验证部分的那些命令中,abaqus都要改成abq2022f。

为什么新写的命令放到commands文件夹里面?

因为这样,我可以通过终端直接启动abaqus,方便指定abaqus的工作目录。在桌面随便写一个.bat,是没办法直接做到在任意文件夹都直接打开终端然后运行的。这个然可以设置,但直接扔到abaqus自己的文件夹里面比较快。

安装后卡顿

关联Fortran编译器后,ABAQUS运行会变卡,所以我一般是到了需要求解的时候再关联,平时运行不关联fortran的那个bat文件。

==如果想要每次启动都带着这玩意还不影响速度的话,解决方案我还没找到,等找到了就补充进来。==

版权声明:
作者:chli2956
链接:https://www.cdli2956.top/mystudy/software/2024/07/abaqus%e5%85%b3%e8%81%94fortran%ef%bc%88%e4%bc%a0%e7%bb%9f%e6%96%b9%e6%b3%95%ef%bc%89/
来源:cdli学习测试
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
)">
< <上一篇

)">

下一篇>>
文章目录
关闭
目 录