rPolynomial: New equation of state for liquids and solids

Description
    Reciprocal polynomial equation of state for liquids and solids

    \f[
        1/\rho = C_0 + C_1 T + C_2 T^2 - C_3 p - C_4 p T
    \f]

    This polynomial for the reciprocal of the density provides a much better fit
    than the equivalent polynomial for the density and has the advantage that it
    support coefficient mixing to support liquid and solid mixtures in an
    efficient manner.

Usage
    \table
        Property     | Description
        C            | Density polynomial coefficients
    \endtable

    Example of the specification of the equation of state for pure water:
    \verbatim
    equationOfState
    {
        C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
    }
    \endverbatim
    Note: This fit is based on the small amount of data which is freely
    available for the range 20-65degC and 1-100bar.

This equation of state is a much better fit for water and other liquids than
perfectFluid and in general polynomials for the reciprocal of the density
converge much faster than polynomials of the density.  Currently rPolynomial is
quadratic in the temperature and linear in the pressure which is sufficient for
modest ranges of pressure typically encountered in CFD but could be extended to
higher order in pressure and/temperature if necessary.  The other huge advantage
in formulating the equation of state in terms of the reciprocal of the density
is that coefficient mixing is simple.

Given these advantages over the perfectFluid equation of state the libraries and
tutorial cases have all been updated to us rPolynomial rather than perfectFluid
for liquids and water in particular.
This commit is contained in:
Henry Weller
2019-08-31 11:57:17 +01:00
parent 7c133e3952
commit 4817971e13
47 changed files with 962 additions and 146 deletions

View File

@ -41,7 +41,7 @@ License
#include "thermoPhysicsTypes.H"
#include "rhoConst.H"
#include "perfectFluid.H"
#include "rPolynomial.H"
#include "pureMixture.H"
#include "multiComponentMixture.H"

View File

@ -31,7 +31,7 @@ License
#include "specie.H"
#include "perfectGas.H"
#include "perfectFluid.H"
#include "rPolynomial.H"
#include "rhoConst.H"
#include "sensibleEnthalpy.H"
@ -77,7 +77,7 @@ constTransport
<
hRefConstThermo
<
perfectFluid<specie>
rPolynomial<specie>
>,
sensibleEnthalpy
>
@ -103,7 +103,7 @@ constTransport
<
eRefConstThermo
<
perfectFluid<specie>
rPolynomial<specie>
>,
sensibleInternalEnergy
>
@ -171,7 +171,7 @@ makeThermos
constTransport,
sensibleEnthalpy,
hRefConstThermo,
perfectFluid,
rPolynomial,
specie
);
@ -210,7 +210,7 @@ makeThermos
constTransport,
sensibleInternalEnergy,
eRefConstThermo,
perfectFluid,
rPolynomial,
specie
);

View File

@ -31,7 +31,7 @@ License
#include "incompressiblePerfectGas.H"
#include "Boussinesq.H"
#include "rhoConst.H"
#include "perfectFluid.H"
#include "rPolynomial.H"
#include "PengRobinsonGas.H"
#include "adiabaticPerfectFluid.H"
@ -116,7 +116,7 @@ makeThermos
constTransport,
sensibleEnthalpy,
hConstThermo,
perfectFluid,
rPolynomial,
specie
);
@ -322,7 +322,7 @@ makeThermos
constTransport,
sensibleInternalEnergy,
hConstThermo,
perfectFluid,
rPolynomial,
specie
);
@ -334,7 +334,7 @@ makeThermos
constTransport,
sensibleInternalEnergy,
eConstThermo,
perfectFluid,
rPolynomial,
specie
);

View File

@ -36,7 +36,7 @@ License
#include "sensibleEnthalpy.H"
#include "thermo.H"
#include "rhoConst.H"
#include "perfectFluid.H"
#include "rPolynomial.H"
#include "adiabaticPerfectFluid.H"
#include "Boussinesq.H"

View File

@ -0,0 +1,63 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "rPolynomial.H"
#include "IOstreams.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class Specie>
Foam::rPolynomial<Specie>::rPolynomial(const dictionary& dict)
:
Specie(dict),
C_(dict.subDict("equationOfState").lookup("C"))
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Specie>
void Foam::rPolynomial<Specie>::write(Ostream& os) const
{
Specie::write(os);
dictionary dict("equationOfState");
dict.add("C", C_);
os << indent << dict.dictName() << dict;
}
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
template<class Specie>
Foam::Ostream& Foam::operator<<(Ostream& os, const rPolynomial<Specie>& pf)
{
pf.write(os);
return os;
}
// ************************************************************************* //

