From 6532fda297222ddebd4e129a8274adcfb793f93a Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Mon, 2 Mar 2009 19:15:45 +0000
Subject: [PATCH] restructing - surface reactions to multiphase level +
 clean-up

---
 src/lagrangian/intermediate/Make/files        | 51 +++++++++----------
 .../Templates/KinematicCloud/KinematicCloud.C |  3 +-
 .../Templates/ReactingCloud/ReactingCloud.C   | 29 +++++++----
 .../Templates/ReactingCloud/ReactingCloud.H   | 30 +++++------
 .../Templates/ReactingCloud/ReactingCloudI.H  |  8 ---
 .../ReactingMultiphaseCloud.C                 | 43 +++++++++++++++-
 .../ReactingMultiphaseCloud.H                 | 42 ++++++++++++++-
 .../ReactingMultiphaseCloudI.H                | 11 ++++
 .../Templates/ThermoCloud/ThermoCloud.C       |  7 +++
 .../Templates/ThermoCloud/ThermoCloud.H       |  6 +++
 .../ReactingMultiphaseParcel.C                |  4 ++
 .../Templates/ReactingParcel/ReactingParcel.C | 38 +++-----------
 ...makeBasicKinematicParcelDispersionModels.C |  2 +
 .../makeBasicKinematicParcelDragModels.C      |  2 +
 .../makeBasicKinematicParcelInjectionModels.C |  2 +
 ...asicKinematicParcelWallInteractionModels.C |  2 +
 ...eactingMultiphaseParcelCompositionModels.C |  2 +
 ...ngMultiphaseParcelDevolatilisationModels.C |  2 +
 ...ReactingMultiphaseParcelDispersionModels.C |  2 +
 ...eBasicReactingMultiphaseParcelDragModels.C |  2 +
 ...actingMultiphaseParcelHeatTransferModels.C |  2 +
 ...cReactingMultiphaseParcelInjectionModels.C |  2 +
 ...eactingMultiphaseParcelPhaseChangeModels.C |  2 +
 ...ingMultiphaseParcelSurfaceReactionModels.C |  8 +--
 ...ingMultiphaseParcelWallInteractionModels.C |  2 +
 ...BasicReactingParcelSurfaceReactionModels.C | 46 -----------------
 ...makeBasicReactingParcelCompositionModels.C |  2 +
 .../makeBasicReactingParcelDispersionModels.C |  2 +
 .../makeBasicReactingParcelDragModels.C       |  2 +
 ...akeBasicReactingParcelHeatTransferModels.C |  2 +
 .../makeBasicReactingParcelInjectionModels.C  |  2 +
 ...makeBasicReactingParcelPhaseChangeModels.C |  2 +
 ...BasicReactingParcelWallInteractionModels.C |  2 +
 .../makeBasicThermoParcelDispersionModels.C   |  2 +
 .../makeBasicThermoParcelDragModels.C         |  2 +
 .../makeBasicThermoParcelHeatTransferModels.C |  2 +
 .../makeBasicThermoParcelInjectionModels.C    |  2 +
 ...keBasicThermoParcelWallInteractionModels.C |  2 +
 .../NoSurfaceReaction/NoSurfaceReaction.C     |  0
 .../NoSurfaceReaction/NoSurfaceReaction.H     |  4 +-
 .../NewSurfaceReactionModel.C                 |  0
 .../SurfaceReactionModel.C                    |  0
 .../SurfaceReactionModel.H                    |  3 +-
 43 files changed, 234 insertions(+), 147 deletions(-)
 rename src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/{ => submodels}/makeBasicKinematicParcelDispersionModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/{ => submodels}/makeBasicKinematicParcelDragModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/{ => submodels}/makeBasicKinematicParcelInjectionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/{ => submodels}/makeBasicKinematicParcelWallInteractionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelCompositionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelDevolatilisationModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelDispersionModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelDragModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelHeatTransferModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelInjectionModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelPhaseChangeModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C (88%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/{ => submodels}/makeBasicReactingMultiphaseParcelWallInteractionModels.C (95%)
 delete mode 100644 src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelCompositionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelDispersionModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelDragModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelHeatTransferModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelInjectionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelPhaseChangeModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicReactingParcel/{ => submodels}/makeBasicReactingParcelWallInteractionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicThermoParcel/{ => submodels}/makeBasicThermoParcelDispersionModels.C (96%)
 rename src/lagrangian/intermediate/parcels/derived/basicThermoParcel/{ => submodels}/makeBasicThermoParcelDragModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicThermoParcel/{ => submodels}/makeBasicThermoParcelHeatTransferModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicThermoParcel/{ => submodels}/makeBasicThermoParcelInjectionModels.C (95%)
 rename src/lagrangian/intermediate/parcels/derived/basicThermoParcel/{ => submodels}/makeBasicThermoParcelWallInteractionModels.C (95%)
 rename src/lagrangian/intermediate/submodels/{Reacting => ReactingMultiphase}/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C (100%)
 rename src/lagrangian/intermediate/submodels/{Reacting => ReactingMultiphase}/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H (97%)
 rename src/lagrangian/intermediate/submodels/{Reacting => ReactingMultiphase}/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C (100%)
 rename src/lagrangian/intermediate/submodels/{Reacting => ReactingMultiphase}/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C (100%)
 rename src/lagrangian/intermediate/submodels/{Reacting => ReactingMultiphase}/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H (98%)

diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files
index 44d371fdefa..7e2bd41a8ee 100644
--- a/src/lagrangian/intermediate/Make/files
+++ b/src/lagrangian/intermediate/Make/files
@@ -22,44 +22,43 @@ clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.C
 /* kinematic parcel sub-models */
 KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel
 $(KINEMATICPARCEL)/defineBasicKinematicParcel.C
-$(KINEMATICPARCEL)/makeBasicKinematicParcelDispersionModels.C
-$(KINEMATICPARCEL)/makeBasicKinematicParcelDragModels.C
-$(KINEMATICPARCEL)/makeBasicKinematicParcelInjectionModels.C
-$(KINEMATICPARCEL)/makeBasicKinematicParcelWallInteractionModels.C
+$(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelDispersionModels.C
+$(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelDragModels.C
+$(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelInjectionModels.C
+$(KINEMATICPARCEL)/submodels/makeBasicKinematicParcelWallInteractionModels.C
 
 /* thermo parcel sub-models */
 THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel
 $(THERMOPARCEL)/defineBasicThermoParcel.C
-$(THERMOPARCEL)/makeBasicThermoParcelDispersionModels.C
-$(THERMOPARCEL)/makeBasicThermoParcelDragModels.C
-$(THERMOPARCEL)/makeBasicThermoParcelHeatTransferModels.C
-$(THERMOPARCEL)/makeBasicThermoParcelInjectionModels.C
-$(THERMOPARCEL)/makeBasicThermoParcelWallInteractionModels.C
+$(THERMOPARCEL)/submodels/makeBasicThermoParcelDispersionModels.C
+$(THERMOPARCEL)/submodels/makeBasicThermoParcelDragModels.C
+$(THERMOPARCEL)/submodels/makeBasicThermoParcelHeatTransferModels.C
+$(THERMOPARCEL)/submodels/makeBasicThermoParcelInjectionModels.C
+$(THERMOPARCEL)/submodels/makeBasicThermoParcelWallInteractionModels.C
 
 /* reacting parcel sub-models */
 REACTINGPARCEL=$(DERIVEDPARCELS)/basicReactingParcel
 $(REACTINGPARCEL)/defineBasicReactingParcel.C
-$(REACTINGPARCEL)/makeBasicReactingParcelCompositionModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelDispersionModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelDragModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelHeatTransferModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelInjectionModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelPhaseChangeModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelSurfaceReactionModels.C
-$(REACTINGPARCEL)/makeBasicReactingParcelWallInteractionModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelCompositionModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelDispersionModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelDragModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelHeatTransferModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelInjectionModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelPhaseChangeModels.C
+$(REACTINGPARCEL)/submodels/makeBasicReactingParcelWallInteractionModels.C
 
 /* reacting multiphase parcel sub-models */
 REACTINGMPPARCEL=$(DERIVEDPARCELS)/basicReactingMultiphaseParcel
 $(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelCompositionModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelDispersionModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelDragModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelHeatTransferModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelInjectionModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
-$(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelWallInteractionModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelDragModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+$(REACTINGMPPARCEL)/submodels/makeBasicReactingMultiphaseParcelWallInteractionModels.C
 
 /* bolt-on models */
 submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
index 3b92b98f0aa..6584495b637 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
@@ -253,8 +253,7 @@ void Foam::KinematicCloud<ParcelType>::info() const
         << "    Current number of parcels       = "
         << returnReduce(this->size(), sumOp<label>()) << nl
         << "    Current mass in system          = "
-        << returnReduce(massInSystem(), sumOp<scalar>()) << nl
-        << endl;
+        << returnReduce(massInSystem(), sumOp<scalar>()) << nl;
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
index 640ce508d51..15a088c000b 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
@@ -28,7 +28,6 @@ License
 
 #include "CompositionModel.H"
 #include "PhaseChangeModel.H"
-#include "SurfaceReactionModel.H"
 
 // * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * * //
 
@@ -97,15 +96,8 @@ Foam::ReactingCloud<ParcelType>::ReactingCloud
             *this
         )
     ),
-    surfaceReactionModel_
-    (
-        SurfaceReactionModel<ReactingCloud<ParcelType> >::New
-        (
-            this->particleProperties(),
-            *this
-        )
-    ),
-    rhoTrans_(thermo.composition().Y().size())
+    rhoTrans_(thermo.composition().Y().size()),
+    dMassPhaseChange_(0.0)
 {
     // Set storage for mass source fields and initialise to zero
     forAll(rhoTrans_, i)
@@ -224,4 +216,21 @@ void Foam::ReactingCloud<ParcelType>::evolve()
 }
 
 
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::info() const
+{
+    ThermoCloud<ParcelType>::info();
+
+    Info<< "    Mass transfer phase change      = "
+        << returnReduce(dMassPhaseChange_, sumOp<scalar>()) << nl;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingCloud<ParcelType>::addToMassPhaseChange(const scalar dMass)
+{
+    dMassPhaseChange_ += dMass;
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
index ee541dd6d90..3af70b1904e 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H
@@ -30,7 +30,6 @@ Description
     - Adds to thermodynamic cloud
       - Variable composition (single phase)
       - Phase change
-      - Surface reactions
 
 SourceFiles
     ReactingCloudI.H
@@ -62,9 +61,6 @@ class CompositionModel;
 template<class CloudType>
 class PhaseChangeModel;
 
-template<class CloudType>
-class SurfaceReactionModel;
-
 /*---------------------------------------------------------------------------*\
                       Class ReactingCloud Declaration
 \*---------------------------------------------------------------------------*/
@@ -97,13 +93,6 @@ class ReactingCloud
             autoPtr<PhaseChangeModel<ReactingCloud<ParcelType> > >
                 phaseChangeModel_;
 
-            //- Reacting surface reaction model
-            autoPtr
-            <
-                SurfaceReactionModel<ReactingCloud<ParcelType> >
-            >
-            surfaceReactionModel_;
-
 
         // Sources
 
@@ -111,6 +100,12 @@ class ReactingCloud
             PtrList<DimensionedField<scalar, volMesh> > rhoTrans_;
 
 
+        // Check
+
+            //- Total mass transferred to continuous phase via phase change
+            scalar dMassPhaseChange_;
+
+
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -168,10 +163,6 @@ public:
                 inline const PhaseChangeModel<ReactingCloud<ParcelType> >&
                     phaseChange() const;
 
-                //- Return reference to reacting surface reaction model
-                inline const SurfaceReactionModel<ReactingCloud<ParcelType> >&
-                    surfaceReaction() const;
-
 
             // Sources
 
@@ -196,6 +187,15 @@ public:
                         Srho1() const;
 
 
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+            //- Add to cumulative phase change mass transfer
+            void addToMassPhaseChange(const scalar dMass);
+
+
         // Cloud evolution functions
 
             //- Add new parcel
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index 146db083cc0..4bf20a37a9c 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -66,14 +66,6 @@ Foam::ReactingCloud<ParcelType>::phaseChange() const
 }
 
 
-template<class ParcelType>
-inline const Foam::SurfaceReactionModel<Foam::ReactingCloud<ParcelType> >&
-Foam::ReactingCloud<ParcelType>::surfaceReaction() const
-{
-    return surfaceReactionModel_;
-}
-
-
 template<class ParcelType>
 inline Foam::DimensionedField<Foam::scalar, Foam::volMesh>&
 Foam::ReactingCloud<ParcelType>::rhoTrans(const label i)
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
index 79a0581acde..708a3f72239 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
@@ -26,7 +26,6 @@ License
 
 #include "ReactingMultiphaseCloud.H"
 
-#include "CompositionModel.H"
 #include "DevolatilisationModel.H"
 #include "SurfaceReactionModel.H"
 
@@ -93,7 +92,16 @@ Foam::ReactingMultiphaseCloud<ParcelType>::ReactingMultiphaseCloud
             this->particleProperties(),
             *this
         )
-    )
+    ),
+    surfaceReactionModel_
+    (
+        SurfaceReactionModel<ReactingMultiphaseCloud<ParcelType> >::New
+        (
+            this->particleProperties(),
+            *this
+        )
+    ),
+    dMassDevolatilisation_(0.0)
 {}
 
 
@@ -185,4 +193,35 @@ void Foam::ReactingMultiphaseCloud<ParcelType>::evolve()
 }
 
 
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::info() const
+{
+    ReactingCloud<ParcelType>::info();
+    Info<< "    Mass transfer devolatilisation  = "
+        << returnReduce(dMassDevolatilisation_, sumOp<scalar>()) << nl;
+    Info<< "    Mass transfer surface reaction  = "
+        << returnReduce(dMassSurfaceReaction_, sumOp<scalar>()) << nl;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::addToMassDevolatilisation
+(
+    const scalar dMass
+)
+{
+    dMassDevolatilisation_ += dMass;
+}
+
+
+template<class ParcelType>
+void Foam::ReactingMultiphaseCloud<ParcelType>::addToMassSurfaceReaction
+(
+    const scalar dMass
+)
+{
+    dMassSurfaceReaction_ += dMass;
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
index 16e1140876c..b78a5c02426 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H
@@ -28,8 +28,9 @@ Class
 Description
     Templated base class for multiphase reacting cloud
     - Adds to reacting cloud
-      - Devolatilisatsion
       - multiphase composition
+      - devolatilisatsion
+      - surface reactions
 
 SourceFiles
     ReactingMultiphaseCloudI.H
@@ -53,6 +54,9 @@ namespace Foam
 template<class CloudType>
 class DevolatilisationModel;
 
+template<class CloudType>
+class SurfaceReactionModel;
+
 /*---------------------------------------------------------------------------*\
                    Class ReactingMultiphaseCloud Declaration
 \*---------------------------------------------------------------------------*/
@@ -78,6 +82,23 @@ class ReactingMultiphaseCloud
             >
             devolatilisationModel_;
 
+            //- Surface reaction model
+            autoPtr
+            <
+                SurfaceReactionModel<ReactingMultiphaseCloud<ParcelType> >
+            >
+            surfaceReactionModel_;
+
+
+        // Check
+
+            //- Total mass transferred to continuous phase via devolatilisation
+            scalar dMassDevolatilisation_;
+
+            //- Total mass transferred to continuous phase via surface
+            //  reactions
+            scalar dMassSurfaceReaction_;
+
 
     // Private Member Functions
 
@@ -125,6 +146,25 @@ public:
                 >&
                 devolatilisation() const;
 
+                //- Return reference to reacting surface reaction model
+                inline const SurfaceReactionModel
+                <
+                    ReactingMultiphaseCloud<ParcelType>
+                >&
+                surfaceReaction() const;
+
+
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+            //- Add to cumulative volatilisation mass transfer
+            void addToMassDevolatilisation(const scalar dMass);
+
+            //- Add to cumulative surface reaction transfer
+            void addToMassSurfaceReaction(const scalar dMass);
+
 
         // Cloud evolution functions
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H
index f27fae24eaf..752f2b8ca32 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H
@@ -37,4 +37,15 @@ Foam::ReactingMultiphaseCloud<ParcelType>::devolatilisation() const
 }
 
 
+template<class ParcelType>
+inline const Foam::SurfaceReactionModel
+<
+    Foam::ReactingMultiphaseCloud<ParcelType>
+>&
+Foam::ReactingMultiphaseCloud<ParcelType>::surfaceReaction() const
+{
+    return surfaceReactionModel_;
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
index 05a0b5f2aa4..b54624bb812 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
@@ -215,4 +215,11 @@ void Foam::ThermoCloud<ParcelType>::evolve()
 }
 
 
+template<class ParcelType>
+void Foam::ThermoCloud<ParcelType>::info() const
+{
+    KinematicCloud<ParcelType>::info();
+}
+
+
 // ************************************************************************* //
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
index 13c560b1525..d845b725b19 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H
@@ -197,6 +197,12 @@ public:
                     inline tmp<volScalarField> sigmap() const;
 
 
+        // Check
+
+            //- Print cloud information
+            void info() const;
+
+
         // Cloud evolution functions
 
             //- Add new parcel
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
index 0ab68ded742..bc132bb6f34 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
@@ -402,6 +402,8 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
         scalar volatileMass = YGas_[i]*dMassTot;
         dMassMT[id] += volatileMass;
     }
+
+    td.cloud().addToMassDevolatilisation(dMassTot);
 }
 
 
