diff --git a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
index c413e0c524a2b7bd8361e89371905c0d5ee3e47f..422276d65b6302cb346285da603d7645b31782a5 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/interfacialCompositionModels/interfaceCompositionModels/InterfaceCompositionModel/InterfaceCompositionModels.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2015-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -54,43 +54,6 @@ License
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-namespace Foam
-{
-    typedef
-        constTransport
-        <
-            species::thermo
-            <
-                hConstThermo
-                <
-                    perfectFluid<specie>
-                >,
-                sensibleInternalEnergy
-            >
-        > constFluidEThermoPhysics;
-};
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    // multi-component liquid
-    makeReactionThermo
-    (
-        rhoThermo,
-        rhoReactionThermo,
-        heRhoThermo,
-        multiComponentMixture,
-        constTransport,
-        sensibleInternalEnergy,
-        hConstThermo,
-        perfectFluid,
-        specie
-    );
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 namespace Foam
 {
     using namespace interfaceCompositionModels;
diff --git a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C
index 712a96e1dedd3fdbbaf4f502b04611ffb83acbf9..600e26b9ad46b8f6f1469c16ad155fe8e21e570c 100644
--- a/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C
+++ b/applications/solvers/multiphase/reactingEulerFoam/phaseSystems/reactionThermo/hRefConstThermos.C
@@ -214,7 +214,7 @@ makeThermo
 
 // multiComponentMixture, sensibleInternalEnergy:
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -223,7 +223,7 @@ makeReactionMixtureThermo
     constRefGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -232,7 +232,7 @@ makeReactionMixtureThermo
     constRefFluidEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -244,7 +244,7 @@ makeReactionMixtureThermo
 
 // multiComponentMixture, sensibleEnthalpy:
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -253,7 +253,7 @@ makeReactionMixtureThermo
     constRefRhoConstHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -262,7 +262,7 @@ makeReactionMixtureThermo
     constRefFluidHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
diff --git a/src/thermophysicalModels/basic/fluidThermo/makeThermo.H b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H
index 8581ff50256b5af9cb63a5ba23c240af35ecaad8..21f6940a6516ff4131eef23a4dbb72d79a5984c9 100644
--- a/src/thermophysicalModels/basic/fluidThermo/makeThermo.H
+++ b/src/thermophysicalModels/basic/fluidThermo/makeThermo.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -66,9 +66,9 @@ defineTemplateTypeNameAndDebugWithName                                         \
 (                                                                              \
     Cthermo##Mixture##Transport##Type##Thermo##EqnOfState##Specie,             \
     (                                                                          \
-        #Cthermo"<"#Mixture"<"                                                 \
-      + Transport##Type##Thermo##EqnOfState##Specie::typeName()                \
-      + ">>"                                                                   \
+        #Cthermo"<"                                                            \
+      + Mixture<Transport##Type##Thermo##EqnOfState##Specie>::typeName()       \
+      + ">"                                                                    \
     ).c_str(),                                                                 \
     0                                                                          \
 );
diff --git a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H
index f7f213f10a9781eccb0983f21c7f7fb4e53b3875..36765064826e9094fd7030b97e2ab95dfa5c9dbf 100644
--- a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H
+++ b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H
@@ -73,6 +73,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "pureMixture<" + ThermoType::typeName() + '>';
+        }
+
         const ThermoType& mixture() const
         {
             return mixture_;
diff --git a/src/thermophysicalModels/reactionThermo/makeReactionThermo.H b/src/thermophysicalModels/reactionThermo/makeReactionThermo.H
index 3a63f0ba5881fd85223f726afdc7e00a8dd827a6..fc6b3973d8b38d3454efe1835bad34cc1cf39d71 100644
--- a/src/thermophysicalModels/reactionThermo/makeReactionThermo.H
+++ b/src/thermophysicalModels/reactionThermo/makeReactionThermo.H
@@ -31,82 +31,100 @@ License
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#define makeReactionMixtureThermo(BaseThermo,BaseReactionThermo,CThermo,Mixture,ThermoPhys) \
+#define defineReactionMixtureThermo(BaseReactionThermo,CThermo,Mixture,ThermoPhys) \
                                                                                \
-typedef CThermo                                                                \
-<                                                                              \
-    BaseReactionThermo,                                                        \
-    SpecieMixture                                                              \
+    typedef CThermo                                                            \
     <                                                                          \
-        Mixture                                                                \
+        BaseReactionThermo,                                                    \
+        SpecieMixture                                                          \
         <                                                                      \
-            ThermoPhys                                                         \
+            Mixture                                                            \
+            <                                                                  \
+                ThermoPhys                                                     \
+            >                                                                  \
         >                                                                      \
-    >                                                                          \
-> CThermo##Mixture##ThermoPhys;                                                \
+    > CThermo##Mixture##ThermoPhys;                                            \
+                                                                               \
+    defineTemplateTypeNameAndDebugWithName                                     \
+    (                                                                          \
+        CThermo##Mixture##ThermoPhys,                                          \
+        (#CThermo"<" + Mixture<ThermoPhys>::typeName() + ">").c_str(),         \
+        0                                                                      \
+    )
+
+
+#define addReactionMixtureThermo(BaseThermo,CThermoMixtureThermoPhys)          \
                                                                                \
-defineTemplateTypeNameAndDebugWithName                                         \
-(                                                                              \
-    CThermo##Mixture##ThermoPhys,                                              \
-    (#CThermo"<"#Mixture"<" + ThermoPhys::typeName() + ">>").c_str(),          \
-    0                                                                          \
-);                                                                             \
+    addToRunTimeSelectionTable                                                 \
+    (                                                                          \
+        BaseThermo,                                                            \
+        CThermoMixtureThermoPhys,                                              \
+        fvMesh                                                                 \
+    )
+
+
+#define makeReactionMixtureThermos(BaseThermo,BaseReactionThermo,CThermo,Mixture,ThermoPhys) \
                                                                                \
-addToRunTimeSelectionTable                                                     \
-(                                                                              \
-    basicThermo,                                                               \
-    CThermo##Mixture##ThermoPhys,                                              \
-    fvMesh                                                                     \
-);                                                                             \
+    defineReactionMixtureThermo(BaseReactionThermo,CThermo,Mixture,ThermoPhys);\
                                                                                \
-addToRunTimeSelectionTable                                                     \
-(                                                                              \
-    fluidThermo,                                                               \
-    CThermo##Mixture##ThermoPhys,                                              \
-    fvMesh                                                                     \
-);                                                                             \
+    addReactionMixtureThermo(basicThermo, CThermo##Mixture##ThermoPhys);       \
+    addReactionMixtureThermo(fluidThermo, CThermo##Mixture##ThermoPhys);       \
+    addReactionMixtureThermo(BaseThermo, CThermo##Mixture##ThermoPhys);        \
+    addReactionMixtureThermo(BaseReactionThermo, CThermo##Mixture##ThermoPhys)
+
+
+#define makeReactionMixtureThermo(BaseReactionThermo,CThermo,Mixture,ThermoPhys) \
                                                                                \
-addToRunTimeSelectionTable                                                     \
-(                                                                              \
-    BaseThermo,                                                                \
-    CThermo##Mixture##ThermoPhys,                                              \
-    fvMesh                                                                     \
-);                                                                             \
+    defineReactionMixtureThermo(BaseReactionThermo,CThermo,Mixture,ThermoPhys);\
                                                                                \
-addToRunTimeSelectionTable                                                     \
-(                                                                              \
-    BaseReactionThermo,                                                        \
-    CThermo##Mixture##ThermoPhys,                                              \
-    fvMesh                                                                     \
-);
+    addReactionMixtureThermo(BaseReactionThermo, CThermo##Mixture##ThermoPhys)
 
 
-#define makeReactionThermo(BaseThermo,BaseReactionThermo,CThermo,Mixture,Transport,Type,Thermo,EqnOfState,Specie) \
+#define defineThermoPhys(Transport,Type,Thermo,EqnOfState,Specie)              \
                                                                                \
-typedef                                                                        \
-    Transport                                                                  \
-    <                                                                          \
-        species::thermo                                                        \
+    typedef                                                                    \
+        Transport                                                              \
         <                                                                      \
-            Thermo                                                             \
+            species::thermo                                                    \
             <                                                                  \
-                EqnOfState                                                     \
+                Thermo                                                         \
                 <                                                              \
-                    Specie                                                     \
-                >                                                              \
-            >,                                                                 \
-            Type                                                               \
+                    EqnOfState                                                 \
+                    <                                                          \
+                        Specie                                                 \
+                    >                                                          \
+                >,                                                             \
+                Type                                                           \
+            >                                                                  \
         >                                                                      \
-    > Transport##Type##Thermo##EqnOfState##Specie;                             \
+        Transport##Type##Thermo##EqnOfState##Specie                            \
+
+
+#define makeReactionThermos(BaseThermo,BaseReactionThermo,CThermo,Mixture,Transport,Type,Thermo,EqnOfState,Specie) \
+                                                                               \
+    defineThermoPhys(Transport,Type,Thermo,EqnOfState,Specie);                 \
+                                                                               \
+    makeReactionMixtureThermos                                                 \
+    (                                                                          \
+        BaseThermo,                                                            \
+        BaseReactionThermo,                                                    \
+        CThermo,                                                               \
+        Mixture,                                                               \
+        Transport##Type##Thermo##EqnOfState##Specie                            \
+    )
+
+
+#define makeReactionThermo(BaseReactionThermo,CThermo,Mixture,Transport,Type,Thermo,EqnOfState,Specie) \
+                                                                               \
+    defineThermoPhys(Transport,Type,Thermo,EqnOfState,Specie);                 \
                                                                                \
-makeReactionMixtureThermo                                                      \
-(                                                                              \
-    BaseThermo,                                                                \
-    BaseReactionThermo,                                                        \
-    CThermo,                                                                   \
-    Mixture,                                                                   \
-    Transport##Type##Thermo##EqnOfState##Specie                                \
-);
+    makeReactionMixtureThermo                                                  \
+    (                                                                          \
+        BaseReactionThermo,                                                    \
+        CThermo,                                                               \
+        Mixture,                                                               \
+        Transport##Type##Thermo##EqnOfState##Specie                            \
+    )
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
index 5b9f031248505fbebc3dda7160544322a07e0e70..43425d5116edc4d3ccf4a34757d9cc606f9f2bca 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/egrMixture/egrMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -99,6 +99,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "egrMixture<" + ThermoType::typeName() + '>';
+        }
+
         const dimensionedScalar& stoicRatio() const
         {
             return stoicRatio_;
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
index bb77c4601e7cb4c4c37b6ba9e1b74396272c6699..4e4e2e50e19b46c689d502df0bdbf2e172f485f3 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/homogeneousMixture/homogeneousMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -90,6 +90,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "homogeneousMixture<" + ThermoType::typeName() + '>';
+        }
+
         const ThermoType& mixture(const scalar) const;
 
         const ThermoType& cellMixture(const label celli) const
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
index d6ec1b63e09280833c64928b7249d65494e2cd47..55be584e702c70529ed8790ac9a10cf5c649a72f 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/inhomogeneousMixture/inhomogeneousMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -96,6 +96,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "inhomogeneousMixture<" + ThermoType::typeName() + '>';
+        }
+
         const dimensionedScalar& stoicRatio() const
         {
             return stoicRatio_;
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
index 5f11d35b76a2fe8da1d42527a88228d3da8a1a0d..071eb76ffcd17a21a0c44b595b8ebe4230f32741 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/multiComponentMixture/multiComponentMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -111,6 +111,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "multiComponentMixture<" + ThermoType::typeName() + '>';
+        }
+
         const ThermoType& cellMixture(const label celli) const;
 
         const ThermoType& patchFaceMixture
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
index e455909893ae17cc4ccb2678a5749158b6c2551e..4eb2e51e84e949c24017a892db1a178b727e74aa 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/reactingMixture/reactingMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -93,6 +93,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "reactingMixture<" + ThermoType::typeName() + '>';
+        }
+
         //- Read dictionary
         void read(const dictionary&);
 
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C
new file mode 100644
index 0000000000000000000000000000000000000000..b8374445dc9cf154c4a9d7810e0c8167d0977280
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.C
@@ -0,0 +1,62 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2017 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 "singleComponentMixture.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::singleComponentMixture<ThermoType>::singleComponentMixture
+(
+    const dictionary& thermoDict,
+    const fvMesh& mesh,
+    const word& phaseName
+)
+:
+    basicSpecieMixture(thermoDict, wordList::null(), mesh, phaseName),
+    thermo_(thermoDict.subDict("mixture"))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+Foam::singleComponentMixture<ThermoType>::~singleComponentMixture()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+template<class ThermoType>
+void Foam::singleComponentMixture<ThermoType>::read
+(
+    const dictionary& thermoDict
+)
+{
+    thermo_ = ThermoType(thermoDict.subDict("mixture"));
+}
+
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H
new file mode 100644
index 0000000000000000000000000000000000000000..7067d07081bb61e6957d6ce6181b7f537c0e8840
--- /dev/null
+++ b/src/thermophysicalModels/reactionThermo/mixtures/singleComponentMixture/singleComponentMixture.H
@@ -0,0 +1,158 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2017 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::singleComponentMixture
+
+Description
+    Single component mixture
+
+SourceFiles
+    singleComponentMixture.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef singleComponentMixture_H
+#define singleComponentMixture_H
+
+#include "basicSpecieMixture.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class singleComponentMixture Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class ThermoType>
+class singleComponentMixture
+:
+    public basicSpecieMixture
+{
+    // Private data
+
+        //- Thermo model
+        ThermoType thermo_;
+
+
+public:
+
+    //- The type of thermodynamics this mixture is instantiated for
+    typedef ThermoType thermoType;
+
+
+    // Constructors
+
+        //- Construct from dictionary, mesh and phase name
+        singleComponentMixture(const dictionary&, const fvMesh&, const word&);
+
+
+    //- Destructor
+    virtual ~singleComponentMixture();
+
+
+    // Member Functions
+
+        //- Return the instantiated type name
+        //  Note: This defines the same name as pureMixture so that
+        //  non-reacting and reacting solvers are compatable
+        static word typeName()
+        {
+            return "pureMixture<" + ThermoType::typeName() + '>';
+        }
+
+        //- Get the mixture for the given cell
+        const ThermoType& cellMixture(const label celli) const
+        {
+            return thermo_;
+        }
+
+        //- Get the mixture for the given patch face
+        const ThermoType& patchFaceMixture
+        (
+            const label patchi,
+            const label facei
+        ) const
+        {
+            return thermo_;
+        }
+
+        //- Get the volumetric mixture for the given cell
+        const ThermoType& cellVolMixture
+        (
+            const scalar p,
+            const scalar T,
+            const label celli
+        )
+        {
+            return thermo_;
+        }
+
+        //- Get the volumetric mixture for the given patch face
+        const ThermoType& patchFaceVolMixture
+        (
+            const scalar p,
+            const scalar T,
+            const label patchi,
+            const label facei
+        ) const
+        {
+            return thermo_;
+        }
+
+        //- Read dictionary
+        void read(const dictionary&);
+
+        //- Return thermo based on index
+        inline const ThermoType& getLocalThermo(const label speciei) const
+        {
+            #ifdef FULLDEBUG
+            if (speciei != 0)
+            {
+                FatalErrorInFunction
+                    << "Specie index must be zero for a single component "
+                    << "mixture" << exit(FatalError);
+            }
+            #endif
+            return thermo_;
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+    #include "singleComponentMixture.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/singleStepReactingMixture/singleStepReactingMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/singleStepReactingMixture/singleStepReactingMixture.H
index 10119b24f71439f2b51fb0f615c3a304a66738ed..4e407785e917a726fecc74d86c9e11d968ed0b6c 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/singleStepReactingMixture/singleStepReactingMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/singleStepReactingMixture/singleStepReactingMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -135,6 +135,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "singleStepReactingMixture<" + ThermoType::typeName() + '>';
+        }
+
         //- Calculates the residual for all components
         void fresCorrect();
 
diff --git a/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
index 5b81432aa949ab8282167a1058cc5b6a19031b1f..390f6390add740292fbe79413bad53784e6216de 100644
--- a/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
+++ b/src/thermophysicalModels/reactionThermo/mixtures/veryInhomogeneousMixture/veryInhomogeneousMixture.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -104,6 +104,12 @@ public:
 
     // Member functions
 
+        //- Return the instantiated type name
+        static word typeName()
+        {
+            return "veryInhomogeneousMixture<" + ThermoType::typeName() + '>';
+        }
+
         const dimensionedScalar& stoicRatio() const
         {
             return stoicRatio_;
diff --git a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C
index 015c0118ed4ba95de8754148b61c27c596a92a01..0da95cd824a64b0e96125bbe163d8f7b0bab8930 100644
--- a/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C
+++ b/src/thermophysicalModels/reactionThermo/psiReactionThermo/psiReactionThermos.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -43,6 +43,7 @@ License
 #include "multiComponentMixture.H"
 #include "reactingMixture.H"
 #include "singleStepReactingMixture.H"
+#include "singleComponentMixture.H"
 
 #include "thermoPhysicsTypes.H"
 
@@ -55,7 +56,7 @@ namespace Foam
 
 // constTransport, hConstThermo
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -68,7 +69,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -81,7 +82,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -97,7 +98,7 @@ makeReactionThermo
 
 // sutherlandTransport, hConstThermo
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -110,7 +111,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -123,7 +124,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -139,7 +140,7 @@ makeReactionThermo
 
 // sutherlandTransport, janafThermo
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -152,7 +153,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -165,7 +166,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -178,10 +179,11 @@ makeReactionThermo
     specie
 );
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // Multi-component thermo for sensible enthalpy
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -190,7 +192,7 @@ makeReactionMixtureThermo
     constGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -202,7 +204,7 @@ makeReactionMixtureThermo
 
 // Multi-component thermo for internal energy
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -211,7 +213,7 @@ makeReactionMixtureThermo
     constGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -221,9 +223,9 @@ makeReactionMixtureThermo
 );
 
 
-// Multi-component reaction thermo for sensible enthalpy
+// Reaction thermo for sensible enthalpy
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -232,7 +234,7 @@ makeReactionMixtureThermo
     constGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -241,7 +243,10 @@ makeReactionMixtureThermo
     gasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+
+// Single-step reaction thermo for sensible enthalpy
+
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -251,9 +256,9 @@ makeReactionMixtureThermo
 );
 
 
-// Multi-component reaction thermo for internal energy
+// Reaction thermo for internal energy
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -262,7 +267,7 @@ makeReactionMixtureThermo
     constGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -271,7 +276,10 @@ makeReactionMixtureThermo
     gasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+
+// Single-step reaction thermo for internal energy
+
+makeReactionMixtureThermos
 (
     psiThermo,
     psiReactionThermo,
@@ -280,6 +288,44 @@ makeReactionMixtureThermo
     gasEThermoPhysics
 );
 
+
+// Single-component thermo for sensible enthalpy
+
+makeReactionMixtureThermo
+(
+    psiReactionThermo,
+    hePsiThermo,
+    singleComponentMixture,
+    constGasHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    psiReactionThermo,
+    hePsiThermo,
+    singleComponentMixture,
+    gasHThermoPhysics
+);
+
+
+// Single-component thermo for internal energy
+
+makeReactionMixtureThermo
+(
+    psiReactionThermo,
+    hePsiThermo,
+    singleComponentMixture,
+    constGasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    psiReactionThermo,
+    hePsiThermo,
+    singleComponentMixture,
+    gasEThermoPhysics
+);
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C b/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C
index 4e9173530df3d13e139ad40283b2cf1a668c5967..cc62659bb9d5cbd9afcc31ceaa70ee8703d16a3f 100644
--- a/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C
+++ b/src/thermophysicalModels/reactionThermo/psiuReactionThermo/psiuReactionThermos.C
@@ -54,7 +54,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * h-hu-Thermos * * * * * * * * * * * * * * * //
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -67,7 +67,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -80,7 +80,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -93,7 +93,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -107,7 +107,7 @@ makeReactionThermo
 );
 
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -120,7 +120,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -133,7 +133,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -146,7 +146,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -159,7 +159,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -173,7 +173,7 @@ makeReactionThermo
 );
 
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -186,7 +186,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -199,7 +199,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
@@ -212,7 +212,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     psiThermo,
     psiuReactionThermo,
diff --git a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C
index 0cd88be7c133d8c3d4768d25567345de9dab8aab..b2a27d01dd284a1291df8cde6d2c52e1944e6b0a 100644
--- a/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C
+++ b/src/thermophysicalModels/reactionThermo/rhoReactionThermo/rhoReactionThermos.C
@@ -35,6 +35,10 @@ License
 #include "janafThermo.H"
 #include "sensibleEnthalpy.H"
 #include "thermo.H"
+#include "rhoConst.H"
+#include "perfectFluid.H"
+#include "adiabaticPerfectFluid.H"
+#include "Boussinesq.H"
 
 #include "constTransport.H"
 #include "sutherlandTransport.H"
@@ -45,6 +49,7 @@ License
 #include "multiComponentMixture.H"
 #include "reactingMixture.H"
 #include "singleStepReactingMixture.H"
+#include "singleComponentMixture.H"
 
 #include "thermoPhysicsTypes.H"
 
@@ -55,7 +60,7 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -68,7 +73,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -81,7 +86,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -94,7 +99,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -107,7 +112,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -120,7 +125,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -134,7 +139,7 @@ makeReactionThermo
 );
 
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -147,7 +152,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -160,7 +165,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -173,7 +178,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -186,7 +191,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -199,7 +204,7 @@ makeReactionThermo
     specie
 );
 
