61class cyclicAMIPolyPatch;
62class cyclicACMIPolyPatch;
63class processorPolyPatch;
64class symmetryPlanePolyPatch;
65class symmetryPolyPatch;
70bool operator==(
const particle&,
const particle&);
71bool operator!=(
const particle&,
const particle&);
84 static const std::size_t sizeofPosition;
87 static const std::size_t sizeofFields;
91 static const label maxNBehind_;
110 template <
class TrackCloudType>
156 scalar stepFraction_;
182 inline void stationaryTetGeometry
204 void stationaryTetReverseTransform
214 inline void movingTetGeometry
216 const scalar endStepFraction,
229 const scalar endStepFraction
238 void movingTetReverseTransform
240 const scalar endStepFraction,
265 void changeTet(
const label tetTriI);
268 void changeFace(
const label tetTriI);
278 void changeToMasterPatch();
289 const bool boundaryFail,
290 const string& boundaryMsg
305 const bool newFormat,
311 template<
class TrackCloudType>
315 template<
class TrackCloudType>
320 template<
class TrackCloudType>
324 template<
class TrackCloudType>
328 template<
class TrackCloudType>
332 template<
class TrackCloudType>
337 template<
class TrackCloudType>
341 template<
class TrackCloudType>
345 template<
class TrackCloudType>
352 template<
class TrackCloudType>
356 TrackCloudType&
cloud,
371 "(coordinatesa coordinatesb coordinatesc coordinatesd) "
372 "celli tetFacei tetPti facei stepFraction origProc origId"
395 const label tetFacei,
405 const label celli = -1
414 const label tetFacei,
416 const bool doLocate =
true
426 const bool newFormat =
true,
427 const bool doLocate =
true
553 inline label
patch() const;
573 const
vector& displacement,
574 const scalar fraction
580 const
vector& displacement,
581 const scalar fraction
589 const
vector& displacement,
590 const scalar fraction,
597 const
vector& displacement,
598 const scalar fraction,
605 const
vector& displacement,
606 const scalar fraction,
613 template<class TrackCloudType>
617 TrackCloudType&
cloud,
622 template<class TrackCloudType>
626 const scalar fraction,
627 TrackCloudType&
cloud,
685 const label procCell,
686 const label procTetFace
731 const
Field<Type>& values,
738 template<class TrackCloudType>
742 template<class TrackCloudType>
786#include "particleI.H"
Intrusive doubly-linked list.
Templated 4x3 tensor derived from VectorSpace. Has 12 components. Can represent a barycentric transfo...
Templated base class for dsmc cloud.
Generic templated field type.
A 1D vector of objects of type <T> with a fixed length <N>.
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.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A cell is defined as a list of faces with extra functionality.
A cloud is a registry collection of lagrangian particles.
A face is a list of labels corresponding to mesh vertices.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Registry of regIOobjects.
Factory class to read-construct particles (for parallel transfer)
iNew(const polyMesh &mesh)
autoPtr< particle > operator()(Istream &is) const
bool switchProcessor
Flag to switch processor.
trackingData(const TrackCloudType &cloud)
bool keepParticle
Flag to indicate whether to keep particle (false = delete)
void correctAfterInteractionListReferral(const label celli)
Correct the topology after referral. The particle may still be.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
label procTetPt(const polyMesh &procMesh, const label procCell, const label procTetFace) const
Return the tet point appropriate for decomposition or reconstruction.
tetIndices currentTetIndices() const noexcept
Return indices of the current tet that the particle occupies.
vector deviationFromMeshCentre() const
Get the displacement from the mesh centre. Used to correct the.
static void writeProperty(Ostream &os, const word &name, const Type &value, const bool nameOnly, const word &delim, const wordRes &filters=wordRes::null())
barycentricTensor currentTetTransform() const
Return the current tet transformation tensor.
scalar trackToStationaryTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for stationary meshes.
void correctAfterParallelTransfer(const label patchi, trackingData &td)
Convert processor patch addressing to the global equivalents.
scalar trackToFace(const vector &displacement, const scalar fraction)
As particle::track, but also stops on internal faces.
void hitCyclicACMIPatch(TrackCloudType &, trackingData &, const vector &)
Overridable function to handle the particle hitting a.
vector position() const
Return current particle position.
label tetPt() const noexcept
Return current tet face particle is in.
void hitFace(const vector &direction, TrackCloudType &cloud, trackingData &td)
Hit the current face. If the current face is internal than this.
static void readFields(TrackCloudType &c)
Read the fields associated with the owner cloud.
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
void prepareForInteractionListReferral(const vectorTensorTransform &transform)
Break the topology and store the particle position so that the.
void hitBoundaryFace(const vector &direction, TrackCloudType &cloud, trackingData &td)
Dispatch function for boundary face interaction. Calls one of.
bool onFace() const noexcept
Is the particle on a face?
const polyMesh & mesh() const noexcept
Return the mesh database.
void hitCyclicPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a cyclicPatch.
void hitProcessorPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a processorPatch.
label tetFace() const noexcept
Return current tet face particle is in.
void autoMap(const vector &position, const mapPolyMesh &mapper)
Map after a topology change.
const barycentric & coordinates() const noexcept
Return current particle coordinates.
scalar trackToMovingTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToTri, but for moving meshes.
virtual autoPtr< particle > clone() const
Construct a clone.
bool onBoundaryFace() const noexcept
Is the particle on a boundary face?
label patch() const
Return the index of patch that the particle is on.
scalar stepFraction() const noexcept
Return the fraction of time-step completed.
bool hitPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a patch.
void readData(Istream &is, point &position, const bool readFields, const bool newFormat, const bool doLocate)
Read particle from stream. Optionally (for old format) return.
void patchData(vector &n, vector &U) const
Get the normal and velocity of the current patch location.
void prepareForParallelTransfer()
Convert global addressing to the processor patch local equivalents.
void hitCyclicAMIPatch(TrackCloudType &, trackingData &, const vector &)
Overridable function to handle the particle hitting a cyclicAMIPatch.
void hitSymmetryPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a symmetryPatch.
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
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.
static label particleCount_
Cumulative particle counter - used to provide unique ID.
static bool writeLagrangianPositions
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly) const
Write individual particle properties to stream.
scalar track(const vector &displacement, const scalar fraction)
Track along the displacement for a given fraction of the overall.
TypeName("particle")
Runtime type information.
bool onInternalFace() const noexcept
Is the particle on an internal face?
void hitWedgePatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wedgePatch.
label getNewParticleID() const
Get unique particle creation id.
void trackToAndHitFace(const vector &direction, const scalar fraction, TrackCloudType &cloud, trackingData &td)
Convenience function. Combines trackToFace and hitFace.
label origId() const noexcept
Return the particle ID on the originating processor.
void reset()
Reset particle data.
vector normal() const
The (unit) normal of the tri on tetFacei_ for the current tet.
virtual void writePosition(Ostream &os) const
Write the particle position and cell id.
void relocate(const point &position, const label celli=-1)
Set the addressing based on the provided position.
scalar currentTimeFraction() const
Return the current fraction within the timestep. This differs.
void hitWallPatch(TrackCloudType &, trackingData &)
Overridable function to handle the particle hitting a wallPatch.
scalar trackToTri(const vector &displacement, const scalar fraction, label &tetTriI)
As particle::trackToFace, but also stops on tet triangles. On.
static void writePropertyName(Ostream &os, const word &name, const word &delim)
Write the name representation to stream.
static bool writeLagrangianCoordinates
static void writeFields(const TrackCloudType &c)
Write the fields associated with the owner cloud.
label origProc() const noexcept
Return the originating processor ID.
void writeCoordinates(Ostream &os) const
Write the particle barycentric coordinates and cell info.
virtual ~particle()=default
Destructor.
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.
A List of wordRe with additional matching capabilities.
A class for handling words, derived from Foam::string.
OBJstream os(runTime.globalPath()/outputName)
bool operator!=(const eddy &a, const eddy &b)
dimensionSet transform(const dimensionSet &ds)
Return the argument; transformations do not change the dimensions.
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
tmp< faMatrix< Type > > operator==(const faMatrix< Type > &, const faMatrix< Type > &)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
Macros for adding to particle property lists.
#define DefinePropertyList(str)
Define a static 'propertyList' for particle properties.
Old particle positions content for OpenFOAM-1706 and earlier.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.