24小时热门版块排行榜    

查看: 4821  |  回复: 14

sailote

铁虫 (初入文坛)

[求助] 用udf实现出口温度赋值给进口温度 已有1人参与

最近在搞一个非稳态算例,前一时刻流体出口面的平均温度赋值给当前时刻的进口面。初始状态时,流体区域平均分成前后两个区域,前后的温度不一样。
我网上搞了一个udf(如下),计算中,用monitor监控进口和出口的平均温度,每10个时间步长输出一次。发现两者温度曲线相差很大,如图所示(纵坐标为平均温度K,横坐标为时间步长)。请问是这个udf的问题还是怎啦?
real NV_VEC(A);
real avg_temp;
real sum_T_A=0.0;
real sum_A=0.0;
Thread *thread_out;
face_t f;
Domain *domain;
DEFINE_ADJUST(adjust,d)
{domain=Get_Domain(1);
thread_out=Lookup_Thread(domain,14);/14是出口面的id/
begin_f_loop(f,thread_out)
{ F_AREA(A,f,thread_out);
sum_A+=NV_MAG(A);                 
sum_T_A+=NV_MAG(A)*F_T(f, thread_out);
}
end_f_loop(f,thread_out)
avg_temp=sum_T_A/sum_A;
}
DEFINE_PROFLIE(inlet_T,t,i)
{begin_f_loop(f,t)
{F_PROFILE(f,t,i) = avg_temp;
}
end_f_loop(f,t)
}

用udf实现出口温度赋值给进口温度
1212.JPG
回复此楼

» 猜你喜欢

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

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

sailote

铁虫 (初入文坛)

后来我怀疑是不是DEFINE_PROFLIE这个有问题,所以把udf改成如下,发现结果像之前一样(上图所示)
Thread *thread_in;
Thread *thread_out;
face_t f;
Domain *domain;
real avg_temp;
real sum_T_A=0.0;
real sum_A=0.0;
real NV_VEC(A);
DEFINE_ADJUST(adjust,d)
{
        domain=Get_Domain(1);
        thread_in=Lookup_Thread(domain,15); /*15是进口面的id*/
        thread_out=Lookup_Thread(domain,14); /*14是出口面的id*/
        begin_f_loop(f,thread_out)
        {
                F_AREA(A,f,thread_out);
                sum_A+=NV_MAG(A);
                sum_T_A+=NV_MAG(A)*F_T(f, thread_out);
        }
        end_f_loop(f,thread_out)
        avg_temp=sum_T_A/sum_A;
        begin_f_loop(f,thread_in)
        {
                F_T(f,thread_in) = avg_temp;
        }
        end_f_loop(f,thread_in)
}
2楼2014-05-14 15:04:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sailote

铁虫 (初入文坛)

怎么都没人回复
3楼2014-05-14 20:05:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshihuolei

银虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
sailote: 金币+1, 有帮助 2014-05-15 14:07:56
如果是前一时刻赋给当前时刻的话应该是用DEFINE_EXECUTE_AT_END的吧  DEFINE_ADJUST是每次迭代都计算一次
4楼2014-05-15 09:59:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sailote

铁虫 (初入文坛)

引用回帖:
4楼: Originally posted by woshihuolei at 2014-05-15 09:59:34
如果是前一时刻赋给当前时刻的话应该是用DEFINE_EXECUTE_AT_END的吧  DEFINE_ADJUST是每次迭代都计算一次

请问如何使用DEFINE_EXECUTE_AT_END,有没有使用的例子
5楼2014-05-15 13:11:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshihuolei

银虫 (小有名气)

引用回帖:
5楼: Originally posted by sailote at 2014-05-15 13:11:22
请问如何使用DEFINE_EXECUTE_AT_END,有没有使用的例子...

建议看fluenthelp找一下每个宏的用法
6楼2014-05-15 18:44:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaolei539

铁虫 (小有名气)

楼主问题解决了吗?
我遇到了类似的问题,需要把一面温度值(面的不同位置温度不同)传递给另一个面,两个面网格划分相同。
跟你的情况类似~~
为什么不用PROFILE 而要用ADJUST呢?
努力!
7楼2014-06-12 20:37:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sailote

铁虫 (初入文坛)

引用回帖:
7楼: Originally posted by zhaolei539 at 2014-06-12 20:37:53
楼主问题解决了吗?
我遇到了类似的问题,需要把一面温度值(面的不同位置温度不同)传递给另一个面,两个面网格划分相同。
跟你的情况类似~~
为什么不用PROFILE 而要用ADJUST呢?

还没解决,老是算出来有问题。profile是参数赋值函数。ADJUSt是每步迭代之后调整函数。不一样的。我后来用了EXECUTE_AT_END还是不行,我真的不知道出了什么问题。
8楼2014-06-13 16:17:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaolei539

铁虫 (小有名气)

引用回帖:
4楼: Originally posted by woshihuolei at 2014-05-15 09:59:34
如果是前一时刻赋给当前时刻的话应该是用DEFINE_EXECUTE_AT_END的吧  DEFINE_ADJUST是每次迭代都计算一次

