天天看點

openFOAM combustion子產品學習筆記——程式結構基礎資料combustion/chem檔案夾h2算例的執行chemFoam的源代碼

基礎資料

廢話不多說,首先羅列一些筆者參考的資料

openFOAM的官方網站為:https://openfoam.org/

東嶽流體網站:http://www.dyfluid.com/

本文使用的為openFOAM7版本,可以從網上下載下傳到提前預裝好的虛拟機,進而避免了安裝的麻煩。

openFOAM7安裝和虛拟機:http://www.dyfluid.com/docs/install.html

openFOAM7網頁使用者手冊:https://cfd.direct/openfoam/user-guide/

另外openFOAM還對應了一本英文的算法書《The Finite Volume Method in Computational Fluid Dynamics》,而且使用者手冊在CSDN可以找到中文翻譯版,其中一個版本主要為東嶽流體翻譯。

另外在b站也有很多線上的視訊資料,這裡不一一羅列。

combustion/chem檔案夾

我們主要關注燃燒,即如下路徑中的幾個算例以及其拓展

~/OpenFOAM/OpenFOAM-7/tutorials/combustion/
           

這個子產品中,包含如下部分:

[email protected]:~/OpenFOAM/OpenFOAM-7/tutorials/combustion$ ls
chemFoam        fireFoam  reactingFoam  XiFoam
coldEngineFoam  PDRFoam   XiEngineFoam
           

目前筆者正在閱讀的是chemFoam,這裡主要計算的是純化學反應。

[email protected]:~/OpenFOAM/OpenFOAM-7/tutorials/combustion$ cd chemFoam/
[email protected]:~/OpenFOAM/OpenFOAM-7/tutorials/combustion/chemFoam$ ls
gri  h2  ic8h18  ic8h18_TDAC  nc7h16  README
           

代碼還給我們準備了

README

檔案,内容如下:

Stiff chemistry solver validation test cases

gri    : GRI-Mech 3.0. CH4 combustion, 53 species, 325 reactions
h2     : H2 combustion, 10 species, 27 reactions
nc7h16 : n-Heptane combustion, 544 species, 2446 reactions
ic8h18 : iso-Octane combustion, 874 species, 3796 reactions

Results interpreted in 'validation' sub-directory, where OpenFOAM results
are compared against those predicted by CHEMKIN II.

Overall the best performing ODE solver is seulex followed closely by rodas23.
           

即目前幾個檔案夾分别對應幾個純化學反應,用來驗證剛性的化學反應求解器是否有效。并在

validation

中将目前結果與

CHEMKIN II

中的計算結果進行比較。結論是

seulex

rodas23

這兩個求解器性能較好。

h2算例的執行

我們參考OpenFOAM教程中的方法,首先将

h2

整個檔案夾複制到如下路徑:

[email protected]:~/OpenFOAM/dyfluid-7/run/h2/validation$ cd ~/OpenFOAM/OpenFOAM-7/tutorials/combustion/chemFoam/
[email protected]:~/OpenFOAM/OpenFOAM-7/tutorials/combustion/chemFoam$ cp -rf h2/ ~/OpenFOAM/dyfluid-7/run/
           

進入複制後的檔案夾中,運作方式有兩種,可以通過檔案夾中的

./Allrun

./Allclean

運作以及結果的删除,或者直接執行預設的指令

chemFoam

。注意兩者的差別,前者為編譯好的可執行檔案,後者為一個預設的指令。從執行結果來看,前者将本來應該輸出到終端的部分,儲存在了一個日志檔案

log.ChemFoam

中。

這裡給出一部分執行輸出:

[email protected]:~/OpenFOAM/dyfluid-7/run/h2$ chemFoam 
/*---------------------------------------------------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  7
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
Build  : 7-f1e51ce8d094
Exec   : chemFoam
Date   : Jun 08 2020
Time   : 21:36:19
Host   : "dyfluid"
PID    : 4519
I/O    : uncollated
Case   : /home/dyfluid/OpenFOAM/dyfluid-7/run/h2
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 10)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Overriding DebugSwitches according to controlDict
    SolverPerformance 0;

Constructing single cell mesh

Reading initial conditions.

Creating base fields for time 0
Reading thermophysical properties

Selecting thermodynamics package 
{
    type            heRhoThermo;
    mixture         reactingMixture;
    transport       sutherland;
    thermo          janaf;
    energy          sensibleEnthalpy;
    equationOfState perfectGas;
    specie          specie;
}

Selecting chemistryReader chemkinReader
Selecting chemistry solver 
{
    solver          ode;
    method          standard;
}

StandardChemistryModel: Number of species = 10 and reactions = 27
Selecting ODE solver seulex
Reading/calculating face flux field phi

pressure will be held constant.
 p   = 202650 [Pa]
 T   = 1000 [K] 
 rho = 0.589632 [kg/m^3]


Starting time loop

deltaT = 1e-07
Time = 1e-07

Qdot = -824.966, T = 1000, p = 202650, H2 = 0.0144672
ExecutionTime = 0.01 s  ClockTime = 0 s

deltaT = 1.9996e-07
Time = 2.9996e-07

Qdot = -789.321, T = 1000, p = 202650, H2 = 0.0144672
ExecutionTime = 0.01 s  ClockTime = 0 s

deltaT = 3.9976e-07
Time = 6.9972e-07

Qdot = -717.117, T = 1000, p = 202650, H2 = 0.0144672
ExecutionTime = 0.01 s  ClockTime = 0 s

deltaT = 7.9888e-07
Time = 1.4986e-06

Qdot = -575.829, T = 1000, p = 202650, H2 = 0.0144672
ExecutionTime = 0.01 s  ClockTime = 0 s

deltaT = 1.59776e-06
Time = 3.09636e-06

...

Number of steps = 45
End
           

chemFoam的源代碼

我們希望通過閱讀單獨的算例,了解openFOAM整體程式的運作機制,而不是純粹機械的改參數跑程式。而所有的程式代碼,儲存在如下路徑:

[email protected]:~/OpenFOAM/OpenFOAM-7/applications
           

我們剛才使用的

chemFoam

在其中的如下檔案夾中:

[email protected]:~/OpenFOAM/OpenFOAM-7/applications/solvers/combustion/chemFoam
           

其中包括如下内容:

[email protected]:~/OpenFOAM/OpenFOAM-7/applications/solvers/combustion/chemFoam$ ls
chemFoam.C              hEqn.H                   setDeltaT.H
createBaseFields.H      Make                     solveChemistry.H
createControls.H        output.H                 thermoTypeFunctions.H
createFieldRefs.H       pEqn.H                   YEqn.H
createFields.H          readControls.H
createSingleCellMesh.H  readInitialConditions.H
           

好!本帖就到這裡,接下來會嘗試閱讀這裡面源檔案的内容。

繼續閱讀