24小时热门版块排行榜    

查看: 627  |  回复: 0

shushanliu

新虫 (初入文坛)

[求助] UDF实现周期性初始化错误

我想要实现周期性变化,就是利用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
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shushanliu 的主题更新
信息提示
请填处理意见