diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
new file mode 100644
index 0000000000000000000000000000000000000000..e36fd1cbfdc86aa2b0b10e20f895f015aefcf6dc
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.C
@@ -0,0 +1,155 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "COxidationDiffusionLimitedRate.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::COxidationDiffusionLimitedRate::COxidationDiffusionLimitedRate
+(
+    const dictionary& dict,
+    ReactingMultiphaseCloud<coalParcel>& owner
+)
+:
+    SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    (
+        dict,
+        owner,
+        typeName
+    ),
+    Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
+    D_(dimensionedScalar(this->coeffDict().lookup("D")).value()),
+    CsLocalId_(-1),
+    O2GlobalId_(-1),
+    CO2GlobalId_(-1),
+    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");
+
+    // Set local copies of thermo properties
+    WO2_ = owner().composition().gases()[O2GlobalId_].W();
+    scalar WCO2 = owner().composition().gases()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+    HcCO2_ = owner().composition().gases()[CO2GlobalId_].Hc();
+
+    if (Sb_ < 0)
+    {
+        FatalErrorIn
+        (
+            "COxidationDiffusionLimitedRate"
+            "("
+                "const dictionary&, "
+                "ReactingMultiphaseCloud<coalParcel>&"
+            ")"
+        )   << "Stoichiometry, Sb, must be greater than zero" << nl
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::COxidationDiffusionLimitedRate::~COxidationDiffusionLimitedRate()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::COxidationDiffusionLimitedRate::active() const
+{
+    return true;
+}
+
+
+Foam::scalar Foam::COxidationDiffusionLimitedRate::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar Tc,
+    const scalar pc,
+    const scalar rhoc,
+    const scalar mass,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    const scalarField& YMixture,
+    const scalarField& dMassVolatile,
+    scalarField& dMassGas,
+    scalarField& dMassLiquid,
+    scalarField& dMassSolid,
+    scalarField& dMassSRCarrier
+) const
+{
+    // Fraction of remaining combustible material
+    const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
+
+    // Surface combustion active combustible fraction is consumed
+    if (fComb < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Local mass fraction of O2 in the carrier phase
+    const scalar YO2 =
+        owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
+
+    // Change in C mass [kg]
+    scalar dmC =
+        4.0*mathematicalConstant::pi*d*D_*YO2*Tc*rhoc/(Sb_*(T + Tc))*dt;
+
+    // Limit mass transfer by availability of C
+    dmC = min(mass*fComb, dmC);
+
+    // Change in O2 mass [kg]
+    const scalar dmO2 = dmC/WC_*Sb_*WO2_;
+
+    // Mass of newly created CO2 [kg]
+    const scalar dmCO2 = dmC + dmO2; 
+
+    // Update local particle C mass
+    dMassSolid[CsLocalId_] += dmC;
+
+    // Update carrier O2 and CO2 mass
+    dMassSRCarrier[O2GlobalId_] -= dmO2;
+    dMassSRCarrier[CO2GlobalId_] += dmCO2;
+
+    // Heat of reaction [J]
+    return HcCO2_*dmCO2;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
new file mode 100644
index 0000000000000000000000000000000000000000..3ce6b7cbaddc90a19ff57868fca7b429edae5599
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationDiffusionLimitedRate/COxidationDiffusionLimitedRate.H
@@ -0,0 +1,147 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    COxidationDiffusionLimitedRate
+
+Description
+    Diffusion limited rate surface reaction model for coal parcels. Limited to:
+
+        C(s) + Sb*O2 -> CO2
+
+    where Sb is the stoichiometry of the reaction
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef COxidationDiffusionLimitedRate_H
+#define COxidationDiffusionLimitedRate_H
+
+#include "SurfaceReactionModel.H"
+#include "coalParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+                  Class COxidationDiffusionLimitedRate Declaration
+\*---------------------------------------------------------------------------*/
+
+class COxidationDiffusionLimitedRate
+:
+    public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+{
+    // Private data
+
+        // Model constants
+
+            //- Stoichiometry of reaction
+            const scalar Sb_;
+
+            //- Diffusion coefficient of oxidants [m2/s]
+            const scalar D_;
+
+
+        // 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_;
+
+
+        // Addressing
+
+            //- Cs positions in global/local lists
+            label CsLocalId_;
+
+            //- O2 position in global list
+            label O2GlobalId_;
+
+            //- CO2 positions in global list
+            label CO2GlobalId_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("COxidationDiffusionLimitedRate");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        COxidationDiffusionLimitedRate
+        (
+            const dictionary& dict,
+            ReactingMultiphaseCloud<coalParcel>& owner
+        );
+
+
+    //- Destructor
+    virtual ~COxidationDiffusionLimitedRate();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates surface reaction model
+        virtual bool active() const;
+
+        //- Update surface reactions
+        virtual scalar calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar Tc,
+            const scalar pc,
+            const scalar rhoc,
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
new file mode 100644
index 0000000000000000000000000000000000000000..a58094f29e3824116f92c24f6a104c9492d39aba
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.C
@@ -0,0 +1,167 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "COxidationKineticDiffusionLimitedRate.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::COxidationKineticDiffusionLimitedRate::
+COxidationKineticDiffusionLimitedRate
+(
+    const dictionary& dict,
+    ReactingMultiphaseCloud<coalParcel>& owner
+)
+:
+    SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+    (
+        dict,
+        owner,
+        typeName
+    ),
+    Sb_(dimensionedScalar(this->coeffDict().lookup("Sb")).value()),
+    C1_(dimensionedScalar(this->coeffDict().lookup("C1")).value()),
+    C2_(dimensionedScalar(this->coeffDict().lookup("C2")).value()),
+    E_(dimensionedScalar(this->coeffDict().lookup("E")).value()),
+    CsLocalId_(-1),
+    O2GlobalId_(-1),
+    CO2GlobalId_(-1),
+    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");
+
+    // Set local copies of thermo properties
+    WO2_ = owner().composition().gases()[O2GlobalId_].W();
+    scalar WCO2 = owner().composition().gases()[CO2GlobalId_].W();
+    WC_ = WCO2 - WO2_;
+    HcCO2_ = owner().composition().gases()[CO2GlobalId_].Hc();
+
+    if (Sb_ < 0)
+    {
+        FatalErrorIn
+        (
+            "COxidationKineticDiffusionLimitedRate"
+            "("
+                "const dictionary&, "
+                "ReactingMultiphaseCloud<coalParcel>&"
+            ")"
+        )   << "Stoichiometry, Sb, must be greater than zero" << nl
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::COxidationKineticDiffusionLimitedRate::
+~COxidationKineticDiffusionLimitedRate()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::COxidationKineticDiffusionLimitedRate::active() const
+{
+    return true;
+}
+
+
+Foam::scalar Foam::COxidationKineticDiffusionLimitedRate::calculate
+(
+    const scalar dt,
+    const label cellI,
+    const scalar d,
+    const scalar T,
+    const scalar Tc,
+    const scalar pc,
+    const scalar rhoc,
+    const scalar mass,
+    const scalarField& YGas,
+    const scalarField& YLiquid,
+    const scalarField& YSolid,
+    const scalarField& YMixture,
+    const scalarField& dMassVolatile,
+    scalarField& dMassGas,
+    scalarField& dMassLiquid,
+    scalarField& dMassSolid,
+    scalarField& dMassSRCarrier
+) const
+{
+    // Fraction of remaining combustible material
+    const scalar fComb = YMixture[coalParcel::SLD]*YSolid[CsLocalId_];
+
+    // Surface combustion active combustible fraction is consumed
+    if (fComb < SMALL)
+    {
+        return 0.0;
+    }
+
+    // Local mass fraction of O2 in the carrier phase
+    const scalar YO2 =
+        owner().carrierThermo().composition().Y(O2GlobalId_)[cellI];
+
+    // Diffusion rate coefficient
+    const scalar D0 = C1_/d*pow(0.5*(T + Tc), 0.75);
+
+    // Kinetic rate
+    const scalar Rk = C2_*exp(-E_/(specie::RR*Tc));
+
+    // Particle surface area
+    const scalar Ap = mathematicalConstant::pi*sqr(d);
+
+    // Change in C mass [kg]
+    scalar dmC = Ap*rhoc*specie::RR*Tc*YO2/WO2_*D0*Rk/(D0 + Rk);
+
+    // Limit mass transfer by availability of C
+    dmC = min(mass*fComb, dmC);
+
+    // Change in O2 mass [kg]
+    const scalar dmO2 = dmC/WC_*Sb_*WO2_;
+
+    // Mass of newly created CO2 [kg]
+    const scalar dmCO2 = dmC + dmO2; 
+
+    // Update local particle C mass
+    dMassSolid[CsLocalId_] += dmC;
+
+    // Update carrier O2 and CO2 mass
+    dMassSRCarrier[O2GlobalId_] -= dmO2;
+    dMassSRCarrier[CO2GlobalId_] += dmCO2;
+
+    // Heat of reaction [J]
+    return HcCO2_*dmCO2;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
new file mode 100644
index 0000000000000000000000000000000000000000..9bbed296f105c12fcb194013986dc3ebd955a1a8
--- /dev/null
+++ b/src/lagrangian/coalCombustion/submodels/surfaceReactionModel/COxidationKineticDiffusionLimitedRate/COxidationKineticDiffusionLimitedRate.H
@@ -0,0 +1,154 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    COxidationKineticDiffusionLimitedRate
+
+Description
+    Kinetic/diffusion limited rate surface reaction model for coal parcels.
+    Limited to:
+
+        C(s) + Sb*O2 -> CO2
+
+    where Sb is the stoichiometry of the reaction
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef COxidationKineticDiffusionLimitedRate_H
+#define COxidationKineticDiffusionLimitedRate_H
+
+#include "SurfaceReactionModel.H"
+#include "coalParcel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+/*---------------------------------------------------------------------------*\
+            Class COxidationKineticDiffusionLimitedRate Declaration
+\*---------------------------------------------------------------------------*/
+
+class COxidationKineticDiffusionLimitedRate
+:
+    public SurfaceReactionModel<ReactingMultiphaseCloud<coalParcel> >
+{
+    // Private data
+
+        // Model constants
+
+            //- Stoichiometry of reaction
+            const scalar Sb_;
+
+            //- Mass diffusion limited rate constant, C1
+            const scalar C1_;
+
+            //- Kinetics limited rate pre-exponential constant, C2
+            const scalar C2_;
+
+            //- Kinetics limited rate activation energy
+            const scalar E_;
+
+
+        // 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_;
+
+
+        // Addressing
+
+            //- Cs positions in global/local lists
+            label CsLocalId_;
+
+            //- O2 position in global list
+            label O2GlobalId_;
+
+            //- CO2 positions in global list
+            label CO2GlobalId_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("COxidationKineticDiffusionLimitedRate");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        COxidationKineticDiffusionLimitedRate
+        (
+            const dictionary& dict,
+            ReactingMultiphaseCloud<coalParcel>& owner
+        );
+
+
+    //- Destructor
+    virtual ~COxidationKineticDiffusionLimitedRate();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates surface reaction model
+        virtual bool active() const;
+
+        //- Update surface reactions
+        virtual scalar calculate
+        (
+            const scalar dt,
+            const label cellI,
+            const scalar d,
+            const scalar T,
+            const scalar Tc,
+            const scalar pc,
+            const scalar rhoc,
+            const scalar mass,
+            const scalarField& YGas,
+            const scalarField& YLiquid,
+            const scalarField& YSolid,
+            const scalarField& YMixture,
+            const scalarField& dMassVolatile,
+            scalarField& dMassGas,
+            scalarField& dMassLiquid,
+            scalarField& dMassSolid,
+            scalarField& dMassSRCarrier
+        ) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //