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_;
127 template <
class TrackCloudType>
163 scalar stepFraction_;
166 scalar stepFractionBehind_;
185 label nTracksBehind_;
201 inline void stationaryTetGeometry
227 void stationaryTetReverseTransform
238 inline void movingTetGeometry
241 const scalar endStepFraction,
255 const scalar endStepFraction
264 void movingTetReverseTransform
267 const scalar endStepFraction,
298 void changeCell(
const polyMesh& mesh);
309 const bool boundaryFail,
310 const string boundaryMsg
324 "(coordinatesa coordinatesb coordinatesc coordinatesd) "
325 "celli tetFacei tetPti facei stepFraction "
326 "behind nBehind origProc origId"
341 const label tetFacei,
440 inline bool onFace()
const;
471 const vector& displacement,
472 const scalar fraction
479 const vector& displacement,
480 const scalar fraction
487 const vector& displacement,
488 const scalar fraction
497 const vector& displacement,
498 const scalar fraction,
506 const vector& displacement,
507 const scalar fraction,
515 const vector& displacement,
516 const scalar fraction,
523 template<
class TrackCloudType>
526 const vector& displacement,
527 const scalar fraction,
528 TrackCloudType&
cloud,
533 template<
class TrackCloudType>
536 const vector& displacement,
537 const scalar fraction,
538 TrackCloudType&
cloud,
570 template<
class TrackCloudType>
575 template<
class TrackCloudType>
594 const label sendToPatch,
595 const label sendToPatchFace
604 const label sendToPatch
612 template<
class TrackCloudType>
616 template<
class TrackCloudType>
621 template<
class TrackCloudType>
626 template<
class TrackCloudType>
631 template<
class TrackCloudType>
636 template<
class TrackCloudType>
639 const vector& displacement,
640 const scalar fraction,
642 TrackCloudType&
cloud,
648 template<
class TrackCloudType>
652 template<
class TrackCloudType>
657 template<
class TrackCloudType>
689 const label procCell,
690 const label procTetFace
708 template<
class TrackCloudType>
712 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.
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.
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.
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 prepareForNonConformalCyclicTransfer(const polyMesh &mesh, const label sendToPatch, const label sendToPatchFace)
Make changes prior to a transfer across a non conformal cyclic.
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.
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.
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.
void correctAfterNonConformalCyclicTransfer(const polyMesh &mesh, const label sendToPatch)
Make changes following a transfer across a non conformal cyclic.
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.
void map(const polyMesh &mesh, const point &position, const label celli)
Map after a mesh change.
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.
label getNewParticleID() const
Get unique particle creation id.
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.
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)