30 template<
class ParcelType>
33 const CollidingParcel<ParcelType>&
p
38 angularMomentum_(
p.angularMomentum_),
40 collisionRecords_(
p.collisionRecords_)
46 template<
class ParcelType>
47 template<
class TrackCloudType>
50 TrackCloudType&
cloud,
54 typename TrackCloudType::parcelType&
p =
55 static_cast<typename TrackCloudType::parcelType&
>(*this);
59 case trackingData::tpVelocityHalfStep:
65 const scalar dt = (sfr.
second() - sfr.
first())*td.trackTime()/2;
67 p.U() += dt*
p.f()/
p.mass();
68 p.angularMomentum() += dt*
p.torque();
70 td.keepParticle =
true;
76 case trackingData::tpLinearTrack:
78 ParcelType::move(
cloud, td);
83 case trackingData::tpRotationalTrack:
91 return td.keepParticle;
95 template<
class ParcelType>
101 ParcelType::transformProperties(
transform);
Class to hold temporary data during tracking.
trackPart part() const
Return the part of the tracking operation taking place.
bool move(TrackCloudType &cloud, trackingData &td)
Move the parcel.
CollidingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti, const label facei)
Construct from mesh, coordinates and topology.
virtual void transformProperties(const transformer &)
Transform the physical properties of the particle.
const Type & second() const
Return second.
const Type & first() const
Return first.
A cloud is a collection of lagrangian particles.
friend dimensionSet transform(const dimensionSet &)
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
dimensionSet transform(const dimensionSet &)