diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
index 516554874cdaf1f5fcdab8f2a0375892952bfee4..e86391182fcf8800b65d7795c7b6401745a82f63 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
@@ -43,17 +43,12 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
     Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
     D_(dimensionedScalar(this->coeffDict().lookup("D")).value()),
     CsLocalId_(-1),
-    O2GlobalId_(-1),
-    CO2GlobalId_(-1),
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
     WC_(0.0),
     WO2_(0.0),
     HcCO2_(0.0)
 {
-    // Determine carrier phase Ids of reactants/products
-    label idGas = owner.composition().idGas();
-    O2GlobalId_ = owner.composition().globalId(idGas, "O2");
-    CO2GlobalId_ = owner.composition().globalId(idGas, "CO2");
-
     // Determine Cs ids
     label idSolid = owner.composition().idSolid();
     CsLocalId_ = owner.composition().localId(idSolid, "C");
@@ -73,7 +68,7 @@ Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
                 "const dictionary&, "
                 "ReactingMultiphaseCloud<coalParcel>&"
             ")"
-        )   << "Stoichiometry, Sb, must be greater than zero" << nl
+        )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
             << exit(FatalError);
     }
 }
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
index eb44c6391afaf52dc186b2a30acad79ffcb1ad40..bb3e28ae56e00aaa99ce15abb7487f93b538fcb4 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
@@ -46,17 +46,12 @@ COxidationKineticDiffusionLimitedRate
     C2_(dimensionedScalar(this->coeffDict().lookup("C2")).value()),
     E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
     CsLocalId_(-1),
-    O2GlobalId_(-1),
-    CO2GlobalId_(-1),
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
     WC_(0.0),
     WO2_(0.0),
     HcCO2_(0.0)
 {
-    // Determine carrier phase Ids of reactants/products
-    label idGas = owner.composition().idGas();
-    O2GlobalId_ = owner.composition().globalId(idGas, "O2");
-    CO2GlobalId_ = owner.composition().globalId(idGas, "CO2");
-
     // Determine Cs ids
     label idSolid = owner.composition().idSolid();
     CsLocalId_ = owner.composition().localId(idSolid, "C");
@@ -76,7 +71,7 @@ COxidationKineticDiffusionLimitedRate
                 "const dictionary&, "
                 "ReactingMultiphaseCloud<coalParcel>&"
             ")"
-        )   << "Stoichiometry, Sb, must be greater than zero" << nl
+        )   << "Stoichiometry of reaction, Sb, must be greater than zero" << nl
             << exit(FatalError);
     }
 }
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
index c9e5ddfa49ab3e2ff13832bb302da59fa459afaa..128c5d64e962f326f3cd05240bcc2b6f182a5b28 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.C
@@ -55,20 +55,22 @@ Foam::COxidationMurphyShaddix::COxidationMurphyShaddix
     E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
     n_(dimensionedScalar(this->coeffDict().lookup("n")).value()),
     WVol_(dimensionedScalar(this->coeffDict().lookup("WVol")).value()),
-    dH0_(dimensionedScalar(this->coeffDict().lookup("dH0")).value()),
-    TMaxdH_(dimensionedScalar(this->coeffDict().lookup("TmaxdH")).value()),
     CsLocalId_(-1),
-    O2GlobalId_(-1),
-    CO2GlobalId_(-1)
+    O2GlobalId_(owner.composition().globalCarrierId("O2")),
+    CO2GlobalId_(owner.composition().globalCarrierId("CO2")),
+    WC_(0.0),
+    WO2_(0.0),
+    HcCO2_(0.0)
 {
-    // Determine carrier phase Ids of reactants/products
-    label idGas = owner.composition().idGas();
-    O2GlobalId_ = owner.composition().globalId(idGas, "O2");
-    CO2GlobalId_ = owner.composition().globalId(idGas, "CO2");
-
     // Determine Cs ids
     label idSolid = owner.composition().idSolid();
     CsLocalId_ = owner.composition().localId(idSolid, "Cs");
+
+    // Set local copies of thermo properties
+    WO2_ = owner.composition().carrierSpecies()[O2GlobalId_].W();
+    scalar WCO2 = owner.composition().carrierSpecies()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+    HcCO2_ = owner.composition().carrierSpecies()[CO2GlobalId_].Hc();
 }
 
 
@@ -118,8 +120,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
 
     // Cell carrier phase O2 species density [kg/m^3]
     const scalar rhoO2 =
