许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Fluent中floating point exception错误原因及处理方法

Fluent中floating point exception错误原因及处理方法

阅读数 2
点赞 0
article_banner

在fluent计算中,经常会遇到 floating point exception的报错,让人很头疼。查找了一下,相关网上的原因,总结了这篇文章。内容不全部为原创。


1.1浮点数floating point

既然说了是浮点数溢出,那么先来看下什么是浮点数。我们都知道,fluent用的C语言写的。好的,我们来回顾下在C语言里,数据类型有哪些。

表1 C语言中的数据类型


类型操作数类型存储长度
char整数/字节8
short整数/字16
int整数/双字32
long int整数/双字32
Long long int-2x32
Char*整数/双字32
Float单精度浮点数32
Double双精度浮点数32
Long double扩展精度浮点数80/96




1.2浮点数的表示方式

在计算机中,采用科学计数法来 存储  浮点数,不同于平时见到以10为基数,计算机中以2为基数,表示浮点数。例如,要表示123456789,科学计数法表示为1.23456789*10^8或者,12.3456789*10^7。

在计算机中,用科学计数法,并且要用规格化的形式,即小数点前只有一位非0数。这个是为了方便运算,统一的格式适合重复运算。

1.3浮点数的表示范围

可以看到浮点数是有表示范围的,而且不仅有最大值,正数里有最小值,负数里有最小值,还有最大值。

32位浮点数的规格化数表示为:


第0位,表示正负

第1-8位,表示阶码E

第9-31位,表示尾数M

浮点数表示的范围,

负数-(1-2^-24)×2^127到-2^-129

正数2^-129到(1-2^-24)



1.4为什么会出现浮点数的溢出?

浮点数溢出的问题,最 主要的  问题就是除以0 ,有的人会说了,那我的这里面都有值,都给了速度,但是,如果给的值过小的话,就会导致浮点数溢出。另外,如果网格质量差,在一些质量差的地方,会出现极小值,导致出现溢出的情况。


1.5浮点数溢出的解决方法

常见的问题可能有边界条件设置有误,初始条件不合理,网格质量差, 时间步长 太大,松弛因子设置问题。

使用upwind convection schemes

引入了数值扩散,可以确保在特定的情况下收敛。避免使用高阶项,因为更容易引起不收敛的问题。


检查 边界 条件

湍流动能是否为零,温度边界是否有未定义,可压缩流体中的压力是否为零。

初始化

初始化出现问题,瞬态计算的初始值设定是否合理。如果不合理,或者报错,可以修改或者细化。


合适的步长

步长太大导致计算不收敛,在开始的时候如果步长过大,流体的流速较小,会出现报错。


使用亚松弛因子

默认的计算方式,使用新计算的值代替旧值,但是如果都用旧值,可能出现在局部收敛的情况。亚松弛因子的原理,在新值产生之后,不全用新值代替旧值,而是给新值和旧值个一直权重,组合来进行。


求解器

尽可能使用耦合式求解器


处理器

在串联或者并联计算的时候,使用单个求解器可能会出现浮点数溢出。


网格质量

检查所有网格的质量,确保歪斜度skewness在0.8以下。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空