From b66e42e11a1a999f781a4fdec7f51aed17f34c9b Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Fri, 22 May 2009 14:57:03 +0100
Subject: [PATCH] added hitPatch() function

---
 src/lagrangian/basic/Particle/Particle.C      | 19 +++++++++++----
 src/lagrangian/basic/Particle/Particle.H      | 10 ++++++++
 .../KinematicParcel/KinematicParcel.C         | 24 +++++++++++++++++++
 .../KinematicParcel/KinematicParcel.H         | 21 ++++++++++++++++
 4 files changed, 70 insertions(+), 4 deletions(-)

diff --git a/src/lagrangian/basic/Particle/Particle.C b/src/lagrangian/basic/Particle/Particle.C
index 9f27af0b322..35d281c6a75 100644
--- a/src/lagrangian/basic/Particle/Particle.C
+++ b/src/lagrangian/basic/Particle/Particle.C
@@ -339,6 +339,8 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
             label patchi = patch(facei_);
             const polyPatch& patch = mesh.boundaryMesh()[patchi];
 
+            p.hitPatch(patch, td, patchi);
+
             if (isA<wedgePolyPatch>(patch))
             {
                 p.hitWedgePatch
@@ -376,10 +378,7 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace
             }
             else if (isA<polyPatch>(patch))
             {
-                p.hitPatch
-                (
-                    static_cast<const polyPatch&>(patch), td
-                );
+                p.hitPatch(patch, td);
             }
             else
             {
@@ -434,6 +433,18 @@ void Foam::Particle<ParticleType>::transformProperties(const vector&)
 {}
 
 
+
+template<class ParticleType>
+template<class TrackData>
+void Foam::Particle<ParticleType>::hitPatch
+(
+    const polyPatch&,
+    TrackData&,
+    const label
+)
+{}
+
+
 template<class ParticleType>
 template<class TrackData>
 void Foam::Particle<ParticleType>::hitWedgePatch
diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H
index 8035188a65f..371c1700c3f 100644
--- a/src/lagrangian/basic/Particle/Particle.H
+++ b/src/lagrangian/basic/Particle/Particle.H
@@ -171,6 +171,16 @@ protected:
 
     // Patch interactions
 
+        //- Overridable function to handle the particle hitting a patch
+        //  Executed before other patch-hitting functions
+        template<class TrackData>
+        void hitPatch
+        (
+            const polyPatch&,
+            TrackData& td,
+            const label patchI
+        );
+
         //- Overridable function to handle the particle hitting a wedgePatch
         template<class TrackData>
         void hitWedgePatch
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
index cb18c182aec..4f9f0636dde 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C
@@ -254,6 +254,30 @@ bool Foam::KinematicParcel<ParcelType>::move(TrackData& td)
 }
 
 
+template<class ParcelType>
+template<class TrackData>
+void Foam::KinematicParcel<ParcelType>::hitPatch
+(
+    const polyPatch& pp,
+    TrackData& td,
+    const label patchI
+)
+{
+    ParcelType& p = static_cast<ParcelType&>(*this);
+    td.cloud().postProcessing().postPatch(p, patchI);
+}
+
+
+template<class ParcelType>
+void Foam::KinematicParcel<ParcelType>::hitPatch
+(
+    const polyPatch& pp,
+    int& td,
+    const label patchI
+)
+{}
+
+
 template<class ParcelType>
 template<class TrackData>
 void Foam::KinematicParcel<ParcelType>::hitProcessorPatch
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
index b448958e798..951a42c39c7 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
@@ -418,6 +418,27 @@ public:
 
         // Patch interactions
 
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions
+            template<class TrackData>
+            void hitPatch
+            (
+                const polyPatch& p,
+                TrackData& td,
+                const label patchI
+            );
+
+
+            //- Overridable function to handle the particle hitting a patch
+            //  Executed before other patch-hitting functions without trackData
+            void hitPatch
+            (
+                const polyPatch& p,
+                int& td,
+                const label patchI
+            );
+
+
             //- Overridable function to handle the particle hitting a
             //  processorPatch
             template<class TrackData>
-- 
GitLab