-        owner().carrierThermo().composition().Y(O2GlobalId_)[cellI]
-       *rhoc;
+        rhoc*owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
 
     if (rhoO2 < SMALL)
     {
@@ -129,25 +130,12 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
     // Particle surface area [m^2]
     const scalar Ap = mathematicalConstant::pi*sqr(d);
 
-//    // Film temperature [K]
-//    const scalar Tf = (T + Tc)/2;
-
     // Calculate diffision constant at continuous phase temperature
     // and density [m^2/s]
     const scalar D = D0_*(rho0_/rhoc)*pow(Tc/T0_, Dn_);
 
-    // Molecular weight of O2 [kg/kmol]
-    const scalar WO2 = owner().composition().carrierSpecies()[O2GlobalId_].W();
-
-    // Molecular weight of CO2 [kg/kmol]
-    const scalar WCO2 =
-        owner().composition().carrierSpecies()[CO2GlobalId_].W();
-
-    // Molecular weight of C [kg/kmol]
-    const scalar WC = WCO2 - WO2;
-
     // Far field partial pressure O2 [Pa]
-    const scalar ppO2 = rhoO2/WO2*specie::RR*Tc;
+    const scalar ppO2 = rhoO2/WO2_*specie::RR*Tc;
 
     // Molar emission rate of volatiles per unit surface area
     const scalar qVol = sum(dMassVolatile)/(WVol_*Ap);
@@ -159,7 +147,6 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
     {
         Pout<< "mass  = " << mass << nl
             << "fComb = " << fComb << nl
-            << "WC    = " << WC << nl
             << "Ap    = " << Ap << nl
             << "dt    = " << dt << nl
             << "C     = " << C << nl
@@ -170,7 +157,7 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
     scalar qCsOld = 0;
     scalar qCs = 1;
 
-    const scalar qCsLim = mass*fComb/(WC*Ap*dt);
+    const scalar qCsLim = mass*fComb/(WC_*Ap*dt);
 
     if (debug)
     {
@@ -207,14 +194,14 @@ Foam::scalar Foam::COxidationMurphyShaddix::calculate
     scalar dOmega = qCs*Ap*dt;
 
     // Add to carrier phase mass transfer
-    dMassSRCarrier[O2GlobalId_] += -dOmega*WO2;
-    dMassSRCarrier[CO2GlobalId_] += dOmega*WCO2;
+    dMassSRCarrier[O2GlobalId_] += -dOmega*WO2_;
+    dMassSRCarrier[CO2GlobalId_] += dOmega*(WC_ + WO2_);
 
     // Add to particle mass transfer
-    dMassSolid[CsLocalId_] = dOmega*WC;
+    dMassSolid[CsLocalId_] += dOmega*WC_;
 
     // Heat of reaction
-    return dOmega*dH0_*cos(mathematicalConstant::pi/2*T/TMaxdH_);
+    return HcCO2_*dOmega*WC_;
 }
 
 
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
index 5811fc085c4f4ebe0bf0c4622022cc1f9d086b8b..bc026db3646680cd1d9bac14d0f6f65d702c6544 100644
--- a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationMurphyShaddix/COxidationMurphyShaddix.H
@@ -26,7 +26,6 @@ Class
     COxidationMurphyShaddix
 
 Description
-    Kinetics/diffusion limited rate surface reaction model for coal parcel
     Limited to C(s) + O2 -> CO2
 
 \*---------------------------------------------------------------------------*/
@@ -77,12 +76,6 @@ class COxidationMurphyShaddix
             //- Effective molecular weight of gaseous volatiles
             const scalar WVol_;
 
-            //- Enthalpy retained by particle during surface combustion
-            const scalar dH0_;
-
-            //- TdHMax: dH = dH0_*cos(pi/2*Tp/TMaxdH_)
-            const scalar TMaxdH_;
-
 
         // Static constants
 
@@ -105,6 +98,18 @@ class COxidationMurphyShaddix
             label CO2GlobalId_;
 
 
+        // Local copies of thermo properties
+
+            //- Molecular weight of C [kg/kmol]
+            scalar WC_;
+
+            //- Molecular weight of O2 [kg/kmol]
+            scalar WO2_;
+
+            //- Chemical enthalpy of CO2 [J/kg]
+            scalar HcCO2_;
+
+
 public:
 
     //- Runtime type information