你好!想请教提取某个边界面的温度,赋值给另一个边界面
面上不同位置 温度不一样 不知道UDM怎么存储的?我这样写行不行?
#include "udf.h"
DEFINE_PROFILE(hnt_temperature,thread)
{
face_t f;
real tem_liquid;
real tem_solid;
Thread *thread_liquid=Lookup_Thread(domain,14); /*14是交界面液体侧面的id*/;
Thread *thread_solid=Lookup_Thread(domain,15); /*15是交界面固体侧面的id*/;

begin_f_loop(f,thread_liquid)
{   
    temp=F_T(f,thread_liquid);
    F_UDMI(f,t,0)=temp_liquid;
           
}
  end_f_loop(f,thread_liquid)

begin_f_loop(f,thread_solid)
{   
    tem_solid=F_UDMI(f,t,0);
    F_PROFILE(f,thread_solid)=tem_solid;
           
}
  end_f_loop(f,thread_solid)
}
麻烦您帮忙看看 谢谢!
努力!
9楼2014-06-15 09:39:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaolei539

铁虫 (小有名气)

引用回帖:
8楼: Originally posted by sailote at 2014-06-13 16:17:58
还没解决,老是算出来有问题。profile是参数赋值函数。ADJUSt是每步迭代之后调整函数。不一样的。我后来用了EXECUTE_AT_END还是不行,我真的不知道出了什么问题。...

楼主能不能把你的代码发给我 我的问题跟你类似,但是代码导进去之后有错误,您帮我看看我的这个?给我参考一下?卡这里一个月了,不胜感激~~
#include "udf.h"
DEFINE_PROFILE(hnt_temperature,thread)
{
face_t f;
real tem_liquid;
real tem_solid;
Thread *thread_liquid=Lookup_Thread(domain,14); /*14是交界面液体侧面的id*/;
Thread *thread_solid=Lookup_Thread(domain,15); /*15是交界面固体侧面的id*/;

begin_f_loop(f,thread_liquid)
{   
    temp=F_T(f,thread_liquid);
    F_UDMI(f,t,0)=temp_liquid;
           
}
  end_f_loop(f,thread_liquid)

begin_f_loop(f,thread_solid)
{   
    tem_solid=F_UDMI(f,t,0);
    F_PROFILE(f,thread_solid)=tem_solid;
           
}
  end_f_loop(f,thread_solid)
}
麻烦您帮忙看看 谢谢!
努力!
10楼2014-06-15 18:30:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sailote 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 275求调剂 +4 太阳花天天开心 2026-03-16 4/200 2026-03-17 10:53 by 功夫疯狂
[硕博家园] 深圳大学硕士招生(2026秋,传感器方向,仅录取第一志愿) +4 xujiaoszu 2026-03-11 9/450 2026-03-17 10:29 by xujiaoszu
[考研] 268求调剂 +6 一定有学上- 2026-03-14 7/350 2026-03-17 10:14 by Sammy2
[考研] 本人考085602 化学工程 专硕 +15 不知道叫什么! 2026-03-15 17/850 2026-03-17 10:13 by Sammy2
[考研] 304求调剂 +7 小熊joy 2026-03-14 7/350 2026-03-17 08:53 by 雾散后相遇lc
[考研] 化学工程321分求调剂 +10 大米饭! 2026-03-15 13/650 2026-03-17 06:57 by laoshidan
[考研] 286求调剂 +3 lemonzzn 2026-03-16 5/250 2026-03-16 20:43 by lemonzzn
[基金申请] 今年的国基金是打分制吗? 50+3 zhanghaozhu 2026-03-14 3/150 2026-03-16 17:07 by 北京莱茵润色
[考研] 070303一志愿西北大学学硕310找调剂 +5 d如愿上岸 2026-03-12 8/400 2026-03-16 15:19 by peike
[考研] 070303 总分349求调剂 +3 LJY9966 2026-03-15 5/250 2026-03-16 14:24 by xwxstudy
[考研] 290求调剂 +5 孔志浩 2026-03-12 10/500 2026-03-16 09:01 by 余晖&
[考研] 机械专硕调剂 +3 笨笨兔子 2026-03-12 3/150 2026-03-15 20:02 by 栗子粥?
[考研] 297一志愿上交085600求调剂 +5 指尖八千里 2026-03-14 5/250 2026-03-14 17:26 by a不易
[考研] 297求调剂 +4 学海漂泊 2026-03-13 4/200 2026-03-14 11:51 by 热情沙漠
[考研] 0805,333求调剂 +3 112253525 2026-03-10 3/150 2026-03-13 23:42 by JourneyLucky
[考研] 329求调剂 +3 miaodesi 2026-03-12 4/200 2026-03-13 20:53 by 18595523086
[考研] 求b区学校调剂 +3 周56 2026-03-11 3/150 2026-03-13 16:20 by JourneyLucky
[考研] 求调剂 +7 18880831720 2026-03-11 7/350 2026-03-13 16:10 by JourneyLucky
[考研] 314求调剂 +7 无懈可击的巨人 2026-03-12 7/350 2026-03-13 15:40 by JourneyLucky
[考研] 0856化工原理 +6 z2839474511 2026-03-10 6/300 2026-03-13 10:41 by houyaoxu
信息提示
请填处理意见