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