From a0d36e3f90a88a1f30b0eea86594a883c34ce89b Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Fri, 27 Mar 2009 13:15:06 +0000
Subject: [PATCH] further dev on coupling, bits of restructuring

---
 .../Templates/KinematicCloud/KinematicCloud.C |   4 +-
 .../Templates/ReactingCloud/ReactingCloud.C   |   4 +-
 .../ReactingMultiphaseCloud.C                 |   6 +-
 .../Templates/ThermoCloud/ThermoCloud.C       |   4 +-
 .../KinematicParcel/KinematicParcel.C         |  30 ++-
 .../KinematicParcel/KinematicParcel.H         |  77 ++++---
 .../KinematicParcel/KinematicParcelI.H        | 111 ++++++----
 .../KinematicParcel/KinematicParcelIO.C       |  27 +--
 .../ReactingMultiphaseParcel.C                | 205 ++++++++++++------
 .../ReactingMultiphaseParcel.H                |  56 +++--
 .../ReactingMultiphaseParcelI.H               |  41 ++--
 .../ReactingMultiphaseParcelIO.C              |   8 +-
 .../Templates/ReactingParcel/ReactingParcel.C |  62 ++++--
 .../Templates/ReactingParcel/ReactingParcel.H |  28 +--
 .../ReactingParcel/ReactingParcelI.H          |  12 +-
 .../ReactingParcel/ReactingParcelIO.C         |   6 +-
 .../Templates/ThermoParcel/ThermoParcel.C     |  56 +++--
 .../Templates/ThermoParcel/ThermoParcel.H     |  19 +-
 .../Templates/ThermoParcel/ThermoParcelI.H    |  16 +-
 .../Templates/ThermoParcel/ThermoParcelIO.C   |   4 +-
 .../basicKinematicParcel.C                    |   8 +-
 .../basicKinematicParcel.H                    |   9 +-
 .../basicReactingMultiphaseParcel.C           |   8 +-
 .../basicReactingMultiphaseParcel.H           |   6 +-
 .../basicReactingParcel/basicReactingParcel.C |   8 +-
 .../basicReactingParcel/basicReactingParcel.H |   4 +-
 .../basicThermoParcel/basicThermoParcel.C     |   8 +-
 .../basicThermoParcel/basicThermoParcel.H     |  11 +-
 .../IO/DataEntry/polynomial/polynomial.H      |   2 +-
 .../CompositionModel/CompositionModel.C       |   2 +-
 .../CompositionModel/CompositionModel.H       |   2 +-
 .../LiquidEvaporation/LiquidEvaporation.C     |   6 +-
 .../LiquidEvaporation/LiquidEvaporation.H     |   6 +-
 .../NoPhaseChange/NoPhaseChange.C             |   2 +-
 .../NoPhaseChange/NoPhaseChange.H             |   4 +-
 .../PhaseChangeModel/PhaseChangeModel.H       |   4 +-
 .../NoSurfaceReaction/NoSurfaceReaction.C     |   6 +-
 .../NoSurfaceReaction/NoSurfaceReaction.H     |   6 +-
 .../SurfaceReactionModel.H                    |   7 +-
 39 files changed, 543 insertions(+), 342 deletions(-)

diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
index f60f69261ce..eeee6700097 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C
@@ -50,12 +50,12 @@ void Foam::KinematicCloud<ParcelType>::addNewParcel
     ParcelType* pPtr = new ParcelType
     (
         *this,
-        parcelTypeId_,
         position,
         cellId,
+        parcelTypeId_,
+        nParticles,
         d,
         U,
-        nParticles,
         constProps_
     );
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
index b14fcc17cd8..4fec0e0666d 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C
@@ -45,12 +45,12 @@ void Foam::ReactingCloud<ParcelType>::addNewParcel
     ParcelType* pPtr = new ParcelType
     (
         *this,
-        this->parcelTypeId(),
         position,
         cellId,
+        this->parcelTypeId(),
+        nParticles,
         d,
         U,
-        nParticles,
         composition().YMixture0(),
         constProps_
     );
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
index 29936f328ce..7936ddea409 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C
@@ -49,16 +49,16 @@ void Foam::ReactingMultiphaseCloud<ParcelType>::addNewParcel
     ParcelType* pPtr = new ParcelType
     (
         *this,
-        this->parcelTypeId(),
         position,
         cellId,
+        this->parcelTypeId(),
+        nParticles,
         d,
         U,
-        nParticles,
+        this->composition().YMixture0(),
         this->composition().Y0(idGas),
         this->composition().Y0(idLiquid),
         this->composition().Y0(idSolid),
-        this->composition().YMixture0(),
         constProps_
     );
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
index 40731ec2545..6872f2428ea 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C
@@ -46,12 +46,12 @@ void Foam::ThermoCloud<ParcelType>::addNewParcel
     ParcelType* pPtr = new ParcelType
     (
         *this,
-        this->parcelTypeId(),
         position,
         cellId,
+        this->parcelTypeId(),
+        nParticles,
         d,
         U,
-        nParticles,
         constProps_
     );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 70adc771b1b..007e5aac47d 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -79,6 +79,10 @@ void Foam::KinematicParcel<ParcelType>::calc
 {
     // Define local properties at beginning of time step
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = nParticle_;
+    const scalar d0 = d_;
+    const scalar U0 = U_;
+    const scalar rho0 = rho_;
     const scalar mass0 = mass();
 
 
@@ -97,7 +101,8 @@ void Foam::KinematicParcel<ParcelType>::calc
 
     // Calculate new particle velocity
     scalar Cud = 0.0;
-    vector U1 = calcVelocity(td, dt, cellI, Fx, mass0, Cud, dUTrans);
+    vector U1 =
+        calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Fx, Cud, dUTrans);
 
 
     // Accumulate carrier phase source terms
@@ -105,10 +110,10 @@ void Foam::KinematicParcel<ParcelType>::calc
     if (td.cloud().coupled())
     {
         // Update momentum transfer
-        td.cloud().UTrans()[cellI] += nParticle_*dUTrans;
+        td.cloud().UTrans()[cellI] += np0*dUTrans;
 
         // Coefficient to be applied in carrier phase momentum coupling
-        td.cloud().UCoeff()[cellI] += nParticle_*mass0*Cud;
+        td.cloud().UCoeff()[cellI] += np0*mass0*Cud;
     }
 
 
@@ -125,14 +130,17 @@ const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
     TrackData& td,
     const scalar dt,
     const label cellI,
-    const vector& Fx,
+    const scalar d,
+    const vector& U,
+    const scalar rho,
     const scalar mass,
+    const vector& Fx,
     scalar& Cud,
     vector& dUTrans
 ) const
 {
     // Return linearised term from drag model
-    Cud = td.cloud().drag().Cu(U_ - Uc_, d_, rhoc_, rho_, muc_);
+    Cud = td.cloud().drag().Cu(U - Uc_, d, rhoc_, rho, muc_);
 
     // Initialise total force (per unit mass)
     vector Ftot = vector::zero;
@@ -140,20 +148,20 @@ const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
     // Gravity force
     if (td.cloud().forceGravity())
     {
-        Ftot += td.g()*(1 - rhoc_/rho_);
+        Ftot += td.g()*(1 - rhoc_/rho);
     }
 
     // Virtual mass force
     if (td.cloud().forceVirtualMass())
     {
-//        Ftot += td.constProps().Cvm()*rhoc_/rho_*d(Uc - U_)/dt;
+//        Ftot += td.constProps().Cvm()*rhoc_/rho*d(Uc - U)/dt;
     }
 
     // Pressure gradient force
     if (td.cloud().forcePressureGradient())
     {
-        const vector& d = this->mesh().deltaCoeffs()[cellI];
-        Ftot += rhoc_/rho_*(U_ & (d^Uc_));
+//        const vector& delta = td.cloud().mesh().deltaCoeffs()[cellI];
+//        Ftot += rhoc_/rho*(U & (delta^Uc_));
     }
 
 
@@ -164,11 +172,11 @@ const Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity
     const vector ap = Uc_ + (Ftot + Fx)/(Cud + VSMALL);
     const scalar bp = Cud;
 
-    vector Unew = td.cloud().UIntegrator().integrate(U_, dt, ap, bp).value();
+    vector Unew = td.cloud().UIntegrator().integrate(U, dt, ap, bp).value();
 
     // Calculate the momentum transfer to the continuous phase
     // - do not include gravity impulse
-    dUTrans = -mass*(Unew - U_ - dt*td.g());
+    dUTrans = -mass*(Unew - U - dt*td.g());
 
     return Unew;
 }
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
index 35b46329dc6..1717ee1febd 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
@@ -31,7 +31,7 @@ Description
 
     Sub-models include:
     - drag
