24小时热门版块排行榜    

查看: 1466  |  回复: 10

andy014

新虫 (初入文坛)

[求助] 关于温度的传递问题,能否有人帮我看一下这个UDF是哪里出了错误呢? 已有3人参与

各位同学大家好,小弟在这里求助一个二维模型UDF的写法,
我希望能够得到出口边界上(由于是二维,故为一条直线)的温度,再将其传递给入口边界作为温度赋值。即让入口温度=出口温度+10。
编写如下,但是编译的时候总是出现错误!我怀疑是不是UDF哪里出了问题,希望大家能帮帮我!不胜感激!

#include "udf.h"
real t2;/*定义出口温度为t2*/
Thread *thread_out;
face_t f,b;
Domain *domain;
DEFINE_ADJUST(adjust,d)/*每次迭代均送传递温度*/
{
  domain=Get_Domain(1);
  thread_out=Lookup_Thread(domain,7);/*出口边界那条边的ID*/
  begin_f_loop(f,thread_out)
    {
      t2=F_T(f,thread_out) /*获取温度信息*/
     }
      end_f_loop(f,thread_out)
   
}
DEFINE_PROFILE(inlet_T2, t, i)   
{                                
    begin_f_loop(b,t)
      {
       F_PROFILE(b,t,i) = t2+10 ;/*传递出口温度到进口*/
       }
    end_f_loop(b,t)
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andy014

新虫 (初入文坛)

除了第13行 少了一个 分号  已经改正
t2=F_T(f,thread_out); /*获取温度信息*/
2楼2014-10-26 17:34:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andy014

新虫 (初入文坛)

不是编译出错  编译没有错了  只是没有办法提取那个出口的温度啊!
3楼2014-10-26 17:54:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

achilFes1990

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
你现在这么做的错误或者是不足在哪里啊,你详细说一下,另外是想得到什么样的帮助。

[ 发自手机版 http://muchong.com/3g ]
扫一扫关注我的微信公众号,共同学习船舶CFD
4楼2014-10-26 18:19:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andy014

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by achilFes1990 at 2014-10-26 18:19:59
你现在这么做的错误或者是不足在哪里啊,你详细说一下,另外是想得到什么样的帮助。

就是无法实验获取出口位置的温度 再将其转给入口赋值 我怀疑是获取出口温度的程序写错了

比如我的出口温度是300K   我希望我的入口温度是300+10 K ,然后这样整个流域的温度慢慢上升
但是我模拟的监测情况来看  出口温度是300K, 但是入口温度始终是10K 说明获取出口的温度t2始终只有0K 不知道哪里出了问题  

出口是一条线  是否因为我写的是直接获取一条线的温度而出错呢  如果我换个思路  只给定出口位置的某个点坐标是(x,y)  我能否获取这一个点的温度呢 应该怎么写呢
5楼2014-10-26 20:15:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

andy014

新虫 (初入文坛)

没有 实验 那两个字
6楼2014-10-26 20:16:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
请先清楚什么是局部变量,什么是全局变量。

先不说不能用t2作为变量名,之说t2明显是局部变量根本不能传递出函数的。

各个单位赋值给的t2根本就没有区分,完全就是重复的覆盖

在fluent里能实现你的传递功能的是UDMI这个变量

你可以用F_UDNI(f,t,0)试试,注意在导入函数后,一定要先把内存的个数开了

详见帮助文件
7楼2014-10-27 08:52:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

achilFes1990

木虫 (著名写手)

【答案】应助回帖

引用回帖:
7楼: Originally posted by 死天 at 2014-10-27 08:52:40
请先清楚什么是局部变量,什么是全局变量。

先不说不能用t2作为变量名,之说t2明显是局部变量根本不能传递出函数的。

各个单位赋值给的t2根本就没有区分,完全就是重复的覆盖

在fluent里能实现你的传递功能 ...

涨姿势了,我当时有分析到局部变量上面,但是如何就那个温度取值并用于下一个函数体一直不知道怎么用,这下会了,赞一个

[ 发自手机版 http://muchong.com/3g ]
扫一扫关注我的微信公众号,共同学习船舶CFD
8楼2014-10-27 13:42:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

seasky71

木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
/*使用之前,先在Fluent中设置UDM个数,Define->User_defined->Memory 设置2为2个*/
#include "udf.h"
enum
{temp_2}; /*udm0 传递变量用*/

DEFINE_ADJUST(adjust,domain) /*每次迭代均送传递温度*/
{
  face_t f;
  cell_t c;
  Thread *thread_out;
  domain=Get_Domain(1);
  thread_out=Lookup_Thread(domain,7); /*出口边界那条边的ID*/
  begin_f_loop(f,thread_out)
    {
      C_UDMI(c,thread_out,temp_2)=F_T(f,thread_out); /*获取温度信息*/
     }
      end_f_loop(f,thread_out)
   
}
DEFINE_PROFILE(inlet_T2,thread,i)   
{   
    face_t f;
    cell_t c;
        Thread *thread_out;
    begin_f_loop(f,thread)
      {
       F_PROFILE(f,thread,i) = C_UDMI(c,thread_out,temp_2)+10;
       /*传递出口温度到进口*/
       }
    end_f_loop(f,thread)
}
试试这个,看看行不行。
9楼2014-10-28 11:08:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

死天

专家顾问 (著名写手)

引用回帖:
9楼: Originally posted by seasky71 at 2014-10-28 11:08:32
/*使用之前,先在Fluent中设置UDM个数,Define->User_defined->Memory 设置2为2个*/
#include "udf.h"
enum
{temp_2}; /*udm0 传递变量用*/

DEFINE_ADJUST(adjust,domain) /*每次迭代均送传递 ...

不能用C_UDMI要用 F_UDMI这里是面不是网格
10楼2014-10-28 13:16:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 andy014 的主题更新
信息提示
请填处理意见