@@ -446,6 +448,8 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calcSurfaceReactions
         dMassSR,
         dhRet
     );
+
+    // TODO: td.cloud().addToMassDevolatilisation(sum(dMassSR));
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
index 266f6e25301..01fa099a925 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
@@ -61,6 +61,7 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled
     const scalar np0 = this->nParticle_;
     const scalar T0 = this->T_;
 
+
     // ~~~~~~~~~~~~~~~~~~~~~~~~~
     // Initialise transfer terms
     // ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -75,11 +76,6 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled
     // - components exist in particle already
     scalarList dMassMT(td.cloud().gases().size(), 0.0);
 
-    // Mass transfer due to surface reactions from particle to carrier phase
-    // - components do not necessarily exist in particle already
-    scalarList dMassSR(td.cloud().gases().size(), 0.0);
-
-
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Calculate velocity - update U
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -100,23 +96,8 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled
     scalarField X = td.cliud().composition().X(0, YMixture_);
     calcPhaseChange(td, dt, T, X, dMassMT);
 
-
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    // Calculate surface reactions
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-    // Initialise enthalpy retention to zero
-    scalar dhRet = 0.0;
-
-    calcSurfaceReactions(td, dt, celli, T0, T1, dMassMT, dMassSR, dhRet);
-
     // New total mass
