我想要实现周期性变化,就是利用UDF将出口的参数赋值给进口(下面是UDF程序),导进fluent没有问题,但是初始化时显示Error: received a fatal signal (Segmentation fault).Error: received a fatal signal (Segmentation fault).Error Object: #f。全部的金币,诸位大神看看是啥情况!
#include "udf.h"
#include "prop.h"
#include "mem.h"
int id_inlet=10;/*出口ID*/
int id_outlet=11;/*进口ID*/
real avg_tempoutlet=293.15;/*出口初始温度*/
real NV_VEC(A2); /*定义出口面积矢量*/
Thread *thread_inlet;/*定义进口面索引*/
Thread *thread_outlet;/*定义出口面索引*/
face_t f;
Domain *domain;
real sum_Toutlet=0.0;
real sum_Aoutlet=0.0;
real tempoutlet=293.15; /*出口的实际温度,节点温度*/
real tw=323.15; /*壁面温度*/
real theathoutlet=1.0;/*出口无量纲温度*/
real uoutlet=0.25;
real voutlet=0.0;
real x[ND_ND];
DEFINE_ADJUST(myadjust,d) /*函数用于每一步迭代进行调整*/
{
domain=Get_Domain(1); /*指向区域的指针,可访问mesh里面的所有单元和面索引*/
thread_inlet=Lookup_Thread(domain,id_inlet); /*获取进口的ID,线索*/
thread_outlet=Lookup_Thread(domain,id_outlet); /*获取出口的ID,线索*/
begin_f_loop(f,thread_outlet)
{
F_AREA(A2,f,thread_outlet);
tempoutlet=F_T(f,thread_outlet);
sum_Aoutlet+=NV_MAG(A2);
sum_Toutlet+=NV_MAG(A2)*tempoutlet;
}
end_f_loop(f,thread_outlet) /*计算出口平均温度*/
//avg_tempinlet=sum_Tinlet/sum_Ainlet; /*进口平均温度*/
avg_tempoutlet=sum_Toutlet/sum_Aoutlet; /*出口平均温度*/
begin_f_loop(f,thread_outlet)
{
F_AREA(A2,f,thread_outlet);
F_CENTROID(x,f,thread_outlet);
tempoutlet=F_T(f,thread_outlet);
theathoutlet=(tempoutlet-tw)/(avg_tempoutlet-tw);
F_UDMI(f,thread_outlet,1)=theathoutlet;
F_UDMI(f,thread_outlet,2)=F_U(f,thread_outlet);
F_UDMI(f,thread_outlet,3)=F_V(f,thread_outlet);
}
end_f_loop(f,thread_outlet)/*计算出口的无量纲温度*/
}
DEFINE_PROFILE(inlet_temp,thread_inlet,index)
{
real theathinlet=1.0;
real tempinlet=293.15;
real avg_tempinlet=293.15;
begin_f_loop(f,thread_inlet)
{
avg_tempinlet=avg_tempoutlet;
theathinlet=F_UDMI(f,thread_outlet,1);
tempinlet=theathinlet*(avg_tempinlet-tw)+tw;
F_PROFILE(f,thread_inlet,index)=tempinlet; /*进口温度边界设置为出口的温度*/
end_f_loop(f,thread_inlet)
}
}
DEFINE_PROFILE(u_velocity,thread_inlet,index)
{
real uinlet=0.02;/*定义初始速度u*/
begin_f_loop(f,thread_inlet)
{
uinlet=F_UDMI(f,thread_outlet,2);
F_PROFILE(f,thread_inlet,index)=uinlet; /*进口u速度边界设置为出口的速度*/
end_f_loop(f,thread_inlet)
}
}
DEFINE_PROFILE(v_velocity,thread_inlet,index)
{
real vinlet=0.0;/*定义初始速度v*/
begin_f_loop(f,thread_inlet)
{
vinlet=F_UDMI(f,thread_outlet,3);
F_PROFILE(f,thread_inlet,index)=vinlet; /*进口v速度边界设置为出口的速度*/
end_f_loop(f,thread_inlet)
}
}@wuming524 |