43#ifndef CollidingParcel_H
44#define CollidingParcel_H
61template<
class ParcelType>
66template<
class ParcelType>
77template<
class ParcelType>
91 public ParcelType::constantProperties
161 +
" (angularMomentumx angularMomentumy angularMomentumz)"
162 +
" (torquex torquey torquez)"
163 +
" collisionRecordsPairAccessed"
164 +
" collisionRecordsPairOrigProcOfOther"
165 +
" collisionRecordsPairOrigIdOfOther"
166 +
" (collisionRecordsPairData)"
167 +
" collisionRecordsWallAccessed"
168 +
" collisionRecordsWallPRel"
169 +
" (collisionRecordsWallData)"
182 const label tetFacei,
201 const label tetFacei,
204 const scalar nParticle0,
206 const scalar dTarget0,
209 const vector& angularMomentum0,
211 const typename ParcelType::constantProperties& constProps
220 bool newFormat =
true
244 const polyMesh& mesh_;
268 inline const vector&
f()
const;
298 template<
class TrackCloudType>
303 const scalar trackTime
318 template<
class CloudType>
322 template<
class CloudType>
335 template<
class CloudType>
339 template<
class CloudType>
345 friend Ostream& operator<< <ParcelType>
scalar youngsModulus() const
Return const access to Young's Modulus.
scalar poissonsRatio() const
Return const access to Poisson's ratio.
constantProperties()
Null constructor.
iNew(const polyMesh &mesh)
autoPtr< CollidingParcel< ParcelType > > operator()(Istream &is) const
Wrapper around kinematic parcel types to add collision modelling.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
collisionRecordList & collisionRecords()
Return access to collision records.
virtual autoPtr< particle > clone(const polyMesh &mesh) const
Return a (basic particle) clone.
CollidingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti, const label typeId, const scalar nParticle0, const scalar d0, const scalar dTarget0, const vector &U0, const vector &f0, const vector &angularMomentum0, const vector &torque0, const typename ParcelType::constantProperties &constProps)
Construct from components.
CollidingParcel(const CollidingParcel &p)
Construct as a copy.
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
vector & f()
Return access to force.
virtual void transformProperties(const vector &separation)
Transform the physical properties of the particle.
const vector & angularMomentum() const
Return const access to angular momentum.
CollidingParcel(const polyMesh &mesh, const vector &position, const label celli)
Construct from a position and a cell, searching for the rest of the.
virtual autoPtr< particle > clone() const
Return a (basic particle) clone.
static const std::size_t sizeofFields
AddToPropertyList(ParcelType, " (fx fy fz)"+" (angularMomentumx angularMomentumy angularMomentumz)"+" (torquex torquey torquez)"+" collisionRecordsPairAccessed"+" collisionRecordsPairOrigProcOfOther"+" collisionRecordsPairOrigIdOfOther"+" (collisionRecordsPairData)"+" collisionRecordsWallAccessed"+" collisionRecordsWallPRel"+" (collisionRecordsWallData)")
String representation of properties.
KinematicParcel< particle >::trackingData trackingData
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
vector omega() const
Particle angular velocity.
CollidingParcel(const polyMesh &mesh, Istream &is, bool readFields=true, bool newFormat=true)
Construct from Istream.
const vector & f() const
Return const access to force.
collisionRecordList collisionRecords_
vector & angularMomentum()
Return access to angular momentum.
static void writeFields(const CloudType &c)
Write.
vector & torque()
Return access to torque.
const vector & torque() const
Return const access to torque.
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly) const
Write individual parcel properties to stream.
CollidingParcel(const CollidingParcel &p, const polyMesh &mesh)
Construct as a copy.
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
TypeName("CollidingParcel")
Runtime type information.
const collisionRecordList & collisionRecords() const
Return const access to the collision records.
static void readFields(CloudType &c)
CollidingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from mesh, coordinates and topology.
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 cloud is a registry collection of lagrangian particles.
Class for demand-driven dictionary entries.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Registry of regIOobjects.
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.
const barycentric & coordinates() const noexcept
Return current particle coordinates.
Mesh consisting of general polyhedral cells.
A List of wordRe with additional matching capabilities.
A class for handling words, derived from Foam::string.
OBJstream os(runTime.globalPath()/outputName)
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
DSMCCloud< dsmcParcel > CloudType
vectorFieldCompactIOField pairDataFieldCompactIOField
CollisionRecordList< vector, vector > collisionRecordList
CompactIOField< vectorField > vectorFieldCompactIOField
Compact IO for a Field of vectorField.
bool cp(const fileName &src, const fileName &dst, const bool followLink=true)
Copy the source to the destination (recursively if necessary).
Barycentric< scalar > barycentric
A scalar version of the templated Barycentric.
vectorFieldCompactIOField wallDataFieldCompactIOField
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
#define AddToPropertyList(ParcelType, str)
Add to existing static 'propertyList' for particle properties.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.