30 template<
class ParcelType>
33 const CollidingParcel<ParcelType>&
p 38 angularMomentum_(p.angularMomentum_),
40 collisionRecords_(p.collisionRecords_)
44 template<
class ParcelType>
47 const CollidingParcel<ParcelType>&
p,
61 template<
class ParcelType>
62 template<
class TrackCloudType>
65 TrackCloudType& cloud,
67 const scalar trackTime
70 typename TrackCloudType::parcelType&
p =
71 static_cast<typename TrackCloudType::parcelType&
>(*this);
80 p.U() += 0.5*trackTime*p.f()/p.mass();
82 p.angularMomentum() += 0.5*trackTime*p.torque();
84 td.keepParticle =
true;
85 td.switchProcessor =
false;
92 ParcelType::move(cloud, td, trackTime);
107 << td.
part() <<
" is an invalid part of the tracking method." 112 return td.keepParticle;
116 template<
class ParcelType>
122 ParcelType::transformProperties(transform);
trackPart part() const
Return the part of the tracking operation taking place.
vector f_
Force on particle due to collisions [N].
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Class to hold temporary data during tracking.
virtual void transformProperties(const transformer &)
Transform the physical properties of the particle.
collisionRecordList collisionRecords_
Particle collision records.
errorManip< error > abort(error &err)
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
vector angularMomentum_
Angular momentum of Parcel in global reference frame [kg m2/s].
vector torque_
Torque on particle due to collisions in global.
CollidingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from mesh, coordinates and topology.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.