24小时热门版块排行榜    

查看: 665  |  回复: 0

xuxia8495

银虫 (小有名气)

[求助] 能量源项编程问题

所编写的能量源项程序如下:
#include "udf.h"
DEFINE_SOURCE(heat_flux,cell,thread,ds,eqn)
{
real x[ND_ND];
real time,r;
real source_heat;
int k,u;
C_CENTROID(x,cell,thread);
time=CURRENT_TIME;
k=(int)((int)(time)/6);
u=(int)(time)%6;
r=0;
if(u>=0&&u<2)
{
        r=sqrt(pow(x[0]+0.2-0.2*(time-6*k),2)+pow(x[1]-0.2,2));
       
        if(r<=0.06&&x[2]>=0&&x[2]<=0.001&&x[1]<=0.2)
                {
                source_heat=8e11*exp(-3000*pow((r-0.005),2));
                ds[eqn] =0;
                }               
        else if(r<=0.06&&x[2]>=0&&x[2]<=0.001&&x[1]>0.2)
                {
                source_heat=4e11*exp(-3000*pow((r-0.005),2));
                ds[eqn] =0;
                }
}
else
{
source_heat= ds[eqn] =0;
}
Message("u=%d,k=%d\n",u,k);
Message("source_heat=%f\n",source_heat);
return source_heat;
}
存在问题:所有输出的能量值source_heat都为0

模型简介:t=0时刻,在xy平面上,热源中心位于(-0.2,0.2);随时间增加,在0-2S内热源沿y=0.2直线运动;热源扫描区域为半径为r=0.06的圆形。在当前时刻,热源中心为(-0.2+0.2*(time-6*k), 0.2),所以有热源的圆形半径r=sqrt(pow(x[0]+0.2-0.2*(time-6*k),2)+pow(x[1]-0.2,2))
以下方式查看r值:
r=sqrt(pow(x[0]+0.2-0.2*(time-6*k),2)+pow(x[1]-0.2,2));
Message("r=%f\n",r);
发现输出的r值没有小于0.1的,不知道是刷屏太快还是确实没有?
如果确实无小于0.1的值,热源输出值为0,也就正常;可问题是r应该有小于0.06的值,因为x[0],x[1]的取值范围为[-0.35,0.35],也就是说r的输出值应该在[0,0.06]内有值!!


仔细检查了下,实在找不出哪出现问题了
高手们帮忙看看吧,谢谢!!!
回复此楼

» 收录本帖的淘帖专辑推荐

fluent模拟问题 电弧

» 猜你喜欢

fluent交流群:247890687
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 xuxia8495 的主题更新
信息提示
请填处理意见