24小时热门版块排行榜    

CyRhmU.jpeg
查看: 591  |  回复: 9
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 气液两相流 的 13 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

气液两相流

铜虫 (小有名气)

[交流] 【求助】模拟过程中出错

error:floating point error :invalid number
error:object:()
请大侠指点下这个错误是什么原因造成的?我在用欧拉欧拉模型做气液两相流动的非稳定计算时遇到的。

[ Last edited by adu886886 on 2010-3-15 at 08:40 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgf332

铁杆木虫 (著名写手)


kuhailangyu(金币+1):谢谢参与 2010-03-15 13:39
气液两相流(金币+1): 2010-03-19 09:59
1:可能是网格问题,调整网格,检查网格质量,基本上要控制在0.8一下。
2:重新初始化,改变初始化方式
3:试试双精度
5楼2010-03-15 11:37:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

kuhailangyu

荣誉版主 (著名写手)

小木虫蛀虫防疫站站长

优秀版主

这个问题已经有很多帖子了,不是很容易就能说清了就解决的

因为原因是多方面的,你可以搜一下原来的帖子,学习一下

字面意思大家都懂,呵呵
有能力有脾气的人--怀才不遇;有能力没脾气的人--春风得意;没能力有脾气的人--一事无成;没能力没脾气的人--贵人相助。
3楼2010-03-15 10:32:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wuming524

专家顾问 (著名写手)

石化蛀虫

★ ★
kuhailangyu(金币+2):从哪弄这么大一段,厉害,谢谢呵呵 2010-03-15 13:39
气液两相流(金币+5): 2010-03-16 10:11
原理】     
从数值计算方面看,计算机所执行的运算在计算机内是以浮点数(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。

以上别人的观点,个人认为计算策略也很重要,先稳态计算看看~~
4楼2010-03-15 11:09:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

气液两相流

铜虫 (小有名气)

引用回帖:
Originally posted by wuming524 at 2010-03-15 11:09:44:
原理】     
从数值计算方面看,计算机所执行的运算在计算机内是以浮点数(floating point number)来表示的。那些由于用户的非法数值计算或者所用计算机的限制所引起的错误称为floating point error。
1)非法 ...

谢谢你的回复。
6楼2010-03-16 11:07:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见