|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
具体情况是这样的:
有一个水管,刚开始给定一个进水温度,运行一个步长后用UDF把水管的出水温度求出,然后作为水管的进水温度,请问大家这个UDF怎么写,我先前写了一个UDF:
#include "udf.h"
DEFINE_ADJUST(gettemp,domian)
{
face_t f;
int ID=4;/*边界出口的ID*/
Thread *thread=Lookup_Thread(domain,ID);/*将指针指向出口边界*/
begin_f_loop(f,thread)
{
F_UDMI(f,thread,1)=F_T(f,thread);/*将求得的出口温度值存在内存中*/
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(input_temp,thread,position)
{
face_t f;
begin_f_loop(f,thread)
{
real t=RP_Get_Real("flow-time");
if(t<=10)
{
F_PROFILE(f,thread,position)=300;/*刚开始给定进口温度为300K*/
}
else
{
F_PROFILE(f,thread,position)=F_UDMI(f,thread,1);/*从内存中取出出口温度值赋给进口*/
}
}
end_f_loop(f,thread)
}
编译通过了但是结果不对,我查了一下是从内存中取出的值不是出口的温度,后来我又把用内存存取的方式换成了用一个全局变量代替,但值同样也传不到进口处!
后来我又改了一下UDF:
#include "udf.h"
real temp;/*定义一个全局变量*/
DEFINE_EXECUTE_AT_END(get_temp)/*在每个步长结束后取出出口的温度*/
{
Domain *domain;
domain=Get_Domain(1);
face_t f;
int ID=4;
real temp;
Thread *thread=Lookup_Thread(domain,ID);/*将指针指向出口边界*/
begin_f_loop(f,thread)
{
temp=F_T(f,thread); /*将求得的出口温度值存在全局变量temp中*/
}
end_f_loop(f,thread)
}
DEFINE_PROFILE(input_temp,thread,position)
{
face_t f;
begin_f_loop(f,thread)
{
real t=RP_Get_Real("flow-time");
if(t<=100)
{
F_PROFILE(f,thread,position)=300;
}
else
{
F_PROFILE(f,thread,position)=temp;/*从全局变量中取出出口温度值*/
}
}
end_f_loop(f,thread)
}
这个UDF没有通过编译,
请问一下是不是我的宏选择的有问题?还是怎么的了,劳烦大家指教,本人不胜感激! |
|