CFD Online Logo CFD Online URL
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Combustion Modelling with OF - Overview

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree13Likes
  • 3 Post By rhythm
  • 1 Post By t.oliveira
  • 9 Post By t.oliveira

LinkBack Thread Tools Search this Thread Display Modes
Old   June 24, 2015, 13:26
Default Combustion Modelling with OF - Overview
New Member
Join Date: Jun 2013
Posts: 3
Rep Power: 10
Evariste is on a distinguished road
I am relatively new with the combustion modelling in OpenFoam.
What I find hard from the user guide to understand is which models are currently available (like flamelet, PSR etc ).

So my questions are the following
1. Can someone provide the list of models available and how to "call" them in the constant/combustionProperties file? I went through the tutorials and for example at dieselEngien it is pretty clear it is a partially stirred reactor model however of at fireFoam it is an infinitely fast model. What I do not know though is how to find the full list of the models available

2. Any good tutorials/material relevant to Diesel Engine combustion modelling with OpenFoam

3. Any links to other models that do not come with the standard version of OpenFoam?

Evariste is offline   Reply With Quote

Old   December 11, 2015, 09:03
Ben Jankauskas
Join Date: Jun 2013
Location: Exeter
Posts: 34
Rep Power: 10
rhythm is on a distinguished road

I can help you with your first question, unfortunately I have no idea about the 2nd and the 3rd.

There couple of ways of finding out the models currently available in OpenFOAM.

First one involves making the solver complain and output all the possible model combinations to you when you try to run it. This can be done by modifying $FOAM_CASE/constant/combustionProperties and changing the name value after combustionModel to anything else, eg. dummy

An example from modified combustionProperties file:
combustionModel  dummy<psiChemistryCombustion>;
Trying to run reactingFoam with this modification you would get the following output:

Selecting combustion model dummy<psiChemistryCombustion>

Unknown psiCombustionModel type dummy<psiChemistryCombustion>

Valid  combustionModels are : 

There is one problem with this method. Depending on your case setup in other files, some of the options may not be included in here, for instance, there is a class rhoThermoCombustion and in a different case setup these options would be output for you.
It is a good when you want to find out possible model options for your case, but if you would like to learn about ALL of the models and their combinations, then you might miss out some of them.
Nonetheless, this is a great and quick way to do it.

Second option requires you to look through the code. Inside $FOAM_SRC there is a folder called combustionModels it contains base class, all derived classes and finally all runtime selectable derived classes.

Here's an example of what is inside $FOAM_SRC/combustionModels:
Inside of runtime selectable models like PaSR or FSD, there is always a file '*s.C'; this is where the runtime selectable options/combinations are declared and some of these are output by the solver.

Hope this gives you a good enough idea.

Marpole, Kummi and labyrinth01 like this.
rhythm is offline   Reply With Quote

Old   December 27, 2015, 19:38
Default Models available
Senior Member
Thomas Oliveira
Join Date: Apr 2015
Posts: 114
Rep Power: 10
t.oliveira is on a distinguished road
Originally Posted by rhythm View Post
Inside of runtime selectable models like PaSR or FSD, there is always a file '*s.C'; this is where the runtime selectable options/combinations are declared
This is the list of the 30 models available in OpenFOAM 2.4.x, compiled from the *s.C files:

makeCombustionTypes(noCombustion, psiThermoCombustion, psiCombustionModel);
makeCombustionTypes(noCombustion, rhoThermoCombustion, rhoCombustionModel);
makeCombustionTypes(laminar, psiChemistryCombustion, psiCombustionModel);
makeCombustionTypes(laminar, rhoChemistryCombustion, rhoCombustionModel);
makeCombustionTypes(PaSR, psiChemistryCombustion, psiCombustionModel);
makeCombustionTypes(PaSR, rhoChemistryCombustion, rhoCombustionModel);
makeCombustionTypesThermo(diffusion, psiThermoCombustion, constGasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(diffusion, psiThermoCombustion, constGasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(diffusion, psiThermoCombustion, gasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(diffusion, psiThermoCombustion, gasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(diffusion, rhoThermoCombustion, constGasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(diffusion, rhoThermoCombustion, constGasHThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(diffusion, rhoThermoCombustion, gasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(diffusion, rhoThermoCombustion, gasHThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(FSD, psiThermoCombustion, constGasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(FSD, psiThermoCombustion, constGasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(FSD, psiThermoCombustion, gasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(FSD, psiThermoCombustion, gasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(FSD, rhoThermoCombustion, constGasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(FSD, rhoThermoCombustion, constGasHThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(FSD, rhoThermoCombustion, gasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(FSD, rhoThermoCombustion, gasHThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, psiThermoCombustion, constGasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, psiThermoCombustion, constGasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, psiThermoCombustion, gasEThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, psiThermoCombustion, gasHThermoPhysics, psiCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, rhoThermoCombustion, constGasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, rhoThermoCombustion, constGasHThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, rhoThermoCombustion, gasEThermoPhysics, rhoCombustionModel);
makeCombustionTypesThermo(infinitelyFastChemistry, rhoThermoCombustion, gasHThermoPhysics, rhoCombustionModel);
Kummi likes this.
t.oliveira is offline   Reply With Quote

Old   December 27, 2015, 21:03
Default Available models depicted
Senior Member
Thomas Oliveira
Join Date: Apr 2015
Posts: 114
Rep Power: 10
t.oliveira is on a distinguished road
The following numbered list summarises some research on the documentation and on the code about the combustion models available. This post makes more sense if read together with the previous post.

1) For each compressibility-based model (psi*), the correspondent density-based model (rho*) is available. For the sake of simplicity, just the psi* models are addressed in the next points.

2) The file makeCombustionTypes.H defines the macros makeCombustionTypes and makeCombustionTypesThermo. From it:

2.1) psiCombustionModel is the RTS (runtime selection) table to which the constructor of the class is added.

2.2) makeCombustionTypes adds to the RTS table a class CombModel<CombType>.
CombModel is [noCombustion | laminar | PaSR].
CombType is psiThermoCombustion for noCombustion, or psiChemistryCombustion for laminar and PaSR.

2.3) makeCombustionTypesThermo adds to the RTS table a class CombModel<CombType, Thermo>.
CombModel is [diffusion | FSD | infinitelyFastChemistry].
CombType is psiThermoCombustion.
Thermo is [constGasEThermoPhysics | constGasHThermoPhysics | gasEThermoPhysics | gasHThermoPhysics].

3) In the file thermoPhysicsTypes.H, we have:
typedef constTransport<species::thermo< hConstThermo<perfectGas<specie>>, sensibleInternalEnergy >> constGasEThermoPhysics
typedef constTransport< species::thermo < hConstThermo < perfectGas<specie> >, sensibleEnthalpy > > constGasHThermoPhysics
typedef sutherlandTransport< species::thermo < janafThermo < perfectGas<specie> >, sensibleInternalEnergy > > gasEThermoPhysics
typedef sutherlandTransport< species::thermo < janafThermo < perfectGas<specie> >, sensibleEnthalpy > > gasHThermoPhysics

3.1) The relevant template classes are:
constTransport<Thermo> and sutherlandTransport<Thermo>
species::thermo<Thermo, Type>
hConstThermo<EquationOfState> and janafThermo<EquationOfState>

3.2) constGasEThermoPhysics and constGasHThermoPhysics are constTransport, i.e., they use constant values for dynamic viscosity, thermal conductivity and thermal diffusivity. They also use hConstThermo, i.e., constant thermodynamic properties.

3.3) gasEThermoPhysics and gasHThermoPhysics are sutherlandTransport, i.e., they use values for dynamic viscosity, thermal conductivity and thermal diffusivity that depend on pressure and temperature. They also use janafThermo, i.e., the thermodynamic properties are evaluated from pressure and temperature using JANAF tables.

3.4) constGasEThermoPhysics and gasEThermoPhysics uses sensibleInternalEnergy, i.e., the sensible internal energy is used in the energy equation. According to, "we refer to absolute energy where heat of formation is included, and sensible energy where it is not."

3.5) constGasHThermoPhysics and gasHThermoPhysics uses sensibleEnthalpy, i.e., the enthalpy is used in the energy equation.

I hope this helps.

Last edited by t.oliveira; December 28, 2015 at 13:37.
t.oliveira is offline   Reply With Quote


combustio, combustion engine, combustion model

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On

Similar Threads
Thread Thread Starter Forum Replies Last Post
Combustion modelling in OpenFOAM - Difficulties AleDR OpenFOAM Running, Solving & CFD 23 January 30, 2021 23:40
Modelling Combustion in Porous Zone tanjinjack FLUENT 2 September 26, 2016 04:10
modelling combustion in micro gas turbine zackufairu ANSYS 0 April 10, 2015 02:33
Combustion modelling with energy source Marc_L FLUENT 0 July 13, 2010 07:58
Combustion Modelling Ridwan FLUENT 1 June 27, 2005 09:43

All times are GMT -4. The time now is 06:36.