-    const scalar mass1 = mass0 - sum(dMassMT) - sum(dMassSR);
-
-    // Add retained enthalpy from surface reaction to particle and remove
-    // from gas
-    T1 += dhRet/(0.5*(mass0 + mass1)*cp0);
-    dhTrans -= dhRet;
+    const scalar mass1 = mass0 - sum(dMassMT);
 
 
     // ~~~~~~~~~~~~~~~~~~~~~~~
@@ -126,7 +107,7 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled
     // Transfer mass lost from particle to carrier mass source
     forAll(dMassMT, i)
     {
-        td.cloud().rhoTrans(i)[celli] += np0*(dMassMT[i] + dMassSR[i]);
+        td.cloud().rhoTrans(i)[celli] += np0*dMassMT[i];
     }
 
     // Update momentum transfer
@@ -194,6 +175,7 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled
     const scalar mass0 = this->mass();
     const scalar cp0 = this->cp_;
 
+
     // ~~~~~~~~~~~~~~~~~~~~~~~~~
     // Initialise transfer terms
     // ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -208,10 +190,6 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled
     // - components exist in particle already
     scalarList dMassMT(td.cloud().gases().size(), 0.0);
 
-    // Mass transfer due to surface reactions from particle to carrier phase
-    // - components do not necessarily exist in particle already
-    scalarList dMassSR(td.cloud().gases().size(), 0.0);
-
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     // Calculate velocity - update U
@@ -231,7 +209,8 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled
     // Calculate phase change
     // ~~~~~~~~~~~~~~~~~~~~~~
     scalarField X = td.cloud().composition().X(0, YMixture_);