-makeReactionThermo
+makeReactionThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -212,10 +217,11 @@ makeReactionThermo
     specie
 );
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // Multi-component thermo for internal energy
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -224,7 +230,7 @@ makeReactionMixtureThermo
     constGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -233,7 +239,7 @@ makeReactionMixtureThermo
     gasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -242,7 +248,7 @@ makeReactionMixtureThermo
     constIncompressibleGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -251,7 +257,7 @@ makeReactionMixtureThermo
     incompressibleGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -260,7 +266,7 @@ makeReactionMixtureThermo
     icoPoly8EThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -269,9 +275,37 @@ makeReactionMixtureThermo
     icoPoly8TranspJanafEThermoPhysics
 );
 
-// Multi-component reaction thermo
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constFluidEThermoPhysics
+);
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constAdiabaticFluidEThermoPhysics
+);
+
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constEThermoPhysics
+);
+
+
+// Reaction thermo for internal energy
+
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -280,7 +314,7 @@ makeReactionMixtureThermo
     constGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -289,7 +323,7 @@ makeReactionMixtureThermo
     gasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -298,7 +332,7 @@ makeReactionMixtureThermo
     constIncompressibleGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -307,7 +341,7 @@ makeReactionMixtureThermo
     incompressibleGasEThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -316,7 +350,10 @@ makeReactionMixtureThermo
     icoPoly8EThermoPhysics
 );
 
