某宝顾客找到我,说abauqs关联验证不会整。我一看,好家伙,又一个送钱来的,心中一阵窃喜!
一阵忙活之后,远程过去,顾客自己动手能力挺强的!
VS2019已经装好,IVF装的是2020 update3版,abaqus是2021版。
注意,本文说的是上述环境,如果你装个的是旧版的,比如vs2013+ivf2013等,不能按照这个代码来。
关联验证之前显示国际惯例,都分别运行一下,看看能不能跑起来。
搞了个Fortran的hello world示例,刷刷刷一下子就出结果了,毛病没有!
单独运行abaqus(ACE)这次刷刷刷两下子才出来,稍微慢了点。
眼看着没啥问题啊,难道今天又捡漏!
根据ACE快捷方式找到lancher.bat文件,刷刷刷这次很快啊,加了两行代码进去
@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,直接输入
abaqus info=system
注意,info=system没有空格隔开的 按回车键!
如图所示,能找到VS编译器,能找到Fortran的编译器!

那就试试单独验证子程序,同样的,以管理员身份再打开一个cmd(新开一个cmd噢),直接输入
abaqus verify -user_std 按回车键!
正准备起身去泡杯茶等它出结果呢!
它刷刷刷地就出了结果,而且还显示Error,你说气不气人!

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

emmmmmmm...
这是重点↓
'ifort' is not recognized as an internal or external command...
中文形式
'ifort' 不是内部或外部命令,也不是可运行的程序... 这好像是一个比较经典的问题啊!
无非就是来回折腾环境变量(顾客之前自己改过),返回关联验证,详细过程略过,反正就是搞不成。
正在郁闷的时候,顾客那边传来好消息!
他找另外一家,弄好了!
瞬间血压上升,看来我要落伍了,干不过同行!
偷师的好机会,跟顾客要了远程信息,远程过去。
同时让顾客回想高手同行都做了啥,顾客就轻描淡写的说了一句,就改了一个文件,然后就好了。
我去!这。。。这。。。这么简单, 这就是经验啊!给同行点个赞!

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运行
abaqus verify -user_std 过来,此时已经是PASS!!!
子程序验证能过,其他的应该问题不大。


解释下:
图片中第一行选中的就是解决问题的重点
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这个文件夹呢?!
因为第二行代码决定了要这样写!
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的数学库
call "D:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.4.311\windows\mkl\bin\mklvars" intel64
写在最后
电脑软维修。
祖传技术,百年传承,专业!
电脑郎中,妙手回春,神奇!
有需者请某宝搜索鄙人ID,有偿。
