浮点溢出Floating point exception怎么办?

学术   2024-11-12 22:04   江苏  

1. 浮点溢出floating point exception

1.1 浮点溢出介绍

浮点溢出是最常见的不收敛情况,此时文本控制栏会出现下面的文本:Error: floating point exception。



最后Fluent会直接停止计算,不要有任何的侥幸心理,你这次的计算是彻底的发散了,发散到Fluent都觉得没有计算下去的必要了。




5.2 为什么会出现浮点溢出?

实际上Floating point exception是一个计算机术语,指的是在执行浮点数运算时发生的错误。浮点异常通常包括以下几种情况:



a. 除以零:尝试除以零的操作会引发浮点异常。在数学上,除以零是未定义的,因此计算机在执行这样的操作时会报错。



b. 溢出:当计算的结果超出了浮点数能够表示的最大或最小值时,会发生溢出。double数可以表示的数字的绝对值范围大约是:-1.79E+308 ~ +1.79E+308



例如,一个非常大的数乘以它自身多次可能会导致溢出。




c. 下溢:当计算的结果非常接近于零,以至于无法在当前精度下表示时,会发生下溢。在这种情况下,结果可能会被设置为零。



d. 无效运算:某些运算在数学上是未定义的,比如负数的平方根,或者格式不正确的数(如NaN,即“非数字”)参与运算。


5.3 浮点溢出的解决办法

可以肯定的是出现浮点溢出一定是发散了,而且只能重新计算,不能在原来基础上继续计算。实际上,在原来的基础上你点计算也算不了。



实际上Fluent计算过程出现浮点溢出的原因并不好找,只能按照发散的方式来一点点检查设置。对于发散,可以参考下面一些常见的排查步骤和解决方法:


1. 检查初始条件和边界条件

确保所有初始条件和边界条件设置合理。例如,速度、压力、温度等数值在物理上应该是合理的。如果这些条件设置得过大或过小,可能会导致计算过程中的不稳定性。


尝试使用更接近实际情况的初始条件,或者用简单的初始条件开始计算,如零初始场或较为平滑的条件。



2. 改进网格质量

检查网格的质量,尤其是网格的体积、扭曲度、最小单元大小等参数。网格质量差(如高度扭曲的网格)可能会导致计算中产生数值不稳定。


3. 调整计算设置

如果进行瞬态计算,尝试减少时间步长,使得计算更稳定。在瞬态计算中增加每个时间步的迭代次数,以确保每个时间步都能充分收敛。


对于稳态计算,降低松弛因子来减缓计算的发散。



4. 验证物性参数

检查并确保物性参数(如密度、粘度、导热系数等)设置合理且符合物理意义。特别是在多相流或高温高压环境中,物性参数的变化可能导致计算不稳定。



5. 更改求解器设置

如果使用双精度求解器收敛性比较差,可以切换为单精度求解器。同样地,如果使用单精度求解器收敛性比较差,可以切换为双精度求解器。一般来说,双精度求解器通常可以提高计算精度,减少数值误差。


也可以尝试改变压力-速度耦合算法(如SIMPLE, PISO, Coupled等)来测试不同算法的稳定性。




6. 逐步简化问题

通过简化模型,如去除物理模型、简化几何结构、减少求解的物理量来尝试是否可以增强收敛





比如,仅求解流动场,忽略热或质量传递,看看是否还会出现问题。也就是我们经常说的只计算部分方程来增强收敛性。





7. 检查UDF

如果我们使用了UDF,出现了浮点溢出的问题,可以尝试去掉UDF,看看是否还会出现浮点溢出。如果浮点溢出消失了,那就说明是UDF的问题,需要检查UDF的代码。



要注意,上面的解决办法是出现发散的一般排除步骤,并不只针对浮点溢出问题。



2. 增强线性求解器的鲁棒性

文本控制栏还可能出现下面的文本


Stabilizing temperature to enhance linear solver robustness.


Stabilizing pressure using GMRES to enhance linear solver robustness.


这种文本通常还可能和浮点溢出floating point exception同时出现。



当只出现这种本文时,一般都是收敛性不够好的时候或者计算初期。可以先不必理会,先继续计算下去,观察这种情况是否就会消失。





如果一直存在这个问题,还说明收敛性不够好,但还没有达到彻底发散的地步。此时需要更改一些计算设置来增强收敛性。最常见的一些方式,如:减少时间步长、降低松弛因子等



1、Fluent meshing 六面体网格转换;

2、Maxwell Fluent 耦合仿真电机散热

3、流体力学控制方程第1课

4、Fluent基础视频—CFD简介(1)

5、Ansys Fluent 2021 R1新功能介绍

6、Fluent非均匀边界条件的输入方法

7、Fluent  UDF入门技巧介绍

8、Fluent 进阶篇| 时间步长到底怎么选

9、这些方法可以让你的仿真更准确

10、Fluent动网格—旋转抛体(子弹)的运动

11、流体力学的“那块砖”

12、Fluent 非牛顿流体—血液血管流动

13、ANSYS Icepak选择参数化计算

14、其他流体文章和系列学习视频请关注公众号,查看历史推文;

好文阅读
1、这些方法可以让你的仿真更准确
2、不想做仿真和设计的真正原因!
3、几种常见的热仿真软件
4、一文让你知道CFD的几种算法
5、Fluent的CFD计算不收敛问题解决方案
6、什么样的仿真工程师算厉害?
7、如何找到别人的计算错误
8、如何零基础入门仿真
9、该做和不该做的仿真
10、陶文铨院士:我与传热学的50年
11、其他推文请关注公众号,查看历史推文


CAE交流之家
您身边的仿真小助手
 最新文章