**
(关于ABAQUS使用子程序出现“libirc.lib(fast_mem_ops.obj) : warning LNK4210”错误)
**
真的是一个疑难杂症
本人在进行有限元仿真时,前期工作都已经搞定了,什么子程序关联啊,其实子程序关联什么的都是最简单的。但是到了后期在使用子程序的时候出现了错误。该错误如下“End Compiling Abaqus/Standard User Subroutines
Begin Linking Abaqus/Standard User Subroutines
正在创建库 standardU.lib 和对象 standardU.exp
libirc.lib(fast_mem_ops.obj) : warning LNK4210: 存在 .CRT 节;可能有未处理的静态初始值设定项或结束符
End Linking Abaqus/Standard User Subroutines”显然这也不算是一个错误,属于warning。在abaqus中出现warning是不会报错的。但是奇怪的就是我出现这个warning后紧接着出现了ERROR:error category:element loop
问题分析
我本人做显示动力学做了一段时间,有个习惯,在计算的时候习惯下意识的去打开job模块的monitor去查看时时的状态变化。也是如此在提交完job后我打开了monitor。然后紧接着input successful 但是随之而来的是error。我在7700hq的笔记本与3700X的amd平台上都试了,都是报错。很绝望,我开始在百度,Google找答案,大部分答案集中在Fortran码农的领域,咱也看不懂。还有就是小木虫上的几个提问,根本没有建设性的回答。(小木虫真的不是解决问题的好地方)所以我总结了几个原因:
1.vs与if没有关联好
2.子程序有问题
3.vs与if和abaqus的版本不兼容
解决问题
我逐个排查首先排除了原因1,2,因为该子程序是大佬写的,已经有相关成果出来了,不可能出错。然后我就将vs,if重新装了一遍。我的abaqus是2020,然后就按照最新的搭配安装了vs2019和if2020,这总该解决问题了吧。再次尝试,还是报错error。显然问题不是以上三个造成的。我崩溃了。抱着试试再算算的态度,在7700hq平台提交了一个job,但是这次没有打开monitor,因为我认为肯定又是error,打开也没啥意义。好家伙,这次居然可以算了,在input successful后面等了好久,以为会报错,现在居然能算了。然后赶紧去3700x平台上算一下,果然在不打开monitor的情况下,可以完美运行。真的令人匪夷所思。
得出结论
1."libirc.lib(fast_mem_ops.obj) : warning LNK4210"该警告本身不会触发error可以继续计算。所以纠结于这个警告的可以想想其他原因。
2.有些job可能不可以时时的输出场变化,打开monitor可能或报错。
3.对于老版本的amd平台,慎用,对于新版本的ryzen3以上的U可以做计算,但是一定要将软件版本更新到2020左右。例如:在使用3700x配合abaqus6.14时,总是会导致explicit.exe求解器打不开。配合abaqus2020,至今畅通无阻。
以上纯属于我个人的一些遭遇与解决方法,有很多说的不对的敬请谅解,旨在能帮到出现相同问题的人。