32template<
class CloudType>
35 typename CloudType::parcelType::trackingData&
td,
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>
149template<
class CloudType>
163template<
class CloudType>
const CloudType & owner() const
Return const access to the owner cloud.
const vector & U() const
Return const access to velocity.
Collision model by P.J. O'Rourke.
virtual bool collideSorted(const scalar dt, parcelType &p1, parcelType &p2, scalar &m1, scalar &m2)
virtual void collide(typename CloudType::parcelType::trackingData &td, const scalar dt)
Main collision routine.
ORourkeCollision(const dictionary &dict, CloudType &cloud, const word &modelName=typeName)
Construct from dictionary.
Trajectory collision model by N. Nordin, based on O'Rourke's collision model.
scalar cSpace_
Space coefficient.
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.
scalar cTime_
Time coefficient.
TrajectoryCollision(const dictionary &dict, CloudType &cloud)
Construct from dictionary.
virtual void collide(typename CloudType::parcelType::trackingData &td, const scalar dt)
Main collision routine.
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,...
vector position() const
Return current particle position.
const dictionary & coeffDict() const
Return const access to the coefficients dictionary.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
dimensionedScalar det(const dimensionedSphericalTensor &dt)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
DSMCCloud< dsmcParcel > CloudType
dimensionedScalar exp(const dimensionedScalar &ds)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)