56 class cyclicPolyPatch;
57 class processorPolyPatch;
58 class symmetryPlanePolyPatch;
59 class symmetryPolyPatch;
71 bool operator==(
const particle&,
const particle&);
73 bool operator!=(
const particle&,
const particle&);
86 static const std::size_t sizeofPosition_;
89 static const std::size_t sizeofFields_;
94 template<
class CloudType>
189 const label tetPlaneBasePtI,
191 const label tetFacei,
203 const label tetPlaneBasePtI,
205 const label tetFacei,
226 template<
class CloudType>
240 template<
class TrackData>
247 template<
class TrackData>
253 const scalar trackFraction,
258 template<
class TrackData>
263 template<
class TrackData>
272 template<
class TrackData>
276 template<
class TrackData>
280 template<
class TrackData>
290 template<
class TrackData>
294 template<
class TrackData>
304 template<
class TrackData>
318 "(Px Py Pz) celli facei stepFraction " 319 "tetFacei tetPtI origProc origId" 345 const label tetFacei,
356 bool doCellFacePt =
true 516 template<
class TrackData>
525 template<
class TrackData>
552 template<
class TrackData>
557 template<
class TrackData>
564 template<
class CloudType>
568 template<
class CloudType>
Symmetry patch for non-planar or multi-plane patches.
void hitSymmetryPlanePatch(const symmetryPlanePolyPatch &, TrackData &td)
Overridable function to handle the particle hitting a.
bool onBoundary() const
Is the particle on the boundary/(or outside the domain)?
label & tetPt()
Return current tet face particle is in.
void findTris(const vector &position, DynamicList< label > &faceList, const tetPointRef &tet, const FixedList< vector, 4 > &tetAreas, const FixedList< label, 4 > &tetPlaneBasePtIs, const scalar tol) const
Find the tet tri faces between position and tet centre.
scalar currentTime() const
Return the particle current time.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
static const scalar trackingCorrectionTol
Fraction of distance to tet centre to move a particle to.
scalar movingTetLambda(const vector &from, const vector &to, const label triI, const vector &tetArea, const label tetPlaneBasePtI, const label celli, const label tetFacei, const label tetPtI, const scalar tol) const
Find the lambda value for a moving tri face.
void prepareForParallelTransfer(const label patchi, TrackData &td)
Convert global addressing to the processor patch.
label getNewParticleID() const
Get unique particle creation id.
const double e
Elementary charge.
A 1D vector of objects of type <T> with a fixed size <Size>.
friend bool operator!=(const particle &pA, const particle &pB)
Macros for adding to particle property lists.
void initCellFacePt()
Check the stored cell value (setting if necessary) and.
scalar tetLambda(const vector &from, const vector &to, const label triI, const vector &tetArea, const label tetPlaneBasePtI, const label celli, const label tetFacei, const label tetPtI, const scalar tol) const
Find the lambda value for the line to-from across the.
void hitWallPatch(const wallPolyPatch &, TrackData &td, const tetIndices &tetIs)
Overridable function to handle the particle hitting a wallPatch.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
label tetPtI_
Index of the point on the face that defines the decomposed.
void crossEdgeConnectedFace(const label &celli, label &tetFacei, label &tetPtI, const edge &e)
Cross the from the given face across the given edge of the.
tetIndices currentTetIndices() const
Return the indices of the current tet that the.
void hitWallFaces(const CloudType &td, const vector &from, const vector &to, scalar &lambdaMin, tetIndices &closestTetIs)
label faceInterpolation() const
Return the index of the face to be used in the interpolation.
label track(const vector &endPosition, TrackData &td)
Track particle to end of trajectory.
static const scalar lambdaDistanceToleranceCoeff
Fraction of the cell volume to use in determining tolerance values.
particle(const polyMesh &mesh, const vector &position, const label celli, const label tetFacei, const label tetPtI)
Construct from components.
static void readFields(CloudType &c)
Read the fields associated with the owner cloud.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
vector position_
Position of particle.
bool hitPatch(const polyPatch &, TrackData &td, const label patchi, const scalar trackFraction, const tetIndices &tetIs)
Overridable function to handle the particle hitting a.
void hitCyclicAMIPatch(const cyclicAMIPolyPatch &, TrackData &td, const vector &direction)
Overridable function to handle the particle hitting a cyclicAMIPatch.
label origId() const
Return const access to the particle id on originating processor.
label origId_
Local particle id on originating processor.
bool internalFace(const label facei) const
Is this global face an internal face?
Neighbour processor patch.
friend Ostream & operator<<(Ostream &, const particle &)
tetPointRef currentTet() const
Return the geometry of the current tet that the.
scalar & stepFraction()
Return the fraction of time-step completed.
CloudType & cloud()
Return a reference to the cloud.
label origProc_
Originating processor id.
const vector & position() const
Return current particle position.
void hitProcessorPatch(const processorPolyPatch &, TrackData &td)
Overridable function to handle the particle hitting a.
label patch(const label facei) const
Which patch is particle on.
TypeName("particle")
Runtime type information.
static void writeFields(const CloudType &c)
Write the fields associated with the owner cloud.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
tmp< fvMatrix< Type > > operator==(const fvMatrix< Type > &, const fvMatrix< Type > &)
virtual autoPtr< particle > clone() const
Construct a clone.
A cloud is a collection of lagrangian particles.
bool softImpact() const
Return the impact model to be used, soft or hard (default).
const polyMesh & mesh_
Reference to the polyMesh database.
Wedge front and back plane patch.
vector normal() const
Return the normal of the tri on tetFacei_ for the.
Storage and named access for the indices of a tet which is part of the decomposition of a cell...
Cyclic patch for Arbitrary Mesh Interface (AMI)
bool keepParticle
Flag to indicate whether to keep particle (false = delete)
void hitWedgePatch(const wedgePolyPatch &, TrackData &td)
Overridable function to handle the particle hitting a wedgePatch.
scalar stepFraction_
Fraction of time-step completed.
static const scalar minStepFractionTol
Minimum stepFraction tolerance.
void hitFace(TrackData &td)
Overridable function to handle the particle hitting a face.
label celli_
Index of the cell it is in.
label tetFacei_
Index of the face that owns the decomposed tet that the.
label & face()
Return current face particle is on otherwise -1.
label origProc() const
Return const access to the originating processor id.
void tetNeighbour(label triI)
Modify the tet owner data by crossing triI.
Factory class to read-construct particles used for.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Intrusive doubly-linked list.
scalar trackToFace(const vector &endPosition, TrackData &td)
Track particle to a given position and returns 1.0 if the.
bool boundaryFace(const label facei) const
Is this global face a boundary face?
void writePosition(Ostream &) const
Write the particle position and cell.
const dimensionedScalar c
Speed of light in a vacuum.
label & cell()
Return current cell particle is in.
friend bool operator==(const particle &pA, const particle &pB)
static label particleCount_
Cumulative particle counter - used to provode unique ID.
const polyMesh & mesh() const
Return the mesh database.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Mesh consisting of general polyhedral cells.
void correctAfterParallelTransfer(const label patchi, TrackData &td)
Convert processor patch addressing to the global equivalents.
virtual scalar wallImpactDistance(const vector &n) const
The nearest distance to a wall that.
label & tetFace()
Return current tet face particle is in.
#define DefinePropertyList(str)
bool switchProcessor
Flag to switch processor.
A patch is a list of labels that address the faces in the global face list.
label patchFace(const label patchi, const label facei) const
Which face of this patch is this particle on.
virtual ~particle()
Destructor.
TrackingData(CloudType &cloud)
bool operator!=(const particle &, const particle &)
Templated base class for dsmc cloud.
vector oldNormal() const
Return the normal of the tri on tetFacei_ for the.
void hitCyclicPatch(const cyclicPolyPatch &, TrackData &td)
Overridable function to handle the particle hitting a cyclicPatch.
void hitSymmetryPatch(const symmetryPolyPatch &, TrackData &td)
Overridable function to handle the particle hitting a.
label facei_
Face index if the particle is on a face otherwise -1.