-makeReactionMixtureThermo
+
+// Single-step reaction thermo for internal energy
+
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -326,9 +363,101 @@ makeReactionMixtureThermo
 );
 
 
-// Multi-component thermo for sensible enthalpy
+// Single-component thermo for internal energy
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constGasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    gasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constIncompressibleGasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    incompressibleGasEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    icoPoly8EThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constFluidEThermoPhysics
+);
 
 makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constAdiabaticFluidEThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constEThermoPhysics
+);
+
+makeReactionThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constTransport,
+    sensibleInternalEnergy,
+    hConstThermo,
+    Boussinesq,
+    specie
+);
+
+makeReactionThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    sutherlandTransport,
+    sensibleInternalEnergy,
+    janafThermo,
+    Boussinesq,
+    specie
+);
+
+
+
+// Multi-component thermo for sensible enthalpy
+
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -337,7 +466,7 @@ makeReactionMixtureThermo
     constGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -346,7 +475,7 @@ makeReactionMixtureThermo
     gasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -355,7 +484,7 @@ makeReactionMixtureThermo
     constIncompressibleGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -364,7 +493,7 @@ makeReactionMixtureThermo
     incompressibleGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -373,7 +502,7 @@ makeReactionMixtureThermo
     icoPoly8HThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -382,9 +511,36 @@ makeReactionMixtureThermo
     icoPoly8TranspJanafHThermoPhysics
 );
 
