CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   Real gases (

lorenzo March 22, 2006 12:34

Hi to all. The problem I'm
Hi to all.

The problem I'm pointing to is that OpenFOAM thermophysicalModels can only take account for ideal gases equation of state.
In which manner can I take account for the real gases covolume non-ideality according to Able-Nobel gas equation of state { P(1/rho-b)=RT ; b=const }?
Perfect gases are defined in OpenFOAM-1.2/src/thermophysicalModels/specie/equationofState/perfectGas.
I think I can create a clone of this definition as ablenobleGas, and then?
Have I to recompile OpenFOAM?
How to select 'b' parameter?

Thanks for any suggestion


hjasak March 23, 2006 07:32

What you need to do is: - wri
What you need to do is:
- write the ablenobleGas implementation based on the perfectGas
- have a look at the instantiated combinations of thermo using the gas equations of state. Examples are e.g.
for basic thermo in: thermophysicalModels/basic/basicThermo/basicThermos.C

for combustion in thermophysicalModels/combustion/hCombustionThermo/hCombustionThermos.C
- instantiate the combinations you want for yourself and pick them from a run-time selection table in the application. Example is: $FOAM_TUTORIALS/sonicTurbFoam/nacaAirfoil/constant/thermophysicalProperties



lorenzo March 23, 2006 08:00

Thanks for guidelines. I will
Thanks for guidelines.
I will try it in the next few days...



cliffoi March 26, 2009 10:04

This particular discussion is along the lines of the problem I am now looking at.
I have similar questions around implementing custom thermo functions? I am trying to implment the German KTA 3102.1 standard helium gas properties. As I see it, it's relatively straightforward to copy the perfectGas class and implement the required equation of state. I have a question around the definition of compressibility though. The comments in perfectGas say that it is rho/p and it looks like basicThermo calculates density using p*psi which supports this. I would have expected the derivative drho/dp to apply. Can somebody please tell me which is correct?
I am finding the implementation of a new transport class somewhat trickier than originally expected as well. I have noticed in both constTransport and sutherlandTransport that mu, kappa and alpha are functions of temperature only. My question is, what are the implications of these being functions of both temperature and pressure?

Thanks in advance

marico April 29, 2009 02:32


I just tried to implement the Redlich-Kwong-Soave equationofstate.
Therefore I defined the necessary constants and some "help-functions"
for calculating rho analytically. These functions have the same
definition "inline scalar perfectGas::FUNCTION() const" as rho, psi...:
Last step I calculate psi with rho:

00077 //- Return compressibility rho/p [s^2/m^2]
00078 inline scalar perfectGas:: psi(scalar, scalar T) const
00079 {
00080 return rho/p;
00081 }

1. sorry for no education: what excactly has to stand in the parentheses:

e. g. perfectGas:: psi(scalar, scalar T)

...if I use a "help-function" perfectGas::sCoeff depending on T, and finally
define the function perfectGas::rho... Has it to be T or sCoeff in the
parentheses for rho???

2. What are the member operators for (e.g. perfectGas:: operator+=) and the
friend operators (e. g. operator+)??

My equationOfState gets compiled but makes non-physical densities.
If the constants in the parentheses are not these used in the "help-functions"
I get the error message:

invalid use of member (did you forget the '&'?)

Thanks for Your help

haghajani August 11, 2009 12:34

Real gas EOS for reactingFoamType solvers
Dear all,

I added new Equation of state (peng Robinson), works with compressible solvers e.g."sonicTurbFoam", but I need to utilize reactingFoam to model high pressure carbon dioxide release in Air (near saturation line).
Before reading this Thread, I created a new chemistryReader with sutherlandTransport<specieThermo<janafThermo<pengR obinson>>> defined in typedef. Then defined a new chemistry Model, new reacting mixture and new chemistrySolver to make reactingFoam read from pengRobinson Eos.

Running the compiled updated solver throws a bad_cast error.

Would you please share your idea, regarding defining a real gas model coupled with combustion solver as reactingfoam?

Best regards,

haghajani August 12, 2009 12:58

Peng Robinson EOS implementation in OF-1.6
Dear All,

Please correct me if I am wrong;

To implement Peng Robinson EOS in OF-1.6, I should update hCombustionThermos.C, by adding:
mGasThermoPhysics // which I should modify in ThermoPhysicalTypes.H
// its for is say.,sutherlandTransport<specieThermo<janafThermo<pengRobinson>>>

Best regards,

All times are GMT -4. The time now is 01:40.