MFIX  2016-1
cfslide.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2 !
3 ! Subroutine: CFSLIDE(V_TANG, PARTICLE_SLIDE, MU)
4 ! Purpose: Check for Coulombs friction law - calculate sliding
5 ! friction
6 !
7 ! Author: Jay Boyalakuntla Date: 12-Jun-04
8 ! Reviewer: Date:
9 !
10 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
11 
12  SUBROUTINE cfslide(V_TANG, PARTICLE_SLIDE, MU, FT_tmp, FN_tmp)
13 
14 !-----------------------------------------------
15 ! Modules
16 !-----------------------------------------------
17  USE discretelement, only: debug_des
18  IMPLICIT NONE
19 !-----------------------------------------------
20 ! Dummy arguments
21 !-----------------------------------------------
22 ! tangent to the plane of contact
23  DOUBLE PRECISION, INTENT(IN) :: V_TANG(3)
24 ! logic set to T when a sliding contact occurs
25  LOGICAL, INTENT(OUT) :: PARTICLE_SLIDE
26 ! Coefficient of friction
27  DOUBLE PRECISION, INTENT(IN) :: MU
28 ! normal force
29  DOUBLE PRECISION, DIMENSION(3), INTENT(IN) :: FN_tmp
30 ! tangential force
31  DOUBLE PRECISION, DIMENSION(3), INTENT(INOUT) :: FT_tmp
32 !-----------------------------------------------
33 ! Local variables
34 !-----------------------------------------------
35 ! squared magnitude of tangential and normal forces
36  DOUBLE PRECISION FTMD, FNMD
37 !-----------------------------------------------
38 
39  ftmd = dot_product(ft_tmp(:),ft_tmp(:))
40  fnmd = dot_product(fn_tmp(:),fn_tmp(:))
41 
42  IF (ftmd.GT.(mu*mu*fnmd)) THEN
43 ! tangential force based on sliding friction
44  particle_slide = .true.
45  IF(all(v_tang.EQ.0)) THEN
46  ft_tmp(:) = mu * ft_tmp(:) * sqrt(fnmd/ftmd)
47  ELSE
48  ft_tmp(:) = -mu * v_tang(:) * sqrt(fnmd/dot_product(v_tang,v_tang))
49  ENDIF
50 
51  IF(debug_des) THEN
52  WRITE(*,'(7X,A)') &
53  'FROM CFSLIDE.F ---------->'
54  WRITE(*,'(9X,A)') 'PARTICLE_SLIDE = T'
55  WRITE(*,'(9X,A,2(ES15.7,1X))')&
56  'FTMD, mu*FNMD = ', ftmd, mu*fnmd
57  WRITE(*,'(7X,A)') '<----------END CFSLIDE.F'
58  ENDIF
59 
60  ENDIF
61 
62  RETURN
63  END SUBROUTINE cfslide
subroutine cfslide(V_TANG, PARTICLE_SLIDE, MU, FT_tmp, FN_tmp)
Definition: cfslide.f:13