40#ifndef Foam_wallBoundedParticle_H
41#define Foam_wallBoundedParticle_H
79 template<
class TrackCloudType>
82 const TrackCloudType&
cloud,
160 const label tetFacei,
172 bool newFormat =
true
196 autoPtr<wallBoundedParticle> operator()
201 return autoPtr<wallBoundedParticle>
223 template<
class TrackCloudType>
226 TrackCloudType&
cloud,
235 template<
class TrackCloudType>
238 TrackCloudType&
cloud,
240 const scalar trackFraction
245 template<
class TrackCloudType>
248 TrackCloudType&
cloud,
253 template<
class TrackCloudType>
256 TrackCloudType&
cloud,
274 template<
class CloudType>
278 template<
class CloudType>
A helper class for outputting values to Ostream.
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,...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
A cloud is a registry collection of lagrangian particles.
An edge is a list of two vertex labels. This can correspond to a directed graph edge or an edge on a ...
vector position() const
Return current particle position.
static autoPtr< particle > Clone(const Derived &p)
Clone a particle.
const polyMesh & mesh() const noexcept
Return the mesh database.
particle(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from components.
Mesh consisting of general polyhedral cells.
iNew(const polyMesh &mesh)
Class used to pass tracking data to the trackToFace function.
trackingData(const TrackCloudType &cloud, const bitSet &isWallPatch)
const bitSet & isWallPatch_
Particle class that tracks on triangles of boundary faces. Use trackToEdge similar to trackToFace on ...
label meshEdgeStart_
Particle is on mesh edge:
bool isTriAlongTrack(const vector &n, const point &endPosition) const
Is current triangle in the track direction.
wallBoundedParticle(const polyMesh &c, const point &position, const label celli, const label tetFacei, const label tetPti, const label meshEdgeStart, const label diagEdge)
Construct from components.
virtual autoPtr< particle > clone() const
Return a clone.
InfoProxy< wallBoundedParticle > info() const noexcept
Return info proxy, used to print particle information to a stream.
label meshEdgeStart() const noexcept
The mesh edge label or -1.
void patchInteraction(TrackCloudType &cloud, trackingData &td, const scalar trackFraction)
Do all patch interaction.
edge currentEdge() const
Construct current edge.
static void writeFields(const CloudType &)
Write.
void hitProcessorPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a processorPatch.
scalar trackToEdge(TrackCloudType &cloud, trackingData &td, const vector &endPosition)
Equivalent of trackToFace.
static const std::size_t sizeofFields_
Size in bytes of the fields.
label diagEdge_
Particle is on diagonal edge:
scalar trackFaceTri(const vector &n, const vector &endPosition, label &)
Track through single triangle.
void crossEdgeConnectedFace(const label &celli, label &tetFacei, label &tetPti, const edge &e)
Replacement for particle::crossEdgeConnectedFace that avoids bombing.
label diagEdge() const noexcept
The diagonal edge label or -1.
void hitWallPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a wallPatch.
point localPosition_
Particle position is updated locally as opposed to via track.
void crossDiagonalEdge()
Cross diagonal edge into different triangle on same face,cell.
static void readFields(CloudType &)
Read.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
DSMCCloud< dsmcParcel > CloudType
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces).
vector point
Point is a vector.