33 type(
tcontact),
intent(in) :: contact
45 real(kind=kreal),
intent(in) :: g
46 real(kind=kreal),
intent(in) :: gact
51 else if (g >= gact)
then
65 type(tsurfelement),
intent(in) :: surf
66 real(kind=kreal),
intent(in) :: alpha
67 real(kind=kreal),
intent(in) :: gact
68 real(kind=kreal),
intent(out) :: stiff(:,:)
69 integer(kind=kint),
optional,
intent(in) :: smoothing_type
71 integer(kind=kint) :: nnode, ndof, i, j
72 real(kind=kreal) :: bn(l_max_surface_node*3+3)
73 real(kind=kreal) :: tm(3, 3*(l_max_surface_node+1))
74 real(kind=kreal) :: tt(3, 3*(l_max_surface_node+1))
75 real(kind=kreal) :: w, coeff
77 nnode =
size(surf%nodes)
83 call computetm_tt(cstate, surf, 0.0d0, tm, tt, smoothing_type, bn=bn)
89 if (coeff <= 0.0d0)
return
94 stiff(i,j) = coeff * bn(i) * bn(j)
107 type(tsurfelement),
intent(in) :: surf
108 real(kind=kreal),
intent(in) :: nddu(:)
109 real(kind=kreal),
intent(in) :: alpha
110 real(kind=kreal),
intent(in) :: gact
111 real(kind=kreal),
intent(out) :: ctnforce(:)
112 real(kind=kreal),
intent(out) :: cttforce(:)
113 integer(kind=kint),
optional,
intent(in) :: smoothing_type
115 integer(kind=kint) :: nnode, ndof
116 real(kind=kreal) :: bn(l_max_surface_node*3+3)
117 real(kind=kreal) :: tm(3, 3*(l_max_surface_node+1))
118 real(kind=kreal) :: tt(3, 3*(l_max_surface_node+1))
119 real(kind=kreal) :: w, coeff, delta_gn
121 nnode =
size(surf%nodes)
128 call computetm_tt(cstate, surf, 0.0d0, tm, tt, smoothing_type, bn=bn)
134 if (coeff <= 0.0d0)
return
137 delta_gn = dot_product(bn(1:ndof), nddu(1:ndof))
140 ctnforce(1:ndof) = coeff * delta_gn * bn(1:ndof)
143 ctnforce((nnode+1)*3+1) = 0.0d0
144 cttforce((nnode+1)*3+1) = 0.0d0
This module encapsulate the basic functions of all elements provide by this software.