24小时热门版块排行榜    

查看: 9907  |  回复: 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的回帖

gyctju

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★
b07988(金币+4): ★★★很有帮助 谢谢你的建议,用message做判断是个好方法 2012-03-05 16:09:04
xiegangmai(金币+2): 谢谢参与! 2012-03-05 20:27:08
我没注意到你还有r<=rh这一句。
至于那几个等式比较的语句,并不是你所说的网格较密,误差可忽略。fluent数据是real类型的,小数点位数应该在六位以上,因为是等值比较,只需要最后以为小数不等,条件就不成立。
你可以在你设的有热源的条件语句部分加一个Message语句,把该点的坐标值输出到控制窗口里,根据这个判断,而非根据残差曲线。
4楼2012-03-05 15:30:36
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 20 个回答

gyctju

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
b07988(金币+3): 有帮助 给出了若干建议,谢谢 2012-03-05 12:30:54
xiegangmai(金币+2): 鼓励讨论交流! 2012-03-05 20:26:19
1, 我记得传热学一个默认的假设是热扰动传递速率无限大,但对与激光加热等加热时间极短的问题,该假设不在适用,这样常见的传热学中微分方程就要做相应的调整,不知道你的激光焊接问题村不存在这个问题?
2 条件语句中有几个将y坐标和某一值做等值比较,首先C_CENTROID取的是网格中心的坐标值,是一系列离散的值,你等确定你的网格正好有一一个或几个网格的y坐标值是这个值(个人觉得,除非你自己输入坐标生成网格,利用网格生成软件生成的网格是不能保证的)?也就是说你那个几个有等号的条件判断语句有很大的可能是遍历完整个网格也找不到符合条件的,这应该是加载不出结果的原因。所以需要修改判断条件。
3,对于1,请教一下高斯热源定义。
2楼2012-03-04 22:58:13
已阅   关注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的回帖
信息提示
请填处理意见