1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv 2 ! 3 ! Subroutine: CFFCTOWALL 4 ! Purpose: Calculate the total force and torque on a particle 5 ! 6 ! Author: Jay Boyalakuntla Date: 12-Jun-04 7 ! Reviewer: Rahul Garg Date: 02-Aug-07! 8 ! 9 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 10 SUBROUTINE CFFCTOWALL(L, NORM, DIST_LI, FN, FT) 11 12 !----------------------------------------------- 13 ! Modules 14 !----------------------------------------------- 15 USE param1 16 USE discretelement 17 IMPLICIT NONE 18 !----------------------------------------------- 19 ! Dummy arguments 20 !----------------------------------------------- 21 ! particle index 22 INTEGER, INTENT(IN) :: L 23 ! distance between particle center and wall 24 DOUBLE PRECISION, INTENT(IN) :: DIST_LI 25 ! unit normal vector along the line of contact pointing from 26 ! particle L to wall 27 DOUBLE PRECISION, INTENT(IN) :: NORM(3) 28 ! normal and tangential force 29 DOUBLE PRECISION, INTENT(IN) :: FN(3), FT(3) 30 !----------------------------------------------- 31 ! Local variables 32 !----------------------------------------------- 33 ! local variable for calculating torque on particle 34 DOUBLE PRECISION :: CROSSP(3) 35 ! distance from the contact point to the particle center 36 DOUBLE PRECISION DIST_CL 37 !------------------------------------------------ 38 39 ! total contact force 40 FC(:,L) = FC(:,L) + FN(:) + FT(:) 41 42 ! calculate the distance from the particle center to the wall 43 DIST_CL = DIST_LI - DES_RADIUS(L) 44 45 ! total torque 46 CROSSP = DES_CROSSPRDCT(NORM, FT) 47 TOW(:,L) = TOW(:,L) + DIST_CL*CROSSP(:) 48 49 RETURN 50 END SUBROUTINE CFFCTOWALL 51 52 53