-    calcPhaseChange(td, dt, T, X, dMassMT);
+    scalar dMassPC = calcPhaseChange(td, dt, T, X, dMassMT);
+    T1 -= td.constProps().Lvap()*dMassPC/(0.5*mass0*cp0);
 
 
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -241,10 +220,8 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled
     // Initialise enthalpy retention to zero
     scalar dhRet = 0.0;
 
-    calcSurfaceReactions(td, dt, celli, T0, T1, dMassMT, dMassSR, dhRet);
-
     // New total mass
-    const scalar mass1 = mass0 - sum(dMassMT) - sum(dMassSR);
+    const scalar mass1 = mass0 - sum(dMassMT);
 
     // New specific heat capacity
     const scalar cp1 = cp0; // TODO: new cp1
@@ -312,6 +289,7 @@ void Foam::ReactingParcel<ParcelType>::calcPhaseChange
         dt
     );
 
+    td.cloud().addToMassPhaseChange(dMassTot);
     // TODO: Re-calculate mass fractions
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDispersionModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDispersionModels.C
index 7a09f02321f..f6444b1252f 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDispersionModels.C
@@ -31,6 +31,8 @@ License
 #include "GradientDispersionRAS.H"
 #include "StochasticDispersionRAS.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDispersionModel(KinematicCloud<basicKinematicParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDragModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDragModels.C
