找回密码
 注册
查看: 1967|回复: 3

请教,三相流计算中的错误提示

[复制链接]
发表于 2010-3-29 12:50:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
一个气液固三相流的装置,类似于流化床,计算区域内有一定体积的填料,底部进空气,速度入口;顶部是空气的压力出口,设置为大气压强;两个侧面分别是水流的进出口,速度进口,压力出口,压力值为500pa。采用了欧拉模型,二维非稳态。
迭代几步后就出现错误提示:
Error: Floating point error: invalid number

Error Object: ()
看到有的解释说是计算溢出了,我的是四面体网格,按层流计算,也尝试的变化离散格式和减小欠松弛因子,但是还是不行……请版主和各位帮忙看看是什么问题,谢谢大家~~!!

我把case文件也上传

san.rar

47.34 KB, 下载次数: 133

 楼主| 发表于 2010-3-29 22:41:38 | 显示全部楼层
没人理,我自己顶下吧,恳求多相流高手帮忙~~!谢谢!
发表于 2010-3-30 12:29:12 | 显示全部楼层
我发在小木虫的答案
【原理】从数值计算方面看,计算机所执行的运算在计算机内是以浮点数(floating point number)来表示的。那些由于用户的非法数值计算或者所用计算机的限制所引起的错误称为floating point error。
1)非法运算:最简单的例子是使用Newton Raphson方法来求解f(x)=0的根时,如果执行第N次迭代时有,x=x(N),f’(x(N))=0,那么根据公式x(N+1)=x(N)-f(x(N))/ f’(x(N))进行下一次迭代时就会出现被0除的错误。
2)上溢或下溢:这种错误是数据太大或太小造成的,数据太大称为上溢,太小称为下溢。这样的数据在计算机中不能被处理器的算术运算单元进行计算。
3)舍入错误:当对数据进行舍入时,一些重的数字会被丢失并且不可再恢复。例如,如果对0.1进行舍入取整,得到的值为0,如果再对它又进行计算就会导致错误。
【避免方法】
计算和迭代:设一个比较小的时间步长会比较好的。或者改成小的欠松驰因子也会比较好。经验来看,把欠松驰因子设为默认值的1/3;降低欠松驰因子或使用耦合隐式求解;改变欠松驰因子,如果是非稳态问题可能是时间步长太大;改善solver-control-limits比例或许会有帮助;你需要降低Courant数;如果仍然有错误,不选择compute from初始化求解域,然后单击init。再选择你想从哪个面初始化并迭代,这样应该会起作用。另外一个原因可能是courant数太大,就样就是说两次迭代之间的时间步太大并且计算结果变化也较大(残差高)。
网格问题:缩放网格时就会发生这个错误。在Gambit中,所有的尺寸都是以mm为单位,在fluent按scale按钮把它转换成m,然后迭代几百次时就会发生这种错误。但是当不把网格缩放到m时,让它和在Gambit中一样,迭代就会成功;我认为你应当检查网格,网格数太多了,使用较少的网格问题就会解决;网格太多,计算机资源不够用,使使比较粗的网格。
边界条件:一个wall边界条件来代迭axis边界条件,结果fluent拒绝计算并告诉floating point error。你的边界条件不能代表真实的物理现象;错误的边界条件定义可能会导致floating point error。例如把内边界设成interior;使用对称边界条件模拟2D区间时也遇到这种问题,把symmetry设为axe symmetric,就发生了floating point error;检查你设的湍流参数,减小湍流强度,先进行50次迭代。
多处理器问题,进行多处理器模拟时也遇到相似的问题。问题的解决方法是在单个处理器上运行,这样就运算得很好。
错误迭代:
以错误的条件来初始化,在开始迭代时就会发生floating point error。

以上综合别人的观点,个人认为计算策略也很重要~~
 楼主| 发表于 2010-3-30 13:23:51 | 显示全部楼层

回复 3# wuming2723628 的帖子

谢谢你花时间来看和解答
分析的很详细,我再按照这个逐一检查下,尝试的修改参数试试。有新的进展或问题再向你请教,十分感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表