火焰面模型
目前现有的第三方火焰面模型包括Müller等开发的flameletFoam[3],以及Cuoci等开发的flameletSMOKE[4]。本文主要对flameletFoam的安装使用进行详细说明,并介绍基于flameletFoam的SandiaD湍流射流火焰的数值模拟。
1
flameletFoam简介及安装说明
flameletFoam是由慕尼黑联邦国防大学的Hagen Müller等[3]开发的OpenFOAM第三方软件包,适用于OpenFOAM-2.3.x,2.3.0和2.1.x环境,其安装文件可在github网站上下载:
https://github.com/flameletFoam/flameletFoam-2.3.x
flameletFoam求解模块由四个部分组成
1 | Cantera-CounterflowFlame,层流火焰面建表程序 |
2 | canteraToFoam,层流火焰面数据的湍流积分程序 |
3 | flameletFoam,火焰面模型求解器 |
4 | flameletFoamPost,后处理程序,可依据混合分数平均值、方差和标量耗散率,查表生成各组分质量分数的场文件 |
OpenFOAMWiki上的flameletFoam主页就以上模块的安装及使用进行了说明:
https://openfoamwiki.net/index.php/Extend-bazaar/solvers/combustion/flameletFoam
鉴于flameletFoam软件包的安装过程略为复杂,且不同版本的linux系统编译安装步骤存在差异,下面以基于OpenFOAM-2.3.x的flameletFoam安装为例,分别就不同组件安装需注意的事项进行了详细说明。
01
OpenFOAM-2.3.x的安装
首先通过git下载OpenFOAM2.3.x的安装包
部分常用linux系统下的安装方法可参看以下链接中关于安装OpenFOAM-2.3.1的说明:
https://openfoamwiki.net/index.php/Installation
至于其他发行版本的GNU/linux系统,可参照说明中与其编译环境相似的linux系统的安装方法。编译安装过程中,需要注意以下几点:
系统的默认gcc版本高于5.4(如最新的Manjaro Linux等)会导致OpenFOAM-2.3.x安装过程中wmake编译失败。针对该问题,可自行安装gcc-5,并修改$WM_PROJECT_DIR/wmake/rules/linux64Gcc文件夹下的c和c++文件,替换文件内的'gcc'、'g++'为'gcc-5'和’g++-5',即可成功编译。
较新的GNU/Linux发行版本中,为保证OpenFOAM-2.3.x成功编译,通常需要在wmake编译前,于OpenFOAM-2.3.x目录下运行以下命令修改源文件中flex版本的检测方式:
find src applications -name "*.L" -type f | xargs sed -i -e's=\(YY\_FLEX\_SUBMINOR\_VERSION\)=YY_FLEX_MINOR_VERSION < 6 \&\&\1='
ThirdParty中的paraview编译耗时较长,且容易出错。可自行下载安装最新版本的paraview安装,并在.bashrc环境变量文件里添加以下行:
alias paraFoam="paraFoam -builtin"
即可利用paraFoam命令实现算例的后处理功能。
02
Cantera-2.0.0及
Cantera-CounterflowFlame的安装
Cantera是目前最常用的开源化学反应动力学计算程序[5],flameletFoam使用的层流火焰面建表程序Cantera-CounterflowFlame就是基于Cantera-2.0.0编写的。
安装Cantera-2.0.0及Cantera-CounterflowFlame之前,需要保证已安装以下依赖软件包:scons g++ sconslibboost-all-dev libsundials-serial-dev subversion libblas-dev liblapack-devlibf2c2-dev。以上软件包的名称对应ubuntu16.04软件源中的命名,其他linux版本中的命名可能不同。同时需要注意的是,如果Linux系统软件源中包含的sundials版本较新,会导致编译出错,需在sundials官网上下载老版本(如2.3)自行编译安装。
安装好软件包后,依照flameletFoam主页安装说明的步骤编译安装Cantera-2.0.0及Cantera-CounterflowFlame即可。编译Cantera-CounterflowFlame成功后得到可执行文件flamelet。
03
flameletFoam的安装
flameletFoam求解器安装编译过程中需要注意的问题与OpenFOAM-2.3.x编译过程基本相同,注意编译环境下GCC的版本以及修改源文件中flex版本的检测方式即可。
火焰面模型适用的前提为燃烧的化学反应速率远快于湍流时间尺度,但未达到无限快,湍流火焰可视为一系列层流小火焰的集 合。火焰面模型的应用可分为以下三部分:
01
层流火焰面建表
在开展湍流燃烧模拟前,通过求解基于混合分数Z的火焰面方程,计算一系列不同χst(化学当量比处的标量耗散率)下的层流对撞扩散火焰(图1),得到表征层流小火焰结构的层流火焰面解Yk (Z, χst)、T (Z, χst),其中Yk 代表各组分的质量分数,T 为温度。
图1层流对撞扩散火焰示意图
该步骤可通过在文件夹Cantera-CounterflowFlame内运行可执行文件flamelet实现,
./flamelet
对撞火焰的边界条件,包括初始温度、压力、组分质量分数等,可在input.txt文件内设置。通过改变气体流量控制χst 值,得到一系列层流火焰面表(图2)。
图2 层流火焰面表
将生成的层流火焰面表移动到tables文件夹中,并拷贝至当前算例文件夹下。
02
层流火焰面的湍流积分
湍流场中某瞬时的物理量为随机的脉动值,其时间平均值可通过假定概率密度函数(PDF)并按以下公式进行湍流积分获得:
假定P(Z, χst) = P(Z)P(χst), 其中P(Z)服从β函数分布,P(χst)服从 Dirac-delta函数分布。积分后可得到湍流火焰面表:
实际操作时,需要将flameletFoam自带tutorials算例中constant文件夹下的tableProperties文件拷贝至本算例。修改tableProperties文件,chi_param对应层流火焰面表中的χst值,Z_param为归一化后的混合分数方差值,其取值在(0-1)范围内,Z_param为查表时使用的混合分数插值点。设置完成后,在算例文件夹内运行以下命令:
canteraToFoam
即可得到对应每个组分质量分数以及温度值的湍流火焰面表。
图3 湍流积分后的火焰面表
03
flameletFoam求解
拷贝tutorials算例constant文件夹下的combustionProperties文件至constant文件夹内,设置好算例后,运行求解器即可开始基于火焰面模型的湍流燃烧计算:
flameletFoam
为节约硬盘空间,计算结果中只保存了Z、Zeta和chi这些查表变量的值。在算例文件夹下运行以下命令即可生成需要查看的组分质量分数场。
flameletFoamPost -latestTime -fields '(CH4 O2 CO2 OH)'
图 4 Sydney Burner Geometry
图5 SandiaD火焰结构示意
SandiaD火焰由中心的燃料射流、外环的值班射流及边缘的空气伴流构成。中心射流为25%甲烷和75%空气的富燃预混气体,值班射流为包含乙炔、氢气、空气等组分的高温贫燃(当量比0.77)预混气体,可起到驻定火焰的作用。火焰的具体特征参数可查询Sandia官方网站:
https://www.sandia.gov/TNF/DataArch/FlameD.html
高版本的OpenFOAM5/6的tutorials中包含了SandiaD火焰的RANS模拟算例,可直接拷贝其算例文件,并依照低版本的OpenFOAM-2.3.x文件格式对部分文件进行修改。依照第二部分的说明对SandiaD扩散火焰进行火焰面建表,经积分生成湍流火焰面数据表,拷贝flameletFoam的tutorials算例constant文件夹下的combustionProperties文件至本算例constant文件夹内。设置完毕后即可运行flameletFoam命令开始火焰面求解。
计算解达到稳态后,采用ParaView生成得到的Favre平均温度分布云图,并基于Gnuplot绘制中轴线上的平均温度及组分质量分数分布对比曲线。温度分布云图如图6中的左图所示,右图展示了分别采用火焰面模型(SLF)和计算详细反应机理的涡旋耗散模型(EDC)得到的火焰在中轴线上的平均温度分布与实验测量值(EXP)之间的对比。可以看出,SLF可得到与求解详细反应机理的EDC模型相近的温度分布,并与实验测量值之间保持较小的误差。由图7可见,中轴线上CO2和H2O的Favre平均组分质量分数分布趋势与温度分布基本一致。由此可见,采用flameletFoam对SandiaD湍流火焰进行RANS模拟,在维持低计算量的同时,可以实现接近直接求解详细反应机理方法的模拟精度。
图 7 中轴线上CO2和H2O的Favre平均组分质量分数分布对比
【参考文献】
[1] Peters N. Laminar diffusionflamelet models in non-premixed turbulent combustion[J]. Progress in energy andcombustion science, 1984, 10(3): 319-339.
[2] Peters N. Turbulentcombustion[M]. Cambridge university press, 2000.
[3] Müller H, Ferraro F, Pfitzner M. Implementation of a Steady LaminarFlamelet Model for non-premixed combustion in LES and RANS simulations[C]. 8thInternational OpenFOAM Workshop. 2013: 1-12.
[4] Cuoci A, Frassoldati A,Faravelli T, et al. OpenSMOKE++: An object-oriented framework for the numericalmodeling of reactive systems with detailed kinetic mechanisms[J]. ComputerPhysics Communications, 2015, 192: 237-264.
[5] David G. Goodwin, Raymond L.Speth, Harry K. Moffat, and Bryan W. Weber. Cantera: An object-orientedsoftware toolkit for chemical kinetics, thermodynamics, and transportprocesses. https://www.cantera.org, 2018. Version 2.4.0.