index e88f4e1d37b..6b10e4efb03 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelDragModels.C
@@ -30,6 +30,8 @@ License
 #include "NoDrag.H"
 #include "SphereDrag.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDragModel(KinematicCloud<basicKinematicParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
index e5cc927c67d..c722ac91fdf 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
@@ -31,6 +31,8 @@ License
 #include "ManualInjection.H"
 #include "ConeInjection.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeInjectionModel(KinematicCloud<basicKinematicParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelWallInteractionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelWallInteractionModels.C
index 95335509a6c..544cddaf2ad 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelWallInteractionModels.C
@@ -30,6 +30,8 @@ License
 #include "Rebound.H"
 #include "StandardWallInteraction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeWallInteractionModel(KinematicCloud<basicKinematicParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelCompositionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
index b598be99396..4dd31ffb585 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelCompositionModels.C
@@ -29,6 +29,8 @@ License
 
 #include "SingleMixtureFraction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeCompositionModel
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDevolatilisationModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
index 71c9d6e7c04..8704e48d801 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDevolatilisationModels.C
@@ -31,6 +31,8 @@ License
 #include "ConstantRateDevolatilisation.H"
 #include "SingleKineticRateDevolatilisation.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDevolatilisationModel
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDispersionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
index 5c96a859a79..8e4a77d5e30 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDispersionModels.C
@@ -31,6 +31,8 @@ License
 #include "GradientDispersionRAS.H"
 #include "StochasticDispersionRAS.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDispersionModel(KinematicCloud<basicReactingMultiphaseParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDragModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
