From d07403b308a59a4ef8175f2404eba416437d655f Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Mon, 1 Jun 2009 19:21:21 +0100
Subject: [PATCH] templated thermo type

---
 .../reactingParcelFoam/createClouds.H         |  2 +-
 .../reactingParcelFoam/reactingParcelFoam.C   |  2 +-
 src/lagrangian/intermediate/Make/files        | 20 +++--
 .../Templates/ReactingCloud/ReactingCloud.C   |  2 +-
 .../Templates/ReactingCloud/ReactingCloud.H   | 14 +++-
 .../Templates/ReactingCloud/ReactingCloudI.H  |  2 +-
 .../ReactingCloud/ReactingCloudThermoTypes.H  | 10 +--
 .../ReactingMultiphaseCloud.C                 |  2 +-
 .../ReactingMultiphaseCloud.H                 |  3 +-
 .../baseClasses/reactingCloud/reactingCloud.H |  2 +-
 .../reactingMultiphaseCloud.H                 |  2 +-
 .../BasicReactingCloud/BasicReactingCloud.C   | 27 +++---
 .../BasicReactingCloud/BasicReactingCloud.H   | 39 +++++----
 .../BasicReactingMultiphaseCloud.C            | 27 +++---
 .../BasicReactingMultiphaseCloud.H            | 39 +++++----
 .../BasicTrackedReactingCloud.C               | 25 +++---
 .../BasicTrackedReactingCloud.H               | 17 +++-
 .../reactingParcel/reactingParcel.C           | 49 +++++++++++
 .../reactingParcel/reactingParcel.H           | 81 ++++++++++++++++++
 .../BasicReactingMultiphaseParcel.C           | 48 +++++------
 .../BasicReactingMultiphaseParcel.H           | 66 +++++++++------
 .../basicReactingMultiphaseParcelTypes.H      | 45 ++++++++++
 .../defineBasicReactingMultiphaseParcel.C     | 40 +++++----
 ...eactingMultiphaseParcelCompositionModels.C |  6 +-
 ...ngMultiphaseParcelDevolatilisationModels.C | 10 +--
 ...ReactingMultiphaseParcelDispersionModels.C | 12 +--
 ...eBasicReactingMultiphaseParcelDragModels.C |  8 +-
 ...actingMultiphaseParcelHeatTransferModels.C |  8 +-
 ...cReactingMultiphaseParcelInjectionModels.C | 12 +--
 ...ngMultiphaseParcelPatchInteractionModels.C | 10 +--
 ...eactingMultiphaseParcelPhaseChangeModels.C |  8 +-
 ...tingMultiphaseParcelPostProcessingModels.C |  8 +-
 ...ingMultiphaseParcelSurfaceReactionModels.C |  6 +-
 .../BasicReactingParcel/BasicReactingParcel.C | 46 +++++-----
 .../BasicReactingParcel/BasicReactingParcel.H | 64 ++++++++------
 .../basicReactingParcelTypes.H                | 83 +++++++++++++++++++
 .../defineBasicReactingParcel.C               | 24 +-----
 ...makeBasicReactingParcelCompositionModels.C |  6 +-
 .../makeBasicReactingParcelDispersionModels.C | 12 +--
 .../makeBasicReactingParcelDragModels.C       |  8 +-
 ...akeBasicReactingParcelHeatTransferModels.C |  8 +-
 .../makeBasicReactingParcelInjectionModels.C  | 14 ++--
 ...asicReactingParcelPatchInteractionModels.C | 10 +--
 ...makeBasicReactingParcelPhaseChangeModels.C |  8 +-
 ...eBasicReactingParcelPostProcessingModels.C |  8 +-
 .../BasicTrackedReactingParcel.C              | 57 +++++++------
 .../BasicTrackedReactingParcel.H              | 65 +++++++++------
 .../basicTrackedReactingParcelTypes.H         | 45 ++++++++++
 .../defineTrackedReactingParcel.C             | 36 ++++----
 ...keTrackedReactingParcelCompositionModels.C |  6 +-
 ...akeTrackedReactingParcelDispersionModels.C | 12 +--
 .../makeTrackedReactingParcelDragModels.C     |  8 +-
 ...eTrackedReactingParcelHeatTransferModels.C |  8 +-
 ...makeTrackedReactingParcelInjectionModels.C | 14 ++--
 ...ckedReactingParcelPatchInteractionModels.C | 10 +--
 ...keTrackedReactingParcelPhaseChangeModels.C |  8 +-
 ...rackedReactingParcelPostProcessingModels.C |  8 +-
 .../submodels/IO/IOList/makeParcelIOLists.C   | 10 +--
 .../CompositionModel/CompositionModel.C       |  2 +-
 .../CompositionModel/CompositionModel.H       |  5 +-
 60 files changed, 792 insertions(+), 445 deletions(-)
 create mode 100644 src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
 create mode 100644 src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
 create mode 100644 src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
 create mode 100644 src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
 create mode 100644 src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H

diff --git a/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
index b4ec5e40569..cdec69355e3 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
+++ b/applications/solvers/lagrangian/reactingParcelFoam/createClouds.H
@@ -29,7 +29,7 @@ forAll(gasProperties, i)
 }
 
 Info<< "\nConstructing reacting cloud" << endl;
-basicReactingCloud parcels
+BasicReactingCloud<specieReactingProperties> parcels
 (
     "reactingCloud1",
     rho,
diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
index ea57f0da0e3..89a2e815f3b 100644
--- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
+++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C
@@ -34,7 +34,7 @@ Description
 #include "fvCFD.H"
 #include "hCombustionThermo.H"
 #include "turbulenceModel.H"
-#include "basicReactingCloud.H"
+#include "BasicReactingCloud.H"
 #include "chemistryModel.H"
 #include "chemistrySolver.H"
 #include "ReactingCloudThermoTypes.H"
diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index 350aca8d462..2d8790fd763 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -1,13 +1,15 @@
 PARCELS=parcels
 DERIVEDPARCELS=$(PARCELS)/derived
+BASEPARCELS=$(PARCELS)/baseClasses
 
 /* Parcels */
 $(DERIVEDPARCELS)/basicKinematicParcel/basicKinematicParcel.C
 $(DERIVEDPARCELS)/basicThermoParcel/basicThermoParcel.C
-$(DERIVEDPARCELS)/basicReactingParcel/basicReactingParcel.C
-$(DERIVEDPARCELS)/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C
-$(DERIVEDPARCELS)/trackedReactingParcel/trackedReactingParcel.C
+/* $(DERIVEDPARCELS)/basicReactingParcel/basicReactingParcel.C */
+/* $(DERIVEDPARCELS)/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C */
+/* $(DERIVEDPARCELS)/trackedReactingParcel/trackedReactingParcel.C */
 
+$(BASEPARCELS)/reactingParcel/reactingParcel.C
 
 /* Cloud base classes */
 clouds/baseClasses/kinematicCloud/kinematicCloud.C
@@ -19,9 +21,9 @@ clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.C
 /* Cloud container/injection mechanisms */
 clouds/derived/basicKinematicCloud/basicKinematicCloud.C
 clouds/derived/basicThermoCloud/basicThermoCloud.C
-clouds/derived/basicReactingCloud/basicReactingCloud.C
-clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.C
-clouds/derived/trackedReactingCloud/trackedReactingCloud.C
+/* clouds/derived/basicReactingCloud/basicReactingCloud.C */
+/* clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.C */
+/* clouds/derived/trackedReactingCloud/trackedReactingCloud.C */
 
 
 /* kinematic parcel sub-models */
@@ -46,7 +48,7 @@ $(THERMOPARCEL)/submodels/makeBasicThermoParcelPostProcessingModels.C
 
 
 /* reacting parcel sub-models */
-REACTINGPARCEL=$(DERIVEDPARCELS)/basicReactingParcel
+REACTINGPARCEL=$(DERIVEDPARCELS)/BasicReactingParcel
 $(REACTINGPARCEL)/defineBasicReactingParcel.C
 $(REACTINGPARCEL)/submodels/makeBasicReactingParcelCompositionModels.C
 $(REACTINGPARCEL)/submodels/makeBasicReactingParcelDispersionModels.C
@@ -59,7 +61,7 @@ $(REACTINGPARCEL)/submodels/makeBasicReactingParcelPostProcessingModels.C
 
 
 /* reacting multiphase parcel sub-models */
-REACTINGMPPARCEL=$(DERIVEDPARCELS)/basicReactingMultiphaseParcel
+REACTINGMPPARCEL=$(DERIVEDPARCELS)/BasicReactingMultiphaseParcel
 $(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
 $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
 $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
@@ -74,7 +76,7 @@ $(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionMo
 
 
 /* tracked reacting parcel sub-models */
-TRACKEDREACTINGPARCEL=$(DERIVEDPARCELS)/trackedReactingParcel
+TRACKEDREACTINGPARCEL=$(DERIVEDPARCELS)/BasicTrackedReactingParcel
 $(TRACKEDREACTINGPARCEL)/defineTrackedReactingParcel.C
 $(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelCompositionModels.C
 $(TRACKEDREACTINGPARCEL)/submodels/makeTrackedReactingParcelDispersionModels.C
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
index cd1fdca7e99..2252ad4b8be 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
@@ -68,7 +68,7 @@ Foam::ReactingCloud<ParcelType>::ReactingCloud
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<thermoType>& carrierSpecies
 )
 :
     ThermoCloud<ParcelType>(cloudName, rho, U, g, thermo),
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
index 9b78fbb5ad5..1ac2fb9af5e 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
@@ -72,6 +72,14 @@ class ReactingCloud
     public ThermoCloud<ParcelType>,
     public reactingCloud
 {
+public:
+
+    //- Type of thermodynamics the cloud was instantiated for
+    typedef typename ParcelType::thermoType thermoType;
+
+
+private:
+
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -92,7 +100,7 @@ protected:
         hCombustionThermo& carrierThermo_;
 
         //- Gas phase properties
-        PtrList<specieReactingProperties>& carrierSpecies_;
+        PtrList<thermoType>& carrierSpecies_;
 
 
         // References to the cloud sub-models
@@ -143,7 +151,7 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<thermoType>& carrierSpecies
         );
 
 
@@ -170,7 +178,7 @@ public:
             inline hCombustionThermo& carrierThermo();
 
             //- Gas phase properties
-            inline const PtrList<specieReactingProperties>& carrierSpecies() const;
+            inline const PtrList<thermoType>& carrierSpecies() const;
 
 
             // Sub-models
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index d21df2f89d4..8dbaf52bbcf 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -51,7 +51,7 @@ Foam::ReactingCloud<ParcelType>::carrierThermo()
 
 
 template<class ParcelType>
-inline const Foam::PtrList<Foam::specieReactingProperties>&
+inline const Foam::PtrList<typename ParcelType::thermoType>&
 Foam::ReactingCloud<ParcelType>::carrierSpecies() const
 {
     return carrierSpecies_;
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
index 2341e65aa02..015f00fb8b1 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Typedefs
-    Foam::cloudThermoTypes
+    Foam::ReactingCloudThermoTypes
 
 Description
 
@@ -33,8 +33,6 @@ Description
 #define ReactingCloudThermoTypes_H
 
 #include "sutherlandTransport.H"
-#include "multiComponentMixture.H"
-#include "specie.H"
 #include "constTransport.H"
 #include "specieThermo.H"
 #include "hConstThermo.H"
@@ -45,12 +43,6 @@ Description
 
 namespace Foam
 {
-//    typedef multiComponentMixture<constTransport<specieThermo<hConstThermo<perfectGas> > > > specieProperties;
-//    typedef hConstThermo<perfectGas> specieProperties;
-
-//    typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
-//        specieProperties;
-
     typedef sutherlandTransport<specieThermo<janafThermo<perfectGas> > >
         specieReactingProperties;
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
index 241dfaa65a5..8f86c70859c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
@@ -39,7 +39,7 @@ Foam::ReactingMultiphaseCloud<ParcelType>::ReactingMultiphaseCloud
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<typename ReactingCloud<ParcelType>::thermoType>& carrierSpecies
 )
 :
     ReactingCloud<ParcelType>(cloudName, rho, U, g, thermo, carrierSpecies),
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
index 7d3bb60207f..f0396691b6e 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
@@ -124,7 +124,8 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<typename ReactingCloud<ParcelType>::thermoType>&
+                carrierSpecies
         );
 
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
index a27bf4edf18..f35de5ffd69 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingCloud/reactingCloud.H
@@ -35,7 +35,7 @@ SourceFiles
 #ifndef reactingCloud_H
 #define reactingCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
index ea2ef0da89d..0359018cfa0 100644
--- a/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/baseClasses/reactingMultiphaseCloud/reactingMultiphaseCloud.H
@@ -35,7 +35,7 @@ SourceFiles
 #ifndef reactingMultiphaseCloud_H
 #define reactingMultiphaseCloud_H
 
-#include "volFields.H"
+#include "typeInfo.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
index 27c67a36ccd..01de934df78 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.C
@@ -24,29 +24,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingCloud, 0);
-};
-
+#include "BasicReactingCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::basicReactingCloud
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::BasicReactingCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<ThermoType>& carrierSpecies
 )
 :
