找回密码
 注册
查看: 2262|回复: 17

[求助]这个热传导边界的UDF怎么做啊?

[复制链接]
发表于 2005-6-22 21:51:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我要模拟一多层平壁的热传导过程,我假设一个面上有一个变化的温度,这个面上我是定义成wall面的。我把c的程序编译出来了,怎么在flunt里面用阿?下面是程序,请帮忙!
其中t,twmax和twmin是输入量,Awt和twm是中间变量,twt是作用在wall面上的值
#include "iostream.h"
#include "math.h"
void main()
{double Atw,twmax,twmin,twm,twt;
int t;
cin>>twmax>>twmin>>t;
Atw=twmax-twmin;
twm=twmax-0.522*Atw;
twt=twm+0.489*Atw*cos(3.1415926/180*(15*t-225.8))+0.062*Atw*cos(3.1415926/180*(30*t-35.2));
cout<<twt;}
发表于 2005-6-23 07:23:33 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

UDF不是这么做的啊
发表于 2005-6-23 10:39:05 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

[这个贴子最后由mikohong在 2005/06/23 10:43am 第 1 次编辑]

在fluent中有自己的udf的格式,我帮你写了一个你需要的udf,只要在需要输入的地方输入值,然后在fluent中编译,最后在所在的面加上这个的udf就ok。这个udf没有问题,我已经编译通过了,并且可以运行。
&#35;include "udf.h"
DEFINE_PROFILE(temp_on_wall, thread, i)
{
real x[ND_ND];
double Atw,twmax,twmin,twm,twt;
int t;
face_t f;
  begin_f_loop(f, thread)
    {
      t = ?;     /*input the value of t*/
      twmax = ?; /*input the value of twmax*/
      twmin = ?; /*input the value of twmin*/
      Atw=twmax-twmin;
      twm=twmax-0.522*Atw;
      twt=twm+0.489*Atw*cos(3.1415926/180*(15*t-225.8))+0.062*Atw*cos(3.1415926/180*(30*t-35.2));
      F_CENTROID(x,f,thread);
      F_PROFILE(f, thread, i)=twt;
    }
  end_f_loop(f, thread)
}
 楼主| 发表于 2005-6-23 14:36:40 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

这位大侠,太谢谢你了。我一定铭记在心!!
 楼主| 发表于 2005-6-23 15:00:01 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

     mikohong大侠,我想问一下。我把这个程序读到fluent里面了,在耦合的wall的边界设定时,这个wall上温度我选择了定义的函数项,但输入值不能输阿?是不是在源程序里面输阿?
   我把我的模型传上来了,我要定义最外层的壁面温度是随时间变化的(即程序所描述的),最里面一层是恒温的,其他四面是绝热的。我这样写程序,可以模拟这个多层平壁的热传导过程吗?
发表于 2005-6-23 16:12:14 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

1。如果你要用随时间变化的话,必须加一个函数语句:
real time
time=CURRENT_TIME
你那个t应该就是时间吧,把这个语句加在前面,把所有的t换成time。
2。在wall定义温度的地方只要加udf即可,无需再输入值,这两者只能取一种。
3。你这个问题应该不是太难,应该可以解决。
 楼主| 发表于 2005-6-30 10:47:49 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

mikohong 你太好了,真想亲你两口,呵呵!!!
   我还想问,我叠代的过程中,热传导从外表面传导到内表面实际是需要时间的,这个现实中的时间怎么才能得到阿?
  还有,我把修改给你看看,你看对不对!!
&#35;include "udf.h"
DEFINE_PROFILE(temp_on_wall, thread, i)
{
real x[ND_ND];
real time;
time=CURRENT_TIME
double Atw,twmax,twmin,twm,twt,time;
face_t f;
begin_f_loop(f, thread)
   {
     time = 12.5;     /*input the value of time*/
     twmax = 35; /*input the value of twmax*/
     twmin = 30; /*input the value of twmin*/
     Atw=twmax-twmin;
     twm=twmax-0.522*Atw;
     twt=twm+0.489*Atw*cos(3.1415926/180*(15*time-225.8))+0.062*Atw*cos(3.1415926/180*(30*time-35.2));
     F_CENTROID(x,f,thread);
     F_PROFILE(f, thread, i)=twt;
   }
end_f_loop(f, thread)
}
发表于 2005-7-1 09:41:53 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

