From 8af299cc26340efd310b11b51456addb10a31dd4 Mon Sep 17 00:00:00 2001
From: andy <andy>
Date: Thu, 24 Mar 2011 12:33:57 +0000
Subject: [PATCH] ENH: Updated cloud sub-model macros

---
 .../coalParcel/makeCoalParcelSubmodels.C      | 22 +++++++---------
 ...keBasicKinematicCollidingParcelSubmodels.C | 15 +++++------
 ...keBasicReactingMultiphaseParcelSubmodels.C | 25 +++++++------------
 .../makeBasicReactingParcelSubmodels.C        | 18 ++++++-------
 .../makeBasicThermoParcelSubmodels.C          | 15 +++++------
 .../include/makeParcelDispersionModels.H      |  7 +++++-
 .../CollisionModel/CollisionModel.H           | 23 +++++++++++------
 .../DispersionModel/DispersionModel.H         | 15 +++++------
 .../InjectionModel/InjectionModel.H           | 22 +++++++++++-----
 .../ParticleForce/ParticleForce.H             | 17 +++++++++----
 .../PatchInteractionModel.H                   | 19 ++++++++------
 .../PostProcessingModel/PostProcessingModel.H | 19 ++++++++------
 .../SurfaceFilmModel/SurfaceFilmModel.H       | 19 ++++++++------
 .../CompositionModel/CompositionModel.H       | 15 +++++------
 .../PhaseChangeModel/PhaseChangeModel.H       | 19 ++++++++------
 .../DevolatilisationModel.H                   | 21 ++++++++++------
 .../SurfaceReactionModel.H                    | 21 ++++++++++------
 .../HeatTransferModel/HeatTransferModel.H     | 19 ++++++++------
 18 files changed, 193 insertions(+), 138 deletions(-)

