UDF-将该时间步下的出口平均温度作为下一时间步的进口温度条件

(157) 2024-04-15 08:01:01

这个相对比较简单,直接附上UDF源码,关键点都给了注释
#include “udf.h”
#include “mem.h”
#include “metric.h”
#include “unsteady.h”

real pst=0.0;//存储上一次迭代时间
real TO1=300.0;//自己设定进口温度初始值

DEFINE_ADJUST(boundary_time_step,d)//每次迭代前自动执行
{

Domain *d1=NULL;
Thread *t1=NULL,*t2=NULL;
face_t f;
real A[ND_ND];
real current_timestep=CURRENT_TIMESTEP;
real current_time=CURRENT_TIME;	
//real previous_time=PREVIOUS_TIME;
real difference_time=current_time-pst;
real sum_A=0.0,sum=0.0,area;
d1=Get_Domain(1);
t1=Lookup_Thread(d1,11);//给定模块1出口的边界面ID
if(difference_time>(current_timestep/10000))//判断当前迭代是否为更新了时间,在当前时间步里的迭代计算是不更新时间的
{
	begin_f_loop(f,t1)
	{
		F_AREA(A,f,t1);
		area=NV_MAG(A);
		sum_A+=area;
		sum+=area*F_T(f,t1);
	}
	end_f_loop(f,t1)
	sum_A=PRF_GRSUM1(sum_A);
	sum=PRF_GRSUM1(sum);
	TO1=sum/sum_A;//出口面平均温度
	//printf("\nrenew!!!\n");
	printf("\nTO1=%g\n",TO1);
}
pst=current_time;//更新为当前时间
//printf("\nCURRENT_TIMESTEP=%g,CURRENT_TIME=%g",current_timestep,current_time);

}
DEFINE_PROFILE(inlet1,t,i)//给定进口边界温度
{

face_t f;
begin_f_loop(f,t)
{
	F_PROFILE(f,t,i)=TO1;
}
end_f_loop(f,t);

}

THE END

发表回复