24小时热门版块排行榜    

查看: 1551  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

死天

专家顾问 (著名写手)

[交流] FLUENT UDF最小值的探讨(UDF和模拟的误差) 已有1人参与

为了能说明这个问题,我首先举一个最简单的例子:

A/B,

其中B是变量,有可能为0,导致程序报错,所以在UDF中应该写成这样:

A/(B+SMALL)

其中,SMALL是一个确定的值,很小,Fluent用#define定义,而且设置为可以计算,但是显示为0

但是问题还没有结束,很多时候fluent都采用了其他的最小值来代替这个值,而这个最小值是从多次实验中得到的,如:

1/(1-A/B)

在这里,fluent可能会采用以下的方式:
if A<B*C then A/B
if A>B*C then 1/(1-C)

其中,C是一个小于100%,但是很接近100%的某个数

所以,想要确定自己的UDF是不是符合fluent,最好先用某些方式显示fluent对该函数的计算值,然后算出fluent设置的最小值C等等。

一般来说,用SMALL不会对结果有太大的影响,但是可能会导致某些值与fluent自带的结算结果有误差。

另外,再多说几句关于fluent中最小值的设置,以相体积分数为例,可以查阅sg_men.h(单精度)

C_VOF可以最小在1e-7计算,但是在每步计算完成,fluent设置为小于1e-6,则C_VOF强制为0,换句话说,在计算过程中,该值可以计算到e-7,但是结果只能到e-6。

如果查阅.h可以发现很多标记为limit或者small的变量,请根据自己的需要,谨慎只用。

(一家之言,请踊跃讨论,指出错误,互相学习)

[ Last edited by 死天 on 2013-9-15 at 10:47 ]
回复此楼

» 本帖已获得的红花(最新10朵)

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

所以要先得到fluent的计算值,然后通过函数自己推出来。
3楼2013-09-16 08:10:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

wz9533

木虫 (正式写手)

★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
送红花一朵
臭水沟: 金币+1, 谢谢交流~ 2013-09-15 23:22:59
“C是一个小于100%,但是很接近100%的某个数”
这一句不明白,还有怎么样算出fluent设置的最小值C呢?
2楼2013-09-15 21:07:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见