41 2 ALE_NE_CONNECT,NALE ,NODFT ,NODLT ,ITASK ,
42 3 NERCVOIS, NESDVOIS, LERCVOIS, LESDVOIS,
43 4 ELBUF_TAB ,IPARG ,IXS ,IXQ)
62#include "implicit_f.inc"
72#include "tabsiz_c.inc"
81 INTEGER NALE(NUMNOD), NODFT, NODLT, ITASK,
82 . IPARG(NPARG,NGROUP),IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ)
83 my_real X(3,SX/3), V(3,SV/3), W(3,SW/3), WA(3,*), XCELL(3, *), XFACE(3,6,*)
84 TYPE(t_connectivity),
INTENT(IN) :: ALE_NE_CONNECT
85 INTEGER,
INTENT(IN) :: NERCVOIS(*), NESDVOIS(*), LERCVOIS(*), LESDVOIS(*)
86 TYPE(elbuf_struct_),
DIMENSION(NGROUP) :: ELBUF_TAB
91 INTEGER :: IAD1, IAD2, NG, NEL, NFT, ITY, ISOLNOD, IEL, ELT_ID
92 my_real :: SUM_VOL, Y1, Y2, Y3, Y4, Z1, Z2, Z3, Z4, A1, A2
96 wa(1:3,nodft:nodlt)=x(1:3,nodft:nodlt)
98 DO ng = itask + 1, ngroup, nthread
102 isolnod = iparg(28, ng)
103 IF (ity == 1 .AND. isolnod /= 4)
THEN
105 . xcell(:, 1 + nft : nel + nft),
106 . xface(:, :, 1 + nft : nel + nft))
107 ELSEIF (ity == 1 .AND. isolnod == 4)
THEN
109 . xcell(:, 1 + nft : nel + nft),
110 . xface(:, :, 1 + nft : nel + nft))
111 ELSEIF (ity == 2)
THEN
113 . xcell(:, 1 + nft : nel + nft),
114 . xface(:, :, 1 + nft : nel + nft))
116 IF (ity == 1 .OR. ity == 2)
THEN
120 xface(1,1,i + nft) = elbuf_tab(ng)%GBUF%VOL(i)
124 y1 = x(2, ixq(2, i + nft))
125 y2 = x(2, ixq(3, i + nft))
126 y3 = x(2, ixq(4, i + nft))
127 y4 = x(2, ixq(5, i + nft))
128 z1 = x(3, ixq(2, i + nft))
129 z2 = x(3, ixq(3, i + nft))
130 z3 = x(3, ixq(4, i + nft))
131 z4 = x(3, ixq(5, i + nft))
132 a1 =y2*(z3-z4)+y3*(z4-z2)+y4*(z2-z3)
133 a2 =y2*(z4-z1)+y4*(z1-z2)+y1*(z2-z4)
134 xface(1,1,i + nft) = (a1+a2)*half
142 lencom = nercvois(nspmd + 1) + nesdvois(nspmd
143 CALL spmd_e1vois(xface(2,1,1:numels + numelq + ne_nsvois + ne_nqvois),
144 . nercvois, nesdvois, lercvois, lesdvois, lencom)
147 CALL spmd_e1vois(xface(1,1,1:numels + numelq + ne_nsvois + ne_nqvois),
148 . nercvois, nesdvois, lercvois, lesdvois, lencom)
154 IF (iabs(nale(i)) == 1)
THEN
157 iad1 = ale_ne_connect%IAD_CONNECT(i)
158 iad2 = ale_ne_connect%IAD_CONNECT
160 elt_id = ale_ne_connect%CONNECTED(iel)
161 x(1:3, i) = x(1:3, i) + xface(1,1,elt_id) * xcell(1:3, elt_id)
162 sum_vol = sum_vol + xface(1,1,elt_id)
164 x(1:3, i) = x(1:3, i) / sum_vol
168 IF ( iabs(nale(i)) == 1 .AND. dt2 > zero)
THEN
169 w(1:3,i) = (x(1:3,i) - wa(1:3,i)) / dt2
170 ELSE IF (nale(i) == 0)
THEN
subroutine alew6(x, v, w, wa, xcell, xface, ale_ne_connect, nale, nodft, nodlt, itask, nercvois, nesdvois, lercvois, lesdvois, elbuf_tab, iparg, ixs, ixq)