33 . NUMEL, NEL, NUMNOD, NPARG, NGROUP, N2D , NFT)
49#include "implicit_f.inc"
53 INTEGER,
INTENT(IN) :: NUMEL,NEL,NUMNOD,NPARG,NGROUP,N2D,NFT,ITYP
54 INTEGER,
INTENT(IN) :: IX(NIX,NUMEL),IPARG(NPARG,NGROUP),NIX,NG
55 my_real,
INTENT(IN) :: x(3,numnod),v(3,numnod)
56 my_real,
INTENT(OUT) :: evar(nel)
57 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
INTENT(IN),
TARGET :: ELBUF_TAB
62 my_real :: div , xi(8), yi(8), zi(8)
64 my_real :: n(3,6), vel(6,3),
area, nx, a1, a2, dotprod(6,nel), vol(nel)
83 IF(n2d == 0 .AND. ityp == 1)
THEN
128 n(1,1)=(yi(3)-yi(1))*(zi(2)-zi(4)) - (zi(3)-zi(1))*(yi(2)-yi(4))
129 n(2,1)=(zi(3)-zi(1))*(xi(2)-xi(4)) - (xi(3)-xi(1))*(zi(2)-zi(4))
130 n(3,1)=(xi(3)-xi(1))*(yi(2)-yi(4)) - (yi(3)-yi(1))*(xi(2)-xi(4))
132 n(1,2)=(yi(7)-yi(4))*(zi(3)-zi(8)) - (zi(7)-zi(4))*(yi(3)-yi(8))
133 n(2,2)=(zi(7)-zi(4))*(xi(3)-xi(8)) - (xi(7)-xi(4))*(zi(3)-zi(8))
134 n(3,2)=(xi(7)-xi(4))*(yi(3)-yi(8)) - (yi(7)-yi(4))*(xi(3)-xi(8))
136 n(1,3)=(yi(6)-yi(8))*(zi(7)-zi(5)) - (zi(6)-zi(8))*(yi(7)-yi(5))
137 n(2,3)=(zi(6)-zi(8))*(xi(7)-xi(5)) - (xi(6)-xi(8))*(zi(7)-zi(5))
138 n(3,3)=(xi(6)-xi(8))*(yi(7)-yi(5)) - (yi(6)-yi(8))*(xi(7)-xi(5))
140 n(1,4)=(yi(2)-yi(5))*(zi(6)-zi(1)) - (zi(2)-zi(5))*(yi(6)-yi(1))
141 n(2,4)=(zi(2)-zi(5))*(xi(6)-xi(1)) - (xi(2)-xi(5))*(zi(6)-zi(1))
142 n(3,4)=(xi(2)-xi(5))*(yi(6)-yi(1)) - (yi(2)-yi(5))*(xi(6)-xi(1))
144 n(1,5)=(yi(7)-yi(2))*(zi(6)-zi(3)) - (zi(7)-zi(2))*(yi(6)-yi(3))
145 n(2,5)=(zi(7)-zi(2))*(xi(6)-xi(3)) - (xi(7)-xi(2))*(zi(6)-zi(3))
146 n(3,5)=(xi(7)-xi(2))*(yi(6)-yi(3)) - (yi(7)-yi(2))*(xi(6)-xi(3))
148 n(1,6)=(yi(8)-yi(1))*(zi(4)-zi(5)) - (zi(8)-zi(1))*(yi(4)-yi(5))
149 n(2,6)=(zi(8)-zi(1))*(xi(4)-xi(5)) - (xi(8)-xi(1))*(zi(4)-zi(5))
150 n(3,6)=(xi(8)-xi(1))*(yi(4)-yi(5)) - (yi(8)-yi(1))*(xi(4)-xi(5))
152 n(1:3,1) = half * n(1:3,1)
153 n(1:3,2) = half * n(1:3,2)
154 n(1:3,3) = half * n(1:3,3)
155 n(1:3,4) = half * n(1:3,4)
156 n(1:3,5) = half * n(1:3,5)
157 n(1:3,6) = half * n(1:3,6)
159 vel(1,1) = fourth*( v(1,nc(1)) + v(1,nc(2)) + v(1,nc(3)) + v(1,nc(4)) )
160 vel(1,2) = fourth*( v(2,nc(1)) + v(2,nc(2)) + v(2,nc(3)) + v(2,nc(4)) )
161 vel(1,3) = fourth*( v(3,nc(1)) + v(3,nc(2)) + v(3,nc(3)) + v(3,nc(4)) )
163 vel(2,1) = fourth*( v(1,nc(3)) + v(1,nc(4)) + v(1,nc(7)) + v(1,nc(8)) )
164 vel(2,2) = fourth*( v(2,nc(3)) + v(2,nc(4)) + v(2,nc(7)) + v(2,nc(8)) )
165 vel(2,3) = fourth*( v(3,nc(3)) + v(3,nc(4)) + v(3,nc(7)) + v(3,nc(8)) )
167 vel(3,1) = fourth*( v(1,nc(5)) + v(1,nc(6)) + v(1,nc(7)) + v(1,nc(8)) )
168 vel(3,2) = fourth*( v(2,nc(5)) + v(2,nc(6)) + v(2,nc(7)) + v(2,nc(8)) )
169 vel(3,3) = fourth*( v(3,nc(5)) + v(3,nc(6)) + v(3,nc(7)) + v
171 vel(4,1) = fourth*( v(1,nc(1)) + v(1,nc(2)) + v(1,nc(5)) + v(1
172 vel(4,2) = fourth*( v(2,nc(1)) + v(2,nc(2)) + v(2,nc(5)) + v(2,nc(6)) )
173 vel(4,3) = fourth*( v(3,nc(1)) + v(3,nc(2)) + v(3,nc(5)) + v(3,nc(6)) )
175 vel(5,1) = fourth*( v(1,nc(2)) + v(1,nc(3)) + v(1,nc(6)) + v(
176 vel(5,2) = fourth*( v(2,nc(2)) + v(2,nc(3)) + v(2,nc(6)) + v(2,nc(7)) )
177 vel(5,3) = fourth*( v(3,nc(2)) + v(3,nc(3)) + v(3,nc(6)) + v
179 vel(6,1) = fourth*( v(1,nc(1)) + v(1,nc(4)) + v(1,nc(5)) + v(1,nc(8)) )
180 vel(6,2) = fourth*( v(2,nc(1)) + v(2,nc(4)) + v(2,nc(5)) + v(2,nc(8)) )
181 vel(6,3) = fourth*( v(3,nc(1)) + v(3,nc(4)) + v(3,nc(5)) + v(3,nc(8)) )
183 dotprod(1,i) = vel(1,1)*n(1,1) + vel(1,2)*n(2,1) + vel(1,3)*n(3,1)
184 dotprod(2,i) = vel(2,1)*n(1,2) + vel(2,2)*n(2,2) + vel(2,3)*n(3,2)
185 dotprod(3,i) = vel(3,1)*n(1,3) + vel
186 dotprod(4,i) = vel(4,1)*n(1,4) + vel(4,2)*n(2,4) + vel(4,3)*n(3,4)
187 dotprod(5,i) = vel(5,1)*n(1,5) + vel(5,2)*n(2,5) + vel(5,3)*n(3,5)
188 dotprod(6,i) = vel(6,1)*n(1,6) + vel(6,2)*n(2,6) + vel(6,3)*n(3,6)
190 vol(i) = elbuf_tab(ng)%GBUF%VOL(i)
192 ELSEIF(n2d > 0 .AND. ityp == 2)
THEN
220 n(2,1) = (zi(2)-zi(1))
221 n(3,1) =-(yi(2)-yi(1))
224 n(2,2) = (zi(3)-zi(2))
225 n(3,2) =-(yi(3)-yi(2))
228 n(2,3) = (zi(4)-zi(3))
229 n(3,3) =-(yi(4)-yi(3))
232 n(2,4) = (zi(1)-zi(4))
233 n(3,4) =-(yi(1)-yi(4))
237 vel(1,2)=half*(v(2,nc(1)) + v(2,nc(2)))
238 vel(1,3)=half*(v(3,nc(1)) + v(3,nc(2)))
240 vel(2,2)=half*(v(2,nc(2)) + v(2,nc(3)))
241 vel(2,3)=half*(v(3,nc(2)) + v(3,nc(3)))
243 vel(3,2)=half*(v(2,nc(3)) + v(2,nc(4)))
244 vel(3,3)=half*(v(3,nc(3)) + v(3,nc(4)))
246 vel(4,2)=half*(v(2,nc(4)) + v(2,nc(1)))
247 vel(4,3)=half*(v(3,nc(4)) + v(3,nc(1)))
249 dotprod(1,i) = vel(1,2)*n(2,1) + vel(1,3)*n(3,1)
250 dotprod(2,i) = vel(2,2)*n(2,2) + vel(2,3)*n(3,2)
251 dotprod(3,i) = vel(3,2)*n(2,3) + vel(3,3)*n(3,3)
252 dotprod(4,i) = vel(4,2)*n(2,4) + vel(4,3)*n(3,4)
257 a1 = yi(2)*(zi(3)-zi(4))+yi(3)*(zi(4)-zi(2))+yi(4)*(zi(2)-zi(3))
258 a2 = yi(2)*(zi(4)-zi(1))+yi(4)*(zi(1)-zi(2))+yi(1)*(zi(2)-zi(4))
261 area = elbuf_tab(ng)%GBUF%AREA(i)
265 ELSEIF(n2d > 0 .AND. ityp == 7)
THEN
287 n(2,1) = (zi(2)-zi(1))
288 n(3,1) =-(yi(2)-yi(1))
291 n(2,2) = (zi(3)-zi(2))
292 n(3,2) =-(yi(3)-yi(2))
295 n(2,3) = (zi(1)-zi(3))
296 n(3,3) =-(yi(1)-yi(3))
300 vel(1,2)=half*(v(2,nc(1)) + v(2,nc
301 vel(1,3)=half*(v(3,nc(1)) + v(3,nc(2)))
303 vel(2,2)=half*(v(2,nc(2)) + v(2,nc(3)))
304 vel(2,3)=half*(v(3,nc(2)) + v(3,nc(3)))
306 vel(3,2)=half*(v(2,nc(3)) + v(2,nc(1)))
307 vel(3,3)=half*(v(3,nc(3)) + v(3,nc(1)))
309 dotprod(1,i) = vel(1,2)*n(2,1) + vel(1,3)*n(3,1)
310 dotprod(2,i) = vel(2,2)*n(2,2) + vel(2,3)*n(3,2)
311 dotprod(3,i) = vel(3,2)*n(2,3) + vel(3,3)*n(3,3)
317 nx = half * ((yi(2) - yi(1)) * (zi(3) - zi(1)) - (zi(2) - zi(1)) * (yi(3) - yi(1)))
320 area = elbuf_tab(ng)%GBUF%AREA(i)
338 div = div + dotprod(1,i)
339 div = div + dotprod(2,i)
340 div = div + dotprod(3,i)
341 div = div + dotprod(4,i)
342 div = div + dotprod(5,i)
343 div = div + dotprod(6,i)