39#ifndef Foam_wallBoundedStreamLineParticle_H
40#define Foam_wallBoundedStreamLineParticle_H
90 template<
class TrackCloudType>
93 TrackCloudType&
cloud,
97 const scalar trackLength,
163 const label tetFacei,
167 const bool trackForward,
177 bool newFormat =
true
219 template<
class TrackCloudType>
222 TrackCloudType&
cloud,
224 const scalar trackTime
Base cloud calls templated on particle type.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
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.
Abstract base class for volume field interpolation.
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.
Mesh consisting of general polyhedral cells.
Class used to pass tracking data to the trackToFace function.
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.
label meshEdgeStart() const noexcept
The mesh edge label or -1.
label diagEdge() const noexcept
The diagonal edge label or -1.
A Cloud of wall-bounded streamLine particles.
iNew(const polyMesh &mesh)
Class used to pass tracking data to the trackToEdge function.
const PtrList< interpolation< vector > > & vvInterp_
const interpolation< vector > & UInterp_
virtual ~trackingData()=default
DynamicList< vectorList > & allPositions_
const PtrList< interpolation< scalar > > & vsInterp_
trackingData(TrackCloudType &cloud, const PtrList< interpolation< scalar > > &vsInterp, const PtrList< interpolation< vector > > &vvInterp, const interpolation< vector > &UInterp, const scalar trackLength, const bitSet &isWallPatch, DynamicList< List< point > > &allPositions, List< DynamicList< scalarList > > &allScalars, List< DynamicList< vectorList > > &allVectors)
const scalar trackLength_
List< DynamicList< vectorList > > & allVectors_
List< DynamicList< scalarList > > & allScalars_
Particle class that samples fields as it passes through. Used in streamline calculation.
vector interpolateFields(const trackingData &td, const point &position, const label celli, const label facei)
autoPtr< particle > clone() const
Return a clone.
static void writeFields(const Cloud< wallBoundedStreamLineParticle > &)
Write.
label lifeTime_
Lifetime of particle. Particle dies when reaches 0.
DynamicList< point > sampledPositions_
Sampled positions.
bool trackForward_
Track with +U or -U.
wallBoundedStreamLineParticle(const polyMesh &c, const point &position, const label celli, const label tetFacei, const label tetPti, const label meshEdgeStart, const label diagEdge, const bool trackForward, const label lifeTime)
Construct from components.
List< DynamicList< vector > > sampledVectors_
Sampled vectors.
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Track all particles to their end point.
vector sample(trackingData &td)
List< DynamicList< scalar > > sampledScalars_
Sampled scalars.
static void readFields(Cloud< wallBoundedStreamLineParticle > &)
Read.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces).
vector point
Point is a vector.