From e1d2e82ddc6ac1c3c7c828aadd154193df461caa Mon Sep 17 00:00:00 2001 From: andy <andy> Date: Wed, 1 Aug 2012 15:42:51 +0100 Subject: [PATCH] BUG: Corrected lagrangian function object postPatch normal dir - mantis #580 --- .../KinematicParcel/KinematicParcel.C | 4 ++-- .../CloudFunctionObject/CloudFunctionObject.C | 7 ++++--- .../CloudFunctionObject/CloudFunctionObject.H | 7 ++++--- .../CloudFunctionObjectList.C | 9 +++++---- .../CloudFunctionObjectList.H | 7 ++++--- .../ParticleErosion/ParticleErosion.C | 20 +++++++++++-------- .../ParticleErosion/ParticleErosion.H | 7 ++++--- .../PatchPostProcessing/PatchPostProcessing.C | 9 ++++++--- .../PatchPostProcessing/PatchPostProcessing.H | 7 ++++--- .../PairCollision/PairCollision.C | 5 +++-- 10 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index 9ae6b2f5b91..8fa42ac0ecc 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -363,7 +363,7 @@ bool Foam::KinematicParcel<ParcelType>::hitPatch static_cast<typename TrackData::cloudType::parcelType&>(*this); // Invoke post-processing model - td.cloud().functions().postPatch(p, patchI, pp.whichFace(p.face())); + td.cloud().functions().postPatch(p, pp, trackFraction, tetIs); // 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 b8409231fff..dbc359ae9a5 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -107,8 +107,9 @@ template<class CloudType> void Foam::CloudFunctionObject<CloudType>::postPatch ( const typename CloudType::parcelType&, - const label, - const label + const polyPatch&, + const scalar, + const tetIndices& ) { // do nothing diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H index b0818aa7084..5baf0f7ae95 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObject/CloudFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -141,8 +141,9 @@ public: virtual void postPatch ( const typename CloudType::parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& testIs ); //- Post-face hook diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C index 556c72908cb..2f97468e36c 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -146,13 +146,14 @@ template<class CloudType> void Foam::CloudFunctionObjectList<CloudType>::postPatch ( const typename CloudType::parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& tetIs ) { forAll(*this, i) { - this->operator[](i).postPatch(p, patchI, patchFaceI); + this->operator[](i).postPatch(p, pp, trackFraction, tetIs); } } diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H index b8b296fe211..5daeab9f297 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/CloudFunctionObjectList/CloudFunctionObjectList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -121,8 +121,9 @@ public: virtual void postPatch ( const typename CloudType::parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& tetIs ); //- Post-face hook diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C index 87d03eade78..81772debfe2 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.C @@ -166,29 +166,32 @@ template<class CloudType> void Foam::ParticleErosion<CloudType>::postPatch ( const parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& tetIs ) { + const label patchI = pp.index(); + const label localPatchI = applyToPatch(patchI); if (localPatchI != -1) { - const fvMesh& mesh = this->owner().mesh(); + vector nw; + vector Up; // patch-normal direction - vector nw = p.currentTetIndices().faceTri(mesh).normal(); + this->owner().patchData(p, pp, trackFraction, tetIs, nw, Up); - // particle direction of travel - const vector& U = p.U(); + // particle velocity reletive to patch + const vector& U = p.U() - Up; // quick reject if particle travelling away from the patch - if ((-nw & U) < 0) + if ((nw & U) < 0) { return; } - nw /= mag(nw); const scalar magU = mag(U); const vector Udir = U/magU; @@ -197,6 +200,7 @@ void Foam::ParticleErosion<CloudType>::postPatch const scalar coeff = p.nParticle()*p.mass()*sqr(magU)/(p_*psi_*K_); + const label patchFaceI = pp.whichFace(p.face()); scalar& Q = QPtr_->boundaryField()[patchI][patchFaceI]; if (tan(alpha) < K_/6.0) { diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H index c23dfc4c402..c741bd40044 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/ParticleErosion/ParticleErosion.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -126,8 +126,9 @@ public: virtual void postPatch ( const parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& tetIs ); }; diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C index afbd9bfbd9d..f66a872cfcf 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -218,11 +218,14 @@ template<class CloudType> void Foam::PatchPostProcessing<CloudType>::postPatch ( const parcelType& p, - const label patchI, - const label + const polyPatch& pp, + const scalar, + const tetIndices& tetIs ) { + const label patchI = pp.index(); const label localPatchI = applyToPatch(patchI); + if (localPatchI != -1 && patchData_[localPatchI].size() < maxStoredParcels_) { times_[localPatchI].append(this->owner().time().value()); diff --git a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H index 9945d24b587..f7d618e6ce8 100644 --- a/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H +++ b/src/lagrangian/intermediate/submodels/CloudFunctionObjects/PatchPostProcessing/PatchPostProcessing.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -127,8 +127,9 @@ public: virtual void postPatch ( const parcelType& p, - const label patchI, - const label patchFaceI + const polyPatch& pp, + const scalar trackFraction, + const tetIndices& tetIs ); }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C index 5319b75b27a..6315eac8278 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairCollision.C @@ -306,8 +306,9 @@ void Foam::PairCollision<CloudType>::wallInteraction() this->owner().functions().postPatch ( p, - patchI, - patchFaceI + mesh.boundaryMesh()[patchI], + 1.0, + p.currentTetIndices() ); } } -- GitLab