18 SUBROUTINE cfrelvel(L, II, VRN, VSLIP, NORM, DIST_LI)
23 USE discretelement
, only: des_vel_new, des_radius, omega_new, des_crossprdct
29 INTEGER,
INTENT(IN) :: L, II
31 DOUBLE PRECISION,
INTENT(IN) :: DIST_LI
34 DOUBLE PRECISION,
INTENT(IN) :: NORM(3)
36 DOUBLE PRECISION,
INTENT(OUT) :: VSLIP(3)
38 DOUBLE PRECISION,
INTENT(OUT) :: VRN
43 DOUBLE PRECISION :: VRELTRANS(3)
45 DOUBLE PRECISION :: V_ROT(3), OMEGA_SUM(3)
47 DOUBLE PRECISION :: DIST_CL, DIST_CI
51 vreltrans(:) = (des_vel_new(l,:) - des_vel_new(ii,:))
56 dist_cl = (dist_li**2 + des_radius(l)**2 - des_radius(ii)**2)/&
58 dist_ci = dist_li - dist_cl
60 omega_sum(:) = omega_new(l,:)*dist_cl + &
61 omega_new(ii,:)*dist_ci
64 v_rot = des_crossprdct(omega_sum, norm)
67 vreltrans(:) = vreltrans(:) + v_rot(:)
70 vrn = dot_product(vreltrans,norm)
74 vslip(:) = vreltrans(:) - vrn*norm(:)
subroutine cfrelvel(L, II, VRN, VSLIP, NORM, DIST_LI)