diff --git a/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options
index 948df098388eb10bab7d02e4449302a8c05f569d..4a0c3a56593ecddfe80233ab74e817057d28e04c 100644
--- a/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options
+++ b/applications/solvers/lagrangian/DPMFoam/MPPICFoam/Make/options
@@ -22,6 +22,7 @@ EXE_LIBS = \
     -lmeshTools \
     -llagrangian \
     -llagrangianIntermediate \
+    -llagrangianTurbulentSubModels \
     -lthermophysicalFunctions \
     -lspecie \
     -lradiationModels \
diff --git a/applications/solvers/lagrangian/DPMFoam/Make/options b/applications/solvers/lagrangian/DPMFoam/Make/options
index e9524dfc2beafae2ccb910c7904a6474a9e7416e..83684e57c44b7fd10574bcc20400632313494b98 100644
--- a/applications/solvers/lagrangian/DPMFoam/Make/options
+++ b/applications/solvers/lagrangian/DPMFoam/Make/options
@@ -21,6 +21,7 @@ EXE_LIBS = \
     -lmeshTools \
     -llagrangian \
     -llagrangianIntermediate \
+    -llagrangianTurbulentSubModels \
     -lthermophysicalFunctions \
     -lspecie \
     -lradiationModels \
diff --git a/src/lagrangian/Allwmake b/src/lagrangian/Allwmake
index 5310b3c87f500225fef81d026411b891b5335f0f..104d37234d9acc2ff5c2909b8aa75ec1bf2b4b1e 100755
--- a/src/lagrangian/Allwmake
+++ b/src/lagrangian/Allwmake
@@ -8,6 +8,7 @@ wmake $makeType basic
 wmake $makeType solidParticle
 wmake $makeType intermediate
 wmake $makeType turbulence
+wmake $makeType Turbulence
 wmake $makeType spray
 wmake $makeType dsmc
 wmake $makeType coalCombustion