-// Multi-component reaction thermo
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constFluidHThermoPhysics
+);
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constAdiabaticFluidHThermoPhysics
+);
+
+makeReactionMixtureThermos
+(
+    rhoThermo,
+    rhoReactionThermo,
+    heRhoThermo,
+    multiComponentMixture,
+    constHThermoPhysics
+);
+
+// Reaction thermo for sensible enthalpy
+
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -393,7 +549,7 @@ makeReactionMixtureThermo
     constGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -402,7 +558,7 @@ makeReactionMixtureThermo
     gasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -411,7 +567,7 @@ makeReactionMixtureThermo
     constIncompressibleGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -420,7 +576,7 @@ makeReactionMixtureThermo
     incompressibleGasHThermoPhysics
 );
 
-makeReactionMixtureThermo
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -429,7 +585,10 @@ makeReactionMixtureThermo
     icoPoly8HThermoPhysics
 );
 
-makeReactionMixtureThermo
+
+// Single-step reaction thermo for sensible enthalpy
+
+makeReactionMixtureThermos
 (
     rhoThermo,
     rhoReactionThermo,
@@ -439,6 +598,96 @@ makeReactionMixtureThermo
 );
 
 
+// Single-component thermo for sensible enthalpy
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constGasHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    gasHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constIncompressibleGasHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    incompressibleGasHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    icoPoly8HThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constFluidHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constAdiabaticFluidHThermoPhysics
+);
+
+makeReactionMixtureThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constHThermoPhysics
+);
+
+makeReactionThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    constTransport,
+    sensibleEnthalpy,
+    hConstThermo,
+    Boussinesq,
+    specie
+);
+
+makeReactionThermo
+(
+    rhoReactionThermo,
+    heRhoThermo,
+    singleComponentMixture,
+    sutherlandTransport,
+    sensibleEnthalpy,
+    janafThermo,
+    Boussinesq,
+    specie
+);
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
index 29b692858f731da74c22c3503c2385442614430c..20b2ecd0772b68d940960bc6742da4559c9a9100 100644
--- a/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
+++ b/src/thermophysicalModels/specie/include/thermoPhysicsTypes.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
      \\/     M anipulation  | Copyright (C) 2018 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