index 253d546b7bd..5e56985952f 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelDragModels.C
@@ -30,6 +30,8 @@ License
 #include "NoDrag.H"
 #include "SphereDrag.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDragModel(KinematicCloud<basicReactingMultiphaseParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelHeatTransferModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
index 1b6f4e06e1c..f501421d8bb 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelHeatTransferModels.C
@@ -30,6 +30,8 @@ License
 #include "NoHeatTransfer.H"
 #include "RanzMarshall.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeHeatTransferModel(ThermoCloud<basicReactingMultiphaseParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelInjectionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
index 53bed2ed119..6d8b5aeac91 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
@@ -31,6 +31,8 @@ License
 #include "ManualInjection.H"
 #include "ConeInjection.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeInjectionModel(KinematicCloud<basicReactingMultiphaseParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
index 76383aaf113..88300dffb16 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelPhaseChangeModels.C
@@ -29,6 +29,8 @@ License
 
 #include "NoPhaseChange.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makePhaseChangeModel
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
similarity index 88%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
index 26c983dfac8..d0478807400 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelSurfaceReactionModels.C
@@ -25,22 +25,24 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "basicReactingMultiphaseParcel.H"
-#include "ReactingCloud.H"
+#include "ReactingMultiphaseCloud.H"
 
 #include "NoSurfaceReaction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeSurfaceReactionModel
     (
-        ReactingCloud<basicReactingMultiphaseParcel>
+        ReactingMultiphaseCloud<basicReactingMultiphaseParcel>
     );
 
     // Add instances of surface reaction model to the table
     makeSurfaceReactionModelType
     (
         NoSurfaceReaction,
-        ReactingCloud,
+        ReactingMultiphaseCloud,
         basicReactingMultiphaseParcel
     );
 };
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelWallInteractionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelWallInteractionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelWallInteractionModels.C
index 19057c485ec..3e7d911f8f3 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/makeBasicReactingMultiphaseParcelWallInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelWallInteractionModels.C
@@ -30,6 +30,8 @@ License
 #include "Rebound.H"
 #include "StandardWallInteraction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeWallInteractionModel(KinematicCloud<basicReactingMultiphaseParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
deleted file mode 100644
index 0cb133d8bab..00000000000
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C
+++ /dev/null
@@ -1,46 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  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 "basicReactingParcel.H"
-#include "ReactingCloud.H"
-
-#include "NoSurfaceReaction.H"
-
-namespace Foam
-{
-    makeSurfaceReactionModel(ReactingCloud<basicReactingParcel>);
-
-    // Add instances of surface reaction model to the table
-    makeSurfaceReactionModelType
-    (
-        NoSurfaceReaction,
-        ReactingCloud,
-        basicReactingParcel
-    );
-};
-
-
-// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
index 786fa74ddc0..7010ab4f2cd 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelCompositionModels.C
@@ -29,6 +29,8 @@ License
 
 #include "SinglePhaseMixture.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeCompositionModel(ReactingCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
