From 00337b89938a97c63c7a957e0bfe8d727d8afccb Mon Sep 17 00:00:00 2001 From: mattijs <m.janssens@opencfd.co.uk> Date: Wed, 7 May 2008 11:04:32 +0100 Subject: [PATCH] Allow access to particle data --- .../autoHexMesh/trackedParticle/Particle.H | 431 ------------------ src/lagrangian/basic/Particle/Particle.H | 4 +- 2 files changed, 1 insertion(+), 434 deletions(-) delete mode 100644 src/autoMesh/autoHexMesh/trackedParticle/Particle.H diff --git a/src/autoMesh/autoHexMesh/trackedParticle/Particle.H b/src/autoMesh/autoHexMesh/trackedParticle/Particle.H deleted file mode 100644 index 56f97b9ad94..00000000000 --- a/src/autoMesh/autoHexMesh/trackedParticle/Particle.H +++ /dev/null @@ -1,431 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Class - Particle - -Description - -\*---------------------------------------------------------------------------*/ - -#ifndef Particle_H -#define Particle_H - -#include "vector.H" -#include "IDLList.H" -#include "labelList.H" -#include "pointField.H" -#include "typeInfo.H" -#include "OFstream.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -template<class Particle> -class Cloud; - -class wedgePolyPatch; -class symmetryPolyPatch; -class cyclicPolyPatch; -class processorPolyPatch; -class wallPolyPatch; -class polyPatch; - -// Forward declaration of friend functions and operators - -template<class ParticleType> -class Particle; - -template<class ParticleType> -Ostream& operator<< -( - Ostream&, - const Particle<ParticleType>& -); - - -/*---------------------------------------------------------------------------*\ - Class Particle Declaration -\*---------------------------------------------------------------------------*/ - -template<class ParticleType> -class Particle -: - public IDLList<ParticleType>::link -{ - -protected: - - //- Reference to the particle cloud - const Cloud<ParticleType>& cloud_; - - //- Position of particle - vector position_; - - //- Index of the cell it is in - label celli_; - - //- Face index if the particle is on a face otherwise -1 - label facei_; - - //- Fraction of time-step completed - scalar stepFraction_; - - - // Private member functions - - //- Return the 'lambda' value for the position, p, on the face, - // where, p = from + lamda*(to - from) - // for non-static meshes - inline scalar lambda - ( - const vector& from, - const vector& to, - const label facei, - const scalar stepFraction - ); - - //- Return the 'lambda' value for the position, p, on the face, - // where, p = from + lamda*(to - from) - // for static meshes - inline scalar lambda - ( - const vector& from, - const vector& to, - const label facei - ); - - //- Return the faces between position and cell centre - labelList findFaces - ( - const vector& position - ); - - //- Return the faces between position and cell centre - labelList findFaces - ( - const vector& position, - const label celli, - const scalar stepFraction - ); - - - //- Overridable function to handle the particle hitting a wedgePatch - template<class TrackingData> - void hitWedgePatch - ( - const wedgePolyPatch&, - TrackingData& td - ); - - //- Overridable function to handle the particle hitting a symmetryPatch - template<class TrackingData> - void hitSymmetryPatch - ( - const symmetryPolyPatch&, - TrackingData& td - ); - - //- Overridable function to handle the particle hitting a cyclicPatch - template<class TrackingData> - void hitCyclicPatch - ( - const cyclicPolyPatch&, - TrackingData& td - ); - - //- Overridable function to handle the particle hitting a processorPatch - template<class TrackingData> - void hitProcessorPatch - ( - const processorPolyPatch&, - TrackingData& td - ); - - //- Overridable function to handle the particle hitting a wallPatch - template<class TrackingData> - void hitWallPatch - ( - const wallPolyPatch&, - TrackingData& td - ); - - //- Overridable function to handle the particle hitting a general patch - template<class TrackingData> - void hitPatch - ( - const polyPatch&, - TrackingData& td - ); - - //- Transform the position the particle - // according to the given transformation tensor - void transformPosition(const tensor& T); - - //- Transform the physical properties of the particle - // according to the given transformation tensor - void transformProperties(const tensor& T); - - //- Transform the physical properties of the particle - // according to the given separation vector - void transformProperties(const vector& separation); - - //- Convert global addressing to the processor patch - // local equivalents - template<class TrackingData> - void prepareForParallelTransfer(const label patchi, TrackingData& td); - - //- Convert processor patch addressing to the global equivalents - // and set the celli to the face-neighbour - template<class TrackingData> - void correctAfterParallelTransfer(const label patchi, TrackingData& td); - - -public: - - friend class Cloud<ParticleType>; - - - //- Runtime type information - TypeName("Particle"); - - - //- Class used to pass tracking data to the trackToFace function - class trackData - { - - // Private data - - //- Reference to the cloud containing this particle - Cloud<ParticleType>& cloud_; - - - public: - - bool switchProcessor; - bool keepParticle; - - - // Constructors - - inline trackData - ( - Cloud<ParticleType>& cloud - ); - - - // Member functions - - inline Cloud<ParticleType>& cloud(); - }; - - - // Constructors - - //- Construct from components - Particle - ( - const Cloud<ParticleType>&, - const vector& position, - const label celli - ); - - //- Construct from Istream - Particle - ( - const Cloud<ParticleType>&, - Istream&, - bool readFields = true - ); - - //- Factory class to read-construct particles used for parallel transfer - class iNew - { - - // Private data - - const Cloud<ParticleType>& cloud_; - - - public: - - iNew(const Cloud<ParticleType>& cloud) - : - cloud_(cloud) - {} - - autoPtr<ParticleType> operator()(Istream& is) const - { - return autoPtr<ParticleType>(new ParticleType(cloud_, is)); - } - }; - - - // Destructor - - virtual ~Particle() - {} - - - // Member Functions - - // Access - - //- Return true if particle is in cell - inline bool inCell(); - - //- Return true if position is in cell i - inline bool inCell - ( - const vector& position, - const label celli, - const scalar stepFraction - ); - - //- Return current particle position - inline const vector& position() const; - - //- Return current particle position - inline vector& position(); - - //- Return current cell particle is in - inline label cell() const; - - //- Return current face particle is on otherwise -1 - inline label face() const; - - //- Return reference to the particle cloud - inline const Cloud<ParticleType>& cloud() const; - - //- Return the impact model to be used, soft or hard (default). - inline bool softImpact() const; - - - // Check - - //- Is the particle on the boundary/(or outside the domain)? - inline bool onBoundary() const; - - //- Which patch is particle on - inline label patch(const label facei) const; - - //- Which face of this patch is this particle on - inline label patchFace(const label patchi, const label facei) const; - - //- The nearest distance to a wall that - // the particle can be in the n direction - inline scalar wallImpactDistance(const vector& n) const; - - //- Return the fraction of time-step completed - inline scalar& stepFraction(); - - //- Return the fraction of time-step completed - inline scalar stepFraction() const; - - - // Track - - //- Track particle to end of trajectory - // or until it hits the boundary. - // On entry 'stepFraction()' should be set to the fraction of the - // time-step at which the tracking starts and on exit it contains - // the fraction of the time-step completed. - // Returns the boundary face index if the track stops at the - // boundary, -1 otherwise. - template<class TrackingData> - label track - ( - const vector& endPosition, - TrackingData& td - ); - - //- Calls the templated track with dummy TrackingData - label track(const vector& endPosition); - - //- Track particle to a given position and returns 1.0 if the - // trajectory is completed without hitting a face otherwise - // stops at the face and returns the fraction of the trajectory - // completed. - // on entry 'stepFraction()' should be set to the fraction of the - // time-step at which the tracking starts. - template<class TrackingData> - scalar trackToFace - ( - const vector& endPosition, - TrackingData& td - ); - - //- Calls the templated trackToFace with dummy TrackingData - scalar trackToFace(const vector& endPosition); - - //- Return the index of the face to be used in the interpolation routine - inline label faceInterpolation() const; - - - // I-O - - //- Write the fields associated with the owner cloud - static void writeFields - ( - const Cloud<ParticleType>& c - ); - - - // Ostream Operator - - friend Ostream& operator<< <ParticleType> - ( - Ostream&, - const Particle<ParticleType>& - ); -}; - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#include "ParticleI.H" - -#define defineParticleTypeNameAndDebug(Type, DebugSwitch) \ - template<> \ - const Foam::word Particle<Type>::typeName(#Type); \ - template<> \ - int Particle<Type>::debug(Foam::debug::debugSwitch(#Type, DebugSwitch)); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#ifdef NoRepository -# include "Particle.C" -#endif - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -#endif - -// ************************************************************************* // diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H index 2dc821710f0..ccdf0402187 100644 --- a/src/lagrangian/basic/Particle/Particle.H +++ b/src/lagrangian/basic/Particle/Particle.H @@ -111,7 +111,7 @@ public: }; -private: +protected: // Private data @@ -169,8 +169,6 @@ private: ) const; -protected: - // Patch interactions //- Overridable function to handle the particle hitting a wedgePatch -- GitLab