24小时热门版块排行榜    

查看: 1085  |  回复: 3

g2238516

铁虫 (初入文坛)

[求助] fluent 通过UDF来以某点的温度控制热流密度 已有1人参与

大家好!
    我在做一个模拟,模型如下,是一根很简单的圆柱。
fluent 通过UDF来以某点的温度控制热流密度
长1000mm,底面半径为12.5mm。
在fluent中以左边的圆心为原点。
我现在要以某个点的温度来控制壁面的热流密度,当温度小于某值时,热流密度为1500,当温度大于这个值时,热流密度为0。
参考网上的一些内容,我写了一个UDF,如下:

#include "udf.h"

real tem;
DEFINE_ADJUST(get1_tem,d)
{
    Thread *t;
    cell_t c;
    real xc[ND_ND];
    thread_loop_c(t,d)
        {
       begin_c_loop(c,t)
           {
          C_CENTROID(xc,c,t);
          if(sqrt(ND_SUM(pow(xc[0],2.), pow(xc[1]-0.0123,2.), pow(xc[2]-0.3,2.)))<0.0001)
        /*求(0,0.0123,0.3)这个点的温度值*/
             tem=C_T(c,t);
           }
           end_c_loop(c,t)
         }
}

DEFINE_PROFILE(new_heat1,t,i)
{
        face_t f;
        begin_f_loop(f,t)
        {
                if(tem<=450.)
                        F_PROFILE(f,t,i) = 1500;
            
                else
                        F_PROFILE(f,t,i) = 0;
        }
        end_f_loop(f,t)
}

我用的是解释型,fluent解释的时候没发生错误,具体使用的时候,发现边界的热流密度一直是1500。

我有几个问题
1,C_CENTROID这个函数求到的坐标是fluent scale mesh里的那个三维坐标吗。

2,我在scale mesh显示的是mm,在UDF里无论怎么样都是用m做单位的吗。

3,为满足要求这个udf合适吗,为什么我使用的时候热流密度一直是1500.
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一炮min恩仇

新虫 (初入文坛)

请问您的问题解决了吗,最近也在做这个,遇到了相同的问题
2楼2016-06-21 09:30:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

【答案】应助回帖

1.对的
2.UDF中都是国际单位
3.可以尝试 real tem; 改成 static real tem;
项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&amp;tid=114340&amp;extra=
3楼2016-06-21 10:04:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

一炮min恩仇

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 一炮min恩仇 at 2016-06-21 09:30:51
请问您的问题解决了吗,最近也在做这个,遇到了相同的问题

感觉adjust中tem的值没有传到下面的profile。。。不知道怎么办呢
4楼2016-06-21 16:41:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 g2238516 的主题更新
信息提示
请填处理意见