From e7a9581d79d5e54a503e288a316cb3ab525fe58a Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Mon, 14 May 2018 15:16:13 +0100 Subject: [PATCH] particle: Added trackToCell function This is equivalent to track to face, but it additionally crosses internal faces at the end of the track to move into the next cell. This is a common procedure when performing post-processing tracking operations. --- src/lagrangian/basic/particle/particle.C | 17 +++++++++++++++++ src/lagrangian/basic/particle/particle.H | 15 +++++++++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/lagrangian/basic/particle/particle.C b/src/lagrangian/basic/particle/particle.C index a7e258a57..f5919901b 100644 --- a/src/lagrangian/basic/particle/particle.C +++ b/src/lagrangian/basic/particle/particle.C @@ -570,6 +570,23 @@ Foam::scalar Foam::particle::track } +Foam::scalar Foam::particle::trackToCell +( + const vector& displacement, + const scalar fraction +) +{ + const scalar f = trackToFace(displacement, fraction); + + if (onInternalFace()) + { + changeCell(); + } + + return f; +} + + Foam::scalar Foam::particle::trackToFace ( const vector& displacement, diff --git a/src/lagrangian/basic/particle/particle.H b/src/lagrangian/basic/particle/particle.H index 5225191cd..4ad86711f 100644 --- a/src/lagrangian/basic/particle/particle.H +++ b/src/lagrangian/basic/particle/particle.H @@ -513,16 +513,23 @@ public: const scalar fraction ); - //- As particle::track, but also stops on internal faces. + //- As particle::track, but stops when a new cell is reached. + scalar trackToCell + ( + const vector& displacement, + const scalar fraction + ); + + //- As particle::track, but stops when a face is hit. scalar trackToFace ( const vector& displacement, const scalar fraction ); - //- As particle::trackToFace, but also stops on tet triangles. On - // exit, tetTriI is set to the index of the tet triangle that was - // hit, or -1 if the end position was reached. + //- As particle::trackToFace, but stops when a tet triangle is hit. On + // exit, tetTriI is set to the index of the tet triangle that was hit, + // or -1 if the end position was reached. scalar trackToTri ( const vector& displacement,