diff --git a/src/lagrangian/Turbulence/Make/files b/src/lagrangian/Turbulence/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..72a84068e12a970962217c6794fc6a59b4eedf69
--- /dev/null
+++ b/src/lagrangian/Turbulence/Make/files
@@ -0,0 +1,10 @@
+PARCELS=parcels
+DERIVEDPARCELS=$(PARCELS)/derived
+
+KINEMATICCOLLIDINGPARCEL=$(DERIVEDPARCELS)/basicKinematicCollidingParcel
+$(KINEMATICCOLLIDINGPARCEL)/makeBasicKinematicCollidingParcelSubmodels.C
+
+KINEMATICMPPICPARCEL=$(DERIVEDPARCELS)/basicKinematicMPPICParcel
+$(KINEMATICMPPICPARCEL)/makeBasicKinematicMPPICParcelSubmodels.C
+
+LIB = $(FOAM_LIBBIN)/liblagrangianTurbulentSubModels
diff --git a/src/lagrangian/Turbulence/Make/options b/src/lagrangian/Turbulence/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..504394bfd96376c91aeb67346215aa8eb047535a
--- /dev/null
+++ b/src/lagrangian/Turbulence/Make/options
@@ -0,0 +1,45 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+    -I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
+    -I$(LIB_SRC)/lagrangian/distributionModels/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/liquidProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/liquidMixtureProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/solidProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/properties/solidMixtureProperties/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/SLGThermo/lnInclude \
+    -I$(LIB_SRC)/thermophysicalModels/radiationModels/lnInclude \
+    -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+    -I$(LIB_SRC)/transportModels \
+    -I$(LIB_SRC)/regionModels/regionModel/lnInclude \
+    -I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
+    -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
+    -I$(LIB_SRC)/sampling/lnInclude
+
+LIB_LIBS = \
+    -lfiniteVolume \
+    -lmeshTools \
+    -llagrangian \
+    -llagrangianIntermediate \
+    -ldistributionModels \
+    -lspecie \
+    -lfluidThermophysicalModels \
+    -lliquidProperties \
+    -lliquidMixtureProperties \
+    -lsolidProperties \
+    -lsolidMixtureProperties \
+    -lreactionThermophysicalModels \
+    -lSLGThermo \
+    -lradiationModels \
+    -lturbulenceModels \
+    -lincompressibleTurbulenceModels \
+    -lcompressibleTurbulenceModels \
+    -lincompressibleTransportModels \
+    -lregionModels \
+    -lsurfaceFilmModels \
+    -ldynamicFvMesh \
+    -lsampling
diff --git a/src/lagrangian/Turbulence/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C b/src/lagrangian/Turbulence/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..c0d2f76c471ef6094b065780a2026d0c74bb5b01
--- /dev/null
+++ b/src/lagrangian/Turbulence/parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C
@@ -0,0 +1,37 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicKinematicCollidingCloud.H"
+#include "makeParcelTurbulenceDispersionModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeParcelTurbulenceDispersionModels(basicKinematicCollidingCloud);
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/parcels/derived/basicKinematicMPPICParcel/makeBasicKinematicMPPICParcelSubmodels.C b/src/lagrangian/Turbulence/parcels/derived/basicKinematicMPPICParcel/makeBasicKinematicMPPICParcelSubmodels.C
new file mode 100644
index 0000000000000000000000000000000000000000..60ed0310ebe8e18581f9acd72da5823e83368c9e
--- /dev/null
+++ b/src/lagrangian/Turbulence/parcels/derived/basicKinematicMPPICParcel/makeBasicKinematicMPPICParcelSubmodels.C
@@ -0,0 +1,37 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "basicKinematicMPPICCloud.H"
+#include "makeParcelTurbulenceDispersionModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    makeParcelTurbulenceDispersionModels(basicKinematicMPPICCloud);
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/parcels/include/makeParcelTurbulenceDispersionModels.H b/src/lagrangian/Turbulence/parcels/include/makeParcelTurbulenceDispersionModels.H
new file mode 100644
index 0000000000000000000000000000000000000000..d2428ba4b23172e7d44407fdfc5f11cf3313be06
--- /dev/null
+++ b/src/lagrangian/Turbulence/parcels/include/makeParcelTurbulenceDispersionModels.H
@@ -0,0 +1,53 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef makeParcelTurbulenceDispersionModels_h
+#define makeParcelTurbulenceDispersionModels_h
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "GradientDispersionRAS.H"
+#include "StochasticDispersionRAS.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#define makeParcelTurbulenceDispersionModels(CloudType)                       \
+                                                                              \
+    typedef CloudType::kinematicCloudType kinematicCloudType;                 \
+    defineNamedTemplateTypeNameAndDebug                                       \
+    (                                                                         \
+        DispersionRASModel<kinematicCloudType>,                               \
+        0                                                                     \
+    );                                                                        \
+                                                                              \
+    makeDispersionModelType(GradientDispersionRAS, CloudType);                \
+    makeDispersionModelType(StochasticDispersionRAS, CloudType);              \
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
new file mode 100644
index 0000000000000000000000000000000000000000..43b1b36693df14be737ee7c51f350e3b1ce02699
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
@@ -0,0 +1,201 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "DispersionRASModel.H"
+#include "demandDrivenData.H"
+#include "turbulenceModel.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::tmp<Foam::volScalarField>
+Foam::DispersionRASModel<CloudType>::kModel() const
+{
+    const objectRegistry& obr = this->owner().mesh();
+    const word turbName =
+        IOobject::groupName
+        (
+            turbulenceModel::propertiesName,
+            this->owner().U().group()
+        );
+
+    if (obr.foundObject<turbulenceModel>(turbName))
+    {
+        const turbulenceModel& model =
+            obr.lookupObject<turbulenceModel>(turbName);
+        return model.k();
+    }
+    else
+    {
+        FatalErrorIn
+        (
+            "Foam::tmp<Foam::volScalarField>"
+            "Foam::DispersionRASModel<CloudType>::kModel() const"
+        )
+            << "Turbulence model not found in mesh database" << nl
+            << "Database objects include: " << obr.sortedToc()
+            << abort(FatalError);
+
+        return tmp<volScalarField>(NULL);
+    }
+}
+
+
+template<class CloudType>
+Foam::tmp<Foam::volScalarField>
+Foam::DispersionRASModel<CloudType>::epsilonModel() const
+{
+    const objectRegistry& obr = this->owner().mesh();
+    const word turbName =
+        IOobject::groupName
+        (
+            turbulenceModel::propertiesName,
+            this->owner().U().group()
+        );
+
+    if (obr.foundObject<turbulenceModel>(turbName))
+    {
+        const turbulenceModel& model =
+            obr.lookupObject<turbulenceModel>(turbName);
+        return model.epsilon();
+    }
+    else
+    {
+        FatalErrorIn
+        (
+            "Foam::tmp<Foam::volScalarField>"
+            "Foam::DispersionRASModel<CloudType>::epsilonModel() const"
+        )
+            << "Turbulence model not found in mesh database" << nl
+            << "Database objects include: " << obr.sortedToc()
+            << abort(FatalError);
+
+        return tmp<volScalarField>(NULL);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::DispersionRASModel<CloudType>::DispersionRASModel
+(
+    const dictionary&,
+    CloudType& owner
+)
+:
+    DispersionModel<CloudType>(owner),
+    kPtr_(NULL),
+    ownK_(false),
+    epsilonPtr_(NULL),
+    ownEpsilon_(false)
+{}
+
+
+template<class CloudType>
+Foam::DispersionRASModel<CloudType>::DispersionRASModel
+(
+    DispersionRASModel<CloudType>& dm
+)
+:
+    DispersionModel<CloudType>(dm),
+    kPtr_(dm.kPtr_),
+    ownK_(dm.ownK_),
+    epsilonPtr_(dm.epsilonPtr_),
+    ownEpsilon_(dm.ownEpsilon_)
+{
+    dm.ownK_ = false;
+    dm.ownEpsilon_ = false;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::DispersionRASModel<CloudType>::~DispersionRASModel()
+{
+    cacheFields(false);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::DispersionRASModel<CloudType>::cacheFields(const bool store)
+{
+    if (store)
+    {
+        tmp<volScalarField> tk = this->kModel();
+        if (tk.isTmp())
+        {
+            kPtr_ = tk.ptr();
+            ownK_ = true;
+        }
+        else
+        {
+            kPtr_ = tk.operator->();
+            ownK_ = false;
+        }
+
+        tmp<volScalarField> tepsilon = this->epsilonModel();
+        if (tepsilon.isTmp())
+        {
+            epsilonPtr_ = tepsilon.ptr();
+            ownEpsilon_ = true;
+        }
+        else
+        {
+            epsilonPtr_ = tepsilon.operator->();
+            ownEpsilon_ = false;
+        }
+    }
+    else
+    {
+        if (ownK_ && kPtr_)
+        {
+            deleteDemandDrivenData(kPtr_);
+            ownK_ = false;
+        }
+        if (ownEpsilon_ && epsilonPtr_)
+        {
+            deleteDemandDrivenData(epsilonPtr_);
+            ownEpsilon_ = false;
+        }
+    }
+}
+
+
+template<class CloudType>
+void Foam::DispersionRASModel<CloudType>::write(Ostream& os) const
+{
+    DispersionModel<CloudType>::write(os);
+
+    os.writeKeyword("ownK") << ownK_ << token::END_STATEMENT << endl;
+    os.writeKeyword("ownEpsilon") << ownEpsilon_ << token::END_STATEMENT
+        << endl;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
new file mode 100644
index 0000000000000000000000000000000000000000..8496766376cce6c0ca896df8baba206228de0b4e
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H
@@ -0,0 +1,135 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::DispersionRASModel
+
+Description
+    Base class for particle dispersion models based on RAS turbulence.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef DispersionRASModel_H
+#define DispersionRASModel_H
+
+#include "DispersionModel.H"
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class DispersionRASModel Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class DispersionRASModel
+:
+    public DispersionModel<CloudType>
+{
+protected:
+
+    // Protected data
+
+        // Locally cached turbulence fields
+
+            //- Turbulence k
+            const volScalarField* kPtr_;
+
+            //- Take ownership of the k field
+            bool ownK_;
+
+            //- Turbulence epsilon
+            const volScalarField* epsilonPtr_;
+
+            //- Take ownership of the epsilon field
+            bool ownEpsilon_;
+
+
+    // Protected Functions
+
+        //- Return the k field from the turbulence model
+        tmp<volScalarField> kModel() const;
+
+        //- Return the epsilon field from the turbulence model
+        tmp<volScalarField> epsilonModel() const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("dispersionRASModel");
+
+
+    // Constructors
+
+        //- Construct from components
+        DispersionRASModel(const dictionary& dict, CloudType& owner);
+
+        //- Construct copy
+        DispersionRASModel(DispersionRASModel<CloudType>& dm);
+
+        //- Construct and return a clone
+        virtual autoPtr<DispersionModel<CloudType> > clone()
+        {
+            return autoPtr<DispersionModel<CloudType> >
+            (
+                new DispersionRASModel<CloudType>(*this)
+            );
+        }
+
+
+    //- Destructor
+    virtual ~DispersionRASModel();
+
+
+    // Member Functions
+
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store);
+
+
+        // I-O
+
+            //- Write
+            virtual void write(Ostream& os) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "DispersionRASModel.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
new file mode 100644
index 0000000000000000000000000000000000000000..06fa810ac998e4a023a584533c0a4e304e152237
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.C
@@ -0,0 +1,169 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "GradientDispersionRAS.H"
+#include "demandDrivenData.H"
+#include "fvcGrad.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    DispersionRASModel<CloudType>(dict, owner),
+    gradkPtr_(NULL),
+    ownGradK_(false)
+{}
+
+
+template<class CloudType>
+Foam::GradientDispersionRAS<CloudType>::GradientDispersionRAS
+(
+    GradientDispersionRAS<CloudType>& dm
+)
+:
+    DispersionRASModel<CloudType>(dm),
+    gradkPtr_(dm.gradkPtr_),
+    ownGradK_(dm.ownGradK_)
+{
+    dm.ownGradK_ = false;
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::GradientDispersionRAS<CloudType>::~GradientDispersionRAS()
+{
+    cacheFields(false);
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+void Foam::GradientDispersionRAS<CloudType>::cacheFields(const bool store)
+{
+    DispersionRASModel<CloudType>::cacheFields(store);
+
+    if (store)
+    {
+        gradkPtr_ = fvc::grad(*this->kPtr_).ptr();
+        ownGradK_ = true;
+    }
+    else
+    {
+        if (ownGradK_)
+        {
+            deleteDemandDrivenData(gradkPtr_);
+            gradkPtr_ = NULL;
+            ownGradK_ = false;
+        }
+    }
+}
+
+
+template<class CloudType>
+Foam::vector Foam::GradientDispersionRAS<CloudType>::update
+(
+    const scalar dt,
+    const label cellI,
+    const vector& U,
+    const vector& Uc,
+    vector& UTurb,
+    scalar& tTurb
+)
+{
+    cachedRandom& rnd = this->owner().rndGen();
+
+    const scalar cps = 0.16432;
+
+    const scalar k = this->kPtr_->internalField()[cellI];
+    const scalar epsilon =
+        this->epsilonPtr_->internalField()[cellI] + ROOTVSMALL;
+    const vector& gradk = this->gradkPtr_->internalField()[cellI];
+
+    const scalar UrelMag = mag(U - Uc - UTurb);
+
+    const scalar tTurbLoc =
+        min(k/epsilon, cps*pow(k, 1.5)/epsilon/(UrelMag + SMALL));
+
+
+    // Parcel is perturbed by the turbulence
+    if (dt < tTurbLoc)
+    {
+        tTurb += dt;
+
+        if (tTurb > tTurbLoc)
+        {
+            tTurb = 0.0;
+
+            scalar sigma = sqrt(2.0*k/3.0);
+            vector dir = -gradk/(mag(gradk) + SMALL);
+
+            // Numerical Recipes... Ch. 7. Random Numbers...
+            scalar x1 = 0.0;
+            scalar x2 = 0.0;
+            scalar rsq = 10.0;
+            while ((rsq > 1.0) || (rsq == 0.0))
+            {
+                x1 = 2.0*rnd.sample01<scalar>() - 1.0;
+                x2 = 2.0*rnd.sample01<scalar>() - 1.0;
+                rsq = x1*x1 + x2*x2;
+            }
+
+            scalar fac = sqrt(-2.0*log(rsq)/rsq);
+
+            // In 2D calculations the -grad(k) is always
+            // away from the axis of symmetry
+            // This creates a 'hole' in the spray and to
+            // prevent this we let x1 be both negative/positive
+            if (this->owner().mesh().nSolutionD() == 2)
+            {
+                fac *= x1;
+            }
+            else
+            {
+                fac *= mag(x1);
+            }
+
+            UTurb = sigma*fac*dir;
+        }
+    }
+    else
+    {
+        tTurb = GREAT;
+        UTurb = vector::zero;
+    }
+
+    return Uc + UTurb;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
new file mode 100644
index 0000000000000000000000000000000000000000..b9ccfac5190d37435eb9f229a571dfc433502113
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H
@@ -0,0 +1,126 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::GradientDispersionRAS
+
+Description
+    The velocity is perturbed in the direction of -grad(k), with a
+    Gaussian random number distribution with variance sigma.
+    where sigma is defined below
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef GradientDispersionRAS_H
+#define GradientDispersionRAS_H
+
+#include "DispersionRASModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class GradientDispersionRAS Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class GradientDispersionRAS
+:
+    public DispersionRASModel<CloudType>
+{
+protected:
+
+    // Protected data
+
+        // Locally cached turbulence fields
+
+            //- Gradient of k
+            const volVectorField* gradkPtr_;
+
+            //- Take ownership of the grad(k)
+            bool ownGradK_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("gradientDispersionRAS");
+
+
+    // Constructors
+
+        //- Construct from components
+        GradientDispersionRAS(const dictionary& dict, CloudType& owner);
+
+        //- Construct copy
+        GradientDispersionRAS(GradientDispersionRAS<CloudType>& dm);
+
+        //- Construct and return a clone
+        virtual autoPtr<DispersionModel<CloudType> > clone()
+        {
+            return autoPtr<DispersionModel<CloudType> >
+            (
+                new GradientDispersionRAS<CloudType>(*this)
+            );
+        }
+
+
+    //- Destructor
+    virtual ~GradientDispersionRAS();
+
+
+    // Member Functions
+
+        //- Cache carrier fields
+        virtual void cacheFields(const bool store);
+
+        //- Update (disperse particles)
+        virtual vector update
+        (
+            const scalar dt,
+            const label cellI,
+            const vector& U,
+            const vector& Uc,
+            vector& UTurb,
+            scalar& tTurb
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "GradientDispersionRAS.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
new file mode 100644
index 0000000000000000000000000000000000000000..badebbc110d84baa28e94692ba73a2b1cbcc9e5f
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
@@ -0,0 +1,127 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "StochasticDispersionRAS.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    DispersionRASModel<CloudType>(dict, owner)
+{}
+
+
+template<class CloudType>
+Foam::StochasticDispersionRAS<CloudType>::StochasticDispersionRAS
+(
+    StochasticDispersionRAS<CloudType>& dm
+)
+:
+    DispersionRASModel<CloudType>(dm)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::StochasticDispersionRAS<CloudType>::~StochasticDispersionRAS()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::vector Foam::StochasticDispersionRAS<CloudType>::update
+(
+    const scalar dt,
+    const label cellI,
+    const vector& U,
+    const vector& Uc,
+    vector& UTurb,
+    scalar& tTurb
+)
+{
+    cachedRandom& rnd = this->owner().rndGen();
+
+    const scalar cps = 0.16432;
+
+    const scalar k = this->kPtr_->internalField()[cellI];
+    const scalar epsilon =
+        this->epsilonPtr_->internalField()[cellI] + ROOTVSMALL;
+
+    const scalar UrelMag = mag(U - Uc - UTurb);
+
+    const scalar tTurbLoc =
+        min(k/epsilon, cps*pow(k, 1.5)/epsilon/(UrelMag + SMALL));
+
+
+    // Parcel is perturbed by the turbulence
+    if (dt < tTurbLoc)
+    {
+        tTurb += dt;
+
+        if (tTurb > tTurbLoc)
+        {
+            tTurb = 0.0;
+
+            scalar sigma = sqrt(2.0*k/3.0);
+            vector dir = 2.0*rnd.sample01<vector>() - vector::one;
+            dir /= mag(dir) + SMALL;
+
+            // Numerical Recipes... Ch. 7. Random Numbers...
+            scalar x1 = 0.0;
+            scalar x2 = 0.0;
+            scalar rsq = 10.0;
+            while ((rsq > 1.0) || (rsq == 0.0))
+            {
+                x1 = 2.0*rnd.sample01<scalar>() - 1.0;
+                x2 = 2.0*rnd.sample01<scalar>() - 1.0;
+                rsq = x1*x1 + x2*x2;
+            }
+
+            scalar fac = sqrt(-2.0*log(rsq)/rsq);
+
+            fac *= mag(x1);
+
+            UTurb = sigma*fac*dir;
+
+        }
+    }
+    else
+    {
+        tTurb = GREAT;
+        UTurb = vector::zero;
+    }
+
+    return Uc + UTurb;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
new file mode 100644
index 0000000000000000000000000000000000000000..d1c87d0485a659593643bdb742ac1c01f1d6cc50
--- /dev/null
+++ b/src/lagrangian/Turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H
@@ -0,0 +1,110 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+     \\/     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 3 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, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::StochasticDispersionRAS
+
+Description
+    The velocity is perturbed in random direction, with a
+    Gaussian random number distribution with variance sigma.
+    where sigma is defined below
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef StochasticDispersionRAS_H
+#define StochasticDispersionRAS_H
+
+#include "DispersionRASModel.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                   Class StochasticDispersionRAS Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class StochasticDispersionRAS
+:
+    public DispersionRASModel<CloudType>
+{
+public:
+
+    //- Runtime type information
+    TypeName("stochasticDispersionRAS");
+
+
+    // Constructors
+
+        //- Construct from components
+        StochasticDispersionRAS(const dictionary& dict, CloudType& owner);
+
+        //- Construct copy
+        StochasticDispersionRAS(StochasticDispersionRAS<CloudType>& dm);
+
+        //- Construct and return a clone
+        virtual autoPtr<DispersionModel<CloudType> > clone()
+        {
+            return autoPtr<DispersionModel<CloudType> >
+            (
+                new StochasticDispersionRAS<CloudType>(*this)
+            );
+        }
+
+
+    //- Destructor
+    virtual ~StochasticDispersionRAS();
+
+
+    // Member Functions
+
+        //- Update (disperse particles)
+        virtual vector update
+        (
+            const scalar dt,
+            const label cellI,
+            const vector& U,
+            const vector& Uc,
+            vector& UTurb,
+            scalar& tTurb
+        );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "StochasticDispersionRAS.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //