diff --git a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
index c722ac91fdf74d5123add48d14f3399d5f8f3c91..ca6eea491ec01eef1b8a0f81745ca57f354c150e 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/submodels/makeBasicKinematicParcelInjectionModels.C
@@ -27,9 +27,10 @@ License
 #include "basicKinematicParcel.H"
 #include "KinematicCloud.H"
 
-#include "NoInjection.H"
-#include "ManualInjection.H"
 #include "ConeInjection.H"
+#include "EntrainmentInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -40,7 +41,13 @@ namespace Foam
     // Add instances of injection model to the table
     makeInjectionModelType
     (
-        NoInjection,
+        ConeInjection,
+        KinematicCloud,
+        basicKinematicParcel
+    );
+    makeInjectionModelType
+    (
+        EntrainmentInjection,
         KinematicCloud,
         basicKinematicParcel
     );
@@ -52,7 +59,7 @@ namespace Foam
     );
     makeInjectionModelType
     (
-        ConeInjection,
+        NoInjection,
         KinematicCloud,
         basicKinematicParcel
     );
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
index 6d8b5aeac9166c03c4569deb6b097e088a9a4088..38b738d9243862419fbd5f90b5b802e582eac6b8 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingMultiphaseParcel/submodels/makeBasicReactingMultiphaseParcelInjectionModels.C
@@ -27,9 +27,10 @@ License
 #include "basicReactingMultiphaseParcel.H"
 #include "ReactingCloud.H"
 
-#include "NoInjection.H"
-#include "ManualInjection.H"
 #include "ConeInjection.H"
+#include "EntrainmentInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -40,7 +41,13 @@ namespace Foam
     // Add instances of injection model to the table
     makeInjectionModelType
     (
-        NoInjection,
+        ConeInjection,
+        KinematicCloud,
+        basicReactingMultiphaseParcel
+    );
+    makeInjectionModelType
+    (
+        EntrainmentInjection,
         KinematicCloud,
         basicReactingMultiphaseParcel
     );
@@ -52,7 +59,7 @@ namespace Foam
     );
     makeInjectionModelType
     (
-        ConeInjection,
+        NoInjection,
         KinematicCloud,
         basicReactingMultiphaseParcel
     );
diff --git a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
index 1af1e370884cf7f7f8b6c277ef19dea7b0bcbc4e..b5a7e83610fc16a87033a0f0c30ff85e1f143245 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/submodels/makeBasicReactingParcelInjectionModels.C
@@ -27,9 +27,10 @@ License
 #include "basicReactingParcel.H"
 #include "ReactingCloud.H"
 
-#include "NoInjection.H"
-#include "ManualInjection.H"
 #include "ConeInjection.H"
+#include "EntrainmentInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -40,7 +41,13 @@ namespace Foam
     // Add instances of injection model to the table
     makeInjectionModelType
     (
-        NoInjection,
+        ConeInjection,
+        KinematicCloud,
+        basicReactingParcel
+    );
+    makeInjectionModelType
+    (
+        EntrainmentInjection,
         KinematicCloud,
         basicReactingParcel
     );
@@ -52,7 +59,7 @@ namespace Foam
     );
     makeInjectionModelType
     (
-        ConeInjection,
+        NoInjection,
         KinematicCloud,
         basicReactingParcel
     );
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
index f2f433b0216ad9c4ab9b9542d016e11f42c8ae11..feb948d66c75bf96e18c3a1b18acb0e1ea953bf5 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/submodels/makeBasicThermoParcelInjectionModels.C
@@ -26,9 +26,11 @@ License
 
 #include "basicThermoParcel.H"
 #include "ThermoCloud.H"
-#include "NoInjection.H"
-#include "ManualInjection.H"
+
 #include "ConeInjection.H"
+#include "EntrainmentInjection.H"
+#include "ManualInjection.H"
+#include "NoInjection.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -37,11 +39,32 @@ namespace Foam
     makeInjectionModel(KinematicCloud<basicThermoParcel>);
 
     // Add instances of injection model to the table
-    makeInjectionModelType(NoInjection, KinematicCloud, basicThermoParcel);
 