-    - break-up
+    - turbulent dispersion
     - wall interactions
 
 SourceFiles
@@ -193,15 +193,15 @@ protected:
             //- Parcel type id
             label typeId_;
 
+            //- Number of particles in Parcel
+            scalar nParticle_;
+
             //- Diameter [m]
             scalar d_;
 
             //- Velocity of Parcel [m/s]
             vector U_;
 
-            //- Number of particles in Parcel
-            scalar nParticle_;
-
             //- Density [kg/m3]
             scalar rho_;
 
@@ -214,13 +214,13 @@ protected:
 
         // Cell-based quantities
 
-            // - Density [kg/m3]
+            //- Density [kg/m3]
             scalar rhoc_;
 
-            // - Velocity [m/s]
+            //- Velocity [m/s]
             vector Uc_;
 
-            // - Viscosity [Pa.s]
+            //- Viscosity [Pa.s]
             scalar muc_;
 
 
@@ -231,12 +231,15 @@ protected:
         const vector calcVelocity
         (
             TrackData& td,
-            const scalar dt,
-            const label cellI,
-            const vector& Fx,
-            const scalar mass,
-            scalar& Cud,
-            vector& dUTrans
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const vector& U,           // velocity
+            const scalar rho,          // density
+            const scalar mass,         // mass
+            const vector& Fx,          // additional forces
+            scalar& Cud,               // linearised drag term coeff
+            vector& dUTrans            // momentum transfer to carrier phase
         ) const;
 
 
