From 7c235371ff6e0ddabd746d48c27f15bf7ba5d432 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Mon, 12 Dec 2022 11:56:46 +0000 Subject: [PATCH] ENH: ConeNozzleInjection - added option to include an angular velocity (rad/s) Specified using the optional 'omega' entry (Function1 type), e.g. for a constant value: omega 12.56; Note that the swirl contribution is applied in addition to the velocity set by the 'flowType' option. For example, for the 'constantVelocity' option, parcels are initially set the velocity according to the UMag and direction/cone angle; the swirl velocity is then added. --- .../ConeNozzleInjection/ConeNozzleInjection.C | 28 +++++++++++++++++++ .../ConeNozzleInjection/ConeNozzleInjection.H | 3 ++ 2 files changed, 31 insertions(+) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeNozzleInjection/ConeNozzleInjection.C index 3b468bbd063..951bb484edf 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 606a9e5a6b4..bd03d0771e0 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_; -- GitLab