diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C
index 3b468bbd063df7284bd6c5a0a30eb523d99bf77c..951bb484edf1dc36e2e8a11dee586b25549c70e3 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C
@@ -186,6 +186,7 @@ Foam::ConeNozzleInjection<CloudType>::ConeNozzleInjection
     tetPti_(-1),
     directionVsTime_(nullptr),
     direction_(Zero),
+    omegaPtr_(nullptr),
     parcelsPerSecond_(this->coeffDict().getScalar("parcelsPerSecond")),
     flowRateProfile_
     (
@@ -246,6 +247,19 @@ Foam::ConeNozzleInjection<CloudType>::ConeNozzleInjection
     thetaInner_->userTimeToTime(time);
     thetaOuter_->userTimeToTime(time);
 
+    if (this->coeffDict().found("omega"))
+    {
+        omegaPtr_ =
+            Function1<scalar>::New
+            (
+                "omega",
+                this->coeffDict(),
+                &owner.mesh()
+            );
+
+        omegaPtr_->userTimeToTime(time);
+    }
+
     setInjectionGeometry();
 
     setFlowType();
@@ -277,6 +291,7 @@ Foam::ConeNozzleInjection<CloudType>::ConeNozzleInjection
     tetPti_(im.tetPti_),
     directionVsTime_(im.directionVsTime_.clone()),
     direction_(im.direction_),
+    omegaPtr_(im.omegaPtr_.clone()),
     parcelsPerSecond_(im.parcelsPerSecond_),
     flowRateProfile_(im.flowRateProfile_.clone()),
     thetaInner_(im.thetaInner_.clone()),
@@ -505,6 +520,19 @@ void Foam::ConeNozzleInjection<CloudType>::setProperties
         }
     }
 
+    if (omegaPtr_)
+    {
+        const scalar omega = omegaPtr_->value(t);
+
+        const vector p0(parcel.position() - positionVsTime_->value(t));
+        const vector r(p0 - (p0 & direction_)*direction_);
+        const scalar rMag = mag(r);
+
+        const vector d = normalised(normal_ ^ dirVec);
+
+        parcel.U() += omega*rMag*d;
+    }
+
     // Set particle diameter
     parcel.d() = sizeDistribution_->sample();
 }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H
index 606a9e5a6b41d02bf96fa702d863a6a48a3d7f46..bd03d0771e0122df25233ca8e843d04731e878eb 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.H
@@ -153,6 +153,9 @@ private:
         //- Cached direction vector
         vector direction_;
 
+        //- Swirl velocity (optional)
+        autoPtr<Function1<scalar>> omegaPtr_;
+
         //- Number of parcels to introduce per second []
         const label parcelsPerSecond_;