58 class cyclicPolyPatch;
59 class cyclicAMIPolyPatch;
60 class cyclicACMIPolyPatch;
61 class cyclicRepeatAMIPolyPatch;
62 class processorPolyPatch;
63 class symmetryPlanePolyPatch;
64 class symmetryPolyPatch;
76 bool operator==(
const particle&,
const particle&);
78 bool operator!=(
const particle&,
const particle&);
91 static const std::size_t sizeofPosition_;
94 static const std::size_t sizeofFields_;
98 static const label maxNBehind_;
117 template <
class TrackCloudType>
149 scalar stepFraction_;
177 inline void stationaryTetGeometry
199 void stationaryTetReverseTransform
209 inline void movingTetGeometry
211 const scalar endStepFraction,
224 const scalar endStepFraction
233 void movingTetReverseTransform
235 const scalar endStepFraction,
260 void changeTet(
const label tetTriI);
263 void changeFace(
const label tetTriI);
273 void changeToMasterPatch();
283 const bool boundaryFail,
284 const string boundaryMsg
294 template<
class TrackCloudType>
298 template<
class TrackCloudType>
303 template<
class TrackCloudType>
307 template<
class TrackCloudType>
311 template<
class TrackCloudType>
315 template<
class TrackCloudType>
318 const vector& displacement,
319 const scalar fraction,
320 TrackCloudType&
cloud,
326 template<
class TrackCloudType>
329 const vector& displacement,
330 const scalar fraction,
331 TrackCloudType& cloud,
337 template<
class TrackCloudType>
340 const vector& displacement,
341 const scalar fraction,
342 TrackCloudType& cloud,
347 template<
class TrackCloudType>
351 template<
class TrackCloudType>
365 "(coordinatesa coordinatesb coordinatesc coordinatesd) " 366 "celli tetFacei tetPti facei stepFraction " 367 "behind nBehind origProc origId" 382 const label tetFacei,
504 inline bool onFace()
const;
534 const vector& displacement,
535 const scalar fraction
541 const vector& displacement,
542 const scalar fraction
548 const vector& displacement,
549 const scalar fraction
557 const vector& displacement,
558 const scalar fraction,
565 const vector& displacement,
566 const scalar fraction,
573 const vector& displacement,
574 const scalar fraction,
581 template<
class TrackCloudType>
584 const vector& displacement,
585 const scalar fraction,
586 TrackCloudType&
cloud,
592 template<
class TrackCloudType>
595 const vector& displacement,
596 const scalar fraction,
597 TrackCloudType& cloud,
602 template<
class TrackCloudType>
605 const vector& displacement,
606 const scalar fraction,
607 TrackCloudType& cloud,
661 const label procCell,
662 const label procTetFace
675 template<
class TrackCloudType>
679 template<
class TrackCloudType>
Template class for intrusive linked lists.
void hitFace(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Hit the current face. If the current face is internal than this.
label origProc() const
Return the originating processor ID.
void correctAfterParallelTransfer(const label patchi, trackingData &td)
Convert processor patch addressing to the global equivalents.
const polyMesh & mesh() const
Return the mesh database.
trackingData(const TrackCloudType &cloud)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
vector deviationFromMeshCentre() const
Get the displacement from the mesh centre. Used to correct the.
virtual autoPtr< particle > clone() const
Construct a clone.
A 1D vector of objects of type <T> with a fixed size <Size>.
bool onBoundaryFace() const
Is the particle on a boundary face?
friend bool operator!=(const particle &pA, const particle &pB)
Macros for adding to particle property lists.
label procTetPt(const polyMesh &procMesh, const label procCell, const label procTetFace) const
Return the tet point appropriate for decomposition or reconstruction.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
scalar trackToFace(const vector &displacement, const scalar fraction)
As particle::track, but stops when a face is hit.
scalar trackToTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToFace, but stops when a tet triangle is hit. On.
scalar trackToAndHitFace(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Convenience function. Combines trackToFace and hitFace.
void hitWallPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wallPatch.
void hitSymmetryPlanePatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a.
Pair< scalar > stepFractionSpan() const
Return the step fraction change within the overall time-step.
scalar trackToCell(const vector &displacement, const scalar fraction)
As particle::track, but stops when a new cell is reached.
virtual void transformProperties(const transformer &)
Transform the physical properties of the particle.
void hitSymmetryPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a symmetryPatch.
const dimensionedScalar c
Speed of light in a vacuum.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
label tetPt() const
Return current tet face particle is in.
friend Ostream & operator<<(Ostream &, const particle &)
vector normal() const
Return the normal of the tri on tetFacei_ for the.
void patchData(vector &normal, vector &displacement) const
Get the normal and displacement of the current patch location.
label cell() const
Return current cell particle is in.
void hitFaceNoChangeToMasterPatch(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
As above, but does not change the master patch. Needed in order for.
void prepareForInteractionListReferral(const transformer &transform)
Break the topology and store the particle position so that the.
An ordered pair of two objects of type <T> with first() and second() elements.
TypeName("particle")
Runtime type information.
label face() const
Return current face particle is on otherwise -1.
void reset()
Set step fraction and behind data to zero in preparation for a new.
Intrusive doubly-linked list.
void hitProcessorPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a processorPatch.
tmp< fvMatrix< Type > > operator==(const fvMatrix< Type > &, const fvMatrix< Type > &)
bool switchProcessor
Flag to switch processor.
particle(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from components.
A cloud is a collection of lagrangian particles.
void hitCyclicACMIPatch(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a.
void correctAfterInteractionListReferral(const label celli)
Correct the topology after referral. The particle may still be.
void prepareForParallelTransfer()
Convert global addressing to the processor patch local equivalents.
void hitCyclicPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a cyclicPatch.
Storage and named access for the indices of a tet which is part of the decomposition of a cell...
barycentricTensor currentTetTransform() const
Return the current tet transformation tensor.
label origId() const
Return the particle ID on the originating processor.
void autoMap(const vector &position, const mapPolyMesh &mapper)
Map after a topology change.
bool onFace() const
Is the particle on a face?
label tetFace() const
Return current tet face particle is in.
label getNewParticleID() const
Get unique particle creation id.
Factory class to read-construct particles used for.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
void hitWedgePatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wedgePatch.
scalar stepFraction() const
Return the fraction of time-step completed.
tetIndices currentTetIndices() const
Return the indices of the current tet that the.
scalar trackToMovingTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for moving meshes.
bool keepParticle
Flag to indicate whether to keep particle (false = delete)
static void readFields(TrackCloudType &c)
Read the fields associated with the owner cloud.
void writePosition(Ostream &) const
Write the particle position and cell.
static void writeFields(const TrackCloudType &c)
Write the fields associated with the owner cloud.
Templated 4x3 tensor derived from VectorSpace. Has 12 components. Can represent a barycentric transfo...
friend bool operator==(const particle &pA, const particle &pB)
bool hitPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a patch.
const barycentric & coordinates() const
Return current particle coordinates.
static label particleCount_
Cumulative particle counter - used to provide unique ID.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
bool onInternalFace() const
Is the particle on an internal face?
void hitCyclicAMIPatch(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a cyclicAMIPatch.
Mesh consisting of general polyhedral cells.
scalar trackToStationaryTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for stationary meshes.
#define DefinePropertyList(str)
virtual ~particle()
Destructor.
scalar track(const vector &displacement, const scalar fraction)
Track along the displacement for a given fraction of the overall.
bool operator!=(const particle &, const particle &)
vector position() const
Return current particle position.
label patch() const
Return the index of patch that the particle is on.
void hitCyclicRepeatAMIPatch(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting an.
dimensionSet transform(const dimensionSet &)
scalar currentTimeFraction() const
Return the current fraction within the timestep. This differs.