From 163031a174043810c4f24f3c56e65310b9ccb51c Mon Sep 17 00:00:00 2001
From: graham <g.macpherson@opencfd.co.uk>
Date: Wed, 9 Sep 2009 18:20:18 +0100
Subject: [PATCH] Adding notes and support variables for tangential forces.

---
 .../SpringSliderDashpot/SpringSliderDashpot.C | 67 +++++++++++++++++--
 1 file changed, 60 insertions(+), 7 deletions(-)

diff --git a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairFunction/SpringSliderDashpot/SpringSliderDashpot.C b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairFunction/SpringSliderDashpot/SpringSliderDashpot.C
index c515d8312ba..88ac6e972b9 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairFunction/SpringSliderDashpot/SpringSliderDashpot.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/CollisionModel/PairCollision/PairFunction/SpringSliderDashpot/SpringSliderDashpot.C
@@ -70,9 +70,9 @@ void Foam::SpringSliderDashpot<CloudType>::evaluatePair
 {
     vector r_AB = (pA.position() - pB.position());
 
-    scalar normalOverlap = 0.5*(pA.d() + pB.d()) - mag(r_AB);
+    scalar normalOverlapMag = 0.5*(pA.d() + pB.d()) - mag(r_AB);
 
-    if (normalOverlap > 0)
+    if (normalOverlapMag > 0)
     {
         //Particles in collision
 
@@ -88,16 +88,69 @@ void Foam::SpringSliderDashpot<CloudType>::evaluatePair
 
         scalar kN = (4.0/3.0)*sqrt(R)*Estar_;
 
-        scalar etaN = alpha_*sqrt(M*kN)*sqrt(sqrt(normalOverlap));
+        scalar etaN = alpha_*sqrt(M*kN)*sqrt(sqrt(normalOverlapMag));
 
-        vector f_AB =
+        // Normal force
+        vector fN_AB =
             rHat_AB
-           *(kN*pow(normalOverlap, b_) - etaN*(U_AB & rHat_AB));
+           *(kN*pow(normalOverlapMag, b_) - etaN*(U_AB & rHat_AB));
 
-        pA.f() += f_AB;
-        pB.f() += -f_AB;
+        pA.f() += fN_AB;
+        pB.f() += -fN_AB;
+
+        vector Uslip_AB =
+            U_AB
+          - (U_AB & rHat_AB)*rHat_AB
+          - (pA.omega() ^ (pA.r()*rHat_AB))
+          - (pB.omega() ^ (pB.r()*rHat_AB));
+
+        const scalar deltaT = this->owner().mesh().time().deltaT().value();
+
+        // TODO retrieve tangentialOverlap from previous collision
+        vector tangentialOverlap = vector::zero;
+
+        tangentialOverlap += Uslip_AB * deltaT;
+
+        // const scalar& etaT = etaN;
+
+        // Tangential force
+        // fT_AB =
     }
 }
 
+// + Add this force to the sum of forces for this particle, + If
+// normalOverlap < 0 then there is no collision between this pair and
+// any record of collision in the previous timestep and the
+// accumulated value of tangentialOverlap are removed.
+
+// + If normalOverlap > 0 then a check is made to see if these
+//   particles were colliding in the previous step, if so, retrieve
+//   the previous value of tangentialOverlap, if not, create a
+//   collision record with tangentialOverlap = 0.
+
+// + Calculate Delta(tangentialOverlap):
+//       Delta(tangentialOverlap) = vSlip * dt
+//   where dt is the current timestep and vSlip:
+//       vSlip = vRel - (vRel & n)n - omega1 ^ r1*n - omega2 ^ r2*n
+//   adding Delta(tangentialOverlap) to the current value of tangentialOverlap
+//   for this collision pair.
+
+// + Using the current value of tangentialOverlap for the pair,
+//   calculate the tangential component of force on this particle, Ft:
+//   Ft = -min(kT*mag(tangentialOverlap), mu*mag(Fn))
+//      *tangentialOverlap/mag(tangentialOverlap) - etaT*vSlip
+//   Where mu is the coefficient of friction (values f in table 1?),
+//   kT is a function of normalOverlap, r1, r2, E1, E2, sigma1 and
+//   sigma2, and etaT = etaN.
+
+// + Add Ft and its torque to the particle, and the corresponding
+//   parts to the other particle.
+//   Corresponding torque
+//       ((r1*-n) ^ Fn)
+//   ^ is the cross product, the point of application of the
+//   force relative to the particle's position (assumed to be its centre of
+//   mass) is (r1*-n).
+//   The other particle receives the negative of this force value and
+//   calculates its torque contribution as ((r2*n) ^ -Fn).
 
 // ************************************************************************* //
-- 
GitLab