@@ -254,12 +257,12 @@ public:
         inline KinematicParcel
         (
             KinematicCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -282,21 +285,18 @@ public:
 
         // Access
 
-            //- Return type id
+            //- Return const access to type id
             inline label typeId() const;
 
+            //- Return const access to number of particles
+            inline scalar nParticle() const;
+
             //- Return const access to diameter
             inline scalar d() const;
 
             //- Return const access to velocity
             inline const vector& U() const;
 
-            //- Return const access to relative velocity
-            inline const vector& Ur() const;
-
-            //- Return const access to number of particles
-            inline scalar nParticle() const;
-
             //- Return const access to density
             inline scalar rho() const;
 
@@ -306,25 +306,21 @@ public:
             //- Return const access to turbulent velocity fluctuation
             inline const vector& UTurb() const;
 
-            //- The nearest distance to a wall that
-            //  the particle can be in the n direction
-            inline scalar wallImpactDistance(const vector& n) const;
-
 
         // Edit
 
+            //- Return access to type id
+            inline label typeId();
+
+            //- Return access to number of particles
+            inline scalar& nParticle();
+
             //- Return access to diameter
             inline scalar& d();
 
             //- Return access to velocity
             inline vector& U();
 
-            //- Return access to relative velocity
-            inline vector& Ur();
-
-            //- Return access to number of particles
-            inline scalar& nParticle();
-
             //- Return access to density
             inline scalar& rho();
 
@@ -337,22 +333,35 @@ public:
 
         // Helper functions
 
+            //- The nearest distance to a wall that
+            //  the particle can be in the n direction
+            inline scalar wallImpactDistance(const vector& n) const;
+
             //- Return the index of the face to be used in the interpolation
             //  routine
             inline label faceInterpolation() const;
 
+            //- Particle mass
+            inline scalar mass() const;
+
             //- Particle volume
             inline scalar volume() const;
 
-            //- Particle mass
-            inline scalar mass() const;
+            //- Particle volume for a given diameter
+            inline scalar volume(const scalar d) const;
 
             //- Particle projected area
             inline scalar areaP() const;
 
+            //- Projected area for given diameter
+            inline scalar areaP(const scalar d) const;
+
             //- Particle surface area
             inline scalar areaS() const;
 
+            //- Surface area for given diameter
+            inline scalar areaS(const scalar d) const;
+
 
         // Main calculation loop
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
index 4a6be04a971..85827924601 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H
@@ -63,20 +63,20 @@ template <class ParcelType>
 inline Foam::KinematicParcel<ParcelType>::KinematicParcel
 (
     KinematicCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     Particle<ParcelType>(owner, position, cellI),
     typeId_(typeId),
+    nParticle_(nParticle0),
     d_(d0),
     U_(U0),
-    nParticle_(nParticle0),
     rho_(constProps.rho0()),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -172,62 +172,51 @@ inline Foam::label Foam::KinematicParcel<ParcelType>::typeId() const
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::d() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::nParticle() const
 {
-    return d_;
+    return nParticle_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar& Foam::KinematicParcel<ParcelType>::d()
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::d() const
 {
     return d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::wallImpactDistance
-(
-    const vector&
-) const
+inline const Foam::vector& Foam::KinematicParcel<ParcelType>::U() const
 {
-    return 0.5*d_;
+    return U_;
 }
 
 
 template <class ParcelType>
-inline Foam::label Foam::KinematicParcel<ParcelType>::faceInterpolation() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::rho() const
 {
-    // Use volume-based interpolation if dealing with external faces
-    if (this->cloud().internalFace(this->face()))
-    {
-        return this->face();
-    }
-    else
-    {
-        return -1;
-    }
+    return rho_;
 }
 
 
 template <class ParcelType>
-inline const Foam::vector& Foam::KinematicParcel<ParcelType>::U() const
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::tTurb() const
 {
-    return U_;
+    return tTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::vector& Foam::KinematicParcel<ParcelType>::U()
+inline const Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb() const
 {
-    return U_;
+    return UTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::nParticle() const
+inline Foam::label Foam::KinematicParcel<ParcelType>::typeId()
 {
-    return nParticle_;
+    return typeId_;
 }
 
 
@@ -239,23 +228,23 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::nParticle()
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::rho() const
+inline Foam::scalar& Foam::KinematicParcel<ParcelType>::d()
 {
-    return rho_;
+    return d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar& Foam::KinematicParcel<ParcelType>::rho()
+inline Foam::vector& Foam::KinematicParcel<ParcelType>::U()
 {
-    return rho_;
+    return U_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::tTurb() const
+inline Foam::scalar& Foam::KinematicParcel<ParcelType>::rho()
 {
-    return tTurb_;
+    return rho_;
 }
 
 
@@ -267,23 +256,34 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::tTurb()
 
 
 template <class ParcelType>
-inline const Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb() const
+inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb()
 {
     return UTurb_;
 }
 
 
 template <class ParcelType>
-inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb()
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::wallImpactDistance
+(
+    const vector&
+) const
 {
-    return UTurb_;
+    return 0.5*d_;
 }
 
 
 template <class ParcelType>
-inline Foam::scalar Foam::KinematicParcel<ParcelType>::volume() const
+inline Foam::label Foam::KinematicParcel<ParcelType>::faceInterpolation() const
 {
-    return mathematicalConstant::pi/6.0*pow3(d_);
+    // Use volume-based interpolation if dealing with external faces
+    if (this->cloud().internalFace(this->face()))
+    {
+        return this->face();
+    }
+    else
+    {
+        return -1;
+    }
 }
 
 
@@ -294,17 +294,48 @@ inline Foam::scalar Foam::KinematicParcel<ParcelType>::mass() const
 }
 
 
+template <class ParcelType>
+inline Foam::scalar Foam::KinematicParcel<ParcelType>::volume() const
+{
+    return volume(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::volume(const scalar d) const
+{
+    return mathematicalConstant::pi/6.0*pow3(d);
+}
+
+
 template <class ParcelType>
 inline Foam::scalar Foam::KinematicParcel<ParcelType>::areaP() const
 {
-    return 0.25*areaS();
+    return areaP(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::areaP(const scalar d) const
+{
+    return 0.25*areaS(d);
 }
 
 
 template <class ParcelType>
 inline Foam::scalar Foam::KinematicParcel<ParcelType>::areaS() const
 {
-    return mathematicalConstant::pi*d_*d_;
+    return areaS(d_);
+}
+
+
+template <class ParcelType>
+inline Foam::scalar
+Foam::KinematicParcel<ParcelType>::areaS(const scalar d) const
+{
+    return mathematicalConstant::pi*d*d;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
index 36535ab6a09..ae96d25a14a 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C
@@ -41,9 +41,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
 :
     Particle<ParcelType>(cloud, is, readFields),
     typeId_(0),
+    nParticle_(0.0),
     d_(0.0),
     U_(vector::zero),
-    nParticle_(0.0),
     rho_(0.0),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -56,9 +56,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
         if (is.format() == IOstream::ASCII)
         {
             typeId_ = readLabel(is);
+            nParticle_ = readScalar(is);
             d_ = readScalar(is);
             is >> U_;
-            nParticle_ = readScalar(is);
             rho_ = readScalar(is);
             tTurb_ = readScalar(is);
             is >> UTurb_;
@@ -69,9 +69,9 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel
             (
                 reinterpret_cast<char*>(&typeId_),
                 sizeof(typeId_)
+              + sizeof(nParticle_)
               + sizeof(d_)
               + sizeof(U_)
-              + sizeof(nParticle_)
               + sizeof(rho_)
               + sizeof(tTurb_)
               + sizeof(UTurb_)
@@ -108,7 +108,8 @@ void Foam::KinematicParcel<ParcelType>::readFields
     IOField<vector> U(c.fieldIOobject("U", IOobject::MUST_READ));
     c.checkFieldIOobject(c, U);
 
-    IOField<scalar> nParticle(c.fieldIOobject("nParticle", IOobject::MUST_READ));
+    IOField<scalar>
+        nParticle(c.fieldIOobject("nParticle", IOobject::MUST_READ));
     c.checkFieldIOobject(c, nParticle);
 
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::MUST_READ));
@@ -126,9 +127,9 @@ void Foam::KinematicParcel<ParcelType>::readFields
         ParcelType& p = iter();
 
         p.typeId_ = typeId[i];
+        p.nParticle_ = nParticle[i];
         p.d_ = d[i];
         p.U_ = U[i];
-        p.nParticle_ = nParticle[i];
         p.rho_ = rho[i];
         p.tTurb_ = tTurb[i];
         p.UTurb_ = UTurb[i];
@@ -148,13 +149,13 @@ void Foam::KinematicParcel<ParcelType>::writeFields
     label np =  c.size();
 
     IOField<label> typeId(c.fieldIOobject("typeId", IOobject::NO_READ), np);
-    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
-    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
     IOField<scalar> nParticle
     (
         c.fieldIOobject("nParticle", IOobject::NO_READ),
         np
     );
+    IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
+    IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::NO_READ), np);
     IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
     IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
@@ -165,9 +166,9 @@ void Foam::KinematicParcel<ParcelType>::writeFields
         const KinematicParcel<ParcelType>& p = iter();
 
         typeId[i] = p.typeId();
+        nParticle[i] = p.nParticle();
         d[i] = p.d();
         U[i] = p.U();
-        nParticle[i] = p.nParticle();
         rho[i] = p.rho();
         tTurb[i] = p.tTurb();
         UTurb[i] = p.UTurb();
@@ -175,9 +176,9 @@ void Foam::KinematicParcel<ParcelType>::writeFields
     }
 
     typeId.write();
+    nParticle.write();
     d.write();
     U.write();
-    nParticle.write();
     rho.write();
     tTurb.write();
     UTurb.write();
@@ -195,25 +196,25 @@ Foam::Ostream& Foam::operator<<
 {
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const Particle<ParcelType>& >(p)
+        os  << static_cast<const Particle<ParcelType>&>(p)
             << token::SPACE << p.typeId()
+            << token::SPACE << p.nParticle()
             << token::SPACE << p.d()
             << token::SPACE << p.U()
-            << token::SPACE << p.nParticle()
             << token::SPACE << p.rho()
             << token::SPACE << p.tTurb()
             << token::SPACE << p.UTurb();
     }
     else
     {
-        os  << static_cast<const Particle<ParcelType>& >(p);
+        os  << static_cast<const Particle<ParcelType>&>(p);
         os.write
         (
             reinterpret_cast<const char*>(&p.typeId_),
             sizeof(p.typeId())
+          + sizeof(p.nParticle())
           + sizeof(p.d())
           + sizeof(p.U())
-          + sizeof(p.nParticle())
           + sizeof(p.rho())
           + sizeof(p.tTurb())
           + sizeof(p.UTurb())
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
index aacd51f04ae..70d04a910e8 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C
@@ -87,7 +87,7 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::updateMassFractions
     const scalarField& dMassSolid
 )
 {
-    scalarList& YMix = this->Y_;
+    scalarField& YMix = this->Y_;
 
     scalar dMassGasTot = sum(dMassGas);
     scalar dMassLiquidTot = sum(dMassLiquid);
@@ -99,8 +99,8 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::updateMassFractions
 
     scalar massNew = mass0 - (dMassGasTot + dMassLiquidTot + dMassSolidTot);
 
-    YMix[GAS] = (mass0*YMix[GAS] - dMassGas)/massNew;
-    YMix[LIQUID] = (mass0*YMix[LIQUID] - dMassLiquid)/massNew;
+    YMix[GAS] = (mass0*YMix[GAS] - dMassGasTot)/massNew;
+    YMix[LIQUID] = (mass0*YMix[LIQUID] - dMassLiquidTot)/massNew;
     YMix[SOLID] = 1.0 - YMix[GAS] - YMix[LIQUID];
 
     return massNew;
@@ -133,11 +133,17 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
 {
     // Define local properties at beginning of timestep
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    const scalar mass0 = this->mass();
     const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
+    const vector& U0 = this->U_;
+    const scalar rho0 = this->rho_;
     const scalar T0 = this->T_;
+    const scalar cp0 = this->cp_;
+    const scalar mass0 = this->mass();
+
     const scalar pc = this->pc_;
-    scalarField& YMix = this->Y_;
+
+    const scalarField& YMix = this->Y_;
     const label idG = td.cloud().composition().idGas();
     const label idL = td.cloud().composition().idLiquid();
     const label idS = td.cloud().composition().idSolid();
@@ -170,14 +176,39 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
 
     // Return enthalpy source and calc mass transfer due to phase change
     scalar ShPC =
-        calcPhaseChange(td, dt, cellI, T0, idL, YMix[idL], YLiquid_, dMassPC);
+        calcPhaseChange
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            T0,
+            U0,
+            idL,
+            YMix[LIQUID],
+            YLiquid_,
+            dMassPC
+        );
 
 
     // Devolatilisation
     // ~~~~~~~~~~~~~~~~
 
     // Return enthalpy source and calc mass transfer due to devolatilisation
-    scalar ShDV = calcDevolatilisation(td, dt, T0, mass0, idG, YMix, dMassDV);
+    scalar ShDV =
+        calcDevolatilisation
+        (
+            td,
+            dt,
+            T0,
+            mass0,
+            this->mass0_,
+            idG,
+            YMix[GAS],
+            YGas_,
+            canCombust_,
+            dMassDV
+        );
 
 
     // Surface reactions
@@ -190,8 +221,15 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
             td,
             dt,
             cellI,
+            d0,
             T0,
-            dMassPC + dMassDV, // total volatiles evolved
+            mass0,
+            canCombust_,
+            dMassPC + dMassDV, // total mass of volatiles evolved
+            YMix,
+            YGas_,
+            YLiquid_,
+            YSolid_,
             dMassSRGas,
             dMassSRLiquid,
             dMassSRSolid,
@@ -208,7 +246,21 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
 
     // Calculate new particle temperature
     scalar htc = 0.0;
-    scalar T1 = calcHeatTransfer(td, dt, cellI, Sh, htc, dhTrans);
+    scalar T1 =
+        calcHeatTransfer
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            U0,
+            rho0,
+            T0,
+            cp0,
+            Sh,
+            htc,
+            dhTrans
+        );
 
 
     // Update component mass fractions
@@ -231,7 +283,19 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
     // Calculate new particle velocity
     scalar Cud = 0.0;
     vector U1 =
-        calcVelocity(td, dt, cellI, Fx, 0.5*(mass0 + mass1), Cud, dUTrans);
+        calcVelocity
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            U0,
+            rho0,
+            0.5*(mass0 + mass1),
+            Fx,
+            Cud,
+            dUTrans
+        );
 
 
     // Accumulate carrier phase source terms
@@ -242,18 +306,18 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
         // Transfer mass lost from particle to carrier mass source
         forAll(YGas_, i)
         {
-            label id = td.composition().localToGlobalGasId(GAS, i);
+            label id = td.cloud().composition().localToGlobalGasId(GAS, i);
             td.cloud().rhoTrans(id)[cellI] += np0*dMassGas[i];
         }
         forAll(YLiquid_, i)
         {
-            label id = td.composition().localToGlobalGasId(LIQUID, i);
+            label id = td.cloud().composition().localToGlobalGasId(LIQUID, i);
             td.cloud().rhoTrans(id)[cellI] += np0*dMassLiquid[i];
         }
-        // No mapping between solid components and carrier phase
+//        // No mapping between solid components and carrier phase
 //        forAll(YSolid_, i)
 //        {
-//            label id = td.composition().localToGlobalGasId(SOLID, i);
+//            label id = td.cloud().composition().localToGlobalGasId(SOLID, i);
 //            td.cloud().rhoTrans(id)[cellI] += np0*dMassSolid[i];
 //        }
         forAll(dMassSRCarrier, i)
@@ -268,8 +332,7 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
         td.cloud().UCoeff()[cellI] += np0*mass0*Cud;
 
         // Update enthalpy transfer
-        // - enthalpy of lost solids already accounted for
-        td.cloud().hTrans()[cellI] += np0*(dhTrans + Sh);
+        td.cloud().hTrans()[cellI] += np0*dhTrans;
 
         // Coefficient to be applied in carrier phase enthalpy coupling
         td.cloud().hCoeff()[cellI] += np0*htc*this->areaS();
@@ -288,22 +351,24 @@ void Foam::ReactingMultiphaseParcel<ParcelType>::calc
             // Absorb parcel into carrier phase
             forAll(YGas_, i)
             {
-                label id = td.composition().localToGlobalGasId(GAS, i);
+                label id = td.cloud().composition().localToGlobalGasId(GAS, i);
                 td.cloud().rhoTrans(id)[cellI] += np0*mass1*YMix[GAS]*YGas_[i];
             }
             forAll(YLiquid_, i)
             {
-                label id = td.composition().localToGlobalGasId(LIQUID, i);
+                label id =
+                    td.cloud().composition().localToGlobalGasId(LIQUID, i);
                 td.cloud().rhoTrans(id)[cellI] +=
                     np0
                    *mass1
                    *YMix[LIQUID]
                    *YLiquid_[i];
             }
-            // No mapping between solid components and carrier phase
+//            // No mapping between solid components and carrier phase
 //            forAll(YSolid_, i)
 //            {
-//                label id = td.composition().localToGlobalGasId(SOLID, i);
+//                label id =
+//                    td.cloud().composition().localToGlobalGasId(SOLID, i);
 //                td.cloud().rhoTrans(id)[cellI] +=
 //                    np0
 //                   *mass1
@@ -350,9 +415,12 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
     const scalar dt,
     const scalar T,
     const scalar mass,
+    const scalar mass0,
     const label idVolatile,
-    const scalarField& YMixture,
-    scalarList& dMass
+    const scalar YVolatileTot,
+    const scalarField& YVolatile,
+    bool& canCombust,
+    scalarField& dMassDV
 )
 {
     // Check that model is active, and that the parcel temperature is
@@ -367,31 +435,27 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::calcDevolatilisation
         return 0.0;
     }
 
-    // Determine mass to add to carrier phase
+    // Total mass of volatiles evolved
     const scalar dMassTot = td.cloud().devolatilisation().calculate
     (
         dt,
-        this->mass0_,
+        mass0,
         mass,
         T,
         td.cloud().composition().YMixture0()[idVolatile],
-        YMixture[GAS],
-        canCombust_
+        YVolatileTot,
+        canCombust
     );
 
-    // Add to cummulative mass transfer
-    forAll (YGas_, i)
+    // Volatile mass transfer - equal components of each volatile specie
+    forAll(YVolatile, i)
     {
-        label id = td.cloud().composition().globalIds(idVolatile)[i];
-
-        // Volatiles mass transfer
-        scalar volatileMass = YGas_[i]*dMassTot;
-        dMass[i] += volatileMass;
+        dMassDV[i] = YVolatile[i]*dMassTot;
     }
 
     td.cloud().addToMassDevolatilisation(dMassTot);
 
-    return td.constProps().Ldevol()*dMassTot;
+    return -dMassTot*td.constProps().LDevol();
 }
 
 
@@ -402,36 +466,46 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::calcSurfaceReactions
     TrackData& td,
     const scalar dt,
     const label cellI,
+    const scalar d,
     const scalar T,
-    const scalarList& dMassVolatile,
+    const scalar mass,
+    const bool canCombust,
+    const scalarField& dMassVolatile,
+    const scalarField& YMix,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
     scalarField& dMassSRGas,
     scalarField& dMassSRLiquid,
     scalarField& dMassSRSolid,
-    scalarList& dMassSRCarrier,
+    scalarField& dMassSRCarrier,
     scalar& dhTrans
 )
 {
     // Check that model is active
-    if (!td.cloud().surfaceReaction().active() || !canCombust_)
+    if (!td.cloud().surfaceReaction().active() || !canCombust)
     {
-        return;
+        return 0.0;
     }
 
     // Update surface reactions
-    scalar HReaction = td.cloud().surfaceReaction().calculate
+    const scalar pc = this->pc_;
+    const scalar Tc = this->Tc_;
+    const scalar rhoc = this->rhoc_;
+    const scalar HReaction = td.cloud().surfaceReaction().calculate
     (
         dt,
         cellI,
-        this->d_,
+        d,
         T,
-        this->Tc_,
-        this->pc_,
-        this->rhoc_,
-        this->mass(),
-        YGas_,
-        YLiquid_,
-        YSolid_,
-        this->Y_,
+        Tc,
+        pc,
+        rhoc,
+        mass,
+        YGas,
+        YLiquid,
+        YSolid,
+        YMix,
         dMassVolatile,
         dMassSRGas,
         dMassSRLiquid,
@@ -439,23 +513,32 @@ Foam::scalar Foam::ReactingMultiphaseParcel<ParcelType>::calcSurfaceReactions
         dMassSRCarrier
     );
 
-    // Heat of reaction divided between particle and carrier phase by the
-    // fraction fh and (1 - fh)
-    dhTrans -= (1.0 - td.constProps().fh())*HReaction;
+    td.cloud().addToMassSurfaceReaction
+    (
+        sum(dMassSRGas) + sum(dMassSRLiquid) + sum(dMassSRSolid)
+    );
 
-/*
-    // Correct dhTrans to account for enthalpy of consumed solids
-    dhTrans +=
-        sum(dMassSR)*td.cloud().composition().H(idSolid, YSolid_, pc, T0);
+    // Add enthalpy of consumed components to the carrier phase enthalpy
+    // transfer
+    const label idG = td.cloud().composition().idGas();
+    const label idL = td.cloud().composition().idLiquid();
+    const label idS = td.cloud().composition().idSolid();
+    scalar dhGas =
+        sum(dMassSRGas)*td.cloud().composition().H(idG, YGas, pc, T);
+
+    scalar dhLiquid =
+        sum(dMassSRLiquid)*td.cloud().composition().H(idL, YLiquid, pc, T);
+
+    scalar dhSolid =
+        sum(dMassSRSolid)*td.cloud().composition().H(idS, YSolid, pc, T);
 
-    // Correct dhTrans to account for enthalpy of evolved volatiles
-    dhTrans +=
-        sum(dMassMT)*td.cloud().composition().H(idGas, YGas_, pc, T0);
+    dhTrans += dhGas + dhLiquid + dhSolid;
 
-    // TODO: td.cloud().addToMassSurfaceReaction(sum(dMassSR));
-*/
+    // Heat of reaction divided between particle and carrier phase by the
+    // fraction fh and (1 - fh)
+    dhTrans += (1.0 - td.constProps().hRetentionCoeff())*HReaction;
 
-    return td.constProps().fh()*HReaction;
+    return td.constProps().hRetentionCoeff()*HReaction;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H
index 58e2ef60dc8..5053c106b40 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.H
@@ -83,11 +83,11 @@ public:
         // Private data
 
             //- Latent heat of devolatilisation [J/kg]
-            const scalar Ldevol_;
+            const scalar LDevol_;
 
             //- Fraction of enthalpy retained by parcel due to surface
             //  reactions
-            const scalar fh_;
+            const scalar hRetentionCoeff_;
 
 
     public:
@@ -98,11 +98,11 @@ public:
         // Access
 
             //- Return const access to the latent heat of devolatilisation
-            inline scalar Ldevol() const;
+            inline scalar LDevol() const;
 
             //- Return const access to the fraction of enthalpy retained by
-            // parcel due to surface reactions
-            inline scalar fh() const;
+            //  parcel due to surface reactions
+            inline scalar hRetentionCoeff() const;
     };
 
 
@@ -214,12 +214,15 @@ protected:
         scalar calcDevolatilisation
         (
             TrackData& td,
-            const scalar dt,
-            const scalar T,
-            const scalar mass,
-            const label idVolatile,
-            const scalarField& YMixture,
-            scalarList& dMass
+            const scalar dt,           // timestep
+            const scalar T,            // temperature
+            const scalar mass,         // mass
+            const scalar mass0,        // mass (initial on injection)
+            const label idVolatile,    // id of volatile phase
+            const scalar YVolatileTot, // total volatile mass fraction
+            const scalarField& YVolatile, // volatile component mass fractions
+            bool& canCombust,          // 'can combust' flag
+            scalarField& dMassDV       // mass transfer - local to particle
         );
 
         //- Calculate surface reactions
@@ -227,15 +230,22 @@ protected:
         scalar calcSurfaceReactions
         (
             TrackData& td,
-            const scalar dt,
-            const label cellI,
-            const scalar T,
-            const scalarList& dMassVolatile,
-            scalarField& dMassSRGas,
-            scalarField& dMassSRLiquid,
-            scalarField& dMassSRSolid,
-            scalarList& dMassSRc,
-            scalar& dhTrans
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const scalar T,            // temperature
+            const scalar mass,         // mass
+            const bool canCombust,     // 'can combust' flag
+            const scalarField& dMassVolatile, // mass transfer of volatiles
+            const scalarField& YMix,    // mixture mass fractions
+            const scalarField& YGas,   // gas-phase mass fractions
+            const scalarField& YLiquid,// liquid-phase mass fractions
+            const scalarField& YSolid, // solid-phase mass fractions
+            scalarField& dMassSRGas,   // gas-phase mass transfer - local
+            scalarField& dMassSRLiquid,// liquid-phase mass transfer - local
+            scalarField& dMassSRSolid, // solid-phase mass transfer - local
+            scalarField& dMassSRCarrier,// carrier phase mass transfer
+            scalar& dhTrans            // enthalpy transfer to carrier phase
         );
 
 
@@ -253,16 +263,16 @@ public:
         inline ReactingMultiphaseParcel
         (
             ReactingMultiphaseCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
+            const scalarField& Y0,
             const scalarField& YGas0,
             const scalarField& YLiquid0,
             const scalarField& YSolid0,
-            const scalarField& Y0,
             const constantProperties& constProps
         );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H
index 1018f1e3f2b..d7d3cf17812 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelI.H
@@ -34,8 +34,8 @@ constantProperties
 )
 :
     ReactingParcel<ParcelType>::constantProperties(dict),
-    Ldevol_(dimensionedScalar(dict.lookup("Ldevol")).value()),
-    fh_(dimensionedScalar(dict.lookup("fh")).value())
+    LDevol_(dimensionedScalar(dict.lookup("LDevol")).value()),
+    hRetentionCoeff_(dimensionedScalar(dict.lookup("hRetentionCoeff")).value())
 {}
 
 
@@ -74,28 +74,28 @@ template<class ParcelType>
 inline Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
 (
     ReactingMultiphaseCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
+    const scalarField& Y0,
     const scalarField& YGas0,
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
-    const scalarField& Y0,
     const constantProperties& constProps
 )
 :
     ReactingParcel<ParcelType>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         Y0,
         constProps
     ),
@@ -109,17 +109,18 @@ inline Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
 
 template<class ParcelType>
 inline Foam::scalar
-Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::Ldevol() const
+Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::LDevol() const
 {
-    return Ldevol_;
+    return LDevol_;
 }
 
 
 template<class ParcelType>
 inline Foam::scalar
-Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::fh() const
+Foam::ReactingMultiphaseParcel<ParcelType>::constantProperties::
+hRetentionCoeff() const
 {
-    return fh_;
+    return hRetentionCoeff_;
 }
 
 
@@ -153,32 +154,32 @@ YGas() const
 
 
 template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YGas()
+inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
+YLiquid() const
 {
-    return YGas_;
+    return YLiquid_;
 }
 
 
 template<class ParcelType>
 inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
-YLiquid() const
+YSolid() const
 {
-    return YLiquid_;
+    return YSolid_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YLiquid()
+inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YGas()
 {
-    return YLiquid_;
+    return YGas_;
 }
 
 
 template<class ParcelType>
-inline const Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::
-YSolid() const
+inline Foam::scalarField& Foam::ReactingMultiphaseParcel<ParcelType>::YLiquid()
 {
-    return YSolid_;
+    return YLiquid_;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
index cbb952181c8..64829732e8f 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcelIO.C
@@ -45,7 +45,7 @@ Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
     if (readFields)
     {
         const ReactingMultiphaseCloud<ParcelType>& cR =
-            dynamic_cast<const ReactingMultiphaseCloud<ParcelType>& >(cloud);
+            dynamic_cast<const ReactingMultiphaseCloud<ParcelType>&>(cloud);
 
         const label idGas = cR.composition().idGas();
         const label nGas = cR.composition().componentNames(idGas).size();
@@ -68,7 +68,7 @@ Foam::ReactingMultiphaseParcel<ParcelType>::ReactingMultiphaseParcel
         }
 
         // scale the mass fractions
-        const scalarList& YMix = this->Y_;
+        const scalarField& YMix = this->Y_;
         YGas_ /= YMix[GAS] + ROOTVSMALL;
         YLiquid_ /= YMix[LIQUID] + ROOTVSMALL;
         YSolid_ /= YMix[SOLID] + ROOTVSMALL;
@@ -282,14 +282,14 @@ Foam::Ostream& Foam::operator<<
     scalarField YSolidLoc = p.YSolid()*p.Y()[2];
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const ReactingMultiphaseParcel<ParcelType>& >(p)
+        os  << static_cast<const ReactingMultiphaseParcel<ParcelType>&>(p)
             << token::SPACE << YGasLoc
             << token::SPACE << YLiquidLoc
             << token::SPACE << YSolidLoc;
     }
     else
     {
-        os  << static_cast<const ReactingMultiphaseParcel<ParcelType>& >(p);
+        os  << static_cast<const ReactingMultiphaseParcel<ParcelType>&>(p);
         os << YGasLoc << YLiquidLoc << YSolidLoc;
     }
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
index 676e0f10b2c..66bc6242b1f 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C
@@ -59,7 +59,7 @@ template<class ParcelType>
 void Foam::ReactingParcel<ParcelType>::updateMassFraction
 (
     const scalar mass0,
-    const scalarList& dMass,
+    const scalarField& dMass,
     scalarField& Y
 )
 {
@@ -83,9 +83,13 @@ void Foam::ReactingParcel<ParcelType>::calc
 {
     // Define local properties at beginning of time step
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    const scalar mass0 = this->mass();
     const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
+    const vector& U0 = this->U_;
+    const scalar rho0 = this->rho_;
     const scalar T0 = this->T_;
+    const scalar cp0 = this->cp_;
+    const scalar mass0 = this->mass();
 
 
     // Intialise transfer terms
@@ -98,14 +102,15 @@ void Foam::ReactingParcel<ParcelType>::calc
     scalar dhTrans = 0.0;
 
     // Mass transfer due to phase change
-    scalarList dMassPC(td.cloud().gases().size(), 0.0);
+    scalarField dMassPC(td.cloud().gases().size(), 0.0);
 
 
     // Phase change
     // ~~~~~~~~~~~~
 
     // Return enthalpy source and calc mass transfer due to phase change
-    scalar ShPC = calcPhaseChange(td, dt, cellI, T0, 0, 1.0, Y_, dMassPC);
+    scalar ShPC =
+        calcPhaseChange(td, dt, cellI, d0, T0, U0, 0, 1.0, Y_, dMassPC);
 
     // Update particle component mass fractions
     updateMassFraction(mass0, dMassPC, Y_);
@@ -116,7 +121,21 @@ void Foam::ReactingParcel<ParcelType>::calc
 
     // Calculate new particle temperature
     scalar htc = 0.0;
-    scalar T1 = calcHeatTransfer(td, dt, cellI, ShPC, htc, dhTrans);
+    scalar T1 =
+        calcHeatTransfer
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            U0,
+            rho0,
+            T0,
+            cp0,
+            ShPC,
+            htc,
+            dhTrans
+        );
 
 
     // Motion
@@ -131,7 +150,19 @@ void Foam::ReactingParcel<ParcelType>::calc
     // Calculate new particle velocity
     scalar Cud = 0.0;
     vector U1 =
-        calcVelocity(td, dt, cellI, Fx, 0.5*(mass0 + mass1), Cud, dUTrans);
+        calcVelocity
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            U0,
+            rho0,
+            0.5*(mass0 + mass1),
+            Fx,
+            Cud,
+            dUTrans
+        );
 
 
     // Accumulate carrier phase source terms
@@ -151,7 +182,7 @@ void Foam::ReactingParcel<ParcelType>::calc
         td.cloud().UCoeff()[cellI] += np0*mass0*Cud;
 
         // Update enthalpy transfer
-        td.cloud().hTrans()[cellI] += np0*(dhTrans + ShPC);
+        td.cloud().hTrans()[cellI] += np0*dhTrans;
 
         // Coefficient to be applied in carrier phase enthalpy coupling
         td.cloud().hCoeff()[cellI] += np0*htc*this->areaS();
@@ -208,11 +239,13 @@ Foam::scalar Foam::ReactingParcel<ParcelType>::calcPhaseChange
     TrackData& td,
     const scalar dt,
     const label cellI,
+    const scalar d,
     const scalar T,
+    const vector& U,
     const label idPhase,
     const scalar YPhase,
     const scalarField& YComponents,
-    scalarList& dMass
+    scalarField& dMassPC
 )
 {
     if
@@ -229,16 +262,16 @@ Foam::scalar Foam::ReactingParcel<ParcelType>::calcPhaseChange
     (
         dt,
         cellI,
+        d,
         min(T, td.constProps().Tbp()), // Limiting to boiling temperature
         pc_,
-        this->d_,
         this->Tc_,
         this->muc_/this->rhoc_,
-        this->U_ - this->Uc_,
-        dMass
+        U - this->Uc_,
+        dMassPC
     );
 
-    scalar dMassTot = sum(dMass);
+    scalar dMassTot = sum(dMassPC);
 
     // Add to cumulative phase change mass
     td.cloud().addToMassPhaseChange(dMassTot);
@@ -246,10 +279,7 @@ Foam::scalar Foam::ReactingParcel<ParcelType>::calcPhaseChange
     // Effective latent heat of vaporisation
     scalar LEff = td.cloud().composition().L(idPhase, YComponents, pc_, T);
 
-    // Effective heat of vaporised components
-    scalar HEff = td.cloud().composition().H(idPhase, YComponents, pc_, T);
-
-    return dMassTot*(HEff - LEff);
+    return -dMassTot*LEff;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
index bc38527efb8..52b9c881e74 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H
@@ -169,7 +169,7 @@ protected:
             scalar mass0_;
 
             //- Mass fractions of mixture []
-            scalarList Y_;
+            scalarField Y_;
 
 
         // Cell-based quantities
@@ -185,20 +185,22 @@ protected:
         scalar calcPhaseChange
         (
             TrackData& td,
-            const scalar dt,
-            const label cellI,
-            const scalar T,
-            const label idPhase,
-            const scalar YPhase,
-            const scalarField& YComponents,
-            scalarList& dMass
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const scalar T,            // temperature
+            const vector& U,           // velocity
+            const label idPhase,       // id of phase involved in phase change
+            const scalar YPhase,       // total mass fraction
+            const scalarField& YComponents, // component mass fractions
+            scalarField& dMassPC       // mass transfer - local to particle
         );
 
         //- Update mass fraction
         void updateMassFraction
         (
             const scalar mass0,
-            const scalarList& dMass,
+            const scalarField& dMass,
             scalarField& Y
         );
 
@@ -217,12 +219,12 @@ public:
         inline ReactingParcel
         (
             ReactingCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const scalarField& Y0,
             const constantProperties& constProps
         );
@@ -250,7 +252,7 @@ public:
             inline scalar mass0() const;
 
             //- Return const access to mass fractions of mixture
-            inline const scalarList& Y() const;
+            inline const scalarField& Y() const;
 
             //- Return the owner cell pressure
             inline scalar pc() const;
@@ -262,7 +264,7 @@ public:
             inline scalar& mass0();
 
             //- Return access to mass fractions of mixture
-            inline scalarList& Y();
+            inline scalarField& Y();
 
 
         // Main calculation loop
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
index aeb38c9c5ca..da808caee8c 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H
@@ -74,12 +74,12 @@ template<class ParcelType>
 inline Foam::ReactingParcel<ParcelType>::ReactingParcel
 (
     ReactingCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const scalarField& Y0,
     const constantProperties& constProps
 )
@@ -87,12 +87,12 @@ inline Foam::ReactingParcel<ParcelType>::ReactingParcel
     ThermoParcel<ParcelType>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     ),
     mass0_(0.0),
@@ -166,7 +166,7 @@ inline Foam::scalar Foam::ReactingParcel<ParcelType>::mass0() const
 
 
 template<class ParcelType>
-inline const Foam::scalarList& Foam::ReactingParcel<ParcelType>::Y() const
+inline const Foam::scalarField& Foam::ReactingParcel<ParcelType>::Y() const
 {
     return Y_;
 }
@@ -187,7 +187,7 @@ inline Foam::scalar& Foam::ReactingParcel<ParcelType>::mass0()
 
 
 template<class ParcelType>
-inline Foam::scalarList& Foam::ReactingParcel<ParcelType>::Y()
+inline Foam::scalarField& Foam::ReactingParcel<ParcelType>::Y()
 {
     return Y_;
 }
diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
index eacf49b1126..968c608d7e2 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C
@@ -45,7 +45,7 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel
     if (readFields)
     {
         const ReactingCloud<ParcelType>& cR =
-            dynamic_cast<const ReactingCloud<ParcelType>& >(cloud);
+            dynamic_cast<const ReactingCloud<ParcelType>&>(cloud);
 
         const label nMixture = cR.composition().phaseTypes().size();
         Y_.setSize(nMixture);
@@ -206,13 +206,13 @@ Foam::Ostream& Foam::operator<<
 {
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const ThermoParcel<ParcelType>& >(p)
+        os  << static_cast<const ThermoParcel<ParcelType>&>(p)
             << token::SPACE << p.mass0()
             << token::SPACE << p.Y();
     }
     else
     {
-        os  << static_cast<const ThermoParcel<ParcelType>& >(p);
+        os  << static_cast<const ThermoParcel<ParcelType>&>(p);
         os.write
         (
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
index 276fcd0b599..e13420e56db 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C
@@ -68,9 +68,13 @@ void Foam::ThermoParcel<ParcelType>::calc
 {
     // Define local properties at beginning of time step
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    const scalar np0 = this->nParticle_;
+    const scalar d0 = this->d_;
     const vector U0 = this->U_;
+    const scalar rho0 = this->rho_;
+    const scalar T0 = this->T_;
+    const scalar cp0 = this->cp_;
     const scalar mass0 = this->mass();
-    const scalar np0 = this->nParticle_;
 
 
     // Initialise transfer terms
@@ -84,11 +88,25 @@ void Foam::ThermoParcel<ParcelType>::calc
     // ~~~~~~~~~~~~~
 
     // No additional enthalpy sources
-    vector Sh = 0.0;
+    scalar Sh = 0.0;
 
     // Calculate new particle velocity
     scalar htc = 0.0;
-    scalar T1 = calcHeatTransfer(td, dt, cellI, Sh, htc, dhTrans);
+    scalar T1 =
+        calcHeatTransfer
+        (
+            td,
+            dt,
+            cellI,
+            d0,
+            U0,
+            rho0,
+            T0,
+            cp0,
+            Sh,
+            htc,
+            dhTrans
+        );
 
 
     // Motion
@@ -99,7 +117,8 @@ void Foam::ThermoParcel<ParcelType>::calc
 
     // Calculate new particle velocity
     scalar Cud = 0.0;
-    vector U1 = calcVelocity(td, dt, cellI, Fx, Cud, mass0, dUTrans);
+    vector U1 =
+        calcVelocity(td, dt, cellI, d0, U0, rho0, mass0, Fx, Cud, dUTrans);
 
 
     //  Accumulate carrier phase source terms
@@ -133,6 +152,11 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
     TrackData& td,
     const scalar dt,
     const label cellI,
+    const scalar d,
+    const vector& U,
+    const scalar rho,
+    const scalar T,
+    const scalar cp,
     const scalar Sh,
     scalar& htc,
     scalar& dhTrans
@@ -141,31 +165,31 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
     if (!td.cloud().heatTransfer().active())
     {
         htc = 0.0;
-        return T_;
+        return T;
     }
 
     // Calc heat transfer coefficient
     htc = td.cloud().heatTransfer().h
     (
-        this->d_,
-        this->U_ - this->Uc_,
+        d,
+        U - this->Uc_,
         this->rhoc_,
-        this->rho_,
+        rho,
         cpc_,
-        cp_,
+        cp,
         this->muc_
     );
 
 
-    // Set new particle temperature
-    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Determine new particle temperature
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    // Assuming diameter = diameter at start of time step
-    scalar Ap = this->areasS();
+    // Particle area
+    scalar Ap = this->areaS(d);
 
     // Determine ap and bp coefficients
     scalar ap = Tc_ + Sh/(htc*Ap + ROOTVSMALL);
-    scalar bp = 6.0*htc/(this->rho_*this->d_*cp_);
+    scalar bp = 6.0*htc/(rho*d*cp);
     if (td.cloud().radiation())
     {
         // Carrier phase incident radiation field
@@ -177,7 +201,7 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
         // Helper variables
         const scalar sigma = radiation::sigmaSB.value();
         const scalar epsilon = td.constProps().epsilon0();
-        const scalar D = epsilon*sigma*pow3(T_)/(htc + ROOTVSMALL) + 1.0;
+        const scalar D = epsilon*sigma*pow3(T)/(htc + ROOTVSMALL) + 1.0;
         ap += 0.25*epsilon*G[cellI]/(htc + ROOTVSMALL);
         ap /= D;
         bp *= D;
@@ -185,7 +209,7 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer
 
     // Integrate to find the new parcel temperature
     IntegrationScheme<scalar>::integrationResult Tres =
-        td.cloud().TIntegrator().integrate(T_, dt, ap, bp);
+        td.cloud().TIntegrator().integrate(T, dt, ap, bp);
 
     // Enthalpy transfer
     // - Using average particle temperature
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
index 8506bb7c0ad..4bc5180eff5 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
@@ -208,11 +208,16 @@ protected:
         scalar calcHeatTransfer
         (
             TrackData& td,
-            const scalar dt,
-            const label cellI,
-            const scalar Sh,
-            scalar& htc,
-            scalar& dhTrans
+            const scalar dt,           // timestep
+            const label cellI,         // owner cell
+            const scalar d,            // diameter
+            const vector& U,           // velocity
+            const scalar rho,          // density
+            const scalar T,            // temperature
+            const scalar cp,           // specific heat capacity
+            const scalar Sh,           // additional enthalpy sources
+            scalar& htc,               // heat transfer coeff
+            scalar& dhTrans            // enthalpy transfer to carrier phase
         );
 
 
@@ -230,12 +235,12 @@ public:
         inline ThermoParcel
         (
             ThermoCloud<ParcelType>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
index c6f0f2b816f..c14f1891b45 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
@@ -73,24 +73,24 @@ template<class ParcelType>
 inline Foam::ThermoParcel<ParcelType>::ThermoParcel
 (
     ThermoCloud<ParcelType>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     KinematicParcel<ParcelType>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     ),
     T_(constProps.T0()),
@@ -178,16 +178,16 @@ inline Foam::scalar Foam::ThermoParcel<ParcelType>::T() const
 
 
 template<class ParcelType>
-inline Foam::scalar& Foam::ThermoParcel<ParcelType>::T()
+inline Foam::scalar Foam::ThermoParcel<ParcelType>::cp() const
 {
-    return T_;
+    return cp_;
 }
 
 
 template<class ParcelType>
-inline Foam::scalar Foam::ThermoParcel<ParcelType>::cp() const
+inline Foam::scalar& Foam::ThermoParcel<ParcelType>::T()
 {
-    return cp_;
+    return T_;
 }
 
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
index 08433679bb2..d4f30ce9173 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C
@@ -140,13 +140,13 @@ Foam::Ostream& Foam::operator<<
 {
     if (os.format() == IOstream::ASCII)
     {
-        os  << static_cast<const KinematicParcel<ParcelType>& >(p)
+        os  << static_cast<const KinematicParcel<ParcelType>&>(p)
             << token::SPACE << p.T()
             << token::SPACE << p.cp();
     }
     else
     {
-        os  << static_cast<const KinematicParcel<ParcelType>& >(p);
+        os  << static_cast<const KinematicParcel<ParcelType>&>(p);
         os.write
         (
             reinterpret_cast<const char*>(&p.T_),
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
index c0d438df24c..d2078878263 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C
@@ -41,24 +41,24 @@ namespace Foam
 Foam::basicKinematicParcel::basicKinematicParcel
 (
     KinematicCloud<basicKinematicParcel>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     KinematicParcel<basicKinematicParcel>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     )
 {}
diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
index b5da2267e77..0e5733870f2 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                         Class basicKinematicParcel Declaration
+                   Class basicKinematicParcel Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicKinematicParcel
@@ -64,12 +64,12 @@ public:
         basicKinematicParcel
         (
             KinematicCloud<basicKinematicParcel>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -90,8 +90,7 @@ public:
 
 
     //- Destructor
-
-        virtual ~basicKinematicParcel();
+    virtual ~basicKinematicParcel();
 };
 
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C
index 0f7ce9173f8..d2007383190 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.C
@@ -41,12 +41,12 @@ namespace Foam
 Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
 (
     ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const scalarField& YGas0,
     const scalarField& YLiquid0,
     const scalarField& YSolid0,
@@ -57,12 +57,12 @@ Foam::basicReactingMultiphaseParcel::basicReactingMultiphaseParcel
     ReactingMultiphaseParcel<basicReactingMultiphaseParcel>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         YGas0,
         YLiquid0,
         YSolid0,
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H
index bb5053ff748..cc537e56380 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/basicReactingMultiphaseParcel.H
@@ -64,12 +64,12 @@ public:
         basicReactingMultiphaseParcel
         (
              ReactingMultiphaseCloud<basicReactingMultiphaseParcel>& owner,
-             const label typeId,
              const vector& position,
              const label cellI,
+             const label typeId,
+             const scalar nParticle0,
              const scalar d0,
              const vector& U0,
-             const scalar nParticle0,
              const scalarField& YGas0,
              const scalarField& YLiquid0,
              const scalarField& YSolid0,
@@ -93,7 +93,7 @@ public:
         }
 
 
-    // Destructor
+    //- Destructor
     virtual ~basicReactingMultiphaseParcel();
 };
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C
index 722c572e433..72ac1f4842f 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C
@@ -41,12 +41,12 @@ namespace Foam
 Foam::basicReactingParcel::basicReactingParcel
 (
     ReactingCloud<basicReactingParcel>& owner,
-    const label typeId,
     const vector& position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector& U0,
-    const scalar nParticle0,
     const scalarField& Y0,
     const constantProperties& constProps
 )
@@ -54,12 +54,12 @@ Foam::basicReactingParcel::basicReactingParcel
     ReactingParcel<basicReactingParcel>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         Y0,
         constProps
     )
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H
index 008a33b25bc..fae88a2da7b 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H
@@ -64,12 +64,12 @@ public:
         basicReactingParcel
         (
             ReactingCloud<basicReactingParcel>& owner,
-            const label typeId,
             const vector& position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector& U0,
-            const scalar nParticle0,
             const scalarField& Y0,
             const constantProperties& constProps
         );
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
index 76a575d1dec..095b217aca7 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
@@ -41,24 +41,24 @@ namespace Foam
 Foam::basicThermoParcel::basicThermoParcel
 (
     ThermoCloud<basicThermoParcel>& owner,
-    const label typeId,
     const vector position,
     const label cellI,
+    const label typeId,
+    const scalar nParticle0,
     const scalar d0,
     const vector U0,
-    const scalar nParticle0,
     const constantProperties& constProps
 )
 :
     ThermoParcel<basicThermoParcel>
     (
         owner,
-        typeId,
         position,
         cellI,
+        typeId,
+        nParticle0,
         d0,
         U0,
-        nParticle0,
         constProps
     )
 {}
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
index c55471d3d14..ec74d2add8a 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                         Class basicThermoParcel Declaration
+                      Class basicThermoParcel Declaration
 \*---------------------------------------------------------------------------*/
 
 class basicThermoParcel
@@ -63,12 +63,12 @@ public:
        basicThermoParcel
        (
             ThermoCloud<basicThermoParcel>& owner,
-            const label typeId,
             const vector position,
             const label cellI,
+            const label typeId,
+            const scalar nParticle0,
             const scalar d0,
             const vector U0,
-            const scalar nParticle0,
             const constantProperties& constProps
         );
 
@@ -87,9 +87,8 @@ public:
         }
 
 
-    // Destructors
-
-        virtual ~basicThermoParcel();
+    //- Destructor
+    virtual ~basicThermoParcel();
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
index f405b9c54ee..6d3cd51f65f 100644
--- a/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
+++ b/src/lagrangian/intermediate/submodels/IO/DataEntry/polynomial/polynomial.H
@@ -26,7 +26,7 @@ Class
     Foam::polynomial
 
 Description
-    Templated polynomial container data entry. Items are stored in a list of
+    Polynomial container data entry for scalars. Items are stored in a list of
     Tuple2's. Data is input in the form, e.g. for an entry <entryName> that
     describes y = x^2 + 2x^3
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
index 4bc06eaf849..d71e98d2b34 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.C
@@ -241,7 +241,7 @@ Foam::label Foam::CompositionModel<CloudType>::localId
 
 
 template<class CloudType>
-Foam::label Foam::CompositionModel<CloudType>::localToGlobalGaslId
+Foam::label Foam::CompositionModel<CloudType>::localToGlobalGasId
 (
     const label phaseI,
     const label id
diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
index fc017323144..f6a41acf0b1 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H
@@ -188,7 +188,7 @@ public:
                 label localId(const label phaseI, const word& cmptName) const;
 
                 //- Return global gas id of component given local id
-                label localToGlobalGaslId
+                label localToGlobalGasId
                 (
                     const label phaseI,
                     const label id
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C
index 830c4d7f1d2..d1c3e8b8a88 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.C
@@ -135,13 +135,13 @@ void Foam::LiquidEvaporation<CloudType>::calculate
 (
     const scalar dt,
     const label cellI,
+    const scalar d,
     const scalar T,
     const scalar pc,
-    const scalar d,
     const scalar Tc,
     const scalar nuc,
     const vector& Ur,
-    scalarList& dMass
+    scalarField& dMassPC
 ) const
 {
     // construct carrier phase species volume fractions for cell, cellI
@@ -184,7 +184,7 @@ void Foam::LiquidEvaporation<CloudType>::calculate
         scalar Ni = max(kc*(Cs - Cinf), 0.0);
 
         // mass transfer [kg]
-        dMass[lid] += Ni*A*liquids_->properties()[lid].W()*dt;
+        dMassPC[lid] += Ni*A*liquids_->properties()[lid].W()*dt;
     }
 }
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
index c70c081e90d..408fb3d06b7 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/LiquidEvaporation/LiquidEvaporation.H
@@ -41,7 +41,7 @@ Description
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-                       Class LiquidEvaporation Declaration
+                     Class LiquidEvaporation Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -105,13 +105,13 @@ public:
         (
             const scalar dt,
             const label cellI,
+            const scalar d,
             const scalar T,
             const scalar pc,
-            const scalar d,
             const scalar Tc,
             const scalar nuc,
             const vector& Ur,
-            scalarList& dMass
+            scalarField& dMassPC
         ) const;
 };
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C
index 7ecb03c773f..ee3779b22ec 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.C
@@ -66,7 +66,7 @@ void Foam::NoPhaseChange<CloudType>::calculate
     const scalar,
     const scalar,
     const vector&,
-    scalarList&
+    scalarField&
 ) const
 {
     // Nothing to do...
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H
index e1ec25dd5e3..6419f127ff7 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/NoPhaseChange/NoPhaseChange.H
@@ -74,13 +74,13 @@ public:
         (
             const scalar dt,
             const label cellI,
+            const scalar d,
             const scalar T,
             const scalar pc,
-            const scalar d,
             const scalar Tc,
             const scalar nuc,
             const vector& Ur,
-            scalarList& dMass
+            scalarField& dMassPC
         ) const;
 };
 
diff --git a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
index 32e44a960f5..b8ebc644b01 100644
--- a/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
+++ b/src/lagrangian/intermediate/submodels/Reacting/PhaseChangeModel/PhaseChangeModel/PhaseChangeModel.H
@@ -140,13 +140,13 @@ public:
         (
             const scalar dt,
             const label cellI,
+            const scalar d,
             const scalar T,
             const scalar pc,
-            const scalar d,
             const scalar Tc,
             const scalar nuc,
             const vector& Ur,
-            scalarList& dMass
+            scalarField& dMassPC
         ) const = 0;
 };
 
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
index 0630158e28e..53eecf01f92 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.C
@@ -69,12 +69,12 @@ Foam::scalar Foam::NoSurfaceReaction<CloudType>::calculate
     const scalarField&,
     const scalarField&,
     const scalarField&,
-    const scalarList&,
-    const scalarList&,
+    const scalarField&,
+    const scalarField&,
     scalarField&,
     scalarField&,
     scalarField&,
-    scalarList&
+    scalarField&
 ) const
 {
     // do nothing
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
index 6566f60456c..d3c99ebd5da 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/NoSurfaceReaction/NoSurfaceReaction.H
@@ -87,12 +87,12 @@ public:
             const scalarField& YGas,
             const scalarField& YLiquid,
             const scalarField& YSolid,
-            const scalarList& YMixture,
-            const scalarList& dMassVolatile,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
             scalarField& dMassGas,
             scalarField& dMassLiquid,
             scalarField& dMassSolid,
-            scalarList& dMassSRCarrier
+            scalarField& dMassSRCarrier
         ) const;
 };
 
diff --git a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
index 269c37de37e..2deacb3465f 100644
--- a/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
+++ b/src/lagrangian/intermediate/submodels/ReactingMultiphase/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H
@@ -42,7 +42,6 @@ SourceFiles
 #include "runTimeSelectionTables.H"
 
 #include "scalarField.H"
-#include "scalarList.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -146,12 +145,12 @@ public:
             const scalarField& YGas,
             const scalarField& YLiquid,
             const scalarField& YSolid,
-            const scalarList& YMixture,
-            const scalarList& dMassVolatile,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
             scalarField& dMassGas,
             scalarField& dMassLiquid,
             scalarField& dMassSolid,
-            scalarList& dMassSRCarrier
+            scalarField& dMassSRCarrier
         ) const = 0;
 };
 
-- 
GitLab