我修改了一下,通过编译并且能运行,如下
&#35;include "udf.h"
DEFINE_PROFILE(temp_on_wall, thread, i)
{
double Atw, twmax, twmin, twm, twt;
real x[ND_ND];
face_t f;
real t;
t=CURRENT_TIME;
begin_f_loop(f, thread)
  {
    twmax = 35;
    twmin = 30;
    Atw=twmax-twmin;
    twm=twmax-0.522*Atw;
    twt=twm+0.489*Atw*cos(3.1415926/180*(15*t-225.8))+0.062*Atw*cos
(3.1415926/180*(30*t-35.2));
    F_CENTROID(x,f,thread);
    F_PROFILE(f, thread, i)=twt;
  }
end_f_loop(f, thread)
}
至于能不能计算这个传热时间,我也不是很清楚。但是只要你用的是unsteady,应该要考虑传热的时间吧,而且你的这个udf本身就有时间函数。你计算之后看结果再讨论。
 楼主| 发表于 2005-7-1 10:52:22 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

那我先做做看怎么样,真的不知怎么谢你。
 楼主| 发表于 2005-7-1 16:57:35 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

mikohong 大侠,我想了一下,如果我把最外层边界设定为周期性的边界,这样我可以
用udf把这个边界的温度设定成随时间变化的函数来进行计算传导吗?
发表于 2005-7-1 23:23:45 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

你的传热时间可以用:
RP_Get_real ("flow_time"); 试一试;
我自己没有用过,我查过所有Fluent关于模拟过程时间的表达,好像只有这么一个宏是来得到模拟时间的。你可以参考一下,UDF帮助文档,虽然说得不清楚。
这个宏不能放在loop里面,否则会出错。
Good luck!
发表于 2005-7-2 00:08:04 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

我搞错了!呵呵.......太晚了
&#35;define CURRENT_TIME (RP_Get_real ("flow_time")) 呵呵........
求传热时间,不知道如何判断热量从外表面传导内表面??具体问题不太清楚
如果可以判断的话,这个时间就应该可以求得
real deltime;   //conduction time
real TimeSize = RP_Get_Real("physical-time-step"); // timestep size
static int timestep = 0; //record timesteps needed for the conduction
static int last_ts = -1; //global variable: timestep defined yourself
if (还没有传导到内壁面){
  if (last_ts != curr_ts) {  
    last_ts = curr_ts;      //last_ts will increase in the first interation
    timestep = timestep +1; //of each timestep
  }
}else{
  deltime = TimestepSize*last_ts;
  Message ("The deltime is: %g\n", deltime);
}
This udf is just a scheme.It needs to be refined. But it is too late.Hope it helps.
 楼主| 发表于 2005-7-2 16:23:01 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

  Joywe,谢谢你的帮忙!!
我的问题是,假设有一多层平壁(各层不同材料)原来温度恒定,某一时刻拿到一定的环境中,其中四边绝热,最内层的壁面温度恒定,最外层的暴露在一个随时间变化的温度场内(即mikohong 帮我编的程序)。这样,热量就会从最外层壁面向内层壁面传递。
     我想问的就是,热量从最外层壁面(即0时刻)向内壁传递是需要时间的。假设我想知道过了4分钟,热量到底向内壁传了多远的距离?
     fluent里面对应这4分钟的迭代步数是多少?
还有 Joywe 大侠,我对程序是一窍不通,你能结合mikohong大侠的程序,帮我编译一下吗?我真的不会编程,我就没学过,希望你能好人做到底。谢谢
 楼主| 发表于 2005-7-2 16:25:33 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

    mikohong大侠,我现在身在南京,如果你有空来南京的话,我要当面谢谢你!
我的手机是:13770626576!!
   你有联系方式吗?qq什么的!
发表于 2005-7-2 19:45:36 | 显示全部楼层

[求助]这个热传导边界的UDF怎么做啊?

呵呵,大家都是在不停的使用和学习之中,可以相互帮忙就尽力帮忙,不用太客气了,我自己也在网上得到很多的帮助,而且帮助别人自己也能得到锻炼。对于udf我也在学习之中,今后大家可以好好讨论。我目前在成都,呵呵,有机会再联系了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表