24小时热门版块排行榜    

查看: 2797  |  回复: 9

高歌旅客Les

银虫 (小有名气)

[求助] udf编写多孔介质气固换热系数遇到问题,求助~~~ 已有4人参与

在做多孔介质局部非热平衡模型,设置系数h时用udf编程,udf可以编译,但是初始化的时候总是报错,求助大神,到底怎么回事呢????
#include "udf.h"
#include "metric.h"
#include "sg.h"
#include "mem.h"
#include "math.h"

#define Dp 0.00006
#define zeta 0.6
DEFINE_PROFILE(Velocity_inlet,thread,position)
{
        real u;
        real t;
        face_t f;
        begin_f_loop(f,thread)
        {
                t=RP_Get_Real("flow-time";
                F_PROFILE(f,thread,position)=5*sin(188.5*t);
        }
        end_f_loop(f,thread)
}
DEFINE_PROFILE(Pressure_outlet,thread,position)
{
        real p;
        real t;
        face_t f;
        begin_f_loop(f,thread)
        {
                t=RP_Get_Real("flow-time";
                F_PROFILE(f,thread,position)=4500000+1170000*sin(188.5*t);
        }
        end_f_loop(f,thread)
}
/*3.
This module calculates the Heat transfer coefficient h(loc) for both the solid
and the fluid phase based on the particle Reynolds Number Rep.

*/

double heat_t_coeff(cell_t c,Thread *t)
{
        //FILE *t;
        //*HTC = (kf*(2+1.1Pr^0.333*Re^0.6))/dp;*/
        double Pr,Re,HTC,U,dv,Rep,Area,Ux;
        //Interstial area between the solid and the Fluid
        Area=4.0*(1-zeta)/Dp;
        //void diameter
        dv=(4.0*zeta)/Area;
        //Average velocity
        U=sqrt(pow(C_U(c,t),2.)+pow(C_V(c,t),2.));
        // modified Reynolds Number based on the void diameter
        Re=(U*dv*C_R(c,t))/C_MU_EFF(c,t);
        //Particle Reynolds Number based on Diamter of the particle(Dp).
//        Rep = (U*Dp*C_R(c,t))/C_MU_EFF(c,t);
        Rep=(U*Dp*C_R(c,t))/C_MU_L(c,t);

        //Fluid Prandtl Number
//        Pr = (C_MU_EFF(c,t)*C_CP(c,t))/C_K_L(c,t);
//        Pr = (C_MU_L(c,t)*C_CP(c,t))/therm_conduct(C_T(c,t)) ;
        Pr=(C_MU_L(c,t)*C_CP(c,t))/C_K_L(c,t) ;


//        C_UDMI(c,t,1)=therm_conduct(C_T(c,t));  
       
        /*Use this part of the code for E2 model of HTC*/
//    printf("hello";
//        HTC = (C_K_L(c,t)*(2.0 +(1.1*pow(Pr,0.333)*pow(Rep,0.6))))/Dp;
//        HTC = (therm_conduct(C_T(c,t)) *(2.0 +(1.1*pow(Pr,0.333)*pow(Rep,0.6))))/Dp;
//        HTC = (C_K_L(c,t)*(2.0 +(1.1*pow(Pr,0.333)*pow(Rep,0.6))))/Dp;
        HTC=(C_K_L(c,t)*(2.0 +(1.1*pow(Pr,0.333)*pow(Rep,0.6))))/Dp;
        /*Use this part of code for E2 model of HTC

if(Rep < 100)
                HTC=0.004*(C_K_EFF(c,t)/dv)*pow(Pr,0.3333)*pow(Re,1.35);
        else
                HTC =0.0156*(C_K_EFF(c,t)/dv)*pow(Pr,0.3333)*pow(Re,1.04);
        */
        return HTC;
}

初始化的时候报错如下:
Error:  received a fatal signal (Segmentation fault).
Error Object: #f
chip-exec: heat_t_coeff: wrong return type: void udf function expected
Error:  received a fatal signal (Segmentation fault).

求助大神!!!!!!@wuming524
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
http://www.cfd-online.com/Forums ... entation-fault.html
The segmentation fault means that you try to access a variable, which is not saved.
2楼2016-09-06 22:13:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
高歌旅客Les: 金币+5, ★★★很有帮助 2016-09-07 10:31:06
你这个宏都没有用到嘛,double heat_t_coeff(cell_t c,Thread *t)
初始化错误的话,可以尝试一个个加载宏,看哪个宏加载之后出现错误,那么问题就出现在那个宏之中
项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&amp;tid=114340&amp;extra=
3楼2016-09-07 08:09:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dai26520

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
heat_t_coeff(cell_t c,Thread *t)我觉得这个地方直接用一个DEFINE-PROFILE宏就行,直接定义气固对流换热系数,然后在GUI里面设置对流换热系数时加载DEFINE-PROFILE宏就行了。另外你这个可能还需要一个DEFINE-ADJUST宏。
个性只是一个代号,做好自己就行
4楼2016-09-07 08:35:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

高歌旅客Les

银虫 (小有名气)

引用回帖:
3楼: Originally posted by mycc at 2016-09-07 08:09:55
你这个宏都没有用到嘛,double heat_t_coeff(cell_t c,Thread *t)
初始化错误的话,可以尝试一个个加载宏,看哪个宏加载之后出现错误,那么问题就出现在那个宏之中

应该是最后那个对流换热系数的问题,因为之前的速度和压力我都加载过,没什么问题~~~
然后我是新手,想请教一下,这个宏我都没用到是啥意思呢???
5楼2016-09-07 10:18:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

引用回帖:
5楼: Originally posted by 高歌旅客Les at 2016-09-07 10:18:42
应该是最后那个对流换热系数的问题,因为之前的速度和压力我都加载过,没什么问题~~~
然后我是新手,想请教一下,这个宏我都没用到是啥意思呢???...

UDF 编译好之后,需要加载到相应的位置。 比如DEFINE-PROFILE宏加载到边界条件上
你这个heat_t_coeff是一个自定义的宏,你无法加载到fluent中,需要通过fluent已经存在define宏来调用。

» 本帖已获得的红花(最新10朵)

项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&amp;tid=114340&amp;extra=
6楼2016-09-07 11:54:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

高歌旅客Les

银虫 (小有名气)

送红花一朵
引用回帖:
6楼: Originally posted by mycc at 2016-09-07 11:54:00
UDF 编译好之后,需要加载到相应的位置。 比如DEFINE-PROFILE宏加载到边界条件上
你这个heat_t_coeff是一个自定义的宏,你无法加载到fluent中,需要通过fluent已经存在define宏来调用。...

感谢您的回答,我懂了!
所以我要用heat_t_coeff的话,要先用fluent自带的define来调用对吧,那么我选用哪个呢?DEFINE_property?
麻烦您了,感谢!
7楼2016-09-07 22:01:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dai26520

专家顾问 (著名写手)

【答案】应助回帖

引用回帖:
7楼: Originally posted by 高歌旅客Les at 2016-09-07 22:01:56
感谢您的回答,我懂了!
所以我要用heat_t_coeff的话,要先用fluent自带的define来调用对吧,那么我选用哪个呢?DEFINE_property?
麻烦您了,感谢!...

DEFINE-PROFILE宏

» 本帖已获得的红花(最新10朵)

个性只是一个代号,做好自己就行
8楼2016-09-08 08:38:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

高歌旅客Les

银虫 (小有名气)

送红花一朵
引用回帖:
8楼: Originally posted by dai26520 at 2016-09-08 08:38:10
DEFINE-PROFILE宏...

感谢您的帮助~~~
我有个问题,profile不是定义边界条件的宏么?为什么可以用profile呢???
麻烦啦~
9楼2016-09-08 09:25:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

奔向大海

新虫 (初入文坛)

【答案】应助回帖

您好!我想请问您一下,为什么设置4个HTC呢?而且其中三个表达式完全一样?您能解释一下吗?灰常谢谢!!!
10楼2018-06-27 13:53:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 高歌旅客Les 的主题更新
信息提示
请填处理意见