我在复现一篇用欧拉双流体方法复现流化床甲烷干重整反应的论文,我找不出来有什么问题,udf中公式的表达是没问题的,这个模型不使用UDF可以正常计算,但是一使用了UDF就会报错。而这个UDF在另外一个简单的模型里使用没有问题。有大佬帮我看看什么问题吗?
# include "udf.h"
# include "mem.h"
DEFINE_VR_RATE(rate, c, t, r, wk, yk, rate, rr_t)
{
#define UGC 8.314
real T = C_T(c, t);
real k1 = 1.29e6 * exp(-102065.0 / UGC / C_T(c, t));
real k2 = 0.35e6 * exp(-81030.0 / UGC / C_T(c, t));
real k3 = 6.95e3 * exp(-58893.0 / UGC / C_T(c, t));
real k4 = 5.55e9 * exp(-166397.0 / UGC / C_T(c, t));
real k5 = 1.34e15 * exp(-243835.0 / UGC / C_T(c, t));
real Kco2_1 = 2.61e-2 * exp(37641.0 / UGC / C_T(c, t));
real Kch4_1 = 2.60e-2 * exp(40684.0 / UGC / C_T(c, t));
real Kco2_2 = 0.5771 * exp(9262.0 / UGC / C_T(c, t));
real Kh2_2 = 1.494 * exp(6025.0 / UGC / C_T(c, t));
real Kch4_3 = 0.21 * exp(-567.0 / UGC / C_T(c, t));
real Kh2_3 = 5.18e7 * exp(-133210.0 / UGC / C_T(c, t));
real Kh2_4 = 1.83e13 * exp(-216145.0 / UGC / C_T(c, t));
real Kh2o_4 = 4.73e-6 * exp(97770.0 / UGC / C_T(c, t));
real Kch4_4 = 3.49 * exp(-0 / UGC / C_T(c, t));
real Kco_5 = 7.34e-6 * exp(100395.0 / UGC / C_T(c, t));
real Kco2_5 = 2.81e7 * exp(-104085.0 / UGC / C_T(c, t));
real Kp1 = 6.78e14 * exp(-259660.0 / UGC / C_T(c, t));
real Kp2 = 56.4971 * exp(-36580.0 / UGC / C_T(c, t));
real Kp3 = 2.95e5 * exp(-84400.0 / UGC / C_T(c, t));
real Kp4 = 1.3827e7 * exp(-125916.0 / UGC / C_T(c, t));
real Kp5 = 1.9393e9 * exp(-168527.0 / UGC / C_T(c, t));
real mCO = C_YI(c, t, 0);
real mH2 = C_YI(c, t, 1);
real mH2O = C_YI(c, t, 2);
real mCH4 = C_YI(c, t, 3);
real mCO2 = C_YI(c, t, 4);
real pOp = 101325;
real sum = (mCH4 / 16 + mCO2 / 44 + mCO / 28 + mH2 / 2 + mH2O / 18);
real PCH4 = mCH4 / 16 / sum * pOp;
real PCO2 = mCO2 / 44 / sum * pOp;
real PCO = mCO / 28 / sum * pOp;
real PH2 = mH2 / 2 / sum * pOp;
real PH2O = mH2O / 18 / sum * pOp;
if (!strcmp(r->name, "reaction-1")
{
*rate = k1 * Kco2_1 * Kch4_1 * (PCH4 / 101325) * (PCO2 / 101325) / pow((1 + Kco2_1 * (PCO2 / 101325) + Kch4_1 * (PCH4 / 101325)), 2) * (1 - pow(((PCO / 101325) * (PH2 / 101325)), 2) / (Kp1 * (PCH4 / 101325) * (PCO2 / 101325)));
C_UDMI(c, t, 0) = *rate;
}
else if (!strcmp(r->name, "reaction-2")
{
*rate = k2 * Kco2_2 * Kh2_2 * (PCO2 / 101325) * (PH2 / 101325) / pow((1 + Kco2_2 * (PCO2 / 101325) + Kh2_2 * (PH2 / 101325)), 2) * (1 - (PCO / 101325) * (PH2O / 101325) / (Kp2 * (PCO2 / 101325) * (PH2 / 101325)));
C_UDMI(c, t, 1) = *rate;
}
else if (!strcmp(r->name, "reaction-3")
{
*rate = k3 * Kch4_3 * ((PCH4 / 101325) - (pow((PH2 / 101325), 2) / Kp3)) / pow((1 + Kch4_3 * (PCH4 / 101325) + 1 / Kh2_3 * pow((PH2 / 101325), 1.5)), 2);
C_UDMI(c, t, 2) = *rate;
}
else if (!strcmp(r->name, "reaction-4")
{
*rate = k4 / Kh2o_4 * ((PH2O / 101325) / (PH2 / 101325) - (PCO / 101325) / Kp4) / pow((1 + Kch4_4 * (PCH4 / 101325) + ((PH2O / 101325) / (PH2 / 101325)) / Kh2o_4 + pow((PH2 / 101325), 1.5) / Kh2_4), 2);
C_UDMI(c, t, 3) = *rate;
}
else if (!strcmp(r->name, "reaction-5")
{
*rate = k5 / Kco_5 / Kco2_5 * ((PCO2 / 101325) / (PCO / 101325) - (PCO / 101325) / Kp5) / pow((1 + Kco_5 * (PCO / 101325) + ((PCO2 / 101325) / (PCO / 101325)) / (Kco_5 * Kco2_5)), 2);
C_UDMI(c, t, 4) = *rate;
}
*rr_t = *rate;
}@wuming524 |