diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
index 20962a38a7b23a9ee4ad77903b5154079793a78e..513167db87431f04ef90b020e901d51f5adc196b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
@@ -592,6 +592,105 @@ void Foam::InjectionModel<CloudType>::inject(TrackData& td)
 }
 
 
+template<class CloudType>
+template<class TrackData>
+void Foam::InjectionModel<CloudType>::injectSteadyState
+(
+    TrackData& td,
+    const scalar trackTime
+)
+{
+    if (!this->active())
+    {
+        return;
+    }
+
+    const polyMesh& mesh = this->owner().mesh();
+
+    // Reset counters
+    time0_ = 0.0;
+    label parcelsAdded = 0;
+    scalar massAdded = 0.0;
+
+    // Set number of new parcels to inject based on first second of injection
+    label newParcels = parcelsToInject(0.0, 1.0);
+
+    // Inject new parcels
+    for (label parcelI = 0; parcelI < newParcels; parcelI++)
+    {
+        // Volume to inject is split equally amongst all parcel streams
+        scalar newVolume = volumeTotal_/newParcels;
+
+        // Determine the injection position and owner cell,
+        // tetFace and tetPt
+        label cellI = -1;
+        label tetFaceI = -1;
+        label tetPtI = -1;
+
+        vector pos = vector::zero;
+
+        setPositionAndCell
+        (
+            parcelI,
+            newParcels,
+            0.0,
+            pos,
+            cellI,
+            tetFaceI,
+            tetPtI
+        );
+
+        if (cellI > -1)
+        {
+            // Apply corrections to position for 2-D cases
+            meshTools::constrainToMeshCentre(mesh, pos);
+
+            // Create a new parcel
+            parcelType* pPtr = new parcelType
+            (
+                td.cloud(),
+                pos,
+                cellI,
+                tetFaceI,
+                tetPtI
+            );
+
+            // Assign new parcel properties in injection model
+            setProperties(parcelI, newParcels, 0.0, *pPtr);
+
+            // Check new parcel properties
+            td.cloud().checkParcelProperties(*pPtr, 0.0, fullyDescribed());
+
+            // Apply correction to velocity for 2-D cases
+            meshTools::constrainDirection
+            (
+                mesh,
+                mesh.solutionD(),
+                pPtr->U()
+            );
+
+            // Number of particles per parcel
+            pPtr->nParticle() =
+                setNumberOfParticles
+                (
+                    1,
+                    newVolume,
+                    pPtr->d(),
+                    pPtr->rho()
+                );
+
+            // Add the new parcel
+            td.cloud().addParticle(pPtr);
+
+            massAdded += pPtr->nParticle()*pPtr->mass();
+            parcelsAdded++;
+        }
+    }
+
+    postInjectCheck(parcelsAdded, massAdded);
+}
+
+
 template<class CloudType>
 void Foam::InjectionModel<CloudType>::setPositionAndCell
 (
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index 23f8f2f76270885efd5b410c22a38c3141d5d962..d559aab81459042d1b6e59cd1f4e6a8120ef858b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -280,6 +280,10 @@ public:
             template<class TrackData>
             void inject(TrackData& td);
 
+            //- Main injection loop - steady-state
+            template<class TrackData>
+            void injectSteadyState(TrackData& td, const scalar trackTime);
+
 
         // Injection geometry