diff --git a/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C b/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
index fa9e048bad1..4a6b297c1d8 100644
--- a/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
+++ b/src/lagrangian/coalCombustion/coalParcel/makeCoalParcelSubmodels.C
@@ -50,27 +50,23 @@ License
 
 namespace Foam
 {
-    typedef coalCloud::cloudType coalCloud_R;
-    typedef coalCloud_R::cloudType coalCloud_T;
-    typedef coalCloud_T::cloudType coalCloud_K;
-
     // Kinematic sub-models
-    makeThermoParcelForces(coalCloud_K);
-    makeParcelDispersionModels(coalCloud_K);
-    makeReactingMultiphaseParcelInjectionModels(coalCloud_K);
-    makeParcelPatchInteractionModels(coalCloud_K);
-    makeParcelPostProcessingModels(coalCloud_K);
+    makeThermoParcelForces(coalCloud);
+    makeParcelDispersionModels(coalCloud);
+    makeReactingMultiphaseParcelInjectionModels(coalCloud);
+    makeParcelPatchInteractionModels(coalCloud);
+    makeParcelPostProcessingModels(coalCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(coalCloud_T);
+    makeParcelHeatTransferModels(coalCloud);
 
     // Reacting sub-models
-    makeReactingMultiphaseParcelCompositionModels(coalCloud_R);
-    makeReactingParcelPhaseChangeModels(coalCloud_R);
+    makeReactingMultiphaseParcelCompositionModels(coalCloud);
+    makeReactingParcelPhaseChangeModels(coalCloud);
 
     // Reacting multiphase sub-models
     makeReactingMultiphaseParcelDevolatilisationModels(coalCloud);
-    makeReactingParcelSurfaceFilmModels(coalCloud_K);
+    makeReactingParcelSurfaceFilmModels(coalCloud);
     makeCoalParcelSurfaceReactionModels(coalCloud);
 }
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
index 3c61ef64255..51cf60820fb 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
@@ -39,16 +39,13 @@ License
 namespace Foam
 {
     // Kinematic sub-models
-    typedef basicKinematicCollidingCloud::cloudType
-        basicKinematicCollidingCloud_K;
-
-    makeParcelForces(basicKinematicCollidingCloud_K);
-    makeParcelDispersionModels(basicKinematicCollidingCloud_K);
-    makeParcelInjectionModels(basicKinematicCollidingCloud_K);
+    makeParcelForces(basicKinematicCollidingCloud);
+    makeParcelDispersionModels(basicKinematicCollidingCloud);
+    makeParcelInjectionModels(basicKinematicCollidingCloud);
     makeParcelCollisionModels(basicKinematicCollidingCloud);
-    makeParcelPatchInteractionModels(basicKinematicCollidingCloud_K);
-    makeParcelPostProcessingModels(basicKinematicCollidingCloud_K);
-    makeParcelSurfaceFilmModels(basicKinematicCollidingCloud_K);
+    makeParcelPatchInteractionModels(basicKinematicCollidingCloud);
+    makeParcelPostProcessingModels(basicKinematicCollidingCloud);
+    makeParcelSurfaceFilmModels(basicKinematicCollidingCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
index 53e1374424a..b1185d25d76 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSubmodels.C
@@ -48,29 +48,22 @@ License
 
 namespace Foam
 {
-    typedef basicReactingMultiphaseCloud::cloudType
-        basicReactingMultiphaseCloud_R;
-    typedef basicReactingMultiphaseCloud_R::cloudType
-        basicReactingMultiphaseCloud_T;
-    typedef basicReactingMultiphaseCloud_T::cloudType
-        basicReactingMultiphaseCloud_K;
-
     // Kinematic sub-models
-    makeThermoParcelForces(basicReactingMultiphaseCloud_K);
-    makeParcelDispersionModels(basicReactingMultiphaseCloud_K);
-    makeReactingMultiphaseParcelInjectionModels(basicReactingMultiphaseCloud_K);
-    makeParcelPatchInteractionModels(basicReactingMultiphaseCloud_K);
-    makeParcelPostProcessingModels(basicReactingMultiphaseCloud_K);
+    makeThermoParcelForces(basicReactingMultiphaseCloud);
+    makeParcelDispersionModels(basicReactingMultiphaseCloud);
+    makeReactingMultiphaseParcelInjectionModels(basicReactingMultiphaseCloud);
+    makeParcelPatchInteractionModels(basicReactingMultiphaseCloud);
+    makeParcelPostProcessingModels(basicReactingMultiphaseCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(basicReactingMultiphaseCloud_T);
+    makeParcelHeatTransferModels(basicReactingMultiphaseCloud);
 
     // Reacting sub-models
     makeReactingMultiphaseParcelCompositionModels
     (
-        basicReactingMultiphaseCloud_R
+        basicReactingMultiphaseCloud
     );
-    makeReactingParcelPhaseChangeModels(basicReactingMultiphaseCloud_R);
+    makeReactingParcelPhaseChangeModels(basicReactingMultiphaseCloud);
 
     // Reacting multiphase sub-models
     makeReactingMultiphaseParcelDevolatilisationModels
@@ -79,7 +72,7 @@ namespace Foam
     );
     makeReactingParcelSurfaceFilmModels
     (
-        basicReactingMultiphaseCloud_K
+        basicReactingMultiphaseCloud
     );
     makeReactingMultiphaseParcelSurfaceReactionModels
     (
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
index 4e96d838382..47b2fac7ecd 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSubmodels.C
@@ -44,23 +44,23 @@ License
 
 namespace Foam
 {
-    typedef basicReactingCloud::cloudType basicReactingCloud_T;
-    typedef basicReactingCloud_T::cloudType basicReactingCloud_K;
+    typedef basicReactingCloud::thermoCloudType thermoCloudType2;
+    typedef basicReactingCloud::kinematicCloudType kinematicCloudType2;
 
     // Kinematic sub-models
-    makeThermoParcelForces(basicReactingCloud_K);
-    makeParcelDispersionModels(basicReactingCloud_K);
-    makeReactingParcelInjectionModels(basicReactingCloud_K);
-    makeParcelPatchInteractionModels(basicReactingCloud_K);
-    makeParcelPostProcessingModels(basicReactingCloud_K);
+    makeThermoParcelForces(basicReactingCloud);
+    makeParcelDispersionModels(basicReactingCloud);
+    makeReactingParcelInjectionModels(basicReactingCloud);
+    makeParcelPatchInteractionModels(basicReactingCloud);
+    makeParcelPostProcessingModels(basicReactingCloud);
 
     // Thermo sub-models
-    makeParcelHeatTransferModels(basicReactingCloud_T);
+    makeParcelHeatTransferModels(basicReactingCloud);
 
     // Reacting sub-models
     makeReactingParcelCompositionModels(basicReactingCloud);
     makeReactingParcelPhaseChangeModels(basicReactingCloud);
-    makeReactingParcelSurfaceFilmModels(basicReactingCloud_K);
+    makeReactingParcelSurfaceFilmModels(basicReactingCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
index a7069c7229d..4a55932786f 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelSubmodels.C
@@ -41,18 +41,15 @@ License
 namespace Foam
 {
     // Kinematic sub-models
-    typedef basicThermoCloud::cloudType basicThermoCloud_K;
-
-    // Kinematic sub-models
-    makeThermoParcelForces(basicThermoCloud_K);
-    makeParcelDispersionModels(basicThermoCloud_K);
-    makeParcelInjectionModels(basicThermoCloud_K);
-    makeParcelPatchInteractionModels(basicThermoCloud_K);
-    makeParcelPostProcessingModels(basicThermoCloud_K);
+    makeThermoParcelForces(basicThermoCloud);
+    makeParcelDispersionModels(basicThermoCloud);
+    makeParcelInjectionModels(basicThermoCloud);
+    makeParcelPatchInteractionModels(basicThermoCloud);
+    makeParcelPostProcessingModels(basicThermoCloud);
 
     // Thermo sub-models
     makeParcelHeatTransferModels(basicThermoCloud);
-    makeParcelSurfaceFilmModels(basicThermoCloud_K);
+    makeParcelSurfaceFilmModels(basicThermoCloud);
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
index 61fc12f8eae..ed22e80b487 100644
--- a/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
+++ b/src/lagrangian/intermediate/parcels/include/makeParcelDispersionModels.H
@@ -38,7 +38,12 @@ License
                                                                               \
     makeDispersionModel(CloudType);                                           \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(DispersionRASModel<CloudType>, 0);    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<kinematicCloudType>,                               \
+        0                                                                     \
+    );                                                                        \
                                                                               \
     makeDispersionModelType(NoDispersion, CloudType);                         \
     makeDispersionModelType(GradientDispersionRAS, CloudType);                \
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
index 1d8ef2e6675..caf5473ec01 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/CollisionModel/CollisionModel.H
@@ -141,18 +141,27 @@ public:
 
 #define makeCollisionModel(CloudType)                                         \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(CollisionModel<CloudType>, 0);        \
-                                                                              \
-    defineTemplateRunTimeSelectionTable(CollisionModel<CloudType>, dictionary);
+    typedef CloudType::collidingCloudType collidingCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        CollisionModel<collidingCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        CollisionModel<collidingCloudType>,                                   \
+        dictionary                                                            \
+    );
 
 
 #define makeCollisionModelType(SS, CloudType)                                 \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::collidingCloudType collidingCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<collidingCloudType>, 0);           \
                                                                               \
-    CollisionModel<CloudType>::                                               \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    CollisionModel<collidingCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<collidingCloudType> >              \
+            add##SS##CloudType##collidingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
index 63ad6f09458..3d332ddd973 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H
@@ -132,22 +132,23 @@ public:
 
 #define makeDispersionModel(CloudType)                                        \
                                                                               \
-    defineTemplateTypeNameAndDebug(DispersionModel<CloudType>, 0);            \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineTemplateTypeNameAndDebug(DispersionModel<kinematicCloudType>, 0);   \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        DispersionModel<CloudType>,                                           \
+        DispersionModel<kinematicCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makeDispersionModelType(SS, CloudType)                                \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    DispersionModel<CloudType>::                                              \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    DispersionModel<kinematicCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index edd4d726f61..827dd1347bc 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -328,17 +328,27 @@ public:
 
 #define makeInjectionModel(CloudType)                                         \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(InjectionModel<CloudType>, 0);        \
-                                                                              \
-    defineTemplateRunTimeSelectionTable(InjectionModel<CloudType>, dictionary);
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        InjectionModel<kinematicCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        InjectionModel<kinematicCloudType>,                                   \
+        dictionary                                                            \
+    );
 
 
 #define makeInjectionModelType(SS, CloudType)                                 \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    InjectionModel<CloudType>::adddictionaryConstructorToTable<SS<CloudType> >\
-        add##SS##CloudType##ConstructorToTable_;
+    InjectionModel<kinematicCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+        add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
index 79653d42565..7664723dd19 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H
@@ -188,16 +188,23 @@ public:
 
 #define makeParticleForceModel(CloudType)                                     \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(ParticleForce<CloudType>, 0);         \
-    defineTemplateRunTimeSelectionTable(ParticleForce<CloudType>, dictionary);
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(ParticleForce<kinematicCloudType>, 0);\
+    defineTemplateRunTimeSelectionTable                                       \
+    (                                                                         \
+        ParticleForce<kinematicCloudType>,                                    \
+        dictionary                                                            \
+    );
 
 
 #define makeParticleForceModelType(SS, CloudType)                             \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    ParticleForce<CloudType>::adddictionaryConstructorToTable<SS<CloudType> > \
-        add##SS##CloudType##ConstructorToTable_;
+    ParticleForce<kinematicCloudType>::                                       \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+        add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
index f95a9802bb8..14995a5bc09 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H
@@ -192,22 +192,27 @@ public:
 
 #define makePatchInteractionModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PatchInteractionModel<CloudType>, 0); \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PatchInteractionModel<kinematicCloudType>,                            \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PatchInteractionModel<CloudType>,                                     \
+        PatchInteractionModel<kinematicCloudType>,                            \
         dictionary                                                            \
     );
 
 
 #define makePatchInteractionModelType(SS, CloudType)                          \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    PatchInteractionModel<CloudType>::                                        \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PatchInteractionModel<kinematicCloudType>::                               \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
index bb1352302c9..553e03a28ad 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PostProcessingModel/PostProcessingModel.H
@@ -145,22 +145,27 @@ public:
 
 #define makePostProcessingModel(CloudType)                                    \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PostProcessingModel<CloudType>, 0);   \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PostProcessingModel<kinematicCloudType>,                              \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PostProcessingModel<CloudType>,                                       \
+        PostProcessingModel<kinematicCloudType>,                              \
         dictionary                                                            \
     );
 
 
 #define makePostProcessingModelType(SS, CloudType)                            \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    PostProcessingModel<CloudType>::                                          \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PostProcessingModel<kinematicCloudType>::                                 \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
index 792eb876aef..35b8526c355 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H
@@ -243,22 +243,27 @@ public:
 
 #define makeSurfaceFilmModel(CloudType)                                       \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SurfaceFilmModel<CloudType>, 0);      \
-                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SurfaceFilmModel<kinematicCloudType>,                                 \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        SurfaceFilmModel<CloudType>,                                          \
+        SurfaceFilmModel<kinematicCloudType>,                                 \
         dictionary                                                            \
     );
 
 
 #define makeSurfaceFilmModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug(SS<kinematicCloudType>, 0);           \
                                                                               \
-    SurfaceFilmModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    SurfaceFilmModel<kinematicCloudType>::                                    \
+        adddictionaryConstructorToTable<SS<kinematicCloudType> >              \
+            add##SS##CloudType##kinematicCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index 2f38ff6a154..be2e267b869 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -267,26 +267,27 @@ public:
 
 #define makeCompositionModel(CloudType)                                       \
                                                                               \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
     defineNamedTemplateTypeNameAndDebug                                       \
     (                                                                         \
-        CompositionModel<CloudType>,                                          \
+        CompositionModel<reactingCloudType>,                                  \
         0                                                                     \
     );                                                                        \
-                                                                              \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        CompositionModel<CloudType>,                                          \
+        CompositionModel<reactingCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makeCompositionModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingCloudType>, 0);            \
                                                                               \
-    CompositionModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    CompositionModel<reactingCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<reactingCloudType> >               \
+            add##SS##CloudType##reactingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
index e0e161c8463..369b7b8e3ad 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
@@ -185,22 +185,27 @@ public:
 
 #define makePhaseChangeModel(CloudType)                                       \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(PhaseChangeModel<CloudType>, 0);      \
-                                                                              \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        PhaseChangeModel<reactingCloudType>,                                  \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        PhaseChangeModel<CloudType>,                                          \
+        PhaseChangeModel<reactingCloudType>,                                  \
         dictionary                                                            \
     );
 
 
 #define makePhaseChangeModelType(SS, CloudType)                               \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingCloudType reactingCloudType;                   \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingCloudType>, 0);            \
                                                                               \
-    PhaseChangeModel<CloudType>::                                             \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    PhaseChangeModel<reactingCloudType>::                                     \
+        adddictionaryConstructorToTable<SS<reactingCloudType> >               \
+            add##SS##CloudType##reactingCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
index 697c5ce76b3..4b16bb77f43 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/DevolatilisationModel/DevolatilisationModel/DevolatilisationModel.H
@@ -136,22 +136,29 @@ public:
 
 #define makeDevolatilisationModel(CloudType)                                  \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(DevolatilisationModel<CloudType>, 0); \
-                                                                              \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DevolatilisationModel<reactingMultiphaseCloudType>,                   \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        DevolatilisationModel<CloudType>,                                     \
+        DevolatilisationModel<reactingMultiphaseCloudType>,                   \
         dictionary                                                            \
     );
 
 
 #define makeDevolatilisationModelType(SS, CloudType)                          \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingMultiphaseCloudType>, 0);  \
                                                                               \
-    DevolatilisationModel<CloudType>::                                        \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    DevolatilisationModel<reactingMultiphaseCloudType>::                      \
+        adddictionaryConstructorToTable<SS<reactingMultiphaseCloudType> >     \
+        add##SS##CloudType##reactingMultiphaseCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index a8b975c1376..d218936656f 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -149,22 +149,29 @@ public:
 
 #define makeSurfaceReactionModel(CloudType)                                   \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SurfaceReactionModel<CloudType>, 0);  \