-    makeInjectionModelType(ManualInjection, KinematicCloud, basicThermoParcel);
+    makeInjectionModelType
+    (
+        ConeInjection,
+        KinematicCloud,
+        basicThermoParcel
+    );
+    makeInjectionModelType
+    (
+        EntrainmentInjection,
+        KinematicCloud,
+        basicThermoParcel
+    );
+    makeInjectionModelType
+    (
+        ManualInjection,
+        KinematicCloud,
+        basicThermoParcel
+    );
+    makeInjectionModelType
+    (
+        NoInjection,
+        KinematicCloud,
+        basicThermoParcel
+    );
 
-    makeInjectionModelType(ConeInjection, KinematicCloud, basicThermoParcel);
 };
 
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.C
new file mode 100755
index 0000000000000000000000000000000000000000..758a14ee337c4d317e042723a5655b16a9321c45
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.C
@@ -0,0 +1,231 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 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 "EntrainmentInjection.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::label Foam::EntrainmentInjection<CloudType>::parcelsToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
+    {
+        return positions_.size();
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::EntrainmentInjection<CloudType>::volumeToInject
+(
+    const scalar time0,
+    const scalar time1
+) const
+{
+    if (sum(nParcelsInjected_) < nParcelsPerInjector_*positions_.size())
+    {
+        return this->volumeTotal_/nParcelsPerInjector_;
+    }
+    else
+    {
+        return 0;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::EntrainmentInjection<CloudType>::EntrainmentInjection
+(
+    const dictionary& dict,
+    CloudType& owner
+)
+:
+    InjectionModel<CloudType>(dict, owner, typeName),
+    c_(readScalar(this->coeffDict().lookup("c"))),
+    rhoc_
+    (
+        owner.db().objectRegistry::lookupObject<volScalarField>
+        (
+            this->coeffDict().lookup("rhoc")
+        )
+    ),
+    rhol_
+    (
+        owner.db().objectRegistry::lookupObject<volScalarField>
+        (
+            this->coeffDict().lookup("rhol")
+        )
+    ),
+    Uc_
+    (
+        owner.db().objectRegistry::lookupObject<volVectorField>
+        (
+            this->coeffDict().lookup("Uc")
+        )
+    ),
+    positionsFile_(this->coeffDict().lookup("positionsFile")),
+    positions_
+    (
+        IOobject
+        (
+            positionsFile_,
+            owner.db().time().constant(),
+            owner.mesh(),
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    ),
+    injectorCells_(positions_.size()),
+    nParcelsPerInjector_
+    (
+        readLabel(this->coeffDict().lookup("parcelsPerInjector"))
+    ),
+    nParcelsInjected_(positions_.size(), 0),
+    U0_(this->coeffDict().lookup("U0")),
+    diameters_(positions_.size()),
+    parcelPDF_
+    (
+        pdf::New
+        (
+            this->coeffDict().subDict("parcelPDF"),
+            owner.rndGen()
+        )
+    )
+{
+    // Construct parcel diameters - one per injector cell
+    forAll(diameters_, i)
+    {
+        diameters_[i] = parcelPDF_->sample();
+    }
+
+    // Determine total volume of particles to inject
+    this->volumeTotal_ =
+         nParcelsPerInjector_
+        *sum(pow3(diameters_))
+        *mathematicalConstant::pi/6.0;
+
+    // Set/cahce the injector cells
+    forAll(positions_, i)
+    {
+        this->findCellAtPosition
+        (
+            injectorCells_[i],
+            positions_[i]
+        );
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class CloudType>
+Foam::EntrainmentInjection<CloudType>::~EntrainmentInjection()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class CloudType>
+bool Foam::EntrainmentInjection<CloudType>::active() const
+{
+    return true;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::EntrainmentInjection<CloudType>::timeEnd() const
+{
+    return GREAT;
+}
+
+
+template<class CloudType>
+void Foam::EntrainmentInjection<CloudType>::setPositionAndCell
+(
+    const label parcelI,
+    const scalar,
+    vector& position,
+    label& cellOwner
+)
+{
+    position = positions_[parcelI];
+    cellOwner = injectorCells_[parcelI];
+}
+
+
+template<class CloudType>
+Foam::vector Foam::EntrainmentInjection<CloudType>::velocity
+(
+    const label,
+    const scalar
+)
+{
+    return U0_;
+}
+
+
+template<class CloudType>
+Foam::scalar Foam::EntrainmentInjection<CloudType>::d0
+(
+    const label parcelI,
+    const scalar
+) const
+{
+    return diameters_[parcelI];
+}
+
+
+template<class CloudType>
+bool Foam::EntrainmentInjection<CloudType>::validInjection(const label parcelI)
+{
+
+    const label cellI = injectorCells_[parcelI];
+    if
+    (
+         nParcelsInjected_[parcelI] < nParcelsPerInjector_
+      && rhol_[cellI] < c_*0.5*rhoc_[cellI]*magSqr(Uc_[cellI])
+    )
+    {
+        nParcelsInjected_[parcelI]++;
+        return true;
+    }
+
+    return false;
+}
+
+
+// ************************************************************************* //
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.H
new file mode 100755
index 0000000000000000000000000000000000000000..845a0d58bc3a5cddf78473992fbb85d0b22908f8
--- /dev/null
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/EntrainmentInjection/EntrainmentInjection.H
@@ -0,0 +1,196 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 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
+    Foam::EntrainmentInjection
+
+Description
+
+SourceFiles
+    EntrainmentInjection.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef EntrainmentInjection_H
+#define EntrainmentInjection_H
+
+#include "InjectionModel.H"
+#include "pdf.H"
+#include "volFieldsFwd.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class EntrainmentInjection Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class CloudType>
+class EntrainmentInjection
+:
+    public InjectionModel<CloudType>
+{
+    // Private data
+
+        // Model parameters
+
+            //- Injection permission: rhol <= c_*0.5*rho*|U|^2
+            const scalar c_;
+
+            //- Carrier phase density field
+            const volScalarField& rhoc_;
+
+            //- Lagrangian phase density field
+            const scalarField& rhol_;
+
+            //- Carrier phase velocity field
+            const vectorField& Uc_;
+
+
+        // Injector properties
+
+            //- Name of file containing positions data
+            const word positionsFile_;
+
+            //- Field of injector (x,y,z) positions
+            vectorIOField positions_;
+
+            //- Field of cell labels corresoponding to injector positions
+            labelField injectorCells_;
+
+            //- nParcels per injector
+            const label nParcelsPerInjector_;
+
+            //- Field of number of parcels injected for each injector
+            labelField nParcelsInjected_;
+
+
+        // Parcel properties
+
+            //- Initial parcel velocity
+            const vector U0_;
+
+            //- Field of parcel diameters
+            scalarField diameters_;
+
+            //- Parcel size PDF model
+            const autoPtr<pdf> parcelPDF_;
+
+
+protected:
+
+    // Protected member functions
+
+        //- Number of parcels to introduce over the time step
+        label parcelsToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+        //- Volume of parcels to introduce over the time step
+        scalar volumeToInject
+        (
+            const scalar time0,
+            const scalar time1
+        ) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("EntrainmentInjection");
+
+
+    // Constructors
+
+        //- Construct from dictionary
+        EntrainmentInjection
+        (
+            const dictionary& dict,
+            CloudType& owner
+        );
+
+
+    // Destructor
+    virtual ~EntrainmentInjection();
+
+
+    // Member Functions
+
+        //- Flag to indicate whether model activates injection model
+        bool active() const;
+
+        //- Return the end-of-injection time
+        scalar timeEnd() const;
+
+
+        // Injection geometry
+
+            //- Set the injection position and owner cell
+            void setPositionAndCell
+            (
+                const label parcelI,
+                const scalar time,
+                vector& position,
+                label& cellOwner
+            );
+
+            //- Return the velocity of the parcel to introduce at a time
+            vector velocity
+            (
+                const label parcelI,
+                const scalar time
+            );
+
+            //- Return the diameter of the parcel to introduce at a time
+            scalar d0
+            (
+                const label parcelI,
+                const scalar time
+            ) const;
+
+            //- Return flag to identify whether or not injection in cellI is
+            //  permitted
+            bool validInjection(const label parcelI);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "EntrainmentInjection.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //