diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index 7007e0167b..9ae6b2f5b9 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -339,7 +339,7 @@ void Foam::KinematicParcel::hitFace(TrackData& td) typename TrackData::cloudType::parcelType& p = static_cast(*this); - td.cloud().functions().postFace(p); + td.cloud().functions().postFace(p, p.face()); } @@ -363,7 +363,7 @@ bool Foam::KinematicParcel::hitPatch static_cast(*this); // Invoke post-processing model - td.cloud().functions().postPatch(p, patchI); + td.cloud().functions().postPatch(p, patchI, pp.whichFace(p.face())); // Invoke surface film model if (td.cloud().surfaceFilm().transferParcel(p, pp, td.keepParticle)) diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C index 02416263cb..d31ddd7c5e 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C @@ -107,6 +107,7 @@ template void Foam::CloudFunctionObject::postPatch ( const typename CloudType::parcelType&, + const label, const label ) { @@ -117,7 +118,8 @@ void Foam::CloudFunctionObject::postPatch template void Foam::CloudFunctionObject::postFace ( - const typename CloudType::parcelType& + const typename CloudType::parcelType&, + const label ) { // do nothing diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H index 0ea373d5cb..df17418c4b 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H @@ -141,11 +141,16 @@ public: virtual void postPatch ( const typename CloudType::parcelType& p, - const label patchI + const label patchI, + const label patchFaceI ); //- Post-face hook - virtual void postFace(const typename CloudType::parcelType& p); + virtual void postFace + ( + const typename CloudType::parcelType& p, + const label faceI + ); }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C index 7c9e715c78..556c72908c 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C @@ -146,12 +146,13 @@ template void Foam::CloudFunctionObjectList::postPatch ( const typename CloudType::parcelType& p, - const label patchI + const label patchI, + const label patchFaceI ) { forAll(*this, i) { - this->operator[](i).postPatch(p, patchI); + this->operator[](i).postPatch(p, patchI, patchFaceI); } } @@ -159,12 +160,13 @@ void Foam::CloudFunctionObjectList::postPatch template void Foam::CloudFunctionObjectList::postFace ( - const typename CloudType::parcelType& p + const typename CloudType::parcelType& p, + const label faceI ) { forAll(*this, i) { - this->operator[](i).postFace(p); + this->operator[](i).postFace(p, faceI); } } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H index edba8be4a4..b8b296fe21 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H @@ -121,11 +121,16 @@ public: virtual void postPatch ( const typename CloudType::parcelType& p, - const label patchI + const label patchI, + const label patchFaceI ); //- Post-face hook - virtual void postFace(const typename CloudType::parcelType& p); + virtual void postFace + ( + const typename CloudType::parcelType& p, + const label faceI + ); }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C index 7af50ed59f..9bbf331022 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.C @@ -367,16 +367,11 @@ Foam::FacePostProcessing::~FacePostProcessing() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template -void Foam::FacePostProcessing::postPatch +void Foam::FacePostProcessing::postFace ( - const parcelType&, - const label + const parcelType& p, + const label faceI ) -{} - - -template -void Foam::FacePostProcessing::postFace(const parcelType& p) { if ( @@ -384,13 +379,13 @@ void Foam::FacePostProcessing::postFace(const parcelType& p) || this->owner().solution().transient() ) { - label zoneI = -1; - label faceI = -1; - applyToFace(p.face(), zoneI, faceI); + label zoneId = -1; + label faceId = -1; + applyToFace(faceI, zoneId, faceId); - if ((zoneI != -1) && (faceI != -1)) + if ((zoneId != -1) && (faceId != -1)) { - mass_[zoneI][faceI] += p.mass()*p.nParticle(); + mass_[zoneId][faceId] += p.mass()*p.nParticle(); } } } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H index e61d8ba4a7..4dc023ea04 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/FacePostProcessing/FacePostProcessing.H @@ -161,11 +161,12 @@ public: // Evaluation - //- Post-patch hook - virtual void postPatch(const parcelType& p, const label patchI); - //- Post-face hook - virtual void postFace(const parcelType& p); + virtual void postFace + ( + const parcelType& p, + const label faceI + ); }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C index 4dd5b3fdee..9721a5a55d 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.C @@ -109,12 +109,11 @@ void Foam::ParticleTracks::preEvolve() template -void Foam::ParticleTracks::postPatch(const parcelType&, const label) -{} - - -template -void Foam::ParticleTracks::postFace(const parcelType& p) +void Foam::ParticleTracks::postFace +( + const parcelType& p, + const label +) { if ( @@ -126,7 +125,11 @@ void Foam::ParticleTracks::postFace(const parcelType& p) { FatalErrorIn ( - "Foam::ParticleTracks::postFace(const parcelType&)" + "Foam::ParticleTracks::postFace" + "(" + "const parcelType&, " + "const label" + ")" )<< "Cloud storage not allocated" << abort(FatalError); } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H index db2108367d..9a9939dbb2 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleTracks/ParticleTracks.H @@ -139,11 +139,12 @@ public: //- Pre-evolve hook virtual void preEvolve(); - //- Post-patch hook - virtual void postPatch(const parcelType& p, const label patchI); - //- Post-face hook - virtual void postFace(const parcelType& p); + virtual void postFace + ( + const parcelType& p, + const label faceI + ); }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C index 99249f8485..2b60f241b5 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C @@ -196,7 +196,8 @@ template void Foam::PatchPostProcessing::postPatch ( const parcelType& p, - const label patchI + const label patchI, + const label ) { const label localPatchI = applyToPatch(patchI); @@ -210,9 +211,4 @@ void Foam::PatchPostProcessing::postPatch } -template -void Foam::PatchPostProcessing::postFace(const parcelType&) -{} - - // ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H index 56d2734526..83aaa1663b 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H @@ -121,10 +121,12 @@ public: // Evaluation //- Post-patch hook - virtual void postPatch(const parcelType& p, const label patchI); - - //- Post-face hook - virtual void postFace(const parcelType& p); + virtual void postPatch + ( + const parcelType& p, + const label patchI, + const label patchFaceI + ); }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C index b3af69d607..7851be5e70 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C @@ -128,7 +128,7 @@ void Foam::PairCollision::realReferredInteraction() const labelListList& ril = il_.ril(); List >& referredParticles = - il_.referredParticles(); + il_.referredParticles(); List >& cellOccupancy = this->owner().cellOccupancy(); @@ -137,7 +137,7 @@ void Foam::PairCollision::realReferredInteraction() forAll(ril, refCellI) { IDLList& refCellRefParticles = - referredParticles[refCellI]; + referredParticles[refCellI]; const labelList& realCells = ril[refCellI]; @@ -260,6 +260,7 @@ void Foam::PairCollision::wallInteraction() U.boundaryField()[patchI][patchFaceI] ); + bool particleHit = false; if (normalAlignment > cosPhiMinFlatWall) { // Guard against a flat interaction being @@ -284,6 +285,8 @@ void Foam::PairCollision::wallInteraction() ); flatSiteData.append(wSD); + + particleHit = true; } } else @@ -293,7 +296,20 @@ void Foam::PairCollision::wallInteraction() otherSiteDistances.append(nearest.distance()); otherSiteData.append(wSD); + + particleHit = true; } + + if (particleHit) + { + this->owner().functions().postFace(p, realFaceI); + this->owner().functions().postPatch + ( + p, + patchI, + patchFaceI + ); + } } } @@ -333,6 +349,7 @@ void Foam::PairCollision::wallInteraction() il_.referredWallData()[refWallFaceI] ); + bool particleHit = false; if (normalAlignment > cosPhiMinFlatWall) { // Guard against a flat interaction being @@ -357,6 +374,8 @@ void Foam::PairCollision::wallInteraction() ); flatSiteData.append(wSD); + + particleHit = false; } } else @@ -366,6 +385,14 @@ void Foam::PairCollision::wallInteraction() otherSiteDistances.append(nearest.distance()); otherSiteData.append(wSD); + + particleHit = false; + } + + if (particleHit) + { + // TODO: call cloud function objects for referred + // wall particle interactions } } }