-    ReactingCloud<basicReactingParcel>
+    ReactingCloud<BasicReactingParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::basicReactingCloud::basicReactingCloud
         carrierSpecies
     )
 {
-    basicReactingParcel::readFields(*this);
+    BasicReactingParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::basicReactingCloud::~basicReactingCloud()
+template<class ThermoType>
+Foam::BasicReactingCloud<ThermoType>::~BasicReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::basicReactingCloud::writeFields() const
+template<class ThermoType>
+void Foam::BasicReactingCloud<ThermoType>::writeFields() const
 {
-    basicReactingParcel::writeFields(*this);
+    BasicReactingParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
index c6c6a625c0a..1123ada759f 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingCloud/BasicReactingCloud.H
@@ -23,66 +23,71 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingCloud
+    Foam::BasicReactingCloud
 
 Description
     Reacting cloud templated on the reacting parcel
 
 SourceFiles
-    basicReactingCloud.C
+    BasicReactingCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingCloud_H
-#define basicReactingCloud_H
+#ifndef BasicReactingCloud_H
+#define BasicReactingCloud_H
 
 #include "ReactingCloud.H"
-#include "basicReactingParcel.H"
+#include "BasicReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingCloud;
+
 /*---------------------------------------------------------------------------*\
-                        Class basicReactingCloud Declaration
+                        Class BasicReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingCloud
+template<class ThermoType>
+class BasicReactingCloud
 :
-    public ReactingCloud<basicReactingParcel>
+    public ReactingCloud<BasicReactingParcel<ThermoType> >
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        basicReactingCloud(const basicReactingCloud&);
+        BasicReactingCloud(const BasicReactingCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const basicReactingCloud&);
+        void operator=(const BasicReactingCloud&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("basicReactingCloud");
+    TypeName("BasicReactingCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        basicReactingCloud
+        BasicReactingCloud
         (
             const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<ThermoType>& carrierSpecies
         );
 
 
     //- Destructor
-    ~basicReactingCloud();
+    ~BasicReactingCloud();
 
 
     // Member Functions
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "BasicReactingCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
index 9bd8b9c772d..2dce419cd2f 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.C
@@ -24,29 +24,22 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseCloud.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingMultiphaseCloud, 0);
-};
-
+#include "BasicReactingMultiphaseCloud.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseCloud::basicReactingMultiphaseCloud
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::BasicReactingMultiphaseCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& carrierSpecies
+    PtrList<ThermoType>& carrierSpecies
 )
 :
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::basicReactingMultiphaseCloud::basicReactingMultiphaseCloud
         carrierSpecies
     )
 {
-    basicReactingMultiphaseParcel::readFields(*this);
+    BasicReactingMultiphaseParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseCloud::~basicReactingMultiphaseCloud()
+template<class ThermoType>
+Foam::BasicReactingMultiphaseCloud<ThermoType>::~BasicReactingMultiphaseCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::basicReactingMultiphaseCloud::writeFields() const
+template<class ThermoType>
+void Foam::BasicReactingMultiphaseCloud<ThermoType>::writeFields() const
 {
-    basicReactingMultiphaseParcel::writeFields(*this);
+    BasicReactingMultiphaseParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
index 540431bfd41..f1d94e4d8c8 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicReactingMultiphaseCloud/BasicReactingMultiphaseCloud.H
@@ -23,66 +23,71 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingMultiphaseCloud
+    Foam::BasicReactingMultiphaseCloud
 
 Description
     Reacting multiphase cloud templated on the reacting multiphase parcel
 
 SourceFiles
-    basicReactingMultiphaseCloud.C
+    BasicReactingMultiphaseCloud.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingMultiphaseCloud_H
-#define basicReactingMultiphaseCloud_H
+#ifndef BasicReactingMultiphaseCloud_H
+#define BasicReactingMultiphaseCloud_H
 
 #include "ReactingMultiphaseCloud.H"
-#include "basicReactingMultiphaseParcel.H"
+#include "BasicReactingMultiphaseParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseCloud;
+
 /*---------------------------------------------------------------------------*\
-                Class basicReactingMultiphaseCloud Declaration
+                Class BasicReactingMultiphaseCloud Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingMultiphaseCloud
+template<class ThermoType>
+class BasicReactingMultiphaseCloud
 :
-    public ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+    public ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>
 {
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        basicReactingMultiphaseCloud(const basicReactingMultiphaseCloud&);
+        BasicReactingMultiphaseCloud(const BasicReactingMultiphaseCloud&);
 
         //- Disallow default bitwise assignment
-        void operator=(const basicReactingMultiphaseCloud&);
+        void operator=(const BasicReactingMultiphaseCloud&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("basicReactingMultiphaseCloud");
+    TypeName("BasicReactingMultiphaseCloud");
 
 
     // Constructors
 
         //- Construct given carrier gas fields
-        basicReactingMultiphaseCloud
+        BasicReactingMultiphaseCloud
         (
             const word& cloudName,
             const volScalarField& rho,
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& carrierSpecies
+            PtrList<ThermoType>& carrierSpecies
         );
 
 
     //- Destructor
-    ~basicReactingMultiphaseCloud();
+    ~BasicReactingMultiphaseCloud();
 
 
     // Member Functions
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
index 24937a07735..ecd0a267d84 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.C
@@ -26,27 +26,20 @@ License
 
 #include "trackedReactingCloud.H"
 
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(trackedReactingCloud, 0);
-};
-
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingCloud::trackedReactingCloud
+template<class ThermoType>
+Foam::trackedReactingCloud<ThermoType>::trackedReactingCloud
 (
     const word& cloudName,
     const volScalarField& rho,
     const volVectorField& U,
     const dimensionedVector& g,
     hCombustionThermo& thermo,
-    PtrList<specieReactingProperties>& gases
+    PtrList<ThermoType>& gases
 )
 :
-    ReactingCloud<trackedReactingParcel>
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >
     (
         cloudName,
         rho,
@@ -56,21 +49,23 @@ Foam::trackedReactingCloud::trackedReactingCloud
         gases
     )
 {
-    trackedReactingParcel::readFields(*this);
+    BasicTrackedReactingParcel<ThermoType>::readFields(*this);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::trackedReactingCloud::~trackedReactingCloud()
+template<class ThermoType>
+Foam::trackedReactingCloud<ThermoType>::~trackedReactingCloud()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::trackedReactingCloud::writeFields() const
+template<class ThermoType>
+void Foam::trackedReactingCloud<ThermoType>::writeFields() const
 {
-    trackedReactingParcel::writeFields(*this);
+    BasicTrackedReactingParcel<ThermoType>::writeFields(*this);
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
index 490b9188000..87d22a96473 100644
--- a/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/derived/BasicTrackedReactingCloud/BasicTrackedReactingCloud.H
@@ -37,20 +37,25 @@ SourceFiles
 #define trackedReactingCloud_H
 
 #include "ReactingCloud.H"
-#include "trackedReactingParcel.H"
+#include "BasicTrackedReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class trackedReactingCloud;
+
 /*---------------------------------------------------------------------------*\
                     Class trackedReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
 
+template<class ThermoType>
 class trackedReactingCloud
 :
-    public ReactingCloud<trackedReactingParcel>
+    public ReactingCloud<BasicTrackedReactingParcel<ThermoType> >
 {
     // Private Member Functions
 
@@ -77,7 +82,7 @@ public:
             const volVectorField& U,
             const dimensionedVector& g,
             hCombustionThermo& thermo,
-            PtrList<specieReactingProperties>& gases
+            PtrList<ThermoType>& gases
         );
 
 
@@ -98,6 +103,12 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+#ifdef NoRepository
+    #include "trackedReactingCloud.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 #endif
 
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
new file mode 100644
index 00000000000..45fc561ab8a
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.C
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     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 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "reactingParcel.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(reactingParcel, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::reactingParcel()
+{}
+
+
+// * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
+
+Foam::reactingParcel::~reactingParcel()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
new file mode 100644
index 00000000000..5dcc2a38deb
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/baseClasses/reactingParcel/reactingParcel.H
@@ -0,0 +1,81 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     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 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::basicReactingParcel
+
+Description
+    Base class for reacting parcel - simply used to set the contiguous flag
+
+SourceFiles
+    reactingParcel.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef reactingParcel_H
+#define reactingParcel_H
+
+#include "typeInfo.H"
+#include "contiguous.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class reactingParcel Declaration
+\*---------------------------------------------------------------------------*/
+
+class reactingParcel
+{
+public:
+
+    //- Run-time type information
+    TypeName("reactingParcel");
+
+    //- Construct null
+    reactingParcel();
+
+    //- Destructor
+    virtual ~reactingParcel();
+};
+
+
+template<>
+inline bool contiguous<reactingParcel>()
+{
+    return false; // Derived classes include scalar lists/fields
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
index 45e68e1dbe9..f24bd313d6d 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.C
@@ -24,28 +24,19 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-    defineParticleTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-    defineParcelTypeNameAndDebug(basicReactingMultiphaseParcel, 0);
-};
-
+#include "BasicReactingMultiphaseParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         owner,
         position,
@@ -54,9 +45,10 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+    ReactingMultiphaseCloud<BasicReactingMultiphaseParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -67,10 +59,12 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename
+        ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+        constantProperties& constProps
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         owner,
         position,
@@ -88,14 +82,15 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    const Cloud<basicReactingMultiphaseParcel>& cloud,
+    const Cloud<BasicReactingMultiphaseParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
     (
         cloud,
         is,
@@ -104,18 +99,21 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 {}
 
 
-Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::BasicReactingMultiphaseParcel
 (
-    const basicReactingMultiphaseParcel& p
+    const BasicReactingMultiphaseParcel<ThermoType>& p
 )
 :
-    ReactingMultiphaseParcel<basicReactingMultiphaseParcel>(p)
+    ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingMultiphaseParcel::~basicReactingMultiphaseParcel()
+template<class ThermoType>
+Foam::BasicReactingMultiphaseParcel<ThermoType>::
+~BasicReactingMultiphaseParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
index 9f3cc3aa41b..2d79c9a1b74 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/BasicReactingMultiphaseParcel.H
@@ -23,56 +23,67 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingMultiphaseParcel
+    Foam::BasicReactingMultiphaseParcel
 
 Description
 
 
 SourceFiles
-    basicReactingMultiphaseParcel.C
-    basicReactingMultiphaseParcelIO.C
+    BasicReactingMultiphaseParcel.C
+    BasicReactingMultiphaseParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingMultiphaseParcel_H
-#define basicReactingMultiphaseParcel_H
+#ifndef BasicReactingMultiphaseParcel_H
+#define BasicReactingMultiphaseParcel_H
 
 #include "ReactingMultiphaseParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingMultiphaseParcel;
+
 /*---------------------------------------------------------------------------*\
-               Class basicReactingMultiphaseParcel Declaration
+               Class BasicReactingMultiphaseParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingMultiphaseParcel
+template<class ThermoType>
+class BasicReactingMultiphaseParcel
 :
-    public ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
+    public reactingParcel,
+    public ReactingMultiphaseParcel<BasicReactingMultiphaseParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("basicReactingMultiphaseParcel");
+    TypeName("BasicReactingMultiphaseParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-             ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
              const vector& position,
              const label cellI
         );
 
         //- Construct from components
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-             ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
+             ReactingMultiphaseCloud<BasicReactingMultiphaseParcel>& owner,
              const vector& position,
              const label cellI,
              const label typeId,
@@ -83,46 +94,47 @@ public:
              const scalarField& YLiquid0,
              const scalarField& YSolid0,
              const scalarField& Y0,
-             const constantProperties& constProps
+             const typename
+                ReactingMultiphaseParcel<BasicReactingMultiphaseParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        basicReactingMultiphaseParcel
+        BasicReactingMultiphaseParcel
         (
-            const Cloud<basicReactingMultiphaseParcel>& c,
+            const Cloud<BasicReactingMultiphaseParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        basicReactingMultiphaseParcel(const basicReactingMultiphaseParcel& p);
+        BasicReactingMultiphaseParcel(const BasicReactingMultiphaseParcel& p);
 
         //- Construct and return a clone
-        autoPtr<basicReactingMultiphaseParcel> clone() const
+        autoPtr<BasicReactingMultiphaseParcel> clone() const
         {
             return
-                autoPtr<basicReactingMultiphaseParcel>
+                autoPtr<BasicReactingMultiphaseParcel>
                 (
-                    new basicReactingMultiphaseParcel(*this)
+                    new BasicReactingMultiphaseParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~basicReactingMultiphaseParcel();
+    virtual ~BasicReactingMultiphaseParcel();
 };
 
 
-template<>
-inline bool contiguous<basicReactingMultiphaseParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicReactingMultiphaseParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
new file mode 100644
index 00000000000..d693682796b
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/basicReactingMultiphaseParcelTypes.H
@@ -0,0 +1,45 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     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 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicReactingMultiphaseParcelTypes_H
+#define basicReactingMultiphaseParcelTypes_H
+
+#include "BasicReactingMultiphaseParcel.H"
+#include "ReactingCloudThermoTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicReactingMultiphaseParcel<specieReactingProperties>
+        bReactingMultiphaseParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
index 5278c5e0f5a..d022f38f20a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/defineBasicReactingMultiphaseParcel.C
@@ -24,72 +24,76 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<basicReactingMultiphaseParcel>, 0);
+    defineTemplateTypeNameAndDebug(bReactingMultiphaseParcel, 0);
+
+    defineTemplateTypeNameAndDebug(Particle<bReactingMultiphaseParcel>, 0);
+
+    defineTemplateTypeNameAndDebug(Cloud<bReactingMultiphaseParcel>, 0);
 
     defineParcelTypeNameAndDebug
     (
-        KinematicParcel<basicReactingMultiphaseParcel>,
+        KinematicParcel<bReactingMultiphaseParcel>,
+        0
+    );
+    defineTemplateTypeNameAndDebug
+    (
+        KinematicParcel<bReactingMultiphaseParcel>,
         0
     );
-//    defineTemplateTypeNameAndDebug
-//    (
-//        KinematicParcel<basicReactingMultiphaseParcel>,
-//        0
-//    );
     defineParcelTypeNameAndDebug
     (
-        ThermoParcel<basicReactingMultiphaseParcel>,
+        ThermoParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ThermoParcel<basicReactingMultiphaseParcel>,
+        ThermoParcel<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingParcel<basicReactingMultiphaseParcel>,
+        ReactingParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ReactingParcel<basicReactingMultiphaseParcel>,
+        ReactingParcel<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingMultiphaseParcel<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
         0
     );
     defineTemplateTypeNameAndDebug
     (
-        ReactingMultiphaseParcel<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseParcel<bReactingMultiphaseParcel>,
         0
     );
 
     defineParcelTypeNameAndDebug
     (
-        KinematicCloud<basicReactingMultiphaseParcel>,
+        KinematicCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ThermoCloud<basicReactingMultiphaseParcel>,
+        ThermoCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingCloud<basicReactingMultiphaseParcel>,
+        ReactingCloud<bReactingMultiphaseParcel>,
         0
     );
     defineParcelTypeNameAndDebug
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>,
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>,
         0
     );
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
index 4dd31ffb585..c1564097932 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SingleMixtureFraction.H"
@@ -35,7 +35,7 @@ namespace Foam
 {
     makeCompositionModel
     (
-        ReactingCloud<basicReactingMultiphaseParcel>
+        ReactingCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of composition model to the table
@@ -43,7 +43,7 @@ namespace Foam
     (
         SingleMixtureFraction,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
index 8704e48d801..8bd2d5b9610 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 #include "NoDevolatilisation.H"
@@ -37,7 +37,7 @@ namespace Foam
 {
     makeDevolatilisationModel
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of devolatilisation model to the table
@@ -45,19 +45,19 @@ namespace Foam
     (
         NoDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDevolatilisationModelType
     (
         ConstantRateDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDevolatilisationModelType
     (
         SingleKineticRateDevolatilisation,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
index 8e4a77d5e30..6de7b5da1ad 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeDispersionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<basicReactingMultiphaseParcel> >,
+        DispersionRASModel<KinematicCloud<bReactingMultiphaseParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
index 5e56985952f..9cda16d3f4b 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,15 +34,15 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeDragModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicReactingMultiphaseParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bReactingMultiphaseParcel);
     makeDragModelType
     (
         SphereDrag,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
index f501421d8bb..53051b08dab 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<basicReactingMultiphaseParcel>);
+    makeHeatTransferModel(ThermoCloud<bReactingMultiphaseParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
index 6b427ae7c24..03ebbf29f55 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -36,32 +36,32 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makeInjectionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
index f4a3047d770..67f00c34e6c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makePatchInteractionModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
index 99e9dfb89ba..2fb67a6f831 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -36,7 +36,7 @@ namespace Foam
 {
     makePhaseChangeModel
     (
-        ReactingCloud<basicReactingMultiphaseParcel>
+        ReactingCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of phase change model to the table
@@ -44,13 +44,13 @@ namespace Foam
     (
         NoPhaseChange,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
index 1cc61af6704..96dfb6c6106 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<basicReactingMultiphaseParcel>);
+    makePostProcessingModel(KinematicCloud<bReactingMultiphaseParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
index d0478807400..779a90c43f6 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 #include "ReactingMultiphaseCloud.H"
 
 #include "NoSurfaceReaction.H"
@@ -35,7 +35,7 @@ namespace Foam
 {
     makeSurfaceReactionModel
     (
-        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
+        ReactingMultiphaseCloud<bReactingMultiphaseParcel>
     );
 
     // Add instances of surface reaction model to the table
@@ -43,7 +43,7 @@ namespace Foam
     (
         NoSurfaceReaction,
         ReactingMultiphaseCloud,
-        basicReactingMultiphaseParcel
+        bReactingMultiphaseParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
index 480f4d6b195..d2b00fdf73f 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.C
@@ -24,34 +24,26 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(basicReactingParcel, 0);
-    defineParticleTypeNameAndDebug(basicReactingParcel, 0);
-    defineParcelTypeNameAndDebug(basicReactingParcel, 0);
-};
-
+#include "BasicReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    ReactingCloud<basicReactingParcel>& owner,
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    ReactingParcel<basicReactingParcel>(owner, position, cellI)
+    ReactingParcel<BasicReactingParcel<ThermoType> >(owner, position, cellI)
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    ReactingCloud<basicReactingParcel>& owner,
+    ReactingCloud<BasicReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -59,10 +51,11 @@ Foam::basicReactingParcel::basicReactingParcel
     const scalar d0,
     const vector& U0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename ReactingParcel<BasicReactingParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    ReactingParcel<basicReactingParcel>
+    ReactingParcel<BasicReactingParcel<ThermoType> >
     (
         owner,
         position,
@@ -77,29 +70,32 @@ Foam::basicReactingParcel::basicReactingParcel
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    const Cloud<basicReactingParcel>& cloud,
+    const Cloud<BasicReactingParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    ReactingParcel<basicReactingParcel>(cloud, is, readFields)
+    ReactingParcel<BasicReactingParcel<ThermoType> >(cloud, is, readFields)
 {}
 
 
-Foam::basicReactingParcel::basicReactingParcel
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::BasicReactingParcel
 (
-    const basicReactingParcel& p
+    const BasicReactingParcel<ThermoType>& p
 )
 :
-    ReactingParcel<basicReactingParcel>(p)
+    ReactingParcel<BasicReactingParcel>(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::basicReactingParcel::~basicReactingParcel()
+template<class ThermoType>
+Foam::BasicReactingParcel<ThermoType>::~BasicReactingParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
index 432199e5320..64301a263bf 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/BasicReactingParcel.H
@@ -23,56 +23,66 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::basicReactingParcel
+    Foam::BasicReactingParcel
 
 Description
 
 
 SourceFiles
-    basicReactingParcel.C
-    basicReactingParcelIO.C
+    BasicReactingParcel.C
+    BasicReactingParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef basicReactingParcel_H
-#define basicReactingParcel_H
+#ifndef BasicReactingParcel_H
+#define BasicReactingParcel_H
 
 #include "ReactingParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicReactingParcel;
+
 /*---------------------------------------------------------------------------*\
-                    Class basicReactingParcel Declaration
+                    Class BasicReactingParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class basicReactingParcel
+template<class ThermoType>
+class BasicReactingParcel
 :
-    public ReactingParcel<basicReactingParcel>
+    public reactingParcel,
+    public ReactingParcel<BasicReactingParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("basicReactingParcel");
+    TypeName("BasicReactingParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        basicReactingParcel
+        BasicReactingParcel
         (
-            ReactingCloud<basicReactingParcel>& owner,
+            ReactingCloud<BasicReactingParcel>& owner,
             const vector& position,
             const label cellI
         );
 
         //- Construct from components
-        basicReactingParcel
+        BasicReactingParcel
         (
-            ReactingCloud<basicReactingParcel>& owner,
+            ReactingCloud<BasicReactingParcel>& owner,
             const vector& position,
             const label cellI,
             const label typeId,
@@ -80,46 +90,46 @@ public:
             const scalar d0,
             const vector& U0,
             const scalarField& Y0,
-            const constantProperties& constProps
+            const typename ReactingParcel<BasicReactingParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        basicReactingParcel
+        BasicReactingParcel
         (
-            const Cloud<basicReactingParcel>& c,
+            const Cloud<BasicReactingParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        basicReactingParcel(const basicReactingParcel& p);
+        BasicReactingParcel(const BasicReactingParcel& p);
 
         //- Construct and return a clone
-        autoPtr<basicReactingParcel> clone() const
+        autoPtr<BasicReactingParcel> clone() const
         {
             return
-                autoPtr<basicReactingParcel>
+                autoPtr<BasicReactingParcel>
                 (
-                    new basicReactingParcel(*this)
+                    new BasicReactingParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~basicReactingParcel();
+    virtual ~BasicReactingParcel();
 };
 
 
-template<>
-inline bool contiguous<basicReactingParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicReactingParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
new file mode 100644
index 00000000000..c64bfc94735
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/basicReactingParcelTypes.H
@@ -0,0 +1,83 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     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 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicReactingParcelTypes_H
+#define basicReactingParcelTypes_H
+
+#include "BasicReactingParcel.H"
+#include "BasicReactingCloud.H"
+
+#include "ReactingCloudThermoTypes.H"
+#include "makeParcelIOList.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicReactingParcel<specieReactingProperties> bReactingParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define createReactingParcelType(ParcelType)                                  \
+                                                                              \
+    createReactingParcelThermoType(ParcelType, specieConstProperties);        \
+    createReactingParcelThermoType(ParcelType, specieReactingProperties);
+
+
+#define createReactingParcelThermoType(ParcelType, ThermoType)                \
+                                                                              \
+    typedef ParcelType<ThermoType> ParcelType##ThermoType;                    \
+                                                                              \
+    makeParcelIOList(ParcelType##ThermoType);                                 \
+                                                                              \
+    defineTemplateTypeNameAndDebug(BasicReactingCloud<ThermoType>, 0);        \
+                                                                              \
+    defineTemplateTypeNameAndDebug(ParcelType##ThermoType, 0);                \
+    defineTemplateTypeNameAndDebug(Particle<ParcelType##ThermoType>, 0);      \
+    defineTemplateTypeNameAndDebug(Cloud<ParcelType##ThermoType>, 0);         \
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicParcel<ParcelType##ThermoType>, 0); \
+    defineTemplateTypeNameAndDebug                                            \
+    (                                                                         \
+        KinematicParcel<ParcelType##ThermoType>,                              \
+        0                                                                     \
+    );                                                                        \
+    defineParcelTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);    \
+    defineTemplateTypeNameAndDebug(ThermoParcel<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);  \
+    defineTemplateTypeNameAndDebug(ReactingParcel<ParcelType##ThermoType>, 0);\
+                                                                              \
+    defineParcelTypeNameAndDebug(KinematicCloud<ParcelType##ThermoType>, 0);  \
+    defineParcelTypeNameAndDebug(ThermoCloud<ParcelType##ThermoType>, 0);     \
+    defineParcelTypeNameAndDebug(ReactingCloud<ParcelType##ThermoType>, 0);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
index 5c45881ccf7..6e64dd43ceb 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/defineBasicReactingParcel.C
@@ -24,29 +24,13 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
-#include "ReactingCloud.H"
+#include "basicReactingParcelTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0);
-
+    createReactingParcelType(BasicReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
index 7010ab4f2cd..ef686198d6a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SinglePhaseMixture.H"
@@ -33,14 +33,14 @@ License
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<basicReactingParcel>);
+    makeCompositionModel(ReactingCloud<bReactingParcel>);
 
     // Add instances of composition model to the table
     makeCompositionModelType
     (
         SinglePhaseMixture,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
index d2b6132bcaa..81c8562f507 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<basicReactingParcel>);
+    makeDispersionModel(KinematicCloud<bReactingParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<basicReactingParcel> >,
+        DispersionRASModel<KinematicCloud<bReactingParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
index 0c43e221b1a..6d51de8d7d0 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,11 +34,11 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<basicReactingParcel>);
+    makeDragModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, basicReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, basicReactingParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bReactingParcel);
+    makeDragModelType(SphereDrag, KinematicCloud, bReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
index 5bc2ea33a89..fbb32db8e4a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<basicReactingParcel>);
+    makeHeatTransferModel(ThermoCloud<bReactingParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
index 28355e9f675..7402b25ecc9 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -37,38 +37,38 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<basicReactingParcel>);
+    makeInjectionModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makeInjectionModelType
     (
         ReactingLookupTableInjection,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
index e596670663a..f0abeae98b1 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<basicReactingParcel>);
+    makePatchInteractionModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
index f8ce035ada1..c0190acefae 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePhaseChangeModel(ReactingCloud<basicReactingParcel>);
+    makePhaseChangeModel(ReactingCloud<bReactingParcel>);
 
     // Add instances of phase change model to the table
     makePhaseChangeModelType
     (
         NoPhaseChange,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
index ca9a3dba6c6..cd8bd46b234 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicReactingParcel/submodels/makeBasicReactingParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "basicReactingParcel.H"
+#include "basicReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<basicReactingParcel>);
+    makePostProcessingModel(KinematicCloud<bReactingParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        basicReactingParcel
+        bReactingParcel
     );
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
index 156953a8045..ae828896e9a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.C
@@ -24,34 +24,31 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-namespace Foam
-{
-    defineTypeNameAndDebug(trackedReactingParcel, 0);
-    defineParticleTypeNameAndDebug(trackedReactingParcel, 0);
-    defineParcelTypeNameAndDebug(trackedReactingParcel, 0);
-}
-
+#include "BasicTrackedReactingParcel.H"
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    ReactingCloud<trackedReactingParcel>& owner,
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(owner, position, cellI)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
+    (
+        owner,
+        position,
+        cellI
+    )
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    ReactingCloud<trackedReactingParcel>& owner,
+    ReactingCloud<BasicTrackedReactingParcel<ThermoType> >& owner,
     const vector& position,
     const label cellI,
     const label typeId,
@@ -59,10 +56,12 @@ Foam::trackedReactingParcel::trackedReactingParcel
     const scalar d0,
     const vector& U0,
     const scalarField& Y0,
-    const constantProperties& constProps
+    const typename
+        TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >::
+        constantProperties& constProps
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
     (
         owner,
         position,
@@ -77,29 +76,37 @@ Foam::trackedReactingParcel::trackedReactingParcel
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    const Cloud<trackedReactingParcel>& cloud,
+    const Cloud<BasicTrackedReactingParcel<ThermoType> >& cloud,
     Istream& is,
     bool readFields
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(cloud, is, readFields)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
+    (
+        cloud,
+        is,
+        readFields
+    )
 {}
 
 
-Foam::trackedReactingParcel::trackedReactingParcel
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::BasicTrackedReactingParcel
 (
-    const trackedReactingParcel& p
+    const BasicTrackedReactingParcel<ThermoType>& p
 )
 :
-    TrackedReactingParcel<trackedReactingParcel>(p)
+    TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >(p)
 {}
 
 
 // * * * * * * * * * * * * * * * *  Destructors  * * * * * * * * * * * * * * //
 
-Foam::trackedReactingParcel::~trackedReactingParcel()
+template<class ThermoType>
+Foam::BasicTrackedReactingParcel<ThermoType>::~BasicTrackedReactingParcel()
 {}
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
index 47e0291a65f..ef9ebda34db 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/BasicTrackedReactingParcel.H
@@ -23,56 +23,66 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::trackedReactingParcel
+    Foam::BasicTrackedReactingParcel
 
 Description
 
 
 SourceFiles
-    trackedReactingParcel.C
-    trackedReactingParcelIO.C
+    BasicTrackedReactingParcel.C
+    BasicTrackedReactingParcelIO.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef trackedReactingParcel_H
-#define trackedReactingParcel_H
+#ifndef BasicTrackedReactingParcel_H
+#define BasicTrackedReactingParcel_H
 
 #include "TrackedReactingParcel.H"
+#include "reactingParcel.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
+// Forward declaration of classes
+template<class ThermoType>
+class BasicTrackedReactingParcel;
+
 /*---------------------------------------------------------------------------*\
-                    Class trackedReactingParcel Declaration
+                 Class BasicTrackedReactingParcel Declaration
 \*---------------------------------------------------------------------------*/
 
-class trackedReactingParcel
+template<class ThermoType>
+class BasicTrackedReactingParcel
 :
-    public TrackedReactingParcel<trackedReactingParcel>
+    public reactingParcel,
+    public TrackedReactingParcel<BasicTrackedReactingParcel<ThermoType> >
 {
 
 public:
 
+    //- The type of thermodynamics this parcel was instantiated for
+    typedef ThermoType thermoType;
+
     //- Run-time type information
-    TypeName("trackedReactingParcel");
+    TypeName("BasicTrackedReactingParcel");
 
     // Constructors
 
         //- Construct from owner, position, and cloud owner
         //  Other properties initialised as null
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            ReactingCloud<trackedReactingParcel>& owner,
+            ReactingCloud<BasicTrackedReactingParcel>& owner,
             const vector& position,
             const label cellI
         );
 
         //- Construct from components
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            ReactingCloud<trackedReactingParcel>& owner,
+            ReactingCloud<BasicTrackedReactingParcel>& owner,
             const vector& position,
             const label cellI,
             const label typeId,
@@ -80,46 +90,47 @@ public:
             const scalar d0,
             const vector& U0,
             const scalarField& Y0,
-            const constantProperties& constProps
+            const typename
+                TrackedReactingParcel<BasicTrackedReactingParcel>::
+                constantProperties& constProps
         );
 
         //- Construct from Istream
-        trackedReactingParcel
+        BasicTrackedReactingParcel
         (
-            const Cloud<trackedReactingParcel>& c,
+            const Cloud<BasicTrackedReactingParcel>& c,
             Istream& is,
             bool readFields = true
         );
 
         //- Construct as a copy
-        trackedReactingParcel(const trackedReactingParcel& p);
+        BasicTrackedReactingParcel(const BasicTrackedReactingParcel& p);
 
         //- Construct and return a clone
-        autoPtr<trackedReactingParcel> clone() const
+        autoPtr<BasicTrackedReactingParcel> clone() const
         {
             return
-                autoPtr<trackedReactingParcel>
+                autoPtr<BasicTrackedReactingParcel>
                 (
-                    new trackedReactingParcel(*this)
+                    new BasicTrackedReactingParcel(*this)
                 );
         }
 
 
     //- Destructor
-    virtual ~trackedReactingParcel();
+    virtual ~BasicTrackedReactingParcel();
 };
 
 
-template<>
-inline bool contiguous<trackedReactingParcel>()
-{
-    return false; // Now have scalar lists/fields (mass fractions)
-}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
+} // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-} // End namespace Foam
+#ifdef NoRepository
+    #include "BasicTrackedReactingParcel.C"
+#endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
new file mode 100644
index 00000000000..9a30c248c77
--- /dev/null
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/basicTrackedReactingParcelTypes.H
@@ -0,0 +1,45 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     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 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef basicTrackedReactingParcelTypes_H
+#define basicTrackedReactingParcelTypes_H
+
+#include "BasicTrackedReactingParcel.H"
+#include "ReactingCloudThermoTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    typedef BasicTrackedReactingParcel<specieReactingProperties>
+        bTrackedReactingParcel;
+};
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
index 0d050351efc..9d7660fab74 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/defineTrackedReactingParcel.C
@@ -24,33 +24,35 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
-#include "ReactingCloud.H"
+#include "basicTrackedReactingParcelTypes.H"
+#include "BasicReactingCloud.H"
 
 namespace Foam
 {
-    defineTemplateTypeNameAndDebug(Cloud<trackedReactingParcel>, 0);
-
-    defineParcelTypeNameAndDebug(KinematicParcel<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicParcel<trackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ThermoParcel<trackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ThermoParcel<trackedReactingParcel>, 0);
-    defineParcelTypeNameAndDebug(ReactingParcel<trackedReactingParcel>, 0);
-    defineTemplateTypeNameAndDebug(ReactingParcel<trackedReactingParcel>, 0);
+    defineTemplateTypeNameAndDebug(bTrackedReactingParcel, 0);
+    defineTemplateTypeNameAndDebug(Particle<bTrackedReactingParcel>, 0);
+    defineTemplateTypeNameAndDebug(Cloud<bTrackedReactingParcel>, 0);
+
+    defineParcelTypeNameAndDebug(KinematicParcel<bTrackedReactingParcel>, 0);
+    defineTemplateTypeNameAndDebug(KinematicParcel<bTrackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ThermoParcel<bTrackedReactingParcel>, 0);
+    defineTemplateTypeNameAndDebug(ThermoParcel<bTrackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ReactingParcel<bTrackedReactingParcel>, 0);
+    defineTemplateTypeNameAndDebug(ReactingParcel<bTrackedReactingParcel>, 0);
     defineTemplateTypeNameAndDebug
     (
-        TrackedReactingParcel<trackedReactingParcel>,
+        TrackedReactingParcel<bTrackedReactingParcel>,
         0
     );
 
-    defineParcelTypeNameAndDebug(KinematicCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(KinematicCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(KinematicCloud<bTrackedReactingParcel>, 0);
 
-    defineParcelTypeNameAndDebug(ThermoCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ThermoCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(ThermoCloud<bTrackedReactingParcel>, 0);
 
-    defineParcelTypeNameAndDebug(ReactingCloud<trackedReactingParcel>, 0);
-//    defineTemplateTypeNameAndDebug(ReactingCloud<trackedReactingParcel>, 0);
+    defineParcelTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
+//    defineTemplateTypeNameAndDebug(ReactingCloud<bTrackedReactingParcel>, 0);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
index 342c3b6db57..e573e7ca36c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelCompositionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "SinglePhaseMixture.H"
@@ -33,14 +33,14 @@ License
 
 namespace Foam
 {
-    makeCompositionModel(ReactingCloud<trackedReactingParcel>);
+    makeCompositionModel(ReactingCloud<bTrackedReactingParcel>);
 
     // Add instances of composition model to the table
     makeCompositionModelType
     (
         SinglePhaseMixture,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
index ce1a1dd90dc..1858335ca95 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDispersionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDispersion.H"
@@ -35,11 +35,11 @@ License
 
 namespace Foam
 {
-    makeDispersionModel(KinematicCloud<trackedReactingParcel>);
+    makeDispersionModel(KinematicCloud<bTrackedReactingParcel>);
 
     defineNamedTemplateTypeNameAndDebug
     (
-        DispersionRASModel<KinematicCloud<trackedReactingParcel> >,
+        DispersionRASModel<KinematicCloud<bTrackedReactingParcel> >,
         0
     );
 
@@ -48,19 +48,19 @@ namespace Foam
     (
         NoDispersion,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeDispersionModelType
     (
         GradientDispersionRAS,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeDispersionModelType
     (
         StochasticDispersionRAS,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
index a1488780481..358da8e2e21 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelDragModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoDrag.H"
@@ -34,11 +34,11 @@ License
 
 namespace Foam
 {
-    makeDragModel(KinematicCloud<trackedReactingParcel>);
+    makeDragModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of drag model to the table
-    makeDragModelType(NoDrag, KinematicCloud, trackedReactingParcel);
-    makeDragModelType(SphereDrag, KinematicCloud, trackedReactingParcel);
+    makeDragModelType(NoDrag, KinematicCloud, bTrackedReactingParcel);
+    makeDragModelType(SphereDrag, KinematicCloud, bTrackedReactingParcel);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
index 56843b48621..7dfe9a3131e 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelHeatTransferModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ThermoCloud.H"
 
 #include "NoHeatTransfer.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makeHeatTransferModel(ThermoCloud<trackedReactingParcel>);
+    makeHeatTransferModel(ThermoCloud<bTrackedReactingParcel>);
 
     // Add instances of heat transfer model to the table
     makeHeatTransferModelType
     (
         NoHeatTransfer,
         ThermoCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeHeatTransferModelType
     (
         RanzMarshall,
         ThermoCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
index 480652141b2..28083e2973a 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelInjectionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "ConeInjection.H"
@@ -37,38 +37,38 @@ License
 
 namespace Foam
 {
-    makeInjectionModel(KinematicCloud<trackedReactingParcel>);
+    makeInjectionModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of injection model to the table
     makeInjectionModelType
     (
         ConeInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         FieldActivatedInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         ManualInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         NoInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makeInjectionModelType
     (
         ReactingLookupTableInjection,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
index 4205bcc2818..15dd56ee3da 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPatchInteractionModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "LocalInteraction.H"
@@ -35,26 +35,26 @@ License
 
 namespace Foam
 {
-    makePatchInteractionModel(KinematicCloud<trackedReactingParcel>);
+    makePatchInteractionModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of patch interaction model to the table
     makePatchInteractionModelType
     (
         LocalInteraction,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePatchInteractionModelType
     (
         Rebound,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePatchInteractionModelType
     (
         StandardWallInteraction,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
index 2c5d08bd942..533cf64dc9c 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPhaseChangeModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "ReactingCloud.H"
 
 #include "NoPhaseChange.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePhaseChangeModel(ReactingCloud<trackedReactingParcel>);
+    makePhaseChangeModel(ReactingCloud<bTrackedReactingParcel>);
 
     // Add instances of phase change model to the table
     makePhaseChangeModelType
     (
         NoPhaseChange,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePhaseChangeModelType
     (
         LiquidEvaporation,
         ReactingCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
index b4e25f1beae..c67cd52a6ad 100644
--- a/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/BasicTrackedReactingParcel/submodels/makeTrackedReactingParcelPostProcessingModels.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 #include "KinematicCloud.H"
 
 #include "NoPostProcessing.H"
@@ -34,20 +34,20 @@ License
 
 namespace Foam
 {
-    makePostProcessingModel(KinematicCloud<trackedReactingParcel>);
+    makePostProcessingModel(KinematicCloud<bTrackedReactingParcel>);
 
     // Add instances of post-processing model to the table
     makePostProcessingModelType
     (
         NoPostProcessing,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
     makePostProcessingModelType
     (
         StandardPostProcessing,
         KinematicCloud,
-        trackedReactingParcel
+        bTrackedReactingParcel
     );
 }
 
diff --git a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
index ebf246f6d80..04ff69a9c6a 100644
--- a/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
+++ b/src/lagrangian/intermediate/submodels/IO/IOList/makeParcelIOLists.C
@@ -28,10 +28,9 @@ License
 
 #include "basicKinematicParcel.H"
 #include "basicThermoParcel.H"
-#include "basicReactingParcel.H"
-#include "basicReactingMultiphaseParcel.H"
+#include "basicReactingMultiphaseParcelTypes.H"
 
-#include "trackedReactingParcel.H"
+#include "basicTrackedReactingParcelTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -39,10 +38,9 @@ namespace Foam
 {
     makeParcelIOList(basicKinematicParcel);
     makeParcelIOList(basicThermoParcel);
-    makeParcelIOList(basicReactingParcel);
-    makeParcelIOList(basicReactingMultiphaseParcel);
+    makeParcelIOList(bReactingMultiphaseParcel);
 
-    makeParcelIOList(trackedReactingParcel);
+    makeParcelIOList(bTrackedReactingParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
index ddcd74beb45..6acefb6ec8a 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
@@ -110,7 +110,7 @@ Foam::CompositionModel<CloudType>::carrierThermo() const
 
 
 template<class CloudType>
-const Foam::PtrList<Foam::specieReactingProperties>&
+const Foam::PtrList<typename CloudType::thermoType>&
 Foam::CompositionModel<CloudType>::carrierSpecies() const
 {
     return carrierSpecies_;
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 8fb8762cf02..2dac578982b 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -78,7 +78,7 @@ class CompositionModel
         hCombustionThermo& carrierThermo_;
 
         //- Reference to the carrier phase species
-        const PtrList<specieReactingProperties>& carrierSpecies_;
+        const PtrList<typename CloudType::thermoType>& carrierSpecies_;
 
         //- Global (additional) liquid properties data
         autoPtr<liquidMixture> liquids_;
@@ -152,7 +152,8 @@ public:
             // Composition lists
 
                 //- Return the carrier species
-                const PtrList<specieReactingProperties>& carrierSpecies() const;
+                const PtrList<typename CloudType::thermoType>&
+                    carrierSpecies() const;
 
                 //- Return the global (additional) liquids
                 const liquidMixture& liquids() const;
-- 
GitLab