24小时热门版块排行榜    

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

b07988

金虫 (正式写手)

星期六可以休息

[求助] fluent中的体热源加载问题(实际上是热流密度,不是热生成率)

做焊接激光模拟,采用高斯旋转体热源。随时间移动。融化凝固模型。
查询很多资料和问了若干人后,他们的建议都是加载在能量源项。
/*采用旋转高斯体热源*/
/*能量源项*/
#include "udf.h"
DEFINE_SOURCE(heat_flux, cell, thread, dS, eqn)         
{
real x[ND_ND];
real y,I,U,oq,t0,v0,Q,time,cs,HH;
real r,rh;
real source_heat;
cell_t c;
C_CENTROID(x,c,thread);
y=0.7;                        /*有效功率因子*/
U=16.;
I=100.;
v0=2.e-3;                /*焊接速度*/
Q=y*I*U;                /*有效功率*/
cs=3./pow(oq,2.);        /*形状因子*/
HH=1.e-3;                /*热源高度*/
oq=2.5e-3;                /*热源半径*/
time= RP_Get_Real("flow-time";
r=sqrt(pow(x[0]-v0*time,2.)+pow(x[1],2.));        /*坐标与热源中心的距离*/
rh=sqrt(log(HH/x[2])/3.)*oq;/*一定热源高度对应的半径rh*/
if (x[2]==0&&r<=oq)
{
        source_heat=3.*cs*Q/(3.14*HH*(1.-1./exp(3)))*exp(-3.*pow(r,2.)/pow(oq,2.));
        dS[eqn] =0;
}
else if (x[2]==HH&&r==0.)
{
        source_heat=3.*cs*Q/(3.14*HH*(1.-1./exp(3)));
        dS[eqn] =0;
}
else if (x[2]>HH)
{       
        source_heat=0;
        dS[eqn] =0;
}
else if (r<=rh)
{
        source_heat=3.*cs*Q/(3.14*HH*(1.-1./exp(3)))*exp(-3.*cs/log10(HH/x[2])*pow(r,2.));
        dS[eqn] =0;
}
else
{
        source_heat= dS[eqn] =0;
}
return source_heat;
}

条件语句比较复杂,主要怕出问题。呵呵
interpret后没有错误,但加载出不了结果。
希望大家给点意见。

[ 来自科研家族 流体数值模拟 ]

[ Last edited by b07988 on 2012-3-4 at 22:31 ]
回复此楼
先做最重要的事情,再做次重要的事情
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

★ ★
xiegangmai(金币+2): 鼓励讨论交流! 2012-03-05 20:26:43
引用回帖:
2楼: Originally posted by gyctju at 2012-03-04 22:58:13:
1, 我记得传热学一个默认的假设是热扰动传递速率无限大,但对与激光加热等加热时间极短的问题,该假设不在适用,这样常见的传热学中微分方程就要做相应的调整,不知道你的激光焊接问题村不存在这个问题?
2 条件 ...

1.你所说的加热时间极短,v0=2.e-3; /*焊接速度*/,也就是热源移动的速度,我觉得应该不会有影响。我所写的代码中没有微分方程。除了dS[eqn] =0;
2.这个问题确实没仔细考虑,但仔细想想这样写的等式其实没什么问题。热源是一个倒锥形。所涉及的条件是刚好在那个锥尖处。网格比较密,产生的误差可以忽略。就算关键的地方没有满足坐标要求,但仍旧有部分热源存在的。但实际加载没有效果。
3.如图,因为表达式存在1/log(H/z),其中z不能等于0,H不能等于z,所以条件语句比较复杂。呵呵
残差图就是直线,基本没有波动,说明热源没有加载上。

热源模型表达式



中心那根线的热流密度(处处相等)



整体形状

先做最重要的事情,再做次重要的事情
3楼2012-03-05 12:48:52
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

★ ★
xiegangmai(金币+2): 鼓励讨论交流! 2012-03-05 20:27:27
引用回帖:
4楼: Originally posted by gyctju at 2012-03-05 15:30:36:
我没注意到你还有r<=rh这一句。
至于那几个等式比较的语句,并不是你所说的网格较密,误差可忽略。fluent数据是real类型的,小数点位数应该在六位以上,因为是等值比较,只需要最后以为小数不等,条件就不成立 ...

在HH高度处,如果此处没有节点的话,条件不成立其实没关系的。。呵呵
附近的节点总有一个热流密度赋值给它。
问题是:
能量源项的单位是:w/m3
而这个热源是w/m2
体热源的加载都是用能量源项表示,我就疑惑了~。
但文献表示这个热源就是热流密度。。。

用message是个好方法,接触udf几个月,
没有调试经验,谢谢你的建议。


先做最重要的事情,再做次重要的事情
5楼2012-03-05 16:19:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

仔细看了下q(0,0),单位是w/m3,是一种随坐标和时间变化的体热成率。
先做最重要的事情,再做次重要的事情
6楼2012-03-05 18:09:05
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

引用回帖:
: Originally posted by nuliwo1 at 2012-03-06 20:36:41:
你好,你这问题解决了吗?

看其他的热源能量源项,要加循环。目前未解决。
先做最重要的事情,再做次重要的事情
8楼2012-03-07 12:15:11
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

引用回帖:
11楼: Originally posted by jian4375 at 2013-03-16 15:13:15
必须使用编译compile呀。只有少数UDF可用interpret。

多谢回复,但这个udf可以interpret!
先做最重要的事情,再做次重要的事情
12楼2013-03-16 22:56:48
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

★ ★
xiegangmai: 金币+2, 谢谢参与! 2013-04-01 21:38:45
引用回帖:
13楼: Originally posted by 李立州 at 2013-03-30 10:25:55
cs=3./pow(oq,2.);        /*形状因子*/
HH=1.e-3;                /*热源高度*/
oq=2.5e-3;                /*热源半径*/
不知道高手你是怎么编译过的。
我觉得你编译不过去。

没说编译成功,这个热源的思路是正确的。你自己换个简单的热源加载,这个旋转高斯热源写的过于复杂。
先做最重要的事情,再做次重要的事情
15楼2013-04-01 09:53:01
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

b07988

金虫 (正式写手)

星期六可以休息

★ ★
xiegangmai: 金币+2, 谢谢参与! 2013-04-01 21:38:52
引用回帖:
14楼: Originally posted by ben12 at 2013-03-31 23:24:59
我也做这个的,愁死了,有木有做出来的啊

你自己用Message调试下,不就知道自己加载没有加载上了。你来个简单的,source=x[0]+x[1]+x[2],然后自己Message一下工件的坐标对应的source。不就知道自己是否加载成功了吗?
先做最重要的事情,再做次重要的事情
16楼2013-04-01 10:02:00
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 b07988 的主题更新
信息提示
请填处理意见