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 TrackData>
66 const scalar trackTime
69 typename TrackData::cloudType::parcelType&
p =
70 static_cast<typename TrackData::cloudType::parcelType&
>(*this);
74 case TrackData::tpVelocityHalfStep:
79 p.U() += 0.5*trackTime*p.f()/p.mass();
81 p.angularMomentum() += 0.5*trackTime*p.torque();
83 td.keepParticle =
true;
88 case TrackData::tpLinearTrack:
90 ParcelType::move(td, trackTime);
95 case TrackData::tpRotationalTrack:
105 << td.part() <<
" is an invalid part of the tracking method." 110 return td.keepParticle;
114 template<
class ParcelType>
117 ParcelType::transformProperties(T);
127 template<
class ParcelType>
133 ParcelType::transformProperties(separation);
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)
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.
bool move(TrackData &td, const scalar trackTime)
Move the parcel.
#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 &)