View File

@ -0,0 +1,268 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::rPolynomial
Description
Reciprocal polynomial equation of state for liquids and solids
\f[
1/\rho = C_0 + C_1 T + C_2 T^2 - C_3 p - C_4 p T
\f]
This polynomial for the reciprocal of the density provides a much better fit
than the equivalent polynomial for the density and has the advantage that it
support coefficient mixing to support liquid and solid mixtures in an
efficient manner.
Usage
\table
Property | Description
C | Density polynomial coefficients
\endtable
Example of the specification of the equation of state for pure water:
\verbatim
equationOfState
{
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
\endverbatim
Note: This fit is based on the small amount of data which is freely
available for the range 20-65degC and 1-100bar.
SourceFiles
rPolynomialI.H
rPolynomial.C
\*---------------------------------------------------------------------------*/
#ifndef rPolynomial_H
#define rPolynomial_H
#include "autoPtr.H"
#include "VectorSpace.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
// Forward declaration of friend functions and operators
template<class Specie> class rPolynomial;
template<class Specie>
inline rPolynomial<Specie> operator+
(
const rPolynomial<Specie>&,
const rPolynomial<Specie>&
);
template<class Specie>
inline rPolynomial<Specie> operator*
(
const scalar,
const rPolynomial<Specie>&
);
template<class Specie>
inline rPolynomial<Specie> operator==
(
const rPolynomial<Specie>&,
const rPolynomial<Specie>&
);
template<class Specie>
Ostream& operator<<
(
Ostream&,
const rPolynomial<Specie>&
);
/*---------------------------------------------------------------------------*\
Class rPolynomial Declaration
\*---------------------------------------------------------------------------*/
template<class Specie>
class rPolynomial
:
public Specie
{
// Private Data
class coeffList
:
public VectorSpace<coeffList, scalar, 5>
{
public:
// Constructors
//- Construct null
inline coeffList()
{}
//- Construct from Istream
inline coeffList(Istream& is)
:
VectorSpace<coeffList, scalar, 5>(is)
{}
};
//- Density coefficients
coeffList C_;
public:
// Constructors
//- Construct from components
inline rPolynomial
(
const Specie& sp,
const coeffList& coeffs
);
//- Construct from dictionary
rPolynomial(const dictionary& dict);
//- Construct as named copy
inline rPolynomial(const word& name, const rPolynomial&);
//- Construct and return a clone
inline autoPtr<rPolynomial> clone() const;
// Selector from dictionary
inline static autoPtr<rPolynomial> New(const dictionary& dict);
// Member Functions
//- Return the instantiated type name
static word typeName()
{
return "rPolynomial<" + word(Specie::typeName_()) + '>';
}
// Fundamental properties
//- Is the equation of state is incompressible i.e. rho != f(p)
static const bool incompressible = false;
//- Is the equation of state is isochoric i.e. rho = const
static const bool isochoric = false;
//- Return density [kg/m^3]
inline scalar rho(scalar p, scalar T) const;
//- Return enthalpy departure [J/kg]
inline scalar H(const scalar p, const scalar T) const;
//- Return Cp departure [J/(kg K]
inline scalar Cp(scalar p, scalar T) const;
//- Return internal energy departure [J/kg]
inline scalar E(const scalar p, const scalar T) const;
//- Return Cv departure [J/(kg K]
inline scalar Cv(scalar p, scalar T) const;
//- Return entropy [J/kg/K]
inline scalar S(const scalar p, const scalar T) const;
//- Return compressibility [s^2/m^2]
inline scalar psi(scalar p, scalar T) const;
//- Return compression factor []
inline scalar Z(scalar p, scalar T) const;
//- Return (Cp - Cv) [J/(kg K]
inline scalar CpMCv(scalar p, scalar T) const;
// IO
//- Write to Ostream
void write(Ostream& os) const;
// Member Operators
inline void operator+=(const rPolynomial&);
inline void operator*=(const scalar);
// Friend operators
friend rPolynomial operator+ <Specie>
(
const rPolynomial&,
const rPolynomial&
);
friend rPolynomial operator* <Specie>
(
const scalar s,
const rPolynomial&
);
friend rPolynomial operator== <Specie>
(
const rPolynomial&,
const rPolynomial&
);
// Ostream Operator
friend Ostream& operator<< <Specie>
(
Ostream&,
const rPolynomial&
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "rPolynomialI.H"
#ifdef NoRepository
#include "rPolynomial.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,231 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "rPolynomial.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
template<class Specie>
inline Foam::rPolynomial<Specie>::rPolynomial
(
const Specie& sp,
const coeffList& coeffs
)
:
Specie(sp),
C_(coeffs)
{}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template<class Specie>
inline Foam::rPolynomial<Specie>::rPolynomial
(
const word& name,
const rPolynomial<Specie>& rp
)
:
Specie(name, rp),
C_(rp.C_)
{}
template<class Specie>
inline Foam::autoPtr<Foam::rPolynomial<Specie>>
Foam::rPolynomial<Specie>::clone() const
{
return autoPtr<rPolynomial<Specie>>(new rPolynomial<Specie>(*this));
}
template<class Specie>
inline Foam::autoPtr<Foam::rPolynomial<Specie>>
Foam::rPolynomial<Specie>::New
(
const dictionary& dict
)
{
return autoPtr<rPolynomial<Specie>>(new rPolynomial<Specie>(dict));
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::rho(scalar p, scalar T) const
{
return 1/(C_[0] + (C_[1] + C_[2]*T - C_[4]*p)*T - C_[3]*p);
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::H(scalar p, scalar T) const
{
return 0;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::Cp(scalar p, scalar T) const
{
return 0;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::E(scalar p, scalar T) const
{
return 0;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::Cv(scalar p, scalar T) const
{
return 0;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::S(scalar p, scalar T) const
{
return 0;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::psi(scalar p, scalar T) const
{
return sqr(rho(p, T))*(C_[3] + C_[4]*T);
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::Z(scalar p, scalar T) const
{
return 1;
}
template<class Specie>
inline Foam::scalar Foam::rPolynomial<Specie>::CpMCv(scalar p, scalar T) const
{
return 0;
}
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
template<class Specie>
inline void Foam::rPolynomial<Specie>::operator+=
(
const rPolynomial<Specie>& rp
)
{
const scalar Y1 = this->Y();
Specie::operator+=(rp);
if (mag(this->Y()) > small)
{
C_ = (Y1*C_ + rp.Y()*rp.C_)/this->Y();
}
}
template<class Specie>
inline void Foam::rPolynomial<Specie>::operator*=(const scalar s)
{
Specie::operator*=(s);
}
// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
template<class Specie>
inline Foam::rPolynomial<Specie> Foam::operator+
(
const rPolynomial<Specie>& rp1,
const rPolynomial<Specie>& rp2
)
{
Specie sp
(
static_cast<const Specie&>(rp1)
+ static_cast<const Specie&>(rp2)
);
if (mag(sp.Y()) < small)
{
return rPolynomial<Specie>
(
sp,
rp1.C_
);
}
else
{
return rPolynomial<Specie>
(
sp,
(rp1.Y()*rp1.C_ + rp2.Y()*rp2.C_)/sp.Y()
);
}
return rp1;
}
template<class Specie>
inline Foam::rPolynomial<Specie> Foam::operator*
(
const scalar s,
const rPolynomial<Specie>& rp
)
{
return rPolynomial<Specie>
(
s*static_cast<const Specie&>(rp),
rp.C_
);
}
template<class Specie>
inline Foam::rPolynomial<Specie> Foam::operator==
(
const rPolynomial<Specie>& rp1,
const rPolynomial<Specie>& rp2
)
{
return rPolynomial<Specie>
(
static_cast<const Specie&>(rp1) == static_cast<const Specie&>(rp2),
rPolynomial<Specie>::coeffList::uniform(NaN)
);
}
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -35,7 +35,7 @@ Description
#include "specie.H"
#include "perfectGas.H"
#include "incompressiblePerfectGas.H"
#include "perfectFluid.H"
#include "rPolynomial.H"
#include "adiabaticPerfectFluid.H"
#include "rhoConst.H"
#include "hConstThermo.H"
@ -131,7 +131,7 @@ namespace Foam
<
hConstThermo
<
perfectFluid<specie>
rPolynomial<specie>
>,
sensibleEnthalpy
>
@ -242,7 +242,7 @@ namespace Foam
<
eConstThermo
<
perfectFluid<specie>
rPolynomial<specie>
>,
sensibleInternalEnergy
>

View File

@ -15,26 +15,13 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType0
{
type heRhoThermo;
mixture pureMixture;
properties liquid;
energy sensibleInternalEnergy;
}
mixture0
{
H2O;
}
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -47,8 +34,7 @@ mixture
}
equationOfState
{
R 7342;
rho0 1000;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -20,7 +20,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000; // [J/kg/K]
rho0 1027; // [kg/m^3]
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16); // [J/kg/K]
}
thermodynamics
{

View File

@ -20,7 +20,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -33,8 +33,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{
@ -43,7 +42,7 @@ mixture
}
transport
{
mu 3.645e-4;
mu 1e-3;
Pr 2.289;
}
}

View File

@ -0,0 +1,72 @@
species
(
O2
H2O
N2
);
O2
{
specie
{
molWeight 31.9988;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917 );
lowCpCoeffs ( 3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
N2
{
specie
{
molWeight 28.0134;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 );
lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
species
(
air
H2O
);
air
{
specie
{
nMoles 1;
molWeight 28.9596;
}
thermodynamics
{
Tlow 200;
Thigh 3500;
Tcommon 1000;
highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
species
(
air
H2O
);
air
{
specie
{
nMoles 1;
molWeight 28.9596;
}
thermodynamics
{
Tlow 200;
Thigh 3500;
Tcommon 1000;
highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
species
(
air
H2O
);
air
{
specie
{
nMoles 1;
molWeight 28.9596;
}
thermodynamics
{
Tlow 200;
Thigh 3500;
Tcommon 1000;
highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
species
(
air
H2O
);
air
{
specie
{
nMoles 1;
molWeight 28.9596;
}
thermodynamics
{
Tlow 200;
Thigh 3500;
Tcommon 1000;
highCpCoeffs ( 3.57304 -7.24383e-04 1.67022e-06 -1.26501e-10 -4.20580e-13 -1047.41 3.12431 );
lowCpCoeffs ( 3.09589 1.22835e-03 -4.14267e-07 6.56910e-11 -3.87021e-15 -983.191 5.34161 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
H2O
{
specie
{
molWeight 18.0153;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 );
lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -36,7 +36,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -49,8 +49,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -55,8 +55,8 @@ solvers
p_rgh
{
solver GAMG;
tolerance 1e-07;
relTol 0;
tolerance 1e-8;
relTol 0.01;
smoother DIC;
}
@ -66,13 +66,13 @@ solvers
preconditioner
{
preconditioner GAMG;
tolerance 1e-07;
tolerance 1e-8;
relTol 0;
nVcycles 2;
smoother DICGaussSeidel;
nPreSweeps 2;
}
tolerance 1e-07;
tolerance 1e-8;
relTol 0;
maxIter 20;
}
@ -99,7 +99,7 @@ PIMPLE
{
momentumPredictor no;
transonic no;
nOuterCorrectors 2;
nOuterCorrectors 3;
nCorrectors 2;
nNonOrthogonalCorrectors 0;
}

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 6818;
rho0 13529;
rho 13529;
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3564;
rho0 684;
rho 684;
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 7255;
rho0 1027;
rho 1027;
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -42,8 +42,7 @@ inertSpecie H2O;
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{
@ -65,8 +64,7 @@ air
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture multiComponentMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -42,8 +42,7 @@ inertSpecie water;
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{
@ -65,13 +64,12 @@ air
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{
Hf 0;
Cv 4195;
Hf 0;
}
transport
{

View File

@ -25,8 +25,8 @@ solvers
p_rgh
{
solver GAMG;
smoother DIC;
solver PBiCGStab;
preconditioner DIC;
tolerance 1e-12;
relTol 0.001;
}
@ -39,29 +39,26 @@ solvers
"U.*"
{
solver smoothSolver;
smoother symGaussSeidel;
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-12;
relTol 0;
minIter 1;
}
"(e|h).*"
{
solver smoothSolver;
smoother symGaussSeidel;
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-12;
relTol 0;
minIter 1;
}
"Yi.*"
{
solver smoothSolver;
smoother symGaussSeidel;
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-12;
relTol 0;
minIter 1;
residualAlpha 1e-8;
}
}

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eRefConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -37,8 +37,7 @@ mixture
equationOfState
{
R 3000;
rho0 959;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{

View File

@ -21,7 +21,7 @@ thermoType
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectFluid;
equationOfState rPolynomial;
specie specie;
energy sensibleInternalEnergy;
}
@ -34,8 +34,7 @@ mixture
}
equationOfState
{
R 3000;
rho0 1027;
C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
}
thermodynamics
{