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);
75 case trackingData::tpVelocityHalfStep:
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;
90 case trackingData::tpLinearTrack:
92 ParcelType::move(cloud, td, trackTime);
97 case trackingData::tpRotationalTrack:
107 << td.part() <<
" is an invalid part of the tracking method." 112 return td.keepParticle;
116 template<
class ParcelType>
119 ParcelType::transformProperties(T);
129 template<
class ParcelType>
135 ParcelType::transformProperties(separation);
ParcelType::trackingData trackingData
Use base tracking data.
vector f_
Force on particle due to collisions [N].
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
collisionRecordList collisionRecords_
Particle collision records.
errorManip< error > abort(error &err)
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
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.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
dimensionSet transform(const dimensionSet &)