From fb7698f6a1578e5ef654e0978710eac59f4a56ec Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 23 Oct 2019 16:52:27 +0100 Subject: [PATCH] ENH: streamLine: add bidirectional tracking. Fixes #1466. --- .../field/streamLine/streamLine.C | 24 +++++- .../field/streamLine/streamLine.H | 4 +- .../field/streamLine/streamLineBase.C | 36 +++++++- .../field/streamLine/streamLineBase.H | 21 ++++- .../field/streamLine/streamLineParticle.C | 23 +++--- .../field/streamLine/streamLineParticle.H | 11 +-- .../wallBoundedStreamLine.C | 82 +++++++++++++++---- .../wallBoundedStreamLine.H | 14 +++- .../wallBoundedStreamLineParticle.C | 8 +- .../wallBoundedStreamLineParticle.H | 7 +- 10 files changed, 184 insertions(+), 46 deletions(-) diff --git a/src/functionObjects/field/streamLine/streamLine.C b/src/functionObjects/field/streamLine/streamLine.C index 881330886d..f2bbacfdf0 100644 --- a/src/functionObjects/field/streamLine/streamLine.C +++ b/src/functionObjects/field/streamLine/streamLine.C @@ -56,18 +56,35 @@ void Foam::functionObjects::streamLine::track() const sampledSet& seedPoints = sampledSetPoints(); - forAll(seedPoints, i) + forAll(seedPoints, seedi) { particles.addParticle ( new streamLineParticle ( mesh_, - seedPoints[i], - seedPoints.cells()[i], + seedPoints[seedi], + seedPoints.cells()[seedi], + (trackDir_ == trackDirType::FORWARD), lifeTime_ ) ); + + if (trackDir_ == trackDirType::BIDIRECTIONAL) + { + // Add additional particle for the forward bit of the track + particles.addParticle + ( + new streamLineParticle + ( + mesh_, + seedPoints[seedi], + seedPoints.cells()[seedi], + true, + lifeTime_ + ) + ); + } } label nSeeds = returnReduce(particles.size(), sumOp