vs2019+ivf2020+abauqs2021关联验证,子程序Error,'ifort' 不是内部或外部命令,也不是
胖头鱼煲汤好好次
编辑于 2025年09月25日 17:26
收录于文集
共5篇

背景

某宝顾客找到我,说abauqs关联验证不会整。我一看,好家伙,又一个送钱来的,心中一阵窃喜!

折腾之路——遇见

一阵忙活之后,远程过去,顾客自己动手能力挺强的!

VS2019已经装好,IVF装的是2020 update3版,abaqus是2021版。

注意,本文说的是上述环境,如果你装个的是旧版的,比如vs2013+ivf2013等,不能按照这个代码来。

关联验证之前显示国际惯例,都分别运行一下,看看能不能跑起来。

搞了个Fortran的hello world示例,刷刷刷一下子就出结果了,毛病没有!

单独运行abaqus(ACE)这次刷刷刷两下子才出来,稍微慢了点。

眼看着没啥问题啊,难道今天又捡漏!

根据ACE快捷方式找到lancher.bat文件,刷刷刷这次很快啊,加了两行代码进去

代码块
clike
自动换行
复制代码
@call "D:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64
@call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\bin\ipsxe-comp-vars.bat" intel64 vs2019

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

注意:" 是网页的bug,本来是双引号,如果显示成了 ",那么你们换成双引号,这个bug已经跟B站客服反馈过了。
复制成功

保存,显示打开ACE瞅瞅能不能打开,好的,没有问题!

然后又找到abaqus的command目录,在abaqus.bat文件里面也加上两行一模一样的代码。

那还等啥,试试验证吧。

哥们我有经验啊,不像小白一样,直接开abaqus Verification做完整的验证,而是以管理员身份打开了cmd,直接输入

代码块
clike
自动换行
复制代码
abaqus info=system
注意,info=system没有空格隔开的
复制成功

按回车键!

如图所示,能找到VS编译器,能找到Fortran的编译器!

那就试试单独验证子程序,同样的,以管理员身份再打开一个cmd(新开一个cmd噢),直接输入

代码块
clike
自动换行
复制代码
abaqus verify -user_std
复制成功

按回车键!

正准备起身去泡杯茶等它出结果呢!

它刷刷刷地就出了结果,而且还显示Error,你说气不气人!

根据它的指示,需要去看 std_user.log文件,里面记录这详细信息。

emmmmmmm...

这是重点↓

代码块
clike
自动换行
复制代码
'ifort' is not recognized as an internal or external command...
中文形式
'ifort' 不是内部或外部命令,也不是可运行的程序...
复制成功

这好像是一个比较经典的问题啊!

折腾之路——瞎折腾

无非就是来回折腾环境变量(顾客之前自己改过),返回关联验证,详细过程略过,反正就是搞不成。

折腾之路——喜从天降

正在郁闷的时候,顾客那边传来好消息!

他找另外一家,弄好了!

瞬间血压上升,看来我要落伍了,干不过同行!

偷师的好机会,跟顾客要了远程信息,远程过去。

同时让顾客回想高手同行都做了啥,顾客就轻描淡写的说了一句,就改了一个文件,然后就好了。

我去!这。。。这。。。这么简单, 这就是经验啊!给同行点个赞!

代码块
clike
自动换行
复制代码
SET PATH=%PATH%;D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\bin\intel64;
call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\bin\ifortvars" -arch intel64
call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\mkl\bin\mklvars" intel64

@echo off
rem setlocal
rem set ABA_COMMAND=%~nx0
rem set ABA_COMMAND_FULL=%~f0
"D:\SIMULIA\EstProducts\2021\win_b64\code\bin\ABQLauncher.exe" %
*
rem endlocal


注意:" 是网页的bug,本来是双引号,如果显示成了 ",那么你们换成双引号,这个bug已经跟B站客服反馈过了。
复制成功

再一次cmd运行 

代码块
clike
自动换行
复制代码
abaqus verify -user_std
复制成功

过来,此时已经是PASS!!!

子程序验证能过,其他的应该问题不大。

解释下:

图片中第一行选中的就是解决问题的重点

代码块
clike
自动换行
复制代码
SET PATH=%PATH%;D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\bin\intel64;
复制成功

这行代码的意思是给名为Path的环境变量添加一个新值(后面那一串路径),有兴趣的朋友可以去这个路径看下,这个路径下确实是有一个ifort.exe程序。

细心的朋友可能还会发现,另外一个叫ia32_intel64的文件夹下也有一个ifort.exe程序,那为啥不指定为ia32_intel64这个文件夹呢?!

因为第二行代码决定了要这样写!

代码块
clike
自动换行
复制代码
call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\bin\ifortvars" -arch intel64
复制成功

-arch intel64 前面是一个参数,应该表示指定架构,后面就是这个参数的值,整一起的意思猜测为指定架构为Intel64,如果你上面想用ia32_intel64文件夹下的ifort.exe,那么你这里可以设置为 -arch ia32_intel64

第三方代码是配置mkl库,这是代替imsl的数学库

代码块
clike
自动换行
复制代码
call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\mkl\bin\mklvars" intel64
复制成功

写在最后

电脑软维修。

祖传技术,百年传承,专业!

电脑郎中,妙手回春,神奇!

有需者请某宝搜索鄙人ID,有偿。