@@ -35,6 +35,9 @@ Description
 #include "specie.H"
 #include "perfectGas.H"
 #include "incompressiblePerfectGas.H"
+#include "perfectFluid.H"
+#include "adiabaticPerfectFluid.H"
+#include "rhoConst.H"
 #include "hConstThermo.H"
 #include "janafThermo.H"
 
@@ -134,6 +137,48 @@ namespace Foam
         8
     > icoPoly8TranspJanafHThermoPhysics;
 
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                perfectFluid<specie>
+            >,
+            sensibleEnthalpy
+        >
+    >
+    constFluidHThermoPhysics;
+
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                adiabaticPerfectFluid<specie>
+            >,
+            sensibleEnthalpy
+        >
+    >
+    constAdiabaticFluidHThermoPhysics;
+
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                rhoConst<specie>
+            >,
+            sensibleEnthalpy
+        >
+    >
+    constHThermoPhysics;
+
 
     // thermo physics types based on sensibleInternalEnergy
     typedef
@@ -216,6 +261,48 @@ namespace Foam
         >,
         8
     > icoPoly8TranspJanafEThermoPhysics;
+
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                perfectFluid<specie>
+            >,
+            sensibleInternalEnergy
+        >
+    >
+    constFluidEThermoPhysics;
+
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                adiabaticPerfectFluid<specie>
+            >,
+            sensibleInternalEnergy
+        >
+    >
+    constAdiabaticFluidEThermoPhysics;
+
+    typedef
+    constTransport
+    <
+        species::thermo
+        <
+            hConstThermo
+            <
+                rhoConst<specie>
+            >,
+            sensibleInternalEnergy
+        >
+    >
+    constEThermoPhysics;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //