主要出现问题如下:
最近因为要用到子程序,所以就打算装个Visual Studio 和IVF进行计算。因为电脑里面已经装了Abaqus2021,所以就选了配套的VS2019 和IVF2020,按照 B站up主视频教程进行了关联。将两个call语句写在了launcher.bat文件中,完成后点击abaqus verification 进行验证全部pass。但是、但是、在cmd中进行abaqus job=jobname user=umatname int 的时候,就出现了LINK is not found in the system的错误。在排查错误期间,各种环境变量的修改,注册表的修改,甚至把VS和IVF重新装了一遍都没有用!!!折腾了一天
就在我大失所望,以为一天的努力最终付诸东流的时候,第二天检索为什么abaqus verification 验证全部通过而 abaqus command不通过的时候看到了这篇文章(https://blog.csdn.net/shanxing200/article/details/118920070),突然间恍然大悟。跟着这位up进行操作确实会出问题。为什么会出问题呢?
在cmd中输入如下命令:
where abaqus
可以得到如下结果。这个结果的意思是在command中输入abaqus命令就相当于运行了abaqus.bat批处理文件。
图1 abaqus 命令查询结果
接着继续查看abaqus.bat的详细内容,找到文件,右键打开后结果如下。这个文件的含义就是abaqus.bat调用了abq2021.bat文件。
图2 abaqus.bat的内容
打开abq2021.bat文件,这个里面有调用VS和IVF的语句吗,没有,因为调用语句写在了launcher.bat文件中。
总结一下:
为什么abaqus verification验证通过了?因为abaqus verification调用的是launcher.bat,launcher.bat引用完VS和IVF后指向了abq2021.bat,所以引用fortran和VS成功了。
为什么命令行输入报错呢?因为输入命令调用关系如下abaqus -> abaqus.bat -> abq2021.bat 绕过了引用VS和IVF的launcher.bat,当然无法成功运行子程序了。
最好还是将调用语句(call dirname\vcvarsall.bat x64 call dirname\ifortvars.bat intel64 vs2019 两行语句)写在abq2021.bat中,因为所有的文件最终都调用的是这个批处理文件。其他版本同理。