32template<
class CloudType>
43template<
class CloudType>
53 bool coalescence =
false;
55 const vector pos1(p1.position());
56 const vector pos2(p2.position());
66 scalar vAlign = URel & (d/(magd + ROOTVSMALL));
70 const scalar d1 = p1.d();
71 const scalar d2 = p2.d();
73 scalar sumD = d1 + d2;
75 if (vAlign*dt > magd - 0.5*sumD)
77 scalar magU1 =
mag(
U1) + ROOTVSMALL;
78 scalar magU2 =
mag(
U2) + ROOTVSMALL;
82 scalar n1n2 = n1 & n2;
86 scalar
det = 1.0 -
sqr(n1n2);
106 scalar closestDist =
mag(p1c - p2c);
109 pow(0.5*sumD/
max(0.5*sumD, closestDist), cSpace_)
112 scalar xx = this->owner().rndGen().template sample01<scalar>();
119 coalescence = this->collideSorted(dt, p1, p2, m1, m2);
123 coalescence = this->collideSorted(dt, p2, p1, m2, m1);
136template<
class CloudType>
144 cSpace_(this->coeffDict().getScalar(
"cSpace")),
145 cTime_(this->coeffDict().getScalar(
"cTime"))
149template<
class CloudType>
163template<
class CloudType>
Templated base class for dsmc cloud.
Collision model by P.J. O'Rourke.
Trajectory collision model by N. Nordin, based on O'Rourke's collision model.
virtual ~TrajectoryCollision()
Destructor.
virtual bool collideParcels(const scalar dt, parcelType &p1, parcelType &p2, scalar &m1, scalar &m2)
Collide parcels and return true if mass has changed.
CloudType::parcelType parcelType
Convenience typedef to the cloud's parcel type.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Class used to pass data into container.
dimensionedScalar det(const dimensionedSphericalTensor &dt)
dimensionedScalar exp(const dimensionedScalar &ds)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)