From 4fee00d61f0ff517d91383eb9ea550b6e8548d23 Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Tue, 30 Jun 2009 19:02:25 +0100
Subject: [PATCH] corrected patchIds

---
 .../PatchPostProcessing/PatchPostProcessing.C | 34 +++++++++++++------
 .../PatchPostProcessing/PatchPostProcessing.H | 18 ++++++----
 .../PatchPostProcessingI.H                    |  4 +--
 3 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C
index 8bd67c31daf..a1e56a0fe06 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.C
@@ -27,6 +27,26 @@ License
 #include "PatchPostProcessing.H"
 #include "IOPtrList.H"
 
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+template <class CloudType>
+Foam::label Foam::PatchPostProcessing<CloudType>::applyToPatch
+(
+    const label globalPatchI
+) const
+{
+    forAll(patchIds_, patchI)
+    {
+        if (patchIds_[patchI] == globalPatchI)
+        {
+            return patchI;
+        }
+    }
+
+    return -1;
+}
+
+
 // * * * * * * * * * * * * * protected Member Functions  * * * * * * * * * * //
 
 template<class CloudType>
@@ -80,9 +100,8 @@ Foam::PatchPostProcessing<CloudType>::PatchPostProcessing
     mesh_(owner.mesh()),
     patchNames_(this->coeffDict().lookup("patches")),
     patchData_(patchNames_.size()),
-    globalToLocalPatchIds_(patchNames_.size())
+    patchIds_(patchNames_.size())
 {
-    labelList localToGlobal(patchNames_.size());
     forAll(patchNames_, patchI)
     {
         label id = mesh_.boundaryMesh().findPatchID(patchNames_[patchI]);
@@ -99,12 +118,7 @@ Foam::PatchPostProcessing<CloudType>::PatchPostProcessing
              << "Available patches are: " << mesh_.boundaryMesh().names() << nl
              << exit(FatalError);
         }
-        localToGlobal[patchI] = id;
-    }
-
-    forAll(localToGlobal, patchI)
-    {
-        globalToLocalPatchIds_[localToGlobal[patchI]] = patchI;
+        patchIds_[patchI] = id;
     }
 }
 
@@ -132,8 +146,8 @@ void Foam::PatchPostProcessing<CloudType>::postPatch
     const label patchI
 )
 {
-    label localPatchI = globalToLocalPatchIds_[patchI];
-    if (patchData_[localPatchI].size() < maxStoredParcels_)
+    label localPatchI = applyToPatch(patchI);
+    if (localPatchI >= 0 && patchData_[localPatchI].size() < maxStoredParcels_)
     {
         patchData_[localPatchI].append(p.clone());
     }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H
index 78c5e205082..2df16c13242 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessing.H
@@ -44,7 +44,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                   Class PatchPostProcessing Declaration
+                    Class PatchPostProcessing Declaration
 \*---------------------------------------------------------------------------*/
 
 template<class CloudType>
@@ -59,7 +59,7 @@ class PatchPostProcessing
         //- Reference to the mesh
         const polyMesh& mesh_;
 
-        //- Maximum number of parcels to store per patch
+        //- Maximum number of parcels to store
         label maxStoredParcels_;
 
         //- List of patch names
@@ -68,8 +68,14 @@ class PatchPostProcessing
         //- List of parcel data per patch
         List<DynamicList<autoPtr<parcelType> > > patchData_;
 
-        //- Mapping from global to local patch ids
-        labelList globalToLocalPatchIds_;
+        //- Mapping from local to global patch ids
+        labelList patchIds_;
+
+
+    // Private member functions
+
+        //- Returns local patchI if patch is in patchIds_ list
+        label applyToPatch(const label globalPatchI) const;
 
 
 protected:
@@ -109,8 +115,8 @@ public:
             //- Return const access to the list of patch names
             inline const wordList& patchNames() const;
 
-            //- Return const mapping from global to local patch ids
-            inline const labelList& globalToLocalPatchIds() const;
+            //- Return const mapping from local to global patch ids
+            inline const labelList& patchIds() const;
 
 
         // Evaluation
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H
index 3ecdf058e82..f060eabc4b9 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/PostProcessingModel/PatchPostProcessing/PatchPostProcessingI.H
@@ -47,9 +47,9 @@ const Foam::wordList& Foam::PatchPostProcessing<CloudType>::patchNames() const
 
 template<class CloudType>
 const Foam::labelList&
-Foam::PatchPostProcessing<CloudType>::globalToLocalPatchIds() const
+Foam::PatchPostProcessing<CloudType>::patchIds() const
 {
-    return globalToLocalPatchIds_;
+    return patchIds_;
 }
 
 
-- 
GitLab