OpenFOAM 中使用 chemkin 机理注意事项

chemkin 格式的机理在 OpenFOAM 中使用须知

  1. 首先,全部转化为大写。

  2. 如果计算液态燃料,需要使用燃料的物性,那么燃料名字必须和OF的物性库中的名字一致。比如:NC7H16 全部改成 C7H16,chem 和 thermo 都要改。

  3. thermo 文件中,改成 C7H16 的那一行,错位了,修正一下。

  4. 热物性中,最后一列是 1 2 3 4,如果前边有其它数,需要删掉。

  5. 热物性第一行,THERMO 要改成 THERMO ALL。

  6. thermophysicalProperties 中,不要选用 new format

  7. 在 Linux 下,使用 dos2unix,转化格式。

  8. 运行一遍算例,如果仍有错误,按错误提示修改。

  9. 如果没有格式错误,后边计算组分的时候,第一步就报错,检查一下机理里边 TROE 后边的 4 个数,看有没有 0 ,若有,改成 1E-30。
    报错信息:

    #3  Foam::ReversibleReaction<Foam::Reaction, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> >, Foam::FallOffReactionRate<Foam::ArrheniusReactionRate, Foam::TroeFallOffFunction> >::kf(double, double, Foam::Field<double> const&) const
    #4 Foam::Reaction<Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::omega(double, double, Foam::Field<double> const&, double&, double&, int&, double&, double&, int&) const
    #5 Foam::Reaction<Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::dwdc(double, double, Foam::Field<double> const&, Foam::SquareMatrix<double>&, Foam::Field<double>&, double&, double&, double&, bool, Foam::List<int> const&) const
    #6 Foam::StandardChemistryModel<Foam::psiReactionThermo, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::jacobian(double, Foam::Field<double> const&, Foam::Field<double>&, Foam::SquareMatrix<double>&) const
    #7 Foam::seulex::solve(double&, Foam::Field<double>&, Foam::ODESolver::stepState&) const
    #8 Foam::ODESolver::solve(double, double, Foam::Field<double>&, double&) const
    #9 Foam::ode<Foam::StandardChemistryModel<Foam::psiReactionThermo, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > > >::solve(Foam::Field<double>&, double&, double&, double&, double&) const
    #10 double Foam::StandardChemistryModel<Foam::psiReactionThermo, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::solve<Foam::UniformField<double> >(Foam::UniformField<double> const&)
    #11 Foam::StandardChemistryModel<Foam::psiReactionThermo, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::solve(double)
    #12 Foam::combustionModels::laminar<Foam::psiReactionThermo>::correct()
    #13 Foam::combustionModels::PaSR<Foam::psiReactionThermo>::correct()

    检查错误时,最外层的错误显示在最前面。比如这里的错误根源就是 ReversibleReaction::kf 函数。而最后面的错误表示是在 PaSR::correct() 中,经过层层调用,最终调用了 ReversibleReaction::kf 函数。
    从这里还能够看出来,ReversibleReaction 的模板是 ReactiongasHThermoPhysicsFallOffReactionRate。而 FallOffReactionRate 的模板是 ArrheniusReactionRateTroeFallOffFunction
    Reaction 的模板是 gasHThermoPhysics
    StandardChemistryModel 的模板是 psiReactionThermogasHThermoPhysics
    这里的 gasHThermoPhysicssutherlandTransport<species::thermo<janafThermo<perfectGas<specie>>,sensibleEnthalpy>> 的别名。

  10. 如果发散(最大迭代数溢出),把 therm.dat 文件中每个组分的 temperature range(主要是 T common) 改成一致就可以了。解决方案来自 CFD-Online 可以使用 chemkin 中的 Utility/FitData 功能来修正 temperature range。

一个正确的机理文件(删减版)示范:
chem.inp 文件(这是一个甲烷的机理,完整版点击这里机理来源点击这里):

ELEMENTS                                                                        
O H C N AR
END
SPECIES
H2 O2
END
REACTIONS
O+HO2<=>OH+O2 2.000E+13 0.000 0.00
END

therm.dat 文件(完整版点击这里):

THERMO ALL
200.000 1000.000 5000.000
O L 1/90O 1 00 00 00G 200.000 3500.000 1000.0 1
2.56942078E+00-8.59741137E-05 4.19484589E-08-1.00177799E-11 1.22833691E-15 2
2.92175791E+04 4.78433864E+00 3.16826710E+00-3.27931884E-03 6.64306396E-06 3
-6.12806624E-09 2.11265971E-12 2.91222592E+04 2.05193346E+00 6.72540300E+03 4
END

请严格按照这个示范文件来修改你的机理文件。
比如 therm.dat 文件的第二行中的三个数字,它们所在的列数区间是有严格限制的。

在第二行的 1-30 列上给出低温、常温、高温三个温度范围,每个数字均匀分布在 10 列位置上。

再如这两个文件中的 END 一定不要漏掉。

文章作者: Yan Zhang
文章链接: https://openfoam.top/chemkin/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OpenFOAM 成长之路
微信打赏给博主更多动力吧~