问题描述:
OpenFOAM的SprayFoam能够计算液体喷雾,但其自带的燃油物性库有限,不一定能满足日益多样化的需求,如果贸然使用新燃油,可能导致报错,Unknown liquidProperties type xxxx,此时需要到其物性库去添加该组分的液体物性。
解决步骤:
1. 创建新燃油组分对应目录
本文以OpenFOAM5.x为例,添加自定义物性。
首先进入到燃油物性库的源码目录:
cd $FOAM_SRC/thermophysicalModels/thermophysicalProperties/liquidProperties
可以看到所有的自带液体燃油物性存放于此。
以C7H16为范本,新建燃油文件目录,例如CxHxOx:
cp -r C7H16 CxHxOx
进入该目录,使用sed命令批量替换,将该目录下的所有文件中C7H16全部替换为CxHxOx:
sed -i "s/C7H16/CxHxOx/g" `grep -rl C7H16 ./C7H16I.H`
sed -i "s/C7H16/CxHxOx/g" `grep -rl C7H16 ./C7H16.H`
sed -i "s/C7H16/CxHxOx/g" `grep -rl C7H16 ./C7H16.C`
此时C7H16I.H,C7H16.H,C7H16.C文件中的C7H16都被替换了。
将C7H16文件名也修改为CxHxOx:
mv C7H16I.H CxHxOxI.H
mv C7H16.H CxHxOx.H
mv C7H16.C CxHxOx.C
2. 录入燃油物性
打开CxHxOx.C 文件,录入燃油物性:
liquidProperties(
//molecular weight
scalar W
//- Critical temperature [K]
scalar Tc_;
//- Critical pressure [Pa]
scalar Pc_;
//- Critical volume [m^3/kmol]
scalar Vc_;
//- Critical compressibility factor []
scalar Zc_;
//- Triple point temperature [K]
scalar Tt_;
//- Triple point pressure [Pa]
scalar Pt_;
//- Normal boiling temperature [K]
scalar Tb_;
//- Dipole moment []
scalar dipm_;
//- Pitzer's accentric factor []
scalar omega_;
//- Solubility parameter [(J/m^3)^0.5]
scalar delta_;
)
其余参数物理含义为:
//- Vapour pressure [Pa]
virtual scalar pv(scalar p, scalar T) const = 0;
//- Heat of vapourisation [J/kg]
virtual scalar hl(scalar p, scalar T) const = 0;
//- Liquid enthalpy [J/kg] - reference to 298.15 K
virtual scalar h(scalar p, scalar T) const = 0;
//- Vapour heat capacity [J/(kg K)]
virtual scalar Cpg(scalar p, scalar T) const = 0;
//- Liquid viscosity [Pa s]
virtual scalar mu(scalar p, scalar T) const = 0;
//- Vapour viscosity [Pa s]
virtual scalar mug(scalar p, scalar T) const = 0;
//- Liquid thermal conductivity [W/(m K)]
virtual scalar kappa(scalar p, scalar T) const = 0;
//- Liquid thermal diffusivity of enthalpy [kg/ms]
inline scalar alphah(const scalar p, const scalar T) const;
//- Vapour thermal conductivity [W/(m K)]
virtual scalar kappag(scalar p, scalar T) const = 0;
//- Surface tension [N/m]
virtual scalar sigma(scalar p, scalar T) const = 0;
//- Vapour diffussivity [m2/s]
virtual scalar D(scalar p, scalar T) const = 0;
//- Vapour diffussivity [m2/s] with specified binary pair
virtual scalar D(scalar p, scalar T, scalar Wb) const = 0;
//- Invert the vapour pressure relationship to retrieve the
// boiling temperuture as a function of pressure
virtual scalar pvInvert(scalar p) const;
OpenFOAM按照美国国家标准数据(NSRDS)的形式组织以上物性,具体可以参考Perry’s Chemical Engineers’ Handbook工具书,该书提供多种组分的化学物理性质。
3. 编译新添加库文件
进入thermophysicalProperties的Make文件所在目录:
cd $FOAM_SRC/thermophysicalModels/thermophysicalProperties/
在Makle/files添加要编译文件:
vim Make/files
添加以下文件
liquidProperties/CxHxOx/CxHxOx.C
然后wmake编译
wmake
最后为了稳妥起见,将$FOAM_SOLVERS/lagrangian/sprayFoam求解器也重新编译一遍。
最后,使用sprayFoam计算新燃油CxHxOx喷雾,正常识别,不会报错 Unknown liquidProperties了。