From 76afade78890039567a4e04dbb4438bf78489bec Mon Sep 17 00:00:00 2001
From: graham <g.macpherson@opencfd.co.uk>
Date: Tue, 18 May 2010 10:30:49 +0100
Subject: [PATCH] ENH:  Correcting pbNumber, shouldn't be divided by number of
 parcels.

Adding pbFixed so nParticles is specified directly by the user, making
massTotal not determine anything in this case.

Removing unused private data member.
---
 .../KinematicParcel/KinematicParcel.C         |  2 +-
 .../InjectionModel/InjectionModel.C           | 22 +++++++++++++++++--
 .../InjectionModel/InjectionModel.H           |  7 +++++-
 .../ManualInjection/ManualInjection.H         |  3 ---
 4 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index 4d89dedde19..31c274ea38d 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -346,7 +346,7 @@ bool Foam::KinematicParcel<ParcelType>::hitPatch
 {
     ParcelType& p = static_cast<ParcelType&>(*this);
 
-    // Invoke poost-processing mdoel
+    // Invoke post-processing model
     td.cloud().postProcessing().postPatch(p, patchI);
 
     // Invoke surface film model
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
index 84d959976d7..a232a5f0609 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.C
@@ -212,7 +212,12 @@ Foam::scalar Foam::InjectionModel<CloudType>::setNumberOfParticles
         }
         case pbNumber:
         {
-            nP = massTotal_/(rho*volumeTotal_*parcels);
+            nP = massTotal_/(rho*volumeTotal_);
+            break;
+        }
+        case pbFixed:
+        {
+            nP = nParticlesFixed_;
             break;
         }
         default:
@@ -285,6 +290,7 @@ Foam::InjectionModel<CloudType>::InjectionModel(CloudType& owner)
     nInjections_(0),
     parcelsAddedTotal_(0),
     parcelBasis_(pbNumber),
+    nParticlesFixed_(0.0),
     time0_(0.0),
     timeStep0_(0.0)
 {
@@ -310,6 +316,7 @@ Foam::InjectionModel<CloudType>::InjectionModel
     nInjections_(0),
     parcelsAddedTotal_(0),
     parcelBasis_(pbNumber),
+    nParticlesFixed_(0.0),
     time0_(owner.db().time().value()),
     timeStep0_(0.0)
 {
@@ -320,6 +327,7 @@ Foam::InjectionModel<CloudType>::InjectionModel
         << endl;
 
     const word parcelBasisType = coeffDict_.lookup("parcelBasisType");
+
     if (parcelBasisType == "mass")
     {
         parcelBasis_ = pbMass;
@@ -328,6 +336,16 @@ Foam::InjectionModel<CloudType>::InjectionModel
     {
         parcelBasis_ = pbNumber;
     }
+    else if (parcelBasisType == "fixed")
+    {
+        parcelBasis_ = pbFixed;
+
+        Info<< "    Choosing nParticles to be a fixed value, massTotal "
+            << "variable now does not determine anything."
+            << endl;
+
+        nParticlesFixed_ = readScalar(coeffDict_.lookup("nParticles"));
+    }
     else
     {
         FatalErrorIn
@@ -338,7 +356,7 @@ Foam::InjectionModel<CloudType>::InjectionModel
                 "CloudType&, "
                 "const word&"
             ")"
-        )<< "parcelBasisType must be either 'number' or 'mass'" << nl
+        )<< "parcelBasisType must be either 'number', 'mass' or 'fixed'" << nl
          << exit(FatalError);
     }
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
index d7309f5a0a8..c6fb6e424bc 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H
@@ -73,7 +73,8 @@ public:
         enum parcelBasis
         {
             pbNumber,
-            pbMass
+            pbMass,
+            pbFixed
         };
 
 
@@ -137,6 +138,10 @@ protected:
             //- Parcel basis enumeration
             parcelBasis parcelBasis_;
 
+            //- nParticles to assign to parcels when the 'fixed' basis
+            //  is selected
+            scalar nParticlesFixed_;
+
             //- Continuous phase time at start of injection time step [s]
             scalar time0_;
 
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
index 7d8305088f3..0202c9eb60b 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H
@@ -76,9 +76,6 @@ class ManualInjection
         //- Parcel size PDF model
         const autoPtr<pdfs::pdf> parcelPDF_;
 
-        //- Number of particles represented by each parcel
-        scalar nParticlesPerParcel_;
-
 
 protected:
 
-- 
GitLab