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 992987c5a3..4ae297f165 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 @@ -211,11 +211,34 @@ void Foam::SpringSliderDashpot::evaluatePair scalar& etaT = etaN; + // // Tangential force + // vector fT_AB = + // -min(kT*mag(tangentialOverlap_AB), mu_*mag(fN_AB)) + // *tangentialOverlap_AB/mag(tangentialOverlap_AB) + // - etaT*USlip_AB; + // Tangential force - vector fT_AB = - -min(kT*mag(tangentialOverlap_AB), mu_*mag(fN_AB)) - *tangentialOverlap_AB/mag(tangentialOverlap_AB) - - etaT*USlip_AB; + vector fT_AB; + + if (kT*mag(tangentialOverlap_AB) > mu_*mag(fN_AB)) + { + // Tangential force greater than sliding friction, particle slips + + fT_AB = + -mu_*mag(fN_AB) + *tangentialOverlap_AB/mag(tangentialOverlap_AB) + - etaT*USlip_AB; + + tangentialOverlap_AB = vector::zero; + tangentialOverlap_BA = vector::zero; + } + else + { + fT_AB = + -kT*mag(tangentialOverlap_AB) + *tangentialOverlap_AB/mag(tangentialOverlap_AB) + - etaT*USlip_AB; + } pA.f() += fT_AB; pB.f() += -fT_AB;