From 41b73ec5788a29f4d1928482c635db6cbe7d8dfe Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Fri, 13 Aug 2021 09:23:18 +0100 Subject: [PATCH] sampling: Ensure tracking is done at the new-time mesh state --- src/lagrangian/basic/Cloud/Cloud.C | 4 ++-- src/lagrangian/basic/particle/particle.C | 4 ++-- src/lagrangian/basic/particle/particle.H | 6 +++--- src/lagrangian/basic/particle/particleI.H | 4 ++-- src/sampling/sampledSet/lineFace/lineFace.C | 2 +- src/sampling/sampledSet/lineUniform/lineUniform.C | 2 +- src/sampling/sampledSet/points/points.C | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C index 983ed85757..e8c8c1b76e 100644 --- a/src/lagrangian/basic/Cloud/Cloud.C +++ b/src/lagrangian/basic/Cloud/Cloud.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -169,7 +169,7 @@ void Foam::Cloud::move // Initialise the stepFraction moved for the particles forAllIter(typename Cloud, *this, pIter) { - pIter().reset(); + pIter().reset(0); } // List of lists of particles to be transferred for all of the diff --git a/src/lagrangian/basic/particle/particle.C b/src/lagrangian/basic/particle/particle.C index 735e815fd2..af05951bf0 100644 --- a/src/lagrangian/basic/particle/particle.C +++ b/src/lagrangian/basic/particle/particle.C @@ -447,11 +447,11 @@ void Foam::particle::locate const class face& f = mesh_.faces()[c[cellTetFacei]]; for (label tetPti = 1; tetPti < f.size() - 1; ++ tetPti) { - reset(); coordinates_ = barycentric(1, 0, 0, 0); tetFacei_ = c[cellTetFacei]; tetPti_ = tetPti; facei_ = -1; + reset(1); label tetTriI = -1; const scalar f = trackToTri(displacement, 0, tetTriI); @@ -472,11 +472,11 @@ void Foam::particle::locate // The particle must be (hopefully only slightly) outside the cell. Track // into the tet which got the furthest. - reset(); coordinates_ = barycentric(1, 0, 0, 0); tetFacei_ = minTetFacei; tetPti_ = minTetPti; facei_ = -1; + reset(1); track(displacement, 0); if (!onFace()) diff --git a/src/lagrangian/basic/particle/particle.H b/src/lagrangian/basic/particle/particle.H index f51909e784..cb1f8360a0 100644 --- a/src/lagrangian/basic/particle/particle.H +++ b/src/lagrangian/basic/particle/particle.H @@ -528,9 +528,9 @@ public: // Track - //- Set step fraction and behind data to zero in preparation for a new - // track - inline void reset(); + //- Set the step fraction and clear the behind data in preparation for + // a new track + inline void reset(const scalar stepFraction); //- Track along the displacement for a given fraction of the overall // step. End when the track is complete, or when a boundary is hit. diff --git a/src/lagrangian/basic/particle/particleI.H b/src/lagrangian/basic/particle/particleI.H index 65f885b919..d8babbbb67 100644 --- a/src/lagrangian/basic/particle/particleI.H +++ b/src/lagrangian/basic/particle/particleI.H @@ -281,9 +281,9 @@ inline Foam::vector Foam::particle::position() const } -inline void Foam::particle::reset() +inline void Foam::particle::reset(const scalar stepFraction) { - stepFraction_ = 0; + stepFraction_ = stepFraction; stepFractionBehind_ = 0; nTracksBehind_ = 0; } diff --git a/src/sampling/sampledSet/lineFace/lineFace.C b/src/sampling/sampledSet/lineFace/lineFace.C index 139f2679bf..8f2f9e7668 100644 --- a/src/sampling/sampledSet/lineFace/lineFace.C +++ b/src/sampling/sampledSet/lineFace/lineFace.C @@ -146,7 +146,7 @@ void Foam::sampledSets::lineFace::calcSamples const vector s = sign*(end - start)*(1 - dist/mag(end - start)); - sampleParticle.reset(); + sampleParticle.reset(1); if ( diff --git a/src/sampling/sampledSet/lineUniform/lineUniform.C b/src/sampling/sampledSet/lineUniform/lineUniform.C index 9ac8c348c7..f33d09dd7e 100644 --- a/src/sampling/sampledSet/lineUniform/lineUniform.C +++ b/src/sampling/sampledSet/lineUniform/lineUniform.C @@ -89,7 +89,7 @@ void Foam::sampledSets::lineUniform::calcSamples if (++ sampleI < nPoints_) { sampleT = scalar(sampleI)/(nPoints_ - 1); - sampleParticle.reset(); + sampleParticle.reset(1); sampleParticle.track((end_ - start_)/(nPoints_ - 1), 0); } } diff --git a/src/sampling/sampledSet/points/points.C b/src/sampling/sampledSet/points/points.C index 1e633a4a49..51f327453b 100644 --- a/src/sampling/sampledSet/points/points.C +++ b/src/sampling/sampledSet/points/points.C @@ -118,7 +118,7 @@ void Foam::sampledSets::points::calcSamplesOrdered { const vector s = points_[sampleI] - points_[sampleI - 1]; sampleDist += mag(s); - sampleParticle.reset(); + sampleParticle.reset(1); sampleParticle.track(s, 0); } }