58 class cyclicPolyPatch;
59 class processorPolyPatch;
60 class symmetryPlanePolyPatch;
61 class symmetryPolyPatch;
73 bool operator==(
const particle&,
const particle&);
75 bool operator!=(
const particle&,
const particle&);
88 static const std::size_t sizeofPosition_;
91 static const std::size_t sizeofFields_;
95 static const label maxNTracksBehind_;
134 template <
class TrackCloudType>
146 mesh.boundaryMesh().size()
147 -
mesh.globalData().processorPatches().size(),
177 scalar stepFraction_;
180 scalar stepFractionBehind_;
199 label nTracksBehind_;
215 inline void stationaryTetGeometry
241 void stationaryTetReverseTransform
252 inline void movingTetGeometry
255 const scalar endStepFraction,
269 const scalar endStepFraction
278 void movingTetReverseTransform
281 const scalar endStepFraction,
312 void changeCell(
const polyMesh& mesh);
325 "(coordinatesa coordinatesb coordinatesc coordinatesd) "
326 "celli tetFacei tetPti facei stepFraction "
327 "behind nBehind origProc origId"
342 const label tetFacei,
354 label& nLocateBoundaryHits
442 inline bool onFace()
const;
481 const vector& displacement,
482 const scalar fraction
489 const vector& displacement,
490 const scalar fraction
497 const vector& displacement,
498 const scalar fraction
507 const vector& displacement,
508 const scalar fraction,
516 const vector& displacement,
517 const scalar fraction,
525 const vector& displacement,
526 const scalar fraction,
533 template<
class TrackCloudType>
536 const vector& displacement,
537 const scalar fraction,
538 TrackCloudType&
cloud,
543 template<
class TrackCloudType>
546 const vector& displacement,
547 const scalar fraction,
548 TrackCloudType&
cloud,
580 template<
class TrackCloudType>
585 template<
class TrackCloudType>
604 const label sendToPatch,
605 const label sendToPatchFace,
606 const vector& sendToPosition
615 const label sendToPatch,
624 template<
class TrackCloudType>
628 template<
class TrackCloudType>
633 template<
class TrackCloudType>
638 template<
class TrackCloudType>
643 template<
class TrackCloudType>
648 template<
class TrackCloudType>
651 const vector& displacement,
652 const scalar fraction,
654 TrackCloudType&
cloud,
660 template<
class TrackCloudType>
664 template<
class TrackCloudType>
669 template<
class TrackCloudType>
701 const label procCell,
702 const label procTetFace
709 template<
class TrackCloudType>
713 template<
class TrackCloudType>
Intrusive doubly-linked list.
Templated 4x3 tensor derived from VectorSpace. Has 12 components. Can represent a barycentric transfo...
A 1D vector of objects of type <T> with a fixed size <Size>.
Template class for intrusive linked lists.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
An ordered pair of two objects of type <T> with first() and second() elements.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
A cloud is a collection of lagrangian particles.
labelList patchNLocateBoundaryHits
Number of boundary hits that occurred during locate executions.
label sendToProc
Processor to send the particle to. -1 indicates that this.
trackingData(const TrackCloudType &cloud)
label sendFromPatch
Patch from which to send the particle.
vector sendToPosition
Position to which to send.
bool keepParticle
Flag to indicate whether to keep particle (false = delete)
label sendToPatch
Patch to which to send the particle.
const polyMesh & mesh
Reference to the mesh.
label sendToPatchFace
Patch face to which to send the particle.
label face() const
Return current face particle is on otherwise -1.
void prepareForParallelTransfer(TrackCloudType &, trackingData &)
Make changes prior to a parallel transfer. Runs either.
vector normal(const polyMesh &mesh) const
Return the normal of the tri on tetFacei_ for the.
label tetPt() const
Return current tet face particle is in.
label origProc() const
Return the originating processor ID.
const barycentric & coordinates() const
Return current particle coordinates.
void prepareForNonConformalCyclicTransfer(const polyMesh &mesh, const label sendToPatch, const label sendToPatchFace, const vector &sendToPosition)
Make changes prior to a transfer across a non conformal cyclic.
virtual ~particle()
Destructor.
scalar trackToCell(const polyMesh &mesh, const vector &displacement, const scalar fraction)
As particle::track, but stops when a new cell is reached.
label cell() const
Return current cell particle is in.
void hitBasicPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a basic.
static void readFields(TrackCloudType &c)
Read the fields associated with the owner cloud.
void prepareForProcessorTransfer(trackingData &td)
Make changes prior to a transfer across a processor boundary.
void reset(const scalar stepFraction)
Set the step fraction and clear the behind data in preparation.
label patch(const polyMesh &mesh) const
Return the index of patch that the particle is on.
void hitCyclicPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a.
void hitProcessorPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a.
particle(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti, const label facei)
Construct from components.
void correctAfterInteractionListReferral(const polyMesh &mesh, const label celli)
Correct the topology after referral. Locates the particle.
scalar trackToAndHitFace(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Convenience function. Combines trackToFace and hitFace.
void correctAfterNonConformalCyclicTransfer(const polyMesh &mesh, const label sendToPatch, labelList &patchNLocateBoundaryHits)
Make changes following a transfer across a non conformal cyclic.
friend bool operator!=(const particle &pA, const particle &pB)
scalar track(const polyMesh &mesh, const vector &displacement, const scalar fraction)
Track along the displacement for a given fraction of the overall.
scalar trackToFace(const polyMesh &mesh, const vector &displacement, const scalar fraction)
As particle::track, but stops when a face is hit.
bool hitPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a patch.
scalar stepFraction() const
Return the fraction of time-step completed.
void hitFace(const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Hit the current face. If the current face is internal than this.
friend bool operator==(const particle &pA, const particle &pB)
void prepareForInteractionListReferral(const polyMesh &mesh, const transformer &transform)
Break the topology and store the cartesian position so that the.
bool onFace() const
Is the particle on a face?
scalar trackToTri(const polyMesh &mesh, const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToFace, but stops when a tet triangle is hit.
void hitSymmetryPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a.
static autoPtr< particle > New(Istream &is)
Construct from Istream and return.
friend Ostream & operator<<(Ostream &, const particle &)
virtual autoPtr< particle > clone() const
Construct and return a clone.
void patchData(const polyMesh &mesh, vector &normal, vector &displacement) const
Get the normal and displacement of the current patch location.
void hitSymmetryPlanePatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a.
bool locate(const polyMesh &mesh, const vector &position, label celli)
Locate the particle at the given position.
scalar trackToMovingTri(const polyMesh &mesh, const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for moving meshes.
vector deviationFromMeshCentre(const polyMesh &mesh) const
Get the displacement from the mesh centre. Used to correct the.
static label particleCount_
Cumulative particle counter - used to provide unique ID.
void correctAfterProcessorTransfer(trackingData &td)
Make changes following a transfer across a processor boundary.
void writePosition(Ostream &) const
Write the particle position and cell.
TypeName("particle")
Runtime type information.
bool onBoundaryFace(const polyMesh &mesh) const
Is the particle on a boundary face?
void hitWedgePatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wedgePatch.
tetIndices currentTetIndices(const polyMesh &mesh) const
Return the indices of the current tet that the.
label procTetPt(const polyMesh &mesh, const polyMesh &procMesh, const label procCell, const label procTetFace) const
Return the tet point appropriate for decomposition or.
bool onInternalFace(const polyMesh &mesh) const
Is the particle on an internal face?
vector position(const polyMesh &mesh) const
Return current particle position.
void correctAfterParallelTransfer(TrackCloudType &, trackingData &)
Make changes following a parallel transfer. Runs either.
scalar trackToStationaryTri(const polyMesh &mesh, const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for stationary meshes.
label getNewParticleIndex() const
Get unique particle creation id.
bool hitNonConformalCyclicPatch(const vector &displacement, const scalar fraction, const label patchi, TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting an.
virtual void transformProperties(const transformer &)
Transform the physical properties of the particle.
label origId() const
Return the particle ID on the originating processor.
void hitWallPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wallPatch.
static void writeFields(const TrackCloudType &c)
Write the fields associated with the owner cloud.
barycentricTensor currentTetTransform(const polyMesh &mesh) const
Return the current tet transformation tensor.
label tetFace() const
Return current tet face particle is in.
Mesh consisting of general polyhedral cells.
Storage and named access for the indices of a tet which is part of the decomposition of a cell.
const dimensionedScalar c
Speed of light in a vacuum.
bool operator!=(const particle &, const particle &)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
tmp< fvMatrix< Type > > operator==(const fvMatrix< Type > &, const fvMatrix< Type > &)
dimensionSet transform(const dimensionSet &)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Macros for adding to particle property lists.
#define DefinePropertyList(str)