index 80a351c7bb2..d2b6132bcaa 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDispersionModels.C
@@ -31,6 +31,8 @@ License
 #include "GradientDispersionRAS.H"
 #include "StochasticDispersionRAS.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDispersionModel(KinematicCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
index 178569796d6..0c43e221b1a 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelDragModels.C
@@ -30,6 +30,8 @@ License
 #include "NoDrag.H"
 #include "SphereDrag.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDragModel(KinematicCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
index e78caa71ec4..5bc2ea33a89 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelHeatTransferModels.C
@@ -30,6 +30,8 @@ License
 #include "NoHeatTransfer.H"
 #include "RanzMarshall.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeHeatTransferModel(ThermoCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
index 77b71a75abf..1af1e370884 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
@@ -31,6 +31,8 @@ License
 #include "ManualInjection.H"
 #include "ConeInjection.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeInjectionModel(KinematicCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelPhaseChangeModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelPhaseChangeModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
index 537ff586faa..65118fa8f71 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelPhaseChangeModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelPhaseChangeModels.C
@@ -29,6 +29,8 @@ License
 
 #include "NoPhaseChange.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makePhaseChangeModel(ReactingCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelWallInteractionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelWallInteractionModels.C
index 364d6f031e4..637fd92aaed 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelWallInteractionModels.C
@@ -30,6 +30,8 @@ License
 #include "Rebound.H"
 #include "StandardWallInteraction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeWallInteractionModel(KinematicCloud<basicReactingParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDispersionModels.C
similarity index 96%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDispersionModels.C
index f1ab424f9ba..86bc63c72a7 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDispersionModels.C
@@ -30,6 +30,8 @@ License
 #include "GradientDispersionRAS.H"
 #include "StochasticDispersionRAS.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDispersionModel(KinematicCloud<basicThermoParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDragModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDragModels.C
index b477000cf52..aaeacca70c8 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelDragModels.C
@@ -29,6 +29,8 @@ License
 #include "NoDrag.H"
 #include "SphereDrag.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeDragModel(KinematicCloud<basicThermoParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelHeatTransferModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelHeatTransferModels.C
index d8a3c67c975..afb3ae0833b 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelHeatTransferModels.C
@@ -29,6 +29,8 @@ License
 #include "NoHeatTransfer.H"
 #include "RanzMarshall.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeHeatTransferModel(ThermoCloud<basicThermoParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
index cb51b868525..f2f433b0216 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
@@ -30,6 +30,8 @@ License
 #include "ManualInjection.H"
 #include "ConeInjection.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeInjectionModel(KinematicCloud<basicThermoParcel>);
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelWallInteractionModels.C
similarity index 95%
rename from src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C
rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelWallInteractionModels.C
index 03402510f69..361ffffdb10 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelWallInteractionModels.C
@@ -29,6 +29,8 @@ License
 #include "Rebound.H"
 #include "StandardWallInteraction.H"
 
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
 namespace Foam
 {
     makeWallInteractionModel(KinematicCloud<basicThermoParcel>);
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
similarity index 100%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
similarity index 97%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
index 65ff10c0f29..edb919a6214 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
@@ -71,10 +71,10 @@ public:
     // Member Functions
 
         //- Flag to indicate whether model activates devolatisation model
-        bool active() const;
+        virtual bool active() const;
 
         //- Update surface reactions
-        void calculate
+        virtual void calculate
         (
             const scalar dt,
             const label celli,
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
similarity index 100%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/NewSurfaceReactionModel.C
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
similarity index 100%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.C
diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
similarity index 98%
rename from src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
rename to src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index 339af3560b1..6b4f5be31cb 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -56,7 +56,6 @@ namespace Foam
 template<class CloudType>
 class SurfaceReactionModel
 {
-
     // Private data
 
         //- The cloud dictionary
@@ -129,7 +128,7 @@ public:
 
     // Member Functions
 
-        //- Flag to indicate whether model activates devolatisation model
+        //- Flag to indicate whether model activates surface reaction model
         virtual bool active() const = 0;
 
         //- Update surface reactions
-- 
GitLab