diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C
new file mode 100644
index 000000000..fe83f1794
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2015 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "hRefConstThermo.H"
+#include "IOstreams.H"
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+Foam::hRefConstThermo::hRefConstThermo(Istream& is)
+:
+ EquationOfState(is),
+ Cp_(readScalar(is)),
+ Hf_(readScalar(is)),
+ Tref_(readScalar(is)),
+ Href_(readScalar(is))
+{
+ is.check("hRefConstThermo::hRefConstThermo(Istream& is)");
+
+ Cp_ *= this->W();
+ Hf_ *= this->W();
+ Href_ *= this->W();
+}
+
+
+template
+Foam::hRefConstThermo::hRefConstThermo(const dictionary& dict)
+:
+ EquationOfState(dict),
+ Cp_(readScalar(dict.subDict("thermodynamics").lookup("Cp"))),
+ Hf_(readScalar(dict.subDict("thermodynamics").lookup("Hf"))),
+ Tref_(readScalar(dict.subDict("thermodynamics").lookup("Tref"))),
+ Href_(readScalar(dict.subDict("thermodynamics").lookup("Href")))
+{
+ Cp_ *= this->W();
+ Hf_ *= this->W();
+ Href_ *= this->W();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+void Foam::hRefConstThermo::write(Ostream& os) const
+{
+ EquationOfState::write(os);
+
+ dictionary dict("thermodynamics");
+ dict.add("Cp", Cp_/this->W());
+ dict.add("Hf", Hf_/this->W());
+ dict.add("Tref", Tref_);
+ dict.add("Href", Href_/this->W());
+ os << indent << dict.dictName() << dict;
+}
+
+
+// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
+
+template
+Foam::Ostream& Foam::operator<<
+(
+ Ostream& os,
+ const hRefConstThermo& ct
+)
+{
+ os << static_cast(ct) << tab
+ << ct.Cp_/ct.W() << tab << ct.Hf_/ct.W() << tab
+ << ct.Tref_ << tab << ct.Href_/ct.W();
+
+ os.check("Ostream& operator<<(Ostream& os, const hRefConstThermo& ct)");
+ return os;
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H
new file mode 100644
index 000000000..9a62231d9
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermo.H
@@ -0,0 +1,233 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2015 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 .
+
+Class
+ Foam::hRefConstThermo
+
+Description
+ Constant properties thermodynamics package
+ templated into the EquationOfState.
+
+SourceFiles
+ hRefConstThermoI.H
+ hRefConstThermo.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef hRefConstThermo_H
+#define hRefConstThermo_H
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of friend functions and operators
+
+template class hRefConstThermo;
+
+template
+inline hRefConstThermo operator+
+(
+ const hRefConstThermo&,
+ const hRefConstThermo&
+);
+
+template
+inline hRefConstThermo operator-
+(
+ const hRefConstThermo&,
+ const hRefConstThermo&
+);
+
+template
+inline hRefConstThermo operator*
+(
+ const scalar,
+ const hRefConstThermo&
+);
+
+template
+inline hRefConstThermo operator==
+(
+ const hRefConstThermo&,
+ const hRefConstThermo&
+);
+
+template
+Ostream& operator<<
+(
+ Ostream&,
+ const hRefConstThermo&
+);
+
+
+/*---------------------------------------------------------------------------*\
+ Class hRefConstThermo Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class hRefConstThermo
+:
+ public EquationOfState
+{
+ // Private data
+
+ scalar Cp_;
+ scalar Hf_;
+ scalar Tref_;
+ scalar Href_;
+
+
+ // Private Member Functions
+
+ //- Construct from components
+ inline hRefConstThermo
+ (
+ const EquationOfState& st,
+ const scalar cp,
+ const scalar hf,
+ const scalar tref,
+ const scalar href
+ );
+
+
+public:
+
+ // Constructors
+
+ //- Construct from Istream
+ hRefConstThermo(Istream&);
+
+ //- Construct from dictionary
+ hRefConstThermo(const dictionary& dict);
+
+ //- Construct as named copy
+ inline hRefConstThermo(const word&, const hRefConstThermo&);
+
+ //- Construct and return a clone
+ inline autoPtr clone() const;
+
+ //- Selector from Istream
+ inline static autoPtr New(Istream& is);
+
+ //- Selector from dictionary
+ inline static autoPtr New(const dictionary& dict);
+
+
+ // Member Functions
+
+ //- Return the instantiated type name
+ static word typeName()
+ {
+ return "hRefConst<" + EquationOfState::typeName() + '>';
+ }
+
+ //- Limit the temperature to be in the range Tlow_ to Thigh_
+ inline scalar limit(const scalar T) const;
+
+
+ // Fundamental properties
+
+ //- Heat capacity at constant pressure [J/(kmol K)]
+ inline scalar cp(const scalar p, const scalar T) const;
+
+ //- Absolute Enthalpy [J/kmol]
+ inline scalar ha(const scalar p, const scalar T) const;
+
+ //- Sensible enthalpy [J/kmol]
+ inline scalar hs(const scalar p, const scalar T) const;
+
+ //- Chemical enthalpy [J/kmol]
+ inline scalar hc() const;
+
+ //- Entropy [J/(kmol K)]
+ inline scalar s(const scalar p, const scalar T) const;
+
+
+ // I-O
+
+ //- Write to Ostream
+ void write(Ostream& os) const;
+
+
+ // Member operators
+
+ inline void operator+=(const hRefConstThermo&);
+ inline void operator-=(const hRefConstThermo&);
+
+
+ // Friend operators
+
+ friend hRefConstThermo operator+
+ (
+ const hRefConstThermo&,
+ const hRefConstThermo&
+ );
+
+ friend hRefConstThermo operator-
+ (
+ const hRefConstThermo&,
+ const hRefConstThermo&
+ );
+
+ friend hRefConstThermo operator*
+ (
+ const scalar,
+ const hRefConstThermo&
+ );
+
+ friend hRefConstThermo operator==
+ (
+ const hRefConstThermo&,
+ const hRefConstThermo&
+ );
+
+
+ // IOstream Operators
+
+ friend Ostream& operator<<
+ (
+ Ostream&,
+ const hRefConstThermo&
+ );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "hRefConstThermoI.H"
+
+#ifdef NoRepository
+# include "hRefConstThermo.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H
new file mode 100644
index 000000000..c6a699540
--- /dev/null
+++ b/src/thermophysicalModels/specie/thermo/hRefConst/hRefConstThermoI.H
@@ -0,0 +1,277 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2015 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 .
+
+\*---------------------------------------------------------------------------*/
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+inline Foam::hRefConstThermo::hRefConstThermo
+(
+ const EquationOfState& st,
+ const scalar cp,
+ const scalar hf,
+ const scalar tref,
+ const scalar href
+)
+:
+ EquationOfState(st),
+ Cp_(cp),
+ Hf_(hf),
+ Tref_(tref),
+ Href_(href)
+{}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+inline Foam::hRefConstThermo::hRefConstThermo
+(
+ const word& name,
+ const hRefConstThermo& ct
+)
+:
+ EquationOfState(name, ct),
+ Cp_(ct.Cp_),
+ Hf_(ct.Hf_),
+ Tref_(ct.Tref_),
+ Href_(ct.Href_)
+{}
+
+
+template
+inline Foam::autoPtr >
+Foam::hRefConstThermo::clone() const
+{
+ return autoPtr >
+ (
+ new hRefConstThermo(*this)
+ );
+}
+
+
+template
+inline Foam::autoPtr >
+Foam::hRefConstThermo::New(Istream& is)
+{
+ return autoPtr >
+ (
+ new hRefConstThermo(is)
+ );
+}
+
+
+template
+inline Foam::autoPtr >
+Foam::hRefConstThermo::New(const dictionary& dict)
+{
+ return autoPtr >
+ (
+ new hRefConstThermo(dict)
+ );
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+inline Foam::scalar Foam::hRefConstThermo::limit
+(
+ const scalar T
+) const
+{
+ return T;
+}
+
+
+template
+inline Foam::scalar Foam::hRefConstThermo::cp
+(
+ const scalar p,
+ const scalar T
+) const
+{
+ return Cp_;
+}
+
+
+template
+inline Foam::scalar Foam::hRefConstThermo::ha
+(
+ const scalar p, const scalar T
+) const
+{
+ return Cp_*(T-Tref_) + Href_ + Hf_;
+}
+
+
+template
+inline Foam::scalar Foam::hRefConstThermo::hs
+(
+ const scalar p, const scalar T
+) const
+{
+ return Cp_*(T-Tref_) + Href_ ;
+}
+
+
+template
+inline Foam::scalar Foam::hRefConstThermo::hc() const
+{
+ return Hf_;
+}
+
+
+template
+inline Foam::scalar Foam::hRefConstThermo::s
+(
+ const scalar p, const scalar T
+) const
+{
+ return Cp_*log(T/Tstd) + EquationOfState::s(p, T);
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
+
+template
+inline void Foam::hRefConstThermo::operator+=
+(
+ const hRefConstThermo& ct
+)
+{
+ scalar molr1 = this->nMoles();
+
+ EquationOfState::operator+=(ct);
+
+ molr1 /= this->nMoles();
+ scalar molr2 = ct.nMoles()/this->nMoles();
+
+ Cp_ = molr1*Cp_ + molr2*ct.Cp_;
+ Hf_ = molr1*Hf_ + molr2*ct.Hf_;
+}
+
+
+template
+inline void Foam::hRefConstThermo::operator-=
+(
+ const hRefConstThermo& ct
+)
+{
+ scalar molr1 = this->nMoles();
+
+ EquationOfState::operator-=(ct);
+
+ molr1 /= this->nMoles();
+ scalar molr2 = ct.nMoles()/this->nMoles();
+
+ Cp_ = molr1*Cp_ - molr2*ct.Cp_;
+ Hf_ = molr1*Hf_ - molr2*ct.Hf_;
+}
+
+
+// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * //
+
+template
+inline Foam::hRefConstThermo Foam::operator+
+(
+ const hRefConstThermo& ct1,
+ const hRefConstThermo& ct2
+)
+{
+ EquationOfState eofs
+ (
+ static_cast(ct1)
+ + static_cast(ct2)
+ );
+
+ return hRefConstThermo
+ (
+ eofs,
+ ct1.nMoles()/eofs.nMoles()*ct1.Cp_
+ + ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
+ ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+ + ct2.nMoles()/eofs.nMoles()*ct2.Hf_,
+ ct1.nMoles()/eofs.nMoles()*ct1.Tref_
+ + ct2.nMoles()/eofs.nMoles()*ct2.Tref_,
+ ct1.nMoles()/eofs.nMoles()*ct1.Href_
+ + ct2.nMoles()/eofs.nMoles()*ct2.Href_
+ );
+}
+
+
+template
+inline Foam::hRefConstThermo Foam::operator-
+(
+ const hRefConstThermo& ct1,
+ const hRefConstThermo& ct2
+)
+{
+ EquationOfState eofs
+ (
+ static_cast(ct1)
+ - static_cast(ct2)
+ );
+
+ return hRefConstThermo
+ (
+ eofs,
+ ct1.nMoles()/eofs.nMoles()*ct1.Cp_
+ - ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
+ ct1.nMoles()/eofs.nMoles()*ct1.Hf_
+ - ct2.nMoles()/eofs.nMoles()*ct2.Hf_
+ );
+}
+
+
+template
+inline Foam::hRefConstThermo Foam::operator*
+(
+ const scalar s,
+ const hRefConstThermo& ct
+)
+{
+ return hRefConstThermo
+ (
+ s*static_cast(ct),
+ ct.Cp_,
+ ct.Hf_,
+ ct.Tref_,
+ ct.Href_
+ );
+}
+
+
+template
+inline Foam::hRefConstThermo Foam::operator==
+(
+ const hRefConstThermo& ct1,
+ const hRefConstThermo& ct2
+)
+{
+ return ct2 - ct1;
+}
+
+
+// ************************************************************************* //