OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i24gap_pxfem.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| i24gap_pxfem ../engine/source/interfaces/int24/i24gap_pxfem.F
25!||--- called by ------------------------------------------------------
26!|| i24mainf ../engine/source/interfaces/int24/i24main.F
27!||--- uses -----------------------------------------------------
28!|| plyxfem_mod ../engine/share/modules/plyxfem_mod.F
29!|| tri7box ../engine/share/modules/tri7box.F
30!||====================================================================
31 SUBROUTINE i24gap_pxfem(
32 1 NRTM ,IRECT,CAND_E ,GAP_NM ,
33 2 MVOISIN ,NVOISIN , MSEGTYP ,INOD_PXFEM ,
34 3 X ,MS_PLY , WAGAP ,ITAB,
35 . ISEG_PXFEM,ISEG_PLY, STFM)
36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE tri7box
40 USE plyxfem_mod
41C-------------------------------------------f----
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C G l o b a l P a r a m e t e r s
47C-----------------------------------------------
48#include "mvsiz_p.inc"
49#include "comlock.inc"
50#include "param_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER NRTM, CAND_E(*),MVOISIN(4,*), INOD_PXFEM(*),
55 . MSEGTYP(*),ITAB(*),NVOISIN(8,*),IRECT(4,*),
56 . ISEG_PXFEM(*),ISEG_PLY(12,*)
57 my_real
58 . gap_nm(12,*),wagap(2,*),ms_ply(nplyxfe,*),x(3,*),
59 . stfm(*)
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER ITAG(MVSIZ),ISEG(NRTM), IXX(NRTM,13),INDX(NRTM)
64 INTEGER I,J1,J2,J3,J4,J5,J6,NN,ILY,IJ6,J7,J8,J9,J10,J11,J12,J,IX,
65 . IDX, NINDX,II
66 my_real
67 . xo16, xo17, xo15, xo14, x163, x153, x152, x142, x141,
68 . yo16, yo17, yo15, yo14, y163, y153, y152, y142, y141,
69 . zo16, zo17, zo15, zo14, z163, z153, z152, z142, z141,
70 . x51 , y51,z51,x52,y52,z52,x53,y53,z53,x54,y54,z54 ,
71 . x164,y164,z164,x174,y174,z174,x171,y171,z171,nx1,
72 . ny1,nz1,aaa,gapn,nx2,ny2,nz2,nx3,ny3,nz3,dx,dy,dz,
73 . nx4,ny4,nz4,
74 . sx125(nrtm),sx235(nrtm),sx345(nrtm),sx415(nrtm),
75 . sy125(nrtm),sy235(nrtm),sy345(nrtm),sy415(nrtm),
76 . sz125(nrtm),sz235(nrtm),sz345(nrtm),sz415(nrtm),
77 . sx1250(nrtm),sx2350(nrtm),sx3450(nrtm),sx4150(nrtm),
78 . sy1250(nrtm),sy2350(nrtm),sy3450(nrtm),sy4150(nrtm),
79 . sz1250(nrtm),sz2350(nrtm),sz3450(nrtm),sz4150(nrtm),
80 . sx2114(nrtm),sx3215(nrtm),sx4316(nrtm),sx1417(nrtm),
81 . sy2114(nrtm),sy3215(nrtm),sy4316(nrtm),sy1417(nrtm),
82 . sz2114(nrtm),sz3215(nrtm),sz4316(nrtm),sz1417(nrtm),
83 . sx21140(nrtm),sx32150(nrtm),sx43160(nrtm),sx14170(nrtm),
84 . sy21140(nrtm),sy32150(nrtm),sy43160(nrtm),sy14170(nrtm),
85 . sz21140(nrtm),sz32150(nrtm),sz43160(nrtm),sz14170(nrtm),
86 . nxx(nrtm,17),nyy(nrtm,17),nzz(nrtm,17),bbb,
87 . xx0(nrtm,17),yy0(nrtm,17),zz0(nrtm,17),dn
88C ---------------------------------------------------------------------
89C all coordinates of segment
90C
91C initiailisation
92 nindx =0
93 DO i=1,nrtm
94 iseg(i) = 0
95 DO j=1,13
96 ixx(i,j) = 0
97 ENDDO
98 IF(msegtyp(i) > 0) iseg(i) = 1
99 IF(msegtyp(i) < 0) iseg(i) = 2
100 IF(iseg_pxfem(i) == 0 .OR. stfm(i) == zero) cycle
101 nindx = nindx + 1
102 indx(nindx) = i
103 ENDDO
104C
105
106C
107 DO ii=1,nindx
108 i = indx(ii)
109C
110 ix=irect(1,i)
111 ixx(i,1)=ix
112 xx0(i,1)=x(1,ix)
113 yy0(i,1)=x(2,ix)
114 zz0(i,1)=x(3,ix)
115C
116 ix=irect(2,i)
117 ixx(i,2)=ix
118 xx0(i,2)=x(1,ix)
119 yy0(i,2)=x(2,ix)
120 zz0(i,2)=x(3,ix)
121C
122 ix=irect(3,i)
123 ixx(i,3)=ix
124 xx0(i,3)=x(1,ix)
125 yy0(i,3)=x(2,ix)
126 zz0(i,3)=x(3,ix)
127C
128 ix=irect(4,i)
129 ixx(i,4)=ix
130 xx0(i,4)=x(1,ix)
131 yy0(i,4)=x(2,ix)
132 zz0(i,4)=x(3,ix)
133C
134 IF(ixx(i,3) /= ixx(i,4))THEN
135 xx0(i,5) = fourth*(xx0(i,1)+xx0(i,2)+xx0(i,3)+xx0(i,4))
136 yy0(i,5) = fourth*(yy0(i,1)+yy0(i,2)+yy0(i,3)+yy0(i,4))
137 zz0(i,5) = fourth*(zz0(i,1)+zz0(i,2)+zz0(i,3)+zz0(i,4))
138 ELSE
139 xx0(i,5) = xx0(i,3)
140 yy0(i,5) = yy0(i,3)
141 zz0(i,5) = zz0(i,3)
142 ENDIF
143
144 ix=iabs(nvoisin(1,i))
145 ixx(i,6)=ix
146 IF(ix /= 0)THEN
147 xx0(i,6)=x(1,ix)
148 yy0(i,6)=x(2,ix)
149 zz0(i,6)=x(3,ix)
150 ELSE
151 xx0(i,6)=xx0(i,1)
152 yy0(i,6)=yy0(i,1)
153 zz0(i,6)=zz0(i,1)
154 ENDIF
155
156 IF(nvoisin(2,i)/=0)ix=iabs(nvoisin(2,i))
157 ixx(i,7)=ix
158 IF(ix /= 0)THEN
159 xx0(i,7)=x(1,ix)
160 yy0(i,7)=x(2,ix)
161 zz0(i,7)=x(3,ix)
162 ELSE
163 xx0(i,7)=xx0(i,2)
164 yy0(i,7)=yy0(i,2)
165 zz0(i,7)=zz0(i,2)
166 ENDIF
167 ix=iabs(nvoisin(3,i))
168 ixx(i,8)=ix
169 IF(ix /= 0)THEN
170 xx0(i,8)=x(1,ix)
171 yy0(i,8)=x(2,ix)
172 zz0(i,8)=x(3,ix)
173 ELSE
174 xx0(i,8)=xx0(i,2)
175 yy0(i,8)=yy0(i,2)
176 zz0(i,8)=zz0(i,2)
177 ENDIF
178
179 IF(nvoisin(4,i)/=0)ix=iabs(nvoisin(4,i))
180 ixx(i,9)=ix
181 IF(ix /= 0)THEN
182 xx0(i,9)=x(1,ix)
183 yy0(i,9)=x(2,ix)
184 zz0(i,9)=x(3,ix)
185 ELSE
186 xx0(i,9)=xx0(i,3)
187 yy0(i,9)=yy0(i,3)
188 zz0(i,9)=zz0(i,3)
189 ENDIF
190!
191 ix=iabs(nvoisin(5,i))
192 ixx(i,10)=ix
193 IF(ix /= 0)THEN
194 xx0(i,10)=x(1,ix)
195 yy0(i,10)=x(2,ix)
196 zz0(i,10)=x(3,ix)
197 ELSE
198 xx0(i,10)=xx0(i,3)
199 yy0(i,10)=yy0(i,3)
200 zz0(i,10)=zz0(i,3)
201 ENDIF
202
203 IF(nvoisin(6,i)/=0)ix=iabs(nvoisin(6,i))
204 ixx(i,11)=ix
205 IF(ix /= 0)THEN
206 xx0(i,11)=x(1,ix)
207 yy0(i,11)=x(2,ix)
208 zz0(i,11)=x(3,ix)
209 ELSE
210 xx0(i,11)=xx0(i,4)
211 yy0(i,11)=yy0(i,4)
212 zz0(i,11)=zz0(i,4)
213 ENDIF
214!
215 ix=iabs(nvoisin(7,i))
216 ixx(i,12)=ix
217 IF(ix /= 0)THEN
218 xx0(i,12)=x(1,ix)
219 yy0(i,12)=x(2,ix)
220 zz0(i,12)=x(3,ix)
221 ELSE
222 xx0(i,12)=xx0(i,4)
223 yy0(i,12)=yy0(i,4)
224 zz0(i,12)=zz0(i,4)
225 ENDIF
226
227 IF(nvoisin(8,i)/=0)ix=iabs(nvoisin(8,i))
228 ixx(i,13)=ix
229 IF(ix /= 0)THEN
230 xx0(i,13)=x(1,ix)
231 yy0(i,13)=x(2,ix)
232 zz0(i,13)=x(3,ix)
233 ELSE
234 xx0(i,13)=xx0(i,1)
235 yy0(i,13)=yy0(i,1)
236 zz0(i,13)=zz0(i,1)
237 ENDIF
238!!
239 IF(ixx(i, 6)==ixx(i, 7))THEN
240 xx0(i,14) = xx0(i,6)
241 yy0(i,14) = yy0(i,6)
242 zz0(i,14) = zz0(i,6)
243 ELSE
244 xx0(i,14) = fourth*(xx0(i,2)+xx0(i,1)+xx0(i,6)+xx0(i,7))
245 yy0(i,14) = fourth*(yy0(i,2)+yy0(i,1)+yy0(i,6)+yy0(i,7))
246 zz0(i,14) = fourth*(zz0(i,2)+zz0(i,1)+zz0(i,6)+zz0(i,7))
247 ENDIF
248 IF(ixx(i, 8)==ixx(i, 9))THEN
249 xx0(i,15) = xx0(i,8)
250 yy0(i,15) = yy0(i,8)
251 zz0(i,15) = zz0(i,8)
252 ELSE
253 xx0(i,15) = fourth*(xx0(i,3)+xx0(i,2)+xx0(i,8)+xx0(i,9))
254 yy0(i,15) = fourth*(yy0(i,3)+yy0(i,2)+yy0(i,8)+yy0(i,9))
255 zz0(i,15) = fourth*(zz0(i,3)+zz0(i,2)+zz0(i,8)+zz0(i,9))
256 ENDIF
257 IF(ixx(i,10)==ixx(i,11))THEN
258 xx0(i,16) = xx0(i,10)
259 yy0(i,16) = yy0(i,10)
260 zz0(i,16) = zz0(i,10)
261 ELSE
262 xx0(i,16) = fourth*(xx0(i,4)+xx0(i,3)+xx0(i,10)+xx0(i,11))
263 yy0(i,16) = fourth*(yy0(i,4)+yy0(i,3)+yy0(i,10)+yy0(i,11))
264 zz0(i,16) = fourth*(zz0(i,4)+zz0(i,3)+zz0(i,10)+zz0(i,11))
265 ENDIF
266 IF(ixx(i,12)==ixx(i,13))THEN
267 xx0(i,17) = xx0(i,12)
268 yy0(i,17) = yy0(i,12)
269 zz0(i,17) = zz0(i,12)
270 ELSE
271 xx0(i,17) = fourth*(xx0(i,1)+xx0(i,4)+xx0(i,12)+xx0(i,13))
272 yy0(i,17) = fourth*(yy0(i,1)+yy0(i,4)+yy0(i,12)+yy0(i,13))
273 zz0(i,17) = fourth*(zz0(i,1)+zz0(i,4)+zz0(i,12)+zz0(i,13))
274 ENDIF
275 END DO
276C---------------------------
277C
278C
279C
280C--------------------------------------------------------
281C
282C for update of gap when main segment is ply-xfem formulation
283C <
284 DO ii=1,nindx
285 i = indx(ii)
286
287 xo14 = xx0(i,14)
288 yo14 = yy0(i,14)
289 zo14 = zz0(i,14)
290
291 xo15 = xx0(i,15)
292 yo15 = yy0(i,15)
293 zo15 = zz0(i,15)
294
295 xo16 = xx0(i,16)
296 yo16 = yy0(i,16)
297 zo16 = zz0(i,16)
298
299 xo17 = xx0(i,17)
300 yo17 = yy0(i,17)
301 zo17 = zz0(i,17)
302
303 x51 = xx0(i,1) - xx0(i,5)
304 y51 = yy0(i,1) - yy0(i,5)
305 z51 = zz0(i,1) - zz0(i,5)
306
307 x52 = xx0(i,2) - xx0(i,5)
308 y52 = yy0(i,2) - yy0(i,5)
309 z52 = zz0(i,2) - zz0(i,5)
310
311 x53 = xx0(i,3) - xx0(i,5)
312 y53 = yy0(i,3) - yy0(i,5)
313 z53 = zz0(i,3) - zz0(i,5)
314
315 x54 = xx0(i,4) - xx0(i,5)
316 y54 = yy0(i,4) - yy0(i,5)
317 z54 = zz0(i,4) - zz0(i,5)
318
319
320 sx1250(i) = y51*z52 - z51*y52
321 sy1250(i) = z51*x52 - x51*z52
322 sz1250(i) = x51*y52 - y51*x52
323
324 sx2350(i) = y52*z53 - z52*y53
325 sy2350(i) = z52*x53 - x52*z53
326 sz2350(i) = x52*y53 - y52*x53
327
328 sx3450(i) = y53*z54 - z53*y54
329 sy3450(i) = z53*x54 - x53*z54
330 sz3450(i) = x53*y54 - y53*x54
331
332 sx4150(i) = y54*z51 - z54*y51
333 sy4150(i) = z54*x51 - x54*z51
334 sz4150(i) = x54*y51 - y54*x51
335
336
337 x141 = xx0(i,1) - xx0(i,14)
338 y141 = yy0(i,1) - yy0(i,14)
339 z141 = zz0(i,1) - zz0(i,14)
340
341 x142 = xx0(i,2) - xx0(i,14)
342 y142 = yy0(i,2) - yy0(i,14)
343 z142 = zz0(i,2) - zz0(i,14)
344
345 x152 = xx0(i,2) - xx0(i,15)
346 y152 = yy0(i,2) - yy0(i,15)
347 z152 = zz0(i,2) - zz0(i,15)
348
349 x153 = xx0(i,3) - xx0(i,15)
350 y153 = yy0(i,3) - yy0(i,15)
351 z153 = zz0(i,3) - zz0(i,15)
352
353 x163 = xx0(i,3) - xx0(i,16)
354 y163 = yy0(i,3) - yy0(i,16)
355 z163 = zz0(i,3) - zz0(i,16)
356
357 x164 = xx0(i,4) - xx0(i,16)
358 y164 = yy0(i,4) - yy0(i,16)
359 z164 = zz0(i,4) - zz0(i,16)
360
361 x174 = xx0(i,4) - xx0(i,17)
362 y174 = yy0(i,4) - yy0(i,17)
363 z174 = zz0(i,4) - zz0(i,17)
364
365 x171 = xx0(i,1) - xx0(i,17)
366 y171 = yy0(i,1) - yy0(i,17)
367 z171 = zz0(i,1) - zz0(i,17)
368c
369 IF(mvoisin(1,i)/=0)THEN
370 sx21140(i) = y142*z141 - z142*y141
371 sy21140(i) = z142*x141 - x142*z141
372 sz21140(i) = x142*y141 - y142*x141
373 ELSE
374 sx21140(i) = sx1250(i)
375 sy21140(i) = sy1250(i)
376 sz21140(i) = sz1250(i)
377 ENDIF
378
379 IF(mvoisin(2,i)/=0)THEN
380 sx32150(i) = y153*z152 - z153*y152
381 sy32150(i) = z153*x152 - x153*z152
382 sz32150(i) = x153*y152 - y153*x152
383 ELSE
384 sx32150(i) = sx2350(i)
385 sy32150(i) = sy2350(i)
386 sz32150(i) = sz2350(i)
387 ENDIF
388
389 IF(mvoisin(3,i)/=0)THEN
390 sx43160(i) = y164*z163 - z164*y163
391 sy43160(i) = z164*x163 - x164*z163
392 sz43160(i) = x164*y163 - y164*x163
393 ELSE
394 sx43160(i) = sx3450(i)
395 sy43160(i) = sy3450(i)
396 sz43160(i) = sz3450(i)
397 ENDIF
398
399 IF(mvoisin(4,i)/=0)THEN
400 sx14170(i) = y171*z174 - z171*y174
401 sy14170(i) = z171*x174 - x171*z174
402 sz14170(i) = x171*y174 - y171*x174
403 ELSE
404 sx14170(i) = sx4150(i)
405 sy14170(i) = sy4150(i)
406 sz14170(i) = sz4150(i)
407 ENDIF
408C
409 IF(ixx(i,3) /= ixx(i,4))THEN
410
411 nxx(i,1) =sx4150(i)+sx1250(i)+two*(sx14170(i)+sx21140(i))
412 nyy(i,1) =sy4150(i)+sy1250(i)+two*(sy14170(i)+sy21140(i))
413 nzz(i,1) =sz4150(i)+sz1250(i)+two*(sz14170(i)+sz21140(i))
414
415 nxx(i,2) =sx1250(i)+sx2350(i)+two*(sx21140(i)+sx32150(i))
416 nyy(i,2) =sy1250(i)+sy2350(i)+two*(sy21140(i)+sy32150(i))
417 nzz(i,2) =sz1250(i)+sz2350(i)+two*(sz21140(i)+sz32150(i))
418
419 nxx(i,3) =sx2350(i)+sx3450(i)+two*(sx32150(i)+sx43160(i))
420 nyy(i,3) =sy2350(i)+sy3450(i)+two*(sy32150(i)+sy43160(i))
421 nzz(i,3) =sz2350(i)+sz3450(i)+two*(sz32150(i)+sz43160(i))
422
423 nxx(i,4) =sx3450(i)+sx4150(i)+two*(sx43160(i)+sx14170(i))
424 nyy(i,4) =sy3450(i)+sy4150(i)+two*(sy43160(i)+sy14170(i))
425 nzz(i,4) =sz3450(i)+sz4150(i)+two*(sz43160(i)+sz14170(i))
426
427 nxx(i,5) =sx1250(i)+sx2350(i)+sx3450(i)+sx4150(i)
428 nyy(i,5) =sy1250(i)+sy2350(i)+sy3450(i)+sy4150(i)
429 nzz(i,5) =sz1250(i)+sz2350(i)+sz3450(i)+sz4150(i)
430
431 ELSE
432
433 nxx(i,1) =sx1250(i)+sx14170(i)+sx21140(i)
434 nyy(i,1) =sy1250(i)+sy14170(i)+sy21140(i)
435 nzz(i,1) =sz1250(i)+sz14170(i)+sz21140(i)
436
437 nxx(i,2) =sx1250(i)+sx21140(i)+sx32150(i)
438 nyy(i,2) =sy1250(i)+sy21140(i)+sy32150(i)
439 nzz(i,2) =sz1250(i)+sz21140(i)+sz32150(i)
440
441 nxx(i,3) =sx1250(i)+sx32150(i)+sx14170(i)
442 nyy(i,3) =sy1250(i)+sy32150(i)+sy14170(i)
443 nzz(i,3) =sz1250(i)+sz32150(i)+sz14170(i)
444
445 nxx(i,4) =nxx(i,3)
446 nyy(i,4) =nyy(i,3)
447 nzz(i,4) =nzz(i,3)
448
449 nxx(i,5) =nxx(i,3)
450 nyy(i,5) =nyy(i,3)
451 nzz(i,5) =nzz(i,3)
452
453 ENDIF
454C
455c GAP : update
456C
457 nx1 = sx1250(i) + sx21140(i) + sx4150(i) + sx14170(i)
458 ny1 = sy1250(i) + sy21140(i) + sy4150(i) + sy14170(i)
459 nz1 = sz1250(i) + sz21140(i) + sz4150(i) + sz14170(i)
460 aaa = one/sqrt(nx1*nx1+ny1*ny1+nz1*nz1)
461 nx1 = nx1 * aaa
462 ny1 = ny1 * aaa
463 nz1 = nz1 * aaa
464C
465 j1= ixx(i,1)
466 IF(j1 > 0) THEN
467 nn = inod_pxfem(j1)
468 ily = iseg_ply(1,i)
469
470 gapn = gap_nm(1,i)
471 IF(nn > 0 .AND. ily > 0) THEN
472 dn = ply(ily)%U(1,nn)*nx1
473 . + ply(ily)%U(2,nn)*ny1
474 . + ply(ily)%U(3,nn)*nz1
475 gapn = max(zero,gap_nm(1,i)+dn)
476 ENDIF
477#include "lockon.inc"
478 IF(iseg(i)>0 )wagap(iseg(i),j1)=max(wagap(iseg(i),j1),gapn)
479#include "lockoff.inc"
480 ENDIF
481C
482 nx2 = sx2350(i) + sx32150(i) + sx1250(i) + sx21140(i)
483 ny2 = sy2350(i) + sy32150(i) + sy1250(i) + sy21140(i)
484 nz2 = sz2350(i) + sz32150(i) + sz1250(i) + sz21140(i)
485 aaa = one/sqrt(nx2*nx2+ny2*ny2+nz2*nz2)
486 nx2 = nx2 * aaa
487 ny2 = ny2 * aaa
488 nz2 = nz2 * aaa
489C
490 j2= ixx(i,2)
491 IF(j2 > 0) THEN
492 nn = inod_pxfem(j2)
493 ily = iseg_ply(2,i)
494 gapn = gap_nm(2,i)
495 IF(nn > 0 .AND. ily > 0) THEN
496 dn = ply(ily)%U(1,nn)*nx2
497 . + ply(ily)%U(2,nn)*ny2
498 . + ply(ily)%U(3,nn)*nz2
499 gapn = max(zero,gap_nm(2,i)+dn)
500 ENDIF
501#include "lockon.inc"
502 IF(iseg(i)>0)wagap(iseg(i),j2)=max(wagap(iseg(i),j2),gapn)
503#include "lockoff.inc"
504 ENDIF
505 IF(ixx(i,3) /= ixx(i,4))THEN
506 nx3 = sx3450(i) + sx43160(i) + sx2350(i) + sx32150(i)
507 ny3 = sy3450(i) + sy43160(i) + sy2350(i) + sy32150(i)
508 nz3 = sz3450(i) + sz43160(i) + sz2350(i) + sz32150(i)
509 aaa = one/sqrt(nx3*nx3+ny3*ny3+nz3*nz3)
510 nx3 = nx3 * aaa
511 ny3 = ny3 * aaa
512 nz3 = nz3 * aaa
513c
514 j3= ixx(i,3)
515
516 IF(j3 > 0 ) THEN
517 nn = inod_pxfem(j3)
518 ily = iseg_ply(3,i)
519 gapn = gap_nm(3,i)
520 IF(nn > 0 .AND. ily > 0) THEN
521 dn = ply(ily)%U(1,nn)*nx3
522 . + ply(ily)%U(2,nn)*ny3
523 . + ply(ily)%U(3,nn)*nz3
524 gapn = max(zero,gap_nm(3,i)+dn)
525 ENDIF
526#include "lockon.inc"
527 IF(iseg(i)>0)wagap(iseg(i),j3)=max(wagap(iseg(i),j3),gapn)
528#include "lockoff.inc"
529 ENDIF
530C
531 nx4 = sx4150(i) + sx14170(i) + sx3450(i) + sx43160(i)
532 ny4 = sy4150(i) + sy14170(i) + sy3450(i) + sy43160(i)
533 nz4 = sz4150(i) + sz14170(i) + sz3450(i) + sz43160(i)
534 aaa = one/sqrt(nx4*nx4+ny4*ny4+nz4*nz4)
535 nx4 = nx4 * aaa
536 ny4 = ny4 * aaa
537 nz4 = nz4 * aaa
538C
539 j4 = ixx(i,4)
540 IF(j4 > 0) THEN
541 nn = inod_pxfem(j4)
542 ily = iseg_ply(4,i)
543 gapn = gap_nm(4,i)
544 IF(nn > 0 .AND. ily > 0) THEN
545 dn = ply(ily)%U(1,nn)*nx4
546 . + ply(ily)%U(2,nn)*ny4
547 . + ply(ily)%U(3,nn)*nz4
548 gapn = max(zero,gap_nm(4,i)+dn)
549 ENDIF
550#include "lockon.inc"
551 IF(iseg(i)>0)wagap(iseg(i),j4)=max(wagap(iseg(i),j4),gapn)
552#include "lockoff.inc"
553 ENDIF
554 ELSE
555 nx3 = sx1250(i) + sx32150(i) + sx14170(i)
556 ny3 = sy1250(i) + sy32150(i) + sy14170(i)
557 nz3 = sz1250(i) + sz32150(i) + sz14170(i)
558 aaa = one/sqrt(nx3*nx3+ny3*ny3+nz3*nz3)
559 nx3 = nx3 * aaa
560 ny3 = ny3 * aaa
561 nz3 = nz3 * aaa
562
563 nx4 = nx3
564 ny4 = ny3
565 nz4 = nz3
566C
567 j3= ixx(i,3)
568 IF(j3 > 0) THEN
569 nn = inod_pxfem(j3)
570 ily = iseg_ply(3,i)
571 gapn = gap_nm(3,i)
572 IF(nn > 0 .AND. ily > 0) THEN
573 dn = ply(ily)%U(1,nn)*nx3
574 . + ply(ily)%U(2,nn)*ny3
575 . + ply(ily)%U(3,nn)*nz3
576 gapn = max(zero,gap_nm(3,i)+dn)
577 ENDIF
578#include "lockon.inc"
579 IF(iseg(i)>0)wagap(iseg(i),j3)=max(wagap(iseg(i),j3),gapn)
580#include "lockoff.inc"
581 ENDIF
582 ENDIF
583C!!!
584 bbb = sqrt(sx21140(i)*sx21140(i)
585 + +sy21140(i)*sy21140(i)
586 + +sz21140(i)*sz21140(i))
587 aaa = one/bbb
588 sx21140(i)=sx21140(i) * aaa
589 sy21140(i)=sy21140(i) * aaa
590 sz21140(i)=sz21140(i) * aaa
591C
592 j5= ixx(i,6)
593 IF(j5 > 0) THEN
594 nn = inod_pxfem(j5)
595 ily = iseg_ply(5,i)
596 gapn = gap_nm(5,i)
597 IF(nn > 0 .AND. ily > 0) THEN
598 dn = ply(ily)%U(1,nn)*sx21140(i)
599 . + ply(ily)%U(2,nn)*sy21140(i)
600 . + ply(ily)%U(3,nn)*sz21140(i)
601 gapn = max(zero,gap_nm(5,i)+dn)
602 ENDIF
603#include "lockon.inc"
604 IF(iseg(i)>0 )wagap(iseg(i),j5)=max(wagap(iseg(i),j5),gapn)
605#include "lockoff.inc"
606 ENDIF
607
608C
609 j6= ixx(i,7)
610 IF(j6 > 0) THEN
611 nn = inod_pxfem(j6)
612 ily = iseg_ply(6,i)
613 gapn = gap_nm(6,i)
614 IF(nn > 0 .AND. ily > 0) THEN
615 dn = ply(ily)%U(1,nn)*sx21140(i)
616 . + ply(ily)%U(2,nn)*sy21140(i)
617 . + ply(ily)%U(3,nn)*sz21140(i)
618 gapn = max(zero,gap_nm(6,i)+dn)
619 ENDIF
620#include "lockon.inc"
621 IF(iseg(i)>0 )wagap(iseg(i),j6)=max(wagap(iseg(i),j6),gapn)
622#include "lockoff.inc"
623 ENDIF
624 bbb = sqrt(sx32150(i)*sx32150(i)
625 + +sy32150(i)*sy32150(i)
626 + +sz32150(i)*sz32150(i))
627 aaa = one/bbb
628
629 sx32150(i)=sx32150(i) * aaa
630 sy32150(i)=sy32150(i) * aaa
631 sz32150(i)=sz32150(i) * aaa
632
633 j7= ixx(i,8)
634 IF(j7 > 0) THEN
635 nn = inod_pxfem(j7)
636 ily = iseg_ply(7,i)
637 gapn = gap_nm(7,i)
638 IF(nn > 0 .AND. ily > 0) THEN
639 dn = ply(ily)%U(1,nn)*sx32150(i)
640 . + ply(ily)%U(2,nn)*sy32150(i)
641 . + ply(ily)%U(3,nn)*sz32150(i)
642 gapn = max(zero,gap_nm(7,i)+dn)
643 ENDIF
644#include "lockon.inc"
645 IF(iseg(i)>0 )wagap(iseg(i),j7)=max(wagap(iseg(i),j7),gapn)
646#include "lockoff.inc"
647 ENDIF
648
649 j8= ixx(i,9)
650 IF(j8 > 0) THEN
651 nn = inod_pxfem(j8)
652 ily = iseg_ply(8,i)
653 gapn = gap_nm(8,i)
654 IF(nn > 0 .AND. ily > 0) THEN
655 dn = ply(ily)%U(1,nn)*sx32150(i)
656 . + ply(ily)%U(2,nn)*sy32150(i)
657 . + ply(ily)%U(3,nn)*sz32150(i)
658 gapn = max(zero,gap_nm(8,i)+dn)
659 ENDIF
660#include "lockon.inc"
661 IF(iseg(i)>0 )wagap(iseg(i),j8)=max(wagap(iseg(i),j8),gapn)
662#include "lockoff.inc"
663 ENDIF
664C
665 IF(ixx(i,3) /= ixx(i,4))THEN
666 bbb = sqrt(sx43160(i)*sx43160(i)
667 + +sy43160(i)*sy43160(i)
668 + +sz43160(i)*sz43160(i))
669
670 aaa = one/bbb
671 sx43160(i)=sx43160(i) * aaa
672 sy43160(i)=sy43160(i) * aaa
673 sz43160(i)=sz43160(i) * aaa
674 j9= ixx(i,10)
675 IF(j9 > 0) THEN
676 nn = inod_pxfem(j9)
677 ily = iseg_ply(9,i)
678 gapn = gap_nm(9,i)
679 IF(nn > 0 .AND. ily > 0) THEN
680 dn = ply(ily)%U(1,nn)*sx43160(i)
681 . + ply(ily)%U(2,nn)*sy43160(i)
682 . + ply(ily)%U(3,nn)*sz43160(i)
683 gapn = max(zero,gap_nm(9,i)+dn)
684 ENDIF
685#include "lockon.inc"
686 IF(iseg(i)>0 )wagap(iseg(i),j9)=max(wagap(iseg(i),j9),gapn)
687#include "lockoff.inc"
688 ENDIF
689
690 j10= ixx(i,11)
691 IF(j10 > 0) THEN
692 nn = inod_pxfem(j10)
693 ily = iseg_ply(10,i)
694 gapn = gap_nm(10,i)
695 IF(nn > 0 .AND. ily > 0) THEN
696 dn = ply(ily)%U(1,nn)*sx43160(i)
697 . + ply(ily)%U(2,nn)*sy43160(i)
698 . + ply(ily)%U(3,nn)*sz43160(i)
699 gapn = max(zero,gap_nm(10,i)+dn)
700 ENDIF
701#include "lockon.inc"
702 IF(iseg(i)>0 )wagap(iseg(i),j10)=max(wagap(iseg(i),j10),gapn)
703#include "lockoff.inc"
704 ENDIF
705
706 ENDIF !! ix3/=ix4
707 bbb = sqrt(sx14170(i)*sx14170(i)
708 + +sy14170(i)*sy14170(i)
709 + +sz14170(i)*sz14170(i))
710
711 aaa = one/bbb
712 sx14170(i)=sx14170(i) * aaa
713 sy14170(i)=sy14170(i) * aaa
714 sz14170(i)=sz14170(i) * aaa
715
716 j11= ixx(i,12)
717 IF(j11 > 0) THEN
718 nn = inod_pxfem(j11)
719 ily = iseg_ply(11,i)
720 gapn = gap_nm(11,i)
721 IF(nn > 0 .AND. ily > 0) THEN
722 dn = ply(ily)%U(1,nn)*sx14170(i)
723 . + ply(ily)%U(2,nn)*sy14170(i)
724 . + ply(ily)%U(3,nn)*sz14170(i)
725 gapn = max(zero,gap_nm(11,i)+dn)
726 ENDIF
727#include "lockon.inc"
728 IF(iseg(i)>0 )wagap(iseg(i),j11)=max(wagap(iseg(i),j11),gapn)
729#include "lockoff.inc"
730 ENDIF
731
732 j12= ixx(i,13)
733 IF(j12 > 0) THEN
734 nn = inod_pxfem(j12)
735 ily = iseg_ply(12,i)
736 gapn = gap_nm(12,i)
737 IF(nn > 0 .AND. ily > 0) THEN
738 dn = ply(ily)%U(1,nn)*sx14170(i)
739 . + ply(ily)%U(2,nn)*sy14170(i)
740 . + ply(ily)%U(3,nn)*sz14170(i)
741 gapn = max(zero,gap_nm(12,i)+dn)
742 ENDIF
743#include "lockon.inc"
744 IF(iseg(i)>0 )wagap(iseg(i),j12)=max(wagap(iseg(i),j12),gapn)
745#include "lockoff.inc"
746 ENDIF
747!!!!
748 ENDDO
749C
750 RETURN
751 END
subroutine i24gap_pxfem(nrtm, irect, cand_e, gap_nm, mvoisin, nvoisin, msegtyp, inod_pxfem, x, ms_ply, wagap, itab, iseg_pxfem, iseg_ply, stfm)
#define max(a, b)
Definition macros.h:21
type(ply_data), dimension(:), allocatable ply
Definition plyxfem_mod.F:91