-                                                                              \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        SurfaceReactionModel<reactingMultiphaseCloudType>,                    \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        SurfaceReactionModel<CloudType>,                                      \
+        SurfaceReactionModel<reactingMultiphaseCloudType>,                    \
         dictionary                                                            \
     );
 
 
 #define makeSurfaceReactionModelType(SS, CloudType)                           \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::reactingMultiphaseCloudType                            \
+        reactingMultiphaseCloudType;                                          \
+    defineNamedTemplateTypeNameAndDebug(SS<reactingMultiphaseCloudType>, 0);  \
                                                                               \
-    SurfaceReactionModel<CloudType>::                                         \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    SurfaceReactionModel<reactingMultiphaseCloudType>::                       \
+        adddictionaryConstructorToTable<SS<reactingMultiphaseCloudType> >     \
+        add##SS##CloudType##reactingMultiphaseCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
index 9769f809411..e622d06f6c0 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H
@@ -155,22 +155,27 @@ public:
 
 #define makeHeatTransferModel(CloudType)                                      \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(HeatTransferModel<CloudType>, 0);     \
-                                                                              \
+    typedef CloudType::thermoCloudType thermoCloudType;                       \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        HeatTransferModel<thermoCloudType>,                                   \
+        0                                                                     \
+    );                                                                        \
     defineTemplateRunTimeSelectionTable                                       \
     (                                                                         \
-        HeatTransferModel<CloudType>,                                         \
+        HeatTransferModel<thermoCloudType>,                                         \
         dictionary                                                            \
     );
 
 
 #define makeHeatTransferModelType(SS, CloudType)                              \
                                                                               \
-    defineNamedTemplateTypeNameAndDebug(SS<CloudType>, 0);                    \
+    typedef CloudType::thermoCloudType thermoCloudType;                       \
+    defineNamedTemplateTypeNameAndDebug(SS<thermoCloudType>, 0);              \
                                                                               \
-    HeatTransferModel<CloudType>::                                            \
-        adddictionaryConstructorToTable<SS<CloudType> >                       \
-            add##SS##CloudType##ConstructorToTable_;
+    HeatTransferModel<thermoCloudType>::                                      \
+        adddictionaryConstructorToTable<SS<thermoCloudType> >                 \
+            add##SS##CloudType##thermoCloudType##ConstructorToTable_;
 
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-- 
GitLab