diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H index f0ca222d91021d7e69846ed0cb9e05ff92bfa3af..e298affe7d2ce5651ce34015672c8f45688d858e 100644 --- a/src/lagrangian/basic/Cloud/Cloud.H +++ b/src/lagrangian/basic/Cloud/Cloud.H @@ -78,6 +78,9 @@ class Cloud const unallocLabelList& owner_; const unallocLabelList& neighbour_; + //- Temporary storage for addressing. Used in findFaces. + mutable DynamicList<label> labels_; + // Private member functions diff --git a/src/lagrangian/basic/Particle/Particle.C b/src/lagrangian/basic/Particle/Particle.C index ea53ec3ee4d92165ee03861a86dfb96a4b65e4e7..ee85abda689f5a1110a9b7c6b9a7ff90ced46d12 100644 --- a/src/lagrangian/basic/Particle/Particle.C +++ b/src/lagrangian/basic/Particle/Particle.C @@ -36,16 +36,17 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // template<class ParticleType> -Foam::labelList Foam::Particle<ParticleType>::findFaces +void Foam::Particle<ParticleType>::findFaces ( - const vector& position + const vector& position, + DynamicList<label>& faceList ) const { const polyMesh& mesh = cloud_.polyMesh_; const labelList& faces = mesh.cells()[celli_]; const vector& C = mesh.cellCentres()[celli_]; - DynamicList<label> faceList(10); + faceList.clear(); forAll(faces, i) { label facei = faces[i]; @@ -56,26 +57,23 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces faceList.append(facei); } } - - faceList.shrink(); - - return faceList; } template<class ParticleType> -Foam::labelList Foam::Particle<ParticleType>::findFaces +void Foam::Particle<ParticleType>::findFaces ( const vector& position, const label celli, - const scalar stepFraction + const scalar stepFraction, + DynamicList<label>& faceList ) const { const polyMesh& mesh = cloud_.polyMesh_; const labelList& faces = mesh.cells()[celli]; const vector& C = mesh.cellCentres()[celli]; - DynamicList<label> faceList(10); + faceList.clear(); forAll(faces, i) { label facei = faces[i]; @@ -86,10 +84,6 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces faceList.append(facei); } } - - faceList.shrink(); - - return faceList; } @@ -237,7 +231,8 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace { const polyMesh& mesh = cloud_.polyMesh_; - labelList faces = findFaces(endPosition); + DynamicList<label>& faces = cloud_.labels_; + findFaces(endPosition, faces); facei_ = -1; scalar trackFraction = 0.0; diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H index 4d1a8b9be839f7e92cd31ce2dc6ca7acf227b81a..f061c06b68b96fedb4963264187faed12d614d5e 100644 --- a/src/lagrangian/basic/Particle/Particle.H +++ b/src/lagrangian/basic/Particle/Particle.H @@ -151,18 +151,20 @@ protected: const label facei ) const; - //- Return the faces between position and cell centre - labelList findFaces + //- Find the faces between position and cell centre + void findFaces ( - const vector& position + const vector& position, + DynamicList<label>& faceList ) const; - //- Return the faces between position and cell centre - labelList findFaces + //- Find the faces between position and cell centre + void findFaces ( const vector& position, const label celli, - const scalar stepFraction + const scalar stepFraction, + DynamicList<label>& faceList ) const; diff --git a/src/lagrangian/basic/Particle/ParticleI.H b/src/lagrangian/basic/Particle/ParticleI.H index ce790d67c11258c29290dbaa14f31d8669a6a6e7..0eb891271730376021b36f0e743f7de08986e84b 100644 --- a/src/lagrangian/basic/Particle/ParticleI.H +++ b/src/lagrangian/basic/Particle/ParticleI.H @@ -236,7 +236,8 @@ inline scalar Particle<ParticleType>::lambda template<class ParticleType> inline bool Particle<ParticleType>::inCell() const { - labelList faces = findFaces(position_); + DynamicList<label>& faces = cloud_.labels_; + findFaces(position_, faces); return (!faces.size()); } @@ -250,7 +251,8 @@ inline bool Particle<ParticleType>::inCell const scalar stepFraction ) const { - labelList faces = findFaces(position, celli, stepFraction); + DynamicList<label>& faces = cloud_.labels_; + findFaces(position, celli, stepFraction, faces); return (!faces.size()); }