chjisuper 发表于 2015-11-20 17:06:26

FLUENT UDF化学反应

请各位大神指导一下,初学UDF,我想通过UDF编写化学反应速率以及各方程源项,来实现CH4和O2的燃烧反应,编写的代码如下:
#include "udf.h"
#include "math.h"
#define PRE_EXP 2.119e+011
#define ACTIVE 2.027e+08
#define BETA 0.0

real arrhenius_rate(real temp)
{
      return PRE_EXP*pow(temp,BETA)*exp(-ACTIVE/(UNIVERSAL_GAS_CONSTANT*temp));
}

DEFINE_SOURCE(energy_source,c,t,dS,eqn)
{
real delt_h,source;
delt_h=-7.489518e+07;
source=delt_h*(arrhenius_rate(C_T(c,t)))*C_R(c,t)*C_YI(c,t,0)/16;
returnsource;
}
DEFINE_SOURCE(ch4_source,c,t,dS,eqn)
{
real source;
real ss;
source=-arrhenius_rate(C_T(c,t))*C_R(c,t)*C_YI(c,t,0);
returnsource;
}

DEFINE_SOURCE(o2_source,c,t,dS,eqn)
{
real source;
source=-arrhenius_rate(C_T(c,t))*C_R(c,t)*C_YI(c,t,1);
returnsource;
}
DEFINE_SOURCE(co2_source,c,t,dS,eqn)
{
real source;
source=arrhenius_rate(C_T(c,t))*C_R(c,t)*C_YI(c,t,2);
returnsource;
}
DEFINE_SOURCE(h2o_source,c,t,dS,eqn)
{
real source;
source=arrhenius_rate(C_T(c,t))*C_R(c,t)*C_YI(c,t,3);
returnsource;
}
程序中的指前因子,活化能等参数都是fluent中的材料库中数据。选用的是无反应输运模型,编译UDF后,分别添加各方程源相。但是Fluent运行后并没有发生反应,查看发现arrhenius_rate=0,但是这些数据全部都是来自fluent?那么Fluent又是如何计算arrhenius_rate的呢?后来我认为将arrhenius_rate=1000.0,但是还是没有反应?不知道是怎么回事?请大神指点一下啊?模型说明在附件里面。

UDorcer 发表于 2016-1-20 15:44:21

首先,你要声明 #define ch40
                         #define o2   1
(编号为组分输运里面的顺序,第一个物质编号为0,依次类推)
其次,每个source宏里面加上dS=0;在return source 前一行。

shangm 发表于 2016-9-26 15:17:51

UDorcer 发表于 2016-1-20 15:44
首先,你要声明 #define ch40
                         #define o2   1
(编号为组分输运里面的顺序, ...

添加了您说的这两点还是没有反应发生,udf是加载在流体域中的源相内吧?

1056603471 发表于 2019-5-8 18:12:02

你应该没有给定参数吧,各组分的质量分数

ldq9112021 发表于 2022-11-7 09:57:30

楼主解决了吗
页: [1]
查看完整版本: FLUENT UDF化学反应