41
42
43
44
45
46
47#include "implicit_f.inc"
48
49
50
51#include "mvsiz_p.inc"
52
53
54
55
56
57 INTEGER, INTENT(IN) :: NEL
58 INTEGER, DIMENSION(MVSIZ), INTENT(IN) :: ISTAB
59 my_real,
INTENT(IN) :: mu,fqmax,dt1
60 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: fld,ll
61 DOUBLE PRECISION, DIMENSION(MVSIZ,10), INTENT(IN) ::
62 . XX,YY,,XX0,YY0,ZZ0
63 my_real,
DIMENSION(MVSIZ,10),
INTENT(IN) ::
64 . vx,vy,vz
65 my_real,
DIMENSION(MVSIZ,10),
INTENT(INOUT) ::
66 . fx,fy,fz
67 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) ::sti,sti_c
68 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: e_distor
69
70
71
73 . xc(mvsiz,5),yc(mvsiz,5),zc(mvsiz,5),stif(mvsiz),
74 . vc(mvsiz,3),forc_n(mvsiz,3),for_t1(mvsiz,3),
75 . for_t2(mvsiz,3),for_t3(mvsiz,3),for_t4(mvsiz,3),
76 . for_t5(mvsiz,3),for_t6(mvsiz,3),for_t7(mvsiz,3),
77 . for_t8(mvsiz,3),for_t9(mvsiz,3),for_t10(mvsiz,3),
78 . forc_n1(mvsiz,3),forc_n2(mvsiz,3),forc_n3(mvsiz,3),
79 . penmin(mvsiz),penref(mvsiz),marge(mvsiz),
80 . vcx(mvsiz,4),vcy(mvsiz,4),vcz(mvsiz,4),
81 . forc_n4(mvsiz,3),fcx,fcy,fcz,fac,gap_max,gap_min,
82 . tol_t,tol_c, tol_v, tol_e
83 INTEGER I,J,NCTL,IFCTL,IFC1(MVSIZ),IFC2(MVSIZ)
84
85
86
87
88
89
90 tol_v = ten
91! velocity gradient and istab as 1er sorting
92 vc = zero
93 DO j =1,10
94 DO i=1,nel
95 vc(i,1) = vc(i,1)+vx(i,j)
96 vc(i,2) = vc(i,2)+vy(i,j)
97 vc(i,3) = vc(i,3)+vz(i,j)
98 ENDDO
99 END DO
100 DO i=1,nel
101 vc(i,1) = vc(i,1)*em01
102 vc(i,2) = vc(i,2)*em01
103 vc(i,3) = vc(i,3)*em01
104 stif(i) = sti_c(i)
105 ifc1(i) = istab(i)
106 ENDDO
107 forc_n = zero
108 forc_n1 = zero
109 forc_n2 = zero
110 forc_n3 = zero
111 forc_n4 = zero
112 for_t1 = zero
113 for_t2 = zero
114 for_t3 = zero
115 for_t4 = zero
116 for_t5 = zero
117 for_t6 = zero
118 for_t7 = zero
119 for_t8 = zero
120 for_t9 = zero
121 for_t10 = zero
122 nctl = 0
124 . vx , vy, vz, ifctl,
125 . for_t1, for_t2, for_t3, for_t4,
126 . for_t5, for_t6, for_t7, for_t8,
127 . for_t9, for_t10, stif , ifc1,
128 . nel ,e_distor, dt1 )
129 nctl = nctl + ifctl
130
131 xc = zero
132 yc = zero
133 zc = zero
134 DO j =1,10
135 DO i=1,nel
136 xc(i,5) = xc(i,5)+xx(i,j)
137 yc(i,5) = yc(i,5)+yy(i,j)
138 zc(i,5) = zc(i,5)+zz(i,j)
139 ENDDO
140 END DO
141 DO i=1,nel
142 xc(i,5) = xc(i,5)*em01
143 yc(i,5) = yc(i,5)*em01
144 zc(i,5) = zc(i,5)*em01
145 ENDDO
146
147 tol_e = em01
149 . sti, ll , sti_c,
150 . xx , yy , zz ,
151 . xx0, yy0, zz0,
152 . vx , vy , vz ,
153 . for_t1, for_t2, for_t3,
154 . for_t4, for_t5, for_t6,
155 . for_t7, for_t8, for_t9,
156 . for_t10, tol_e, ifc2 ,
157 . ifctl , nel ,e_distor,
158 . dt1 )
159 nctl = nctl + ifctl
160
161
162 tol_c= zep2
163 gap_min = tol_c*em02
164 gap_max = five*gap_min
165 marge(1:nel) = gap_max*ll(1:nel)
166 penmin(1:nel) = gap_min*ll(1:nel)*half
167 penref(1:nel) = gap_max*ll(1:nel)*half
168 DO i=1,nel
169 xc(i,1) = fourth*(xx(i,1)+xx(i,5)+xx(i,7)+xx(i,8))
170 yc(i,1) = fourth*(yy(i,1)+yy(i,5)+yy(i,7)+yy(i,
171 zc(i,1) = fourth*(zz(i,1)+zz(i,5)+zz(i,7)+zz(i,8))
172 xc(i,2) = fourth*(xx(i,2)+xx(i,5)+xx(i,6)+xx(i,9))
173 yc(i,2) = fourth*(yy(i,2)+yy(i,5)+yy(i,6)+yy(i,9))
174 zc(i,2) = fourth*(zz(i,2)+zz(i,5)+zz(i,6)+zz(i,9))
175 xc(i,3) = fourth*(xx(i,3)+xx(i,7)+xx(i,6)+xx(i,10))
176 yc(i,3) = fourth*(yy(i,3)+yy(i,7)+yy(i,6)+yy(i,10))
177 zc(i,3) = fourth*(zz(i,3)+zz(i,7)+zz(i,6)+zz(i,10))
178 xc(i,4) = fourth*(xx(i,4)+xx(i,8)+xx(i,9)+xx(i
179 yc(i,4) = fourth*(yy(i,4)+yy(i,8)+yy(i,9)+yy(i,10))
180 zc(i,4) = fourth*(zz(i,4)+zz(i,8)+zz(i,9)+zz(i,10))
181 ENDDO
182 DO i=1,nel
183 vcx(i,1) = fourth*(vx(i,1)+vx(i,5)+vx(i,7)+vx(i,8))
184 vcy(i,1) = fourth*(vy(i,1)+vy(i,5)+vy(i,7)+vy(i,8))
185 vcz(i,1) = fourth*(vz(i,1)+vz(i,5)+vz(i,7)+vz(i,8))
186 vcx(i,2) = fourth*(vx(i,2)+vx(i,5)+vx(i,6)+vx(i,9))
187 vcy(i,2) = fourth*(vy(i,2)+vy(i,5)+vy(i,6)+vy(i,9))
188 vcz(i,2) = fourth*(vz(i,2)+vz(i,5)+vz(i,6)+vz(i,9))
189 vcx(i,3) = fourth*(vx(i,3)+vx(i,7)+vx(i,6)+vx(i,10))
190 vcy(i,3) = fourth*(vy(i,3)+vy(i,7)+vy(i,6)+vy(i,10))
191 vcz(i,3) = fourth*(vz(i,3)+vz(i,7)+vz(i,6)+vz(i,10))
192 vcx(i,4) = fourth*(vx(i,4)+vx(i,8)+vx(i,9)+vx(i,10))
193 vcy(i,4) = fourth*(vy(i,4)+vy(i,8)+vy(i,9)+vy(i,10))
194 vcz(i,4) = fourth*(vz(i,4)+vz(i,8)+vz(i,9)+vz(i,10))
195 ENDDO
196
197
199 . xc(1,5), yc(1,5), zc(1,5),
200 . xc(1,1), yc(1,1), zc(1,1),
201 . xc(1,2), yc(1,2), zc(1,2),
202 . xc(1,3), yc(1,3), zc(1,3),
203 . xx(1,1), xx(1,2), xx(1,3),
204 . yy(1,1), yy(1,2), yy(1,3),
205 . zz(1,1), zz(1,2), zz(1,3),
206 . for_t1, for_t2, for_t3,
207 . xx(1,5), xx(1,6), xx(1,7),
208 . yy(1,5), yy(1,6), yy(1,7),
209 . zz(1,5), zz(1,6), zz(1,7),
210 . for_t5, for_t6, for_t7,
211 . forc_n1, forc_n2, forc_n3,
212 . forc_n, stif, sti_c,
213 . fqmax, ifctl, ll,
214 . penmin, penref, marge,
215 . vc(1,1), vc(1,2), vc(1,3),
216 . vcx(1,1), vcy(1,1), vcz(1,1),
217 . vcx(1,2), vcy(1,2), vcz(1,2),
218 . vcx(1,3), vcy(1,3), vcz(1,3),
219 . vx(1,1), vx(1,2), vx(1,3),
220 . vy(1,1), vy(1,2), vy(1,3),
221 . vz(1,1), vz(1,2), vz(1,3),
222 . vx(1,5), vx(1,6), vx(1,7),
223 . vy(1,5), vy(1,6), vy(1,7),
224 . vz(1,5), vz(1,6), vz(1,7),
225 . ifc1, nel , e_distor,
226 . dt1 )
227 nctl = nctl + ifctl
228
230 . xc(1,5), yc(1,5), zc(1,5),
231 . xc(1,1), yc(1,1), zc(1,1),
232 . xc(1,4), yc(1,4), zc(1,4),
233 . xc(1,2), yc(1,2), zc(1,2),
234 . xx(1,1), xx(1,4), xx(1,2),
235 . yy(1,1), yy(1,4), yy(1,2),
236 . zz(1,1), zz(1,4), zz(1,2),
237 . for_t1, for_t4, for_t2,
238 . xx(1,8), xx(1,9), xx(1,5),
239 . yy(1,8), yy(1,9), yy(1,5),
240 . zz(1,8), zz(1,9), zz(1,5),
241 . for_t8, for_t9, for_t5,
242 . forc_n1, forc_n4, forc_n2,
243 . forc_n, stif, sti_c,
244 . fqmax, ifctl, ll,
245 . penmin, penref, marge,
246 . vc(1,1), vc(1,2), vc(1,3),
247 . vcx(1,1), vcy(1,1), vcz(1,1),
248 . vcx(1,4), vcy(1,4), vcz(1,4),
249 . vcx(1,2), vcy(1,2), vcz(1,2),
250 . vx(1,1), vx(1,4), vx(1,2),
251 . vy(1,1), vy(1,4), vy(1,2),
252 . vz(1,1), vz(1,4), vz(1,2),
253 . vx(1,8), vx(1,9), vx(1,5),
254 . vy(1,8), vy(1,9), vy(1,5),
255 . vz(1,8), vz(1,9), vz(1,5),
256 . ifc1, nel , e_distor,
257 . dt1 )
258 nctl = nctl + ifctl
259
261 . xc(1,5), yc(1,5), zc(1,5),
262 . xc(1,2), yc(1,2), zc(1,2),
263 . xc(1,4), yc(1,4), zc(1,4),
264 . xc(1,3), yc(1,3), zc(1,3),
265 . xx(1,2), xx(1,4), xx(1,3),
266 . yy(1,2), yy(1,4), yy(1,3),
267 . zz(1,2), zz(1,4), zz(1,3),
268 . for_t2, for_t4, for_t3,
269 . xx(1,9), xx(1,10), xx(1,6),
270 . yy(1,9), yy(1,10), yy(1,6),
271 . zz(1,9), zz(1,10), zz(1,6),
272 . for_t9, for_t10, for_t6,
273 . forc_n2, forc_n4, forc_n3,
274 . forc_n, stif, sti_c,
275 . fqmax, ifctl, ll,
276 . penmin, penref, marge,
277 . vc(1,1), vc(1,2), vc(1,3),
278 . vcx(1,2), vcy(1,2), vcz(1,2),
279 . vcx(1,4), vcy(1,4), vcz(1,4),
280 . vcx(1,3), vcy(1,3), vcz(1,3),
281 . vx(1,2), vx(1,4), vx(1,3),
282 . vy(1,2), vy(1,4), vy(1,3),
283 . vz(1,2), vz(1,4), vz(1,3),
284 . vx(1,9), vx(1,10), vx(1,6),
285 . vy(1,9), vy(1,10), vy(1,6),
286 . vz(1,9), vz(1,10), vz(1,6),
287 . ifc1, nel , e_distor,
288 . dt1 )
289 nctl = nctl + ifctl
290
292 . xc(1,5), yc(1,5), zc(1,5),
293 . xc(1,1), yc(1,1), zc(1,1),
294 . xc(1,3), yc(1,3), zc(1,3),
295 . xc(1,4), yc(1,4), zc(1,4),
296 . xx(1,1), xx(1,3), xx(1,4),
297 . yy(1,1), yy(1,3), yy(1,4),
298 . zz(1,1), zz(1,3), zz(1,4),
299 . for_t1, for_t3, for_t4,
300 . xx(1,7), xx(1,10), xx(1,8),
301 . yy(1,7), yy(1,10), yy(1,8),
302 . zz(1,7), zz(1,10), zz(1,8),
303 . for_t7, for_t10, for_t8,
304 . forc_n1, forc_n3, forc_n4,
305 . forc_n, stif, sti_c,
306 . fqmax, ifctl, ll,
307 . penmin, penref, marge,
308 . vc(1,1), vc(1,2), vc(1,3),
309 . vcx(1,1), vcy(1,1), vcz(1,1),
310 . vcx(1,3), vcy(1,3), vcz(1,3),
311 . vcx(1,4), vcy(1,4), vcz(1,4),
312 . vx(1,1), vx(1,3), vx(1,4),
313 . vy(1,1), vy(1,3), vy(1,4),
314 . vz(1,1), vz(1,3), vz(1,4),
315 . vx(1,7), vx(1,10), vx(1,8),
316 . vy(1,7), vy(1,10), vy(1,8),
317 . vz(1,7), vz(1,10), vz(1,8),
318 . ifc1, nel , e_distor,
319 . dt1 )
320 nctl = nctl + ifctl
321
322! IF (nctl >0) THEN : potential p/on issue
323 DO i=1,nel
324 IF (sti_c(i) ==zero) cycle
325 IF (stif(i)>sti_c(i)) sti(i) =
max(sti(i),stif(i))
326 IF (forc_n(i,1)==zero.AND.forc_n(i,2)==zero
327 . .AND.forc_n(i,3)==zero) cycle
328 fcx = em01*forc_n(i,1)
329 fcy = em01*forc_n(i,2)
330 fcz = em01*forc_n(i,3)
331 fx(i,1) = fx(i,1) + for_t1(i,1) + fcx
332 fy(i,1) = fy(i,1) + for_t1(i,2) + fcy
333 fz(i,1) = fz(i,1) + for_t1(i,3) + fcz
334 fx(i,2) = fx(i,2) + for_t2(i,1) + fcx
335 fy(i,2) = fy(i,2) + for_t2(i,2) + fcy
336 fz(i,2) = fz(i,2) + for_t2(i,3) + fcz
337 fx(i,3) = fx(i,3) + for_t3(i,1) + fcx
338 fy(i,3) = fy(i,3) + for_t3(i,2) + fcy
339 fz(i,3) = fz(i,3) + for_t3(i,3) + fcz
340 fx(i,4) = fx(i,4) + for_t4(i,1) + fcx
341 fy(i,4) = fy(i,4) + for_t4(i,2) + fcy
342 fz(i,4) = fz(i,4) + for_t4(i,3) + fcz
343 fx(i,5) = fx(i,5) + for_t5(i,1) + fcx
344 fy(i,5) = fy(i,5) + for_t5(i,2) + fcy
345 fz(i,5) = fz(i,5) + for_t5(i,3) + fcz
346 fx(i,6) = fx(i,6) + for_t6(i,1) + fcx
347 fy(i,6) = fy(i,6) + for_t6(i,2) + fcy
348 fz(i,6) = fz(i,6) + for_t6(i,3) + fcz
349 fx(i,7) = fx(i,7) + for_t7(i,1) + fcx
350 fy(i,7) = fy(i,7) + for_t7(i,2) + fcy
351 fz(i,7) = fz(i,7) + for_t7(i,3) + fcz
352 fx(i,8) = fx(i,8) + for_t8(i,1) + fcx
353 fy(i,8) = fy(i,8) + for_t8(i,2) + fcy
354 fz(i,8) = fz(i,8) + for_t8(i,3) + fcz
355 fx(i,9) = fx(i,9) + for_t9(i,1) + fcx
356 fy(i,9) = fy(i,9) + for_t9(i,2) + fcy
357 fz(i,9) = fz(i,9) + for_t9(i,3) + fcz
358 fx(i,10)=fx(i,10) + for_t10(i,1) + fcx
359 fy(i,10)=fy(i,10) + for_t10(i,2) + fcy
360 fz(i,10)=fz(i,10) + for_t10(i,3) + fcz
361
362 END DO
363 DO i=1,nel
364 IF (forc_n1(i,1)==zero.AND.forc_n1(i,2)==zero
365 . .AND.forc_n1(i,3)==zero) cycle
366 fcx = fourth*forc_n1(i,1)
367 fcy = fourth*forc_n1(i,2)
368 fcz = fourth*forc_n1(i,3)
369 fx(i,1) = fx(i,1) + fcx
370 fy(i,1) = fy(i,1) + fcy
371 fz(i,1) = fz(i,1) + fcz
372 fx(i,5) = fx(i,5) + fcx
373 fy(i,5) = fy(i,5) + fcy
374 fz(i,5) = fz(i,5) + fcz
375 fx(i,7) = fx(i,7) + fcx
376 fy(i,7) = fy(i,7) + fcy
377 fz(i,7) = fz(i,7) + fcz
378 fx(i,8) = fx(i,8) + fcx
379 fy(i,8) = fy(i,8) + fcy
380 fz(i,8) = fz(i,8) + fcz
381 END DO
382 DO i=1,nel
383 IF (forc_n2(i,1)==zero.AND.forc_n2(i,2)==zero
384 . .AND.forc_n2(i,3)==zero) cycle
385 fcx = fourth*forc_n2(i,1)
386 fcy = fourth*forc_n2(i,2)
387 fcz = fourth*forc_n2(i,3)
388 fx(i,2) = fx(i,2) + fcx
389 fy(i,2) = fy(i,2) + fcy
390 fz(i,2) = fz(i,2) + fcz
391 fx(i,5) = fx(i,5) + fcx
392 fy(i,5) = fy(i,5) + fcy
393 fz(i,5) = fz(i,5) + fcz
394 fx(i,6) = fx(i,6) + fcx
395 fy(i,6) = fy(i,6) + fcy
396 fz(i,6) = fz(i,6) + fcz
397 fx(i,9) = fx(i,9) + fcx
398 fy(i,9) = fy(i,9) + fcy
399 fz(i,9) = fz(i,9) + fcz
400 END DO
401 DO i=1,nel
402 IF (forc_n3(i,1)==zero.AND.forc_n3(i,2)==zero
403 . .AND.forc_n3(i,3)==zero) cycle
404 fcx = fourth*forc_n3(i,1)
405 fcy = fourth*forc_n3(i,2)
406 fcz = fourth*forc_n3(i,3)
407 fx(i,3) = fx(i,3) + fcx
408 fy(i,3) = fy(i,3) + fcy
409 fz(i,3) = fz(i,3) + fcz
410 fx(i,6) = fx(i,6) + fcx
411 fy(i,6) = fy(i,6) + fcy
412 fz(i,6) = fz(i,6) + fcz
413 fx(i,7) = fx(i,7) + fcx
414 fy(i,7) = fy(i,7) + fcy
415 fz(i,7) = fz(i,7) + fcz
416 fx(i,10)=fx(i,10) + fcx
417 fy(i,10)=fy(i,10) + fcy
418 fz(i,10)=fz(i,10) + fcz
419 END DO
420 DO i=1,nel
421 IF (forc_n4(i,1)==zero.AND.forc_n4(i,2)==zero
422 . .AND.forc_n4(i,3)==zero) cycle
423 fcx = fourth*forc_n4(i,1)
424 fcy = fourth*forc_n4(i,2)
425 fcz = fourth*forc_n4(i,3)
426 fx(i,4) = fx(i,4) + fcx
427 fy(i,4) = fy(i,4) + fcy
428 fz(i,4) = fz(i,4) + fcz
429 fx(i,8) = fx(i,8) + fcx
430 fy(i,8) = fy(i,8) + fcy
431 fz(i,8) = fz(i,8) + fcz
432 fx(i,9) = fx(i,9) + fcx
433 fy(i,9) = fy(i,9) + fcy
434 fz(i,9) = fz(i,9) + fcz
435 fx(i,10)=fx(i,10) + fcx
436 fy(i,10)=fy(i,10) + fcy
437 fz(i,10)=fz(i,10) + fcz
438 END DO
439
440
441 RETURN
subroutine s10for_edgec(sti, ll, sti_c, xx, yy, zz, xx0, yy0, zz0, vx, vy, vz, for_t1, for_t2, for_t3, for_t4, for_t5, for_t6, for_t7, for_t8, for_t9, for_t10, tol_e, ifce, ifctl, nel, e_distor, dt1)
subroutine sfor_n2stria2(xc, yc, zc, xc1, yc1, zc1, xc2, yc2, zc2, xc3, yc3, zc3, x1, x2, x3, y1, y2, y3, z1, z2, z3, for_t1, for_t2, for_t3, x4, x5, x6, y4, y5, y6, z4, z5, z6, for_t4, for_t5, for_t6, forc_n1, forc_n2, forc_n3, forc_n, stif, stif0, fqmax, ifctl, ll, penmin, penref, marge, vcx, vcy, vcz, vxc1, vyc1, vzc1, vxc2, vyc2, vzc2, vxc3, vyc3, vzc3, vx1, vx2, vx3, vy1, vy2, vy3, vz1, vz2, vz3, vx4, vx5, vx6, vy4, vy5, vy6, vz4, vz5, vz6, ifc1, nel, e_distor, dt1)
subroutine sfor_visn10(vc, fld, tol_v, mu, vx, vy, vz, ifctl, for_t1, for_t2, for_t3, for_t4, for_t5, for_t6, for_t7, for_t8, for_t9, for_t10, stif, ifc1, nel, e_distor, dt1)