用户登录

你在这里

非法浮点运算

有人能解释一下这个错误吗?

ABAQUS错误:可执行文件/app2/6.6-1/exec/standard.exe

由于系统错误“非法浮点操作”(信号8)而中止。

这个错误是否有可能的原因,因为我已经检查了我的代码很多次,没有发现任何可能导致这个错误的可疑语句。

当我用USDFLD和MPC子程序运行我的分析时,发生了这种情况

评论

非常不幸的是,尽管本论坛拥有值得赞扬的专门知识,我却无法在力学方面汲取这一巨大资源。万博manbetx平台但我很高兴地说,我找到了问题的原因,并提出了一个可能的解决方案,这样其他人就不必浪费时间和精力来解决这个问题。

非法浮点操作错误通常是在编译用户子例程时遇到的,众所周知,这是在FORTRAN中。因此,在我的例子中,我将临界等效塑性应变定义为应力三轴比(hyd。压力大于压力(压力大于压力)。因此,很明显,在初始增量中,von-mises将为零。因此,Fortran遇到了除零。这会导致非法的浮点操作错误。因此,重要的是要添加一个特殊的附加行来处理零值(如果MISES.EQ.0)然后 ........).

其他数学上的不确定性也可能导致这个错误,比如0上升到0或0/0,等等。

希望这对刚接触Abaqus子程序和Fortran的同学有所帮助。

你好,gautambalaram非常感谢您对这个问题的友好解释。我只是遇到它,然后花很多时间为它找一个理由。然而,我似乎遇到了一个更复杂的问题。

在Windows操作系统下,我成功地利用FORTRAN编译的用户子程序用ABAQUS完成了我的仿真。但是,如果在Linux操作系统中使用,则错误消息显示为:

ABAQUS错误:可执行文件/usr/local/ ABAQUS 6.5/6.5-1/exec/standard.exe因系统错误“非法浮点操作”(信号8)而中止。如果文件存在,请检查。dat,。msg和。sta文件是否有错误消息。因此,您或任何人能知道这个错误消息的原因吗?非常感谢!

要了解浮点运算需要什么,请查看WIkipedia上的优秀文章浮点。有关非法操作的示例和其他详细信息,请参见http://en.wikipedia.org/wiki/Floating_point#Dealing_with_exceptional_cases

处理代码中非法浮点问题的唯一方法是调试代码。暴力破解的方法是使用print语句来追踪bug。或者,您也可以在打开调试标志的情况下编译代码,并使用ddd或gdb等调试器。

找到生成错误的地方(即抛出异常的地方),然后修复它。Windows和Linuz之间的区别表明,Linux编译器可能在运行时发现问题方面做得更好。

——Biswajit

由于Biswajit……这是print statements that helped me resolve not only this issue but the general debugging of my entire code...I know this acknowledgement of my gratitude for your help comes quite late....but it still comes through:)

亲爱的先生,比斯瓦吉特

在我看来,你是Abacus里的好人之一。如果您能给我一点时间,我将不胜感激。我的问题是我使用约翰逊-库克材料模型,我从实验日期得到参数,成功地将它们用于准静态拉伸试验“0.002/s”,但是当我将应变率增加到动态范围“粉碎”时,它会给我过度的扭曲错误,尽管我试图使用位移或速度作为加载的边界条件!!但它一直给出相同的错误。你觉得呢?

非常感谢您的建议和善意的回应

你的

亲爱的SamTF,

恐怕我从来没有在Abaqus中做过大的变形动力学。我所能建议的是,从使用显式动力学、线性六面体元素和小时间步开始。如果你继续得到过多的变形,你将不得不自适应网格。我不确定Abaqus是否可以做十六进制元素的自适应网格划分-在这种情况下,你将不得不使用测试(二次精度)。

——Biswajit

通常会遇到非法浮点操作错误
在编译用户子程序的时候你们都知道它在
FORTRAN。因此,在我的例子中,我定义了临界等价物
塑性应变作为应力三轴比(hyd)的函数。
压力大于压力(压力大于压力)。因此,很明显,
Von-mises在初始增量中为零。因此,Fortran
遇到一个除零。这将导致非法的浮动
点操作错误。因此,重要的是要有一个特殊的附加
将添加一行来处理零值(如果MISES.EQ.0)然后 ........).高清电影

姚海民的照片

像exp()这样的函数溢出也会导致这个问题。

非法的FPO - power操作

亲爱的所有,

这是另一个有趣的非法FPO的例子。

这就是故事....


我得到了一个非法的浮点操作,使用Fortran子例程执行应用程序(Abaqus)。

调试我在子程序中编写的代码

<引用>

Bb = -0.2447862
Aa = 0.6734121
写(* *)" bb, aa = ", bb, aa
写(* *)“* * 0.6734121 = -0.2447862
* 0.6734121”,-0.2447862 * *
写(* *)" bb ** aa = ", bb ** aa

< /引用>

我得到了

<引用>
Bb, aa = -0.244786270668933 0.673412181089838
-0.2447862**0.6734121 = -0.3876160
< /引用>

然后是非法的FPO信息。

我认为我的操作在数学上是合法的,可以用特定的格式来支持和表示。(见http://en.wikipedia.org/wiki/Floating_point#Dealing_with_exceptional_cases那么为什么会发生这种情况呢?

好吧,感谢http://www.tek-tips.com/viewthread.cfm?qid=1572020&page=1

我意识到我是在试图把一个负数取到分数次幂,结果是一个复数。所以我的操作没有特定的格式支持。

问候,
alorenzom

订阅“非法浮点运算”评论

最近的评论

更多的评论

辛迪加

认购辛迪加