35 USE multimat_param_mod ,
ONLY : m51_n0phas, m51_nvphas
45#include "implicit_f.inc"
47#include "subvolumes.inc"
61 INTEGER I,NIN,J,K, IFLG
76 DATA s_polyh(1:8) /08,12,24,03,04,06,06,24/
78 s22_max = s_tetra + s_penta + s_poly3 + s_hexae + s_poly4
79 . + s_poly4a + s_poly4b + s_polyc
92 DATA m_polyh(1:8) /01,01,01,02,02,02,02,01/
105 DATA d_polyh(1:8) /01,09,21,45,51,59,71,83/
118 DATA n_polyh(1:8) /01,02,03,04,04,04,04,04/
131 DATA f_polyh(1:8) /03,04,05,05,06,06,06,05/
144 DATA c_polyh(1:8) /03,04,05,04,06,06,06,06/
150 DATA bcode(01) /b
'111000000000'/
151 DATA bcode(02) /b
'000111000000'/
152 DATA bcode(03) /b
'000000111000'/
153 DATA bcode(04) /b
'000000000111'/
154 DATA bcode(05) /b
'100100100000'/
155 DATA bcode(06) /b
'010010000100'/
156 DATA bcode(07) /b
'001000010010'/
157 DATA bcode(08) /b
'000001001001'/
160 DATA bcode(09) /b
'011100100000'/
161 DATA bcode(10) /b
'101010000100'/
162 DATA bcode(11) /b
'110000010010'/
163 DATA bcode(12) /b
'100011100000'/
164 DATA bcode(13) /b
'010101000100'/
165 DATA bcode(14) /b
'000110001001'/
166 DATA bcode(15) /b
'100100011000'/
167 DATA bcode(16) /b
'001000101010'/
168 DATA bcode(17) /b
'000001110001'/
169 DATA bcode(18) /b
'010010000011'/
170 DATA bcode(19) /b
'001000010101'/
171 DATA bcode(20) /b
'000001001110'/
174 DATA bcode(21) /b
'101101000100'/
175 DATA bcode(22) /b
'001110100100'/
176 DATA bcode(23) /b
'011011100000'/
177 DATA bcode(24) /b
'110001100100'/
178 DATA bcode(25) /b
'010101000011'/
179 DATA bcode(26) /b
'010011001010'/
180 DATA bcode(27) /b
'010100001101'/
181 DATA bcode(28) /b
'000110001110'/
182 DATA bcode(29) /b
'001001100011'/
183 DATA bcode(30) /b
'000001110110'/
184 DATA bcode(31) /b
'001001011100'/
185 DATA bcode(32) /b
'001000101101'/
186 DATA bcode(33) /b
'011100011000'/
187 DATA bcode(34) /b
'101100001010'/
188 DATA bcode(35) /b
'010100110010'/
189 DATA bcode(36) /b
'110000101010'/
190 DATA bcode(37) /b
'100010101001'/
191 DATA bcode(38) /b
'000110110001'/
192 DATA bcode(39) /b
'100011011000'/
193 DATA bcode(40) /b
'100101010001'/
194 DATA bcode(41) /b
'110000010101'/
195 DATA bcode(42) /b'100010010110
'/ !2198 !42
196 DATA bCODE(43) /B'011010010001
'/ !1681 !43
197 DATA bCODE(44) /B'101010000011
'/ !2691 !44
198 !----------------------------------------------------!
200 DATA bCODE(45) /B'100010010001
'/ !2193 !45-46
201 DATA bCODE(46) /B'100010010001
'/ !2193
202 DATA bCODE(47) /B'010100001010
'/ !1290 !47-48
203 DATA bCODE(48) /B'010100001010
'/ !1290
204 DATA bCODE(49) /B'001001100100
'/ !0612 !49-50
205 DATA bCODE(50) /B'001001100100
'/ !0612
206 !----------------------------------------------------!
208 DATA bCODE(51) /B'011011011000
'/ !1752 !51-52
209 DATA bCODE(52) /B'011011011000
'/ !1752
210 DATA bCODE(53) /B'101101000011
'/ !2883 !53-54
211 DATA bCODE(54) /B'101101000011
'/ !2883
212 DATA bCODE(55) /B'110000101101
'/ !3117 !55-56
213 DATA bCODE(56) /B'110000101101
'/ !3117
214 DATA bCODE(57) /B'000110110110
'/ !0438 !57-58
215 DATA bCODE(58) /B'000110110110
'/ !0438
216 !----------------------------------------------------!
218 DATA bCODE(59) /B'101011001010
'/ !POLY4A 45 - 2762
219 DATA bCODE(60) /B'101011001010
'/ !POLY4A 26 - 2762
220 DATA bCODE(61) /B'010100110101
'/ !POLY4A 46 - 1333
221 DATA bCODE(62) /B'010100110101
'/ !POLY4A 25 - 1333
222 DATA bCODE(63) /B'011010101001
'/ !POLY4A 36 - 1705
223 DATA bCODE(64) /B'011010101001
'/ !POLY4A 15 - 1705
224 DATA bCODE(65) /B'100101010110
'/ !POLY4A 35 - 2390
225 DATA bCODE(66) /B'100101010110
'/ !POLY4A 16 - 2390
226 DATA bCODE(67) /B'110001100011
'/ !POLY4A 34 - 3171
227 DATA bCODE(68) /B'110001100011
'/ !POLY4A 12 - 3171
228 DATA bCODE(69) /B'001110011100
'/ !POLY4A 23 - 0924
229 DATA bCODE(70) /B'001110011100
'/ !POLY4A 14 - 0924
231 DATA bCODE(71) /B'011101010001
'/ !POLY4B 45 - 1873
232 DATA bCODE(72) /B'011101010001
'/ !POLY4B 26 - 1873
233 DATA bCODE(73) /B'100010101110
'/ !POLY4B 46 - 2222
234 DATA bCODE(74) /B'100010101110
'/ !POLY4B 25 - 2222
235 DATA bCODE(75) /B'110001011100
'/ !POLY4B 36 - 3148
236 DATA bCODE(76) /B'110001011100
'/ !POLY4B 15 - 3148
237 DATA bCODE(77) /B'001110100011
'/ !POLY4B 35 - 0931
238 DATA bCODE(78) /B'001110100011
'/ !POLY4B 16 - 0931
239 DATA bCODE(79) /B'101100001101
'/ !POLY4B 34 - 2829
240 DATA bCODE(80) /B'101100001101
'/ !POLY4B 12 - 2829
241 DATA bCODE(81) /B'010011110010
'/ !POLY4B 23 - 1266
242 DATA bCODE(82) /B'010011110010
'/ !POLY4B 14 - 1266
243 !----------------------------------------------------!
245 DATA bCODE(83) /B'100110010001
'/ !POLYC R+.4
246 DATA bCODE(84) /B'100010110001
'/ !POLYC R+.7
247 DATA bCODE(85) /B'100010011001
'/ !POLYC R+.9
248 DATA bCODE(86) /B'100011010001
'/ !POLYC R+.6
250 DATA bCODE(87) /B'110010010001
'/ !POLYC R-.2
251 DATA bCODE(88) /B'101010010001
'/ !POLYC R-.3
252 DATA bCODE(89) /B'100010010011
'/ !POLYC R-.11
253 DATA bCODE(90) /B'100010010101
'/ !POLYC R-.10
255 DATA bCODE(91) /B'110100001010'/
256 DATA bcode(92) /b
'011100001010'/
257 DATA bcode(93) /b
'010100011010'/
258 DATA bcode(94) /b
'010100101010'/
260 DATA bcode(95) /b
'010110001010'/
261 DATA bcode(96) /b
'010100001110'/
262 DATA bcode(97) /b
'010100001011'/
263 DATA bcode(98) /b
'010101001010'/
265 DATA bcode(99) /b
'001011100100'/
266 DATA bcode(100) /b
'001101100100'/
267 DATA bcode(101) /b
'101001100100'/
268 DATA bcode(102) /b
'011001100100'/
270 DATA bcode(103) /b
'001001100101'/
271 DATA bcode(104) /b
'001001101100'/
272 DATA bcode(105) /b
'001001110100'/
273 DATA bcode(106) /b
'001001100110'/
279 getpolyhedratype(01:08) = 1
280 getpolyhedratype(09:20) = 2
281 getpolyhedratype(21:44) = 3
282 getpolyhedratype(45:50) = 4
283 getpolyhedratype(51:58) = 5
284 getpolyhedratype(59:70) = 5
285 getpolyhedratype(71:82) = 5
286 getpolyhedratype(83:106) = 6
297 gtria(:, 1, 1) = (/1,2,3/)
299 gtria(:, 1, 2) = (/1,2,3/)
300 gtria(:, 2, 2) = (/1,3,4/)
302 gtria(:, 1, 3) = (/2,3,4/)
303 gtria(:, 2, 3) = (/1,2,4/)
304 gtria(:, 3, 3) = (/1,4,5/)
306 gtria(:, 1, 4) = (/1,2,3/)
307 gtria(:, 2, 4) = (/1,3,4/)
309 gtria(:, 1, 5) = (/1,6,5/)
310 gtria(:, 2, 5) = (/1,5,4/)
311 gtria(:, 3, 5) = (/1,3,4/)
312 gtria(:, 4, 5) = (/1,2,3/)
314 gtria(:, 1, 6) = (/2,3,4/)
315 gtria(:, 2, 6) = (/2,4,5/)
316 gtria(:, 3, 6) = (/2,5,1/)
317 gtria(:, 4, 6) = (/1,5,6/)
319 gtria(:, 1, 7) = (/2,3,4/)
320 gtria(:, 2, 7) = (/2,4,5/)
321 gtria(:, 3, 7) = (/2,5,1/)
322 gtria(:, 4, 7) = (/1,5,6/)
324 gtria(:, 1, 8) = (/1,5,4/)
325 gtria(:, 2, 8) = (/1,5,6/)
326 gtria(:, 3, 8) = (/1,6,2/)
327 gtria(:, 4, 8) = (/2,3,6/)
333 strcode( 1) =
'TETRA 1 '
334 strcode( 2) =
'TETRA 3 '
335 strcode( 3) =
'TETRA 6 '
336 strcode( 4) =
'TETRA 8 '
337 strcode( 5) =
'TETRA 2 '
338 strcode( 6) =
'TETRA 4 '
339 strcode( 7) =
'TETRA 5 '
340 strcode( 8) =
'TETRA 7 '
343 strcode( 9) =
'PENTA 1-2 '
344 strcode(10) =
'PENTA 1-4 '
345 strcode(11) =
'PENTA 1-5 '
346 strcode(12) =
'PENTA 2-3 '
347 strcode(13) =
'PENTA 3-4 '
348 strcode(14) =
'PENTA 3-7 '
349 strcode(15) =
'PENTA 2-6 '
350 strcode(16) =
'PENTA 5-6 '
351 strcode(17) =
'PENTA 6-7 '
352 strcode(18) =
'PENTA 4-8 '
353 strcode(19) =
'PENTA 5-8 '
354 strcode(20) =
'PENTA 7-8 '
357 strcode(21) =
'POLY3 1-4-3 '
358 strcode(22) =
'POLY3 2-1-4 '
359 strcode(23) =
'POLY3 3-2-1 '
360 strcode(24) =
'POLY3 4-3-2 '
361 strcode(25) =
'POLY3 3-4-8 '
362 strcode(26) =
'POLY3 4-8-7 '
363 strcode(27) =
'POLY3 7-3-4 '
364 strcode(28) =
'POLY3 8-7-3 '
365 strcode(29) =
'POLY3 5-6-7 '
366 strcode(30) =
'POLY3 6-7-8 '
367 strcode(31) =
'POLY3 7-8-5 '
368 strcode(32) =
'POLY3 8-5-6 '
369 strcode(33) =
'POLY3 1-2-6 '
370 strcode(34) =
'POLY3 2-6-5 '
371 strcode(35) =
'POLY3 5-1-2 '
372 strcode(36) =
'POLY3 6-5-1 '
373 strcode(37) =
'POLY3 2-3-7 '
374 strcode(38) =
'POLY3 3-7-6 '
375 strcode(39) =
'POLY3 6-2-3 '
376 strcode(40) =
'POLY3 7-6-2 '
377 strcode(41) =
'POLY3 1-5-8 '
378 strcode(42) =
'POLY3 4-1-5 '
379 strcode(43) =
'POLY3 5-8-4 '
380 strcode(44) =
'POLY3 8-4-1 '
383 strcode(45) =
'HEXAE R+ '
384 strcode(46) =
'HEXAE R- '
385 strcode(47) =
'HEXAE S+ '
386 strcode(48) =
'HEXAE S- '
387 strcode(49) =
'HEXAE T+ '
388 strcode(50) =
'HEXAE T- '
391 strcode(51) =
'POLY4 1-2-6-3 '
392 strcode(52) =
'POLY4 4-8-7-5 '
393 strcode(53) =
'POLY4 3-4-8-1 '
394 strcode(54) =
'POLY4 5-6-7-5 '
395 strcode(55) =
'POLY4 4-3-2-7 '
396 strcode(56) =
'POLY4 2-3-7-4 '
397 strcode(57) =
'POLY4 4-1-2-5 '
398 strcode(58) =
'POLY4 8-7-3-6 '
401 strcode(59) =
'POLY4A 4-5 '
402 strcode(60) =
'POLY4A 2-6 '
403 strcode(61) =
'POLY4A 4-6 '
404 strcode(62) =
'POLY4A 2-5 '
405 strcode(63) =
'POLY4A 3-6 '
406 strcode(64) =
'POLY4A 1-5 '
407 strcode(65) =
'POLY4A 3-5 '
408 strcode(66) =
'POLY4A 1-6 '
409 strcode(67) =
'POLY4A 3-4 '
410 strcode(68) =
'POLY4A 1-2 '
411 strcode(69) =
'POLY4A 2-3 '
412 strcode(70) =
'POLY4A 1-4 '
415 strcode(71) =
'POLY4B 4-5 '
416 strcode(72) =
'POLY4B 2-6 '
417 strcode(73) =
'POLY4B 4-6 '
418 strcode(74) =
'POLY4B 2-5 '
419 strcode(75) =
'POLY4B 3-6 '
420 strcode(76) =
'POLY4B 1-5 '
421 strcode(77) =
'POLY4B 3-5 '
422 strcode(78) =
'POLY4B 1-6 '
423 strcode(79) =
'POLY4B 3-4 '
424 strcode(80) =
'POLY4B 1-2 '
425 strcode(81) =
'POLY4B 2-3 '
426 strcode(82) =
'POLY4B 1-4 '
429 strcode(83) =
'POLYC R+.04 '
430 strcode(84) =
'POLYC R+.07 '
431 strcode(85) =
'POLYC R+.09 '
432 strcode(86) =
'POLYC R+.06 '
433 strcode(87) =
'POLYC R-.02 '
434 strcode(88) =
'POLYC R-.03 '
435 strcode(89) =
'POLYC R-.11 '
436 strcode(90) =
'POLYC R-.10 '
437 strcode(91) =
'POLYC S+.01 '
438 strcode(92) =
'POLYC S+.03 '
439 strcode(93) =
'POLYC S+.08 '
440 strcode(94) =
'POLYC S+.07 '
441 strcode(95) =
'POLYC S-.05 '
442 strcode(96) =
'POLYC S-.10 '
443 strcode(97) =
'POLYC S-.12 '
444 strcode(98) =
'POLYC S-.06 '
445 strcode(99) =
'POLYC T+.05 '
446 strcode(100) =
'POLYC T+.04 '
447 strcode(101) =
'POLYC T+.01 '
448 strcode(102) =
'POLYC T+.02 '
449 strcode(103) =
'POLYC T-.12 '
450 strcode(104) =
'POLYC T-.09 '
451 strcode(105) =
'POLYC T-.08 '
452 strcode(106) =
'POLYC T-.11 '
458 gface(:, 1)=(/1,6,4,0,0,0/)
459 gface(:, 2)=(/2,1,5,0,0,0/)
460 gface(:, 3)=(/4,3,5,0,0,0/)
461 gface(:, 4)=(/2,3,6,0,0,0/)
462 gface(:, 5)=(/5,1,4,0,0,0/)
463 gface(:, 6)=(/6,1,2,0,0,0/)
464 gface(:, 7)=(/6,3,4,0,0,0/)
465 gface(:, 8)=(/5,3,2,0,0,0/)
468 gface(:, 9)=(/6,5,4,1,0,0/)
469 gface(:,10)=(/4,2,1,6,0,0/)
470 gface(:,11)=(/1,3,6,4,0,0/)
471 gface(:,12)=(/4,2,5,1,0,0/)
472 gface(:,13)=(/5,6,2,1,0,0/)
473 gface(:,14)=(/1,3,5,2,0,0/)
474 gface(:,15)=(/1,3,4,5,0,0/)
475 gface(:,16)=(/6,5,3,4,0,0/)
476 gface(:,17)=(/4,2,3,5,0,0/)
477 gface(:,18)=(/1,3,2,6,0,0/)
478 gface(:,19)=(/4,2,6,3,0,0/)
479 gface(:,20)=(/5,6,3,2,0,0/)
482 gface(:,21)=(/1,5,2,6,4,0/)
483 gface(:,22)=(/1,2,6,4,5,0/)
484 gface(:,23)=(/1,6,4,5,2,0/)
485 gface(:,24)=(/1,4,5,2,6,0/)
486 gface(:,25)=(/2,3,6,1,5,0/)
487 gface(:,26)=(/2,5,3,6,1,0/)
488 gface(:,27)=(/2,6,1,5,3,0/)
489 gface(:,28)=(/2,1,5,3,6,0/)
490 gface(:,29)=(/3,2,5,4,6,0/)
491 gface(:,30)=(/3,6,2,5,4,0/)
492 gface(:,31)=(/3,4,6,2,5,0/)
493 gface(:,32)=(/3,5,4,6,2,0/)
494 gface(:,33)=(/4,3,5,1,6,0/)
495 gface(:,34)=(/4,6,3,5,1,0/)
496 gface(:,35)=(/4,5,1,6,3,0/)
497 gface(:,36)=(/4,1,6,3,5,0/)
498 gface(:,37)=(/5,3,2,1,4,0/)
499 gface(:,38)=(/5,4,3,2,1,0/)
500 gface(:,39)=(/5,2,1,4,3,0/)
501 gface(:,40)=(/5,1,4,3,2,0/)
502 gface(:,41)=(/6,2,3,4,1,0/)
503 gface(:,42)=(/6,3,4,1,2,0/)
504 gface(:,43)=(/6,1,2,3,4,0/)
505 gface(:,44)=(/6,4,1,2,3,0/)
508 gface(:,45)=(/5,3,2,1,4,0/)
509 gface(:,46)=(/6,3,4,1,2,0/)
510 gface(:,47)=(/4,3,5,1,6,0/)
511 gface(:,48)=(/2,6,1,5,3,0/)
512 gface(:,49)=(/3,4,6,2,5,0/)
513 gface(:,50)=(/1,4,5,2,6,0/)
516 gface(:,51)=(/6,5,1,4,2,3/)
517 gface(:,52)=(/1,3,6,2,4,5/)
518 gface(:,53)=(/5,6,1,2,4,3/)
519 gface(:,54)=(/6,5,4,3,1,2/)
520 gface(:,55)=(/6,5,2,1,3,4/)
521 gface(:,56)=(/4,2,1,5,6,3/)
522 gface(:,57)=(/2,4,1,6,5,3/)
523 gface(:,58)=(/6,5,3,2,4,1/)
526 gface(:,59)=(/6,3,5,2,1,4/)
527 gface(:,60)=(/4,1,2,5,3,6/)
528 gface(:,61)=(/5,1,6,2,3,4/)
529 gface(:,62)=(/4,3,2,6,1,5/)
530 gface(:,63)=(/5,4,6,1,2,3/)
531 gface(:,64)=(/6,4,5,3,2,1/)
532 gface(:,65)=(/1,4,3,6,2,5/)
533 gface(:,66)=(/3,4,1,5,2,6/)
534 gface(:,67)=(/1,6,3,2,5,4/)
535 gface(:,68)=(/4,5,2,3,5,1/)
536 gface(:,69)=(/4,5,2,1,5,3/)
537 gface(:,70)=(/2,6,4,3,5,1/)
540 gface(:,71)=(/6,1,5,2,3,4/)
541 gface(:,72)=(/5,1,6,4,3,2/)
542 gface(:,73)=(/2,1,4,5,3,6/)
543 gface(:,74)=(/4,1,2,6,3,5/)
544 gface(:,75)=(/1,4,3,5,2,6/)
545 gface(:,76)=(/3,4,1,6,2,5/)
546 gface(:,77)=(/6,4,5,1,2,3/)
547 gface(:,78)=(/5,4,6,3,2,1/)
548 gface(:,79)=(/1,5,3,2,6,4/)
549 gface(:,80)=(/4,6,2,3,5,1/)
550 gface(:,81)=(/1,6,3,4,5,2/)
551 gface(:,82)=(/3,6,1,2,5,4/)
554 gface(:,83) =(/5,3,2,4,1,0/)
555 gface(:,84) =(/5,2,1,3,4,0/)
556 gface(:,85) =(/5,1,4,2,3,0/)
557 gface(:,86) =(/5,4,3,1,2,0/)
558 gface(:,87) =(/6,3,2,4,1,0/)
559 gface(:,88) =(/6,2,1,3,4,0/)
560 gface(:,89) =(/6,1,4,2,3,0/)
561 gface(:,90) =(/6,4,3,1,2,0/)
562 gface(:,91) =(/4,3,5,6,1,0/)
563 gface(:,92) =(/4,5,1,3,6,0/)
564 gface(:,93) =(/4,1,6,5,3,0/)
565 gface(:,94) =(/4,6,3,1,5,0/)
566 gface(:,95) =(/2,3,5,6,1,0/)
567 gface(:,96) =(/2,5,1,3,6,0/)
568 gface(:,97) =(/2,1,6,5,3,0/)
569 gface(:,98) =(/2,6,3,1,5,0/)
570 gface(:,99) =(/1,4,5,6,2,0/)
571 gface(:,100)=(/1,5,2,4,6,0/)
572 gface(:,101)=(/1,2,6,5,4,0/)
573 gface(:,102)=(/1,6,4,2,5,0/)
574 gface(:,103)=(/3,4,5,6,2,0/)
575 gface(:,104)=(/3,6,4,2,5,0/)
576 gface(:,105)=(/3,2,6,5,4,0/)
577 gface(:,106)=(/3,5,2,4,6,0/)
581 DO i=01,08 ;gnpt(:,i) = (/3,3,3,0,0,0/);
ENDDO
582 DO i=09,20 ;gnpt(:,i) = (/3,3,4,4,0,0/);
ENDDO
583 DO i=21,44 ;gnpt(:,i) = (/5,3,4,4,3,0/);
ENDDO
584 DO i=45,50 ;gnpt(:,i) = (/4,4,4,4,4,0/);
ENDDO
585 DO i=51,58 ;gnpt(:,i) = (/3,5,5,5,3,3/);
ENDDO
586 DO i=59,70 ;gnpt(:,i) = (/3,4,5,3,4,5/);
ENDDO
587 DO i=71,82 ;gnpt(:,i) = (/3,4,5,3,4,5/);
ENDDO
588 DO i=83,106;gnpt(:,i) = (/6,4,4,4,3,3/);
ENDDO
590 DO i=01,08;gnnod(:,i) = (/1,1,1,0,0,0/);
ENDDO
591 DO i=09,20;gnnod
ENDDO
592 DO i=21,44;gnnod(:,i) = (/3,1,2,2,1,0/);
ENDDO
593 DO i=45,50;gnnod(:,i) = (/4,2,2,2,2,0/);
ENDDO
594 DO i=51,58;gnnod(:,i) = (/1,3,3,3,1,1/);
ENDDO
595 DO i=59,70;gnnod(:,i) = (/1,2,3,1,2,3/);
ENDDO
596 DO i=71,82;gnnod(:,i) = (/1,2,3,1,2,3/);
ENDDO
597 DO i=83,106;gnnod(:,i) = (/4,2,2,2,2,0/);
ENDDO
602 gcorner(:, 1)=(/1,2,3,1,0,0,0/) * -1
603 gcorner(:, 2)=(/6,5,4,6,0,0,0/) * -1
604 gcorner(:, 3)=(/7,8,9,7,0,0,0/) * -1
605 gcorner(:, 4)=(/10,12,11,10,0,0,0/) * -1
606 gcorner(:, 5)=(/7,4,1,7,0,0,0/)
607 gcorner(:, 6)=(/10,2,5,10,0,0,0/)
608 gcorner(:, 7)=(/3,11,8,3,0,0,0/)
609 gcorner(:, 8)=(/6,9,12,6,0,0,0/)
612 gcorner(:, 9)=(/-2,-3,+7,+4,-2,0,0/)
613 gcorner(:,10)=(/-3,-1,+5,+10,-3,0,0/)
614 gcorner(:,11)=(/-1,-2,+11,+8,-1,0,0/)
615 gcorner(:,12)=(/+1,+7,-6,-5,+1,0,0/)
616 gcorner(:,13)=(/-4,-6,+10,+2,-4,0,0/)
617 gcorner(:,14)=(/-5,-4,+9,+12,-5,0,0/)
618 gcorner(:,15)=(/+4,+1,-8,-9,+4,0,0/)
619 gcorner(:,16)=(/+3,+11,-9,-7,+3,0,0/)
620 gcorner(:,17)=(/-7,-8,+12,+6,-7,0,0/)
621 gcorner(:,18)=(/+2,+5,-12,-11,+2,0,0/)
622 gcorner(:,19)=(/+8,+3,-10,-12,+8,0,0/)
623 gcorner(:,20)=(/+6,+9,-11,-10,+6,0,0/)
626 gcorner(:,21)=(/-3,-1,-4,-6,+10,-3,0/)
627 gcorner(:,22)=(/+7,+4,+5,+10,-3,+7,0/)
628 gcorner(:,23)=(/-6,-5,-2,-3,+7,-6,0/)
629 gcorner(:,24)=(/+10,+2,+1,+7,-6,+10,0/)
630 gcorner(:,25)=(/-4,-6,-12,-11,+2,-4,0/)
631 gcorner(:,26)=(/+2,+5,+6,+9,-11,+2,0/)
632 gcorner(:,27)=(/+9,+12,+10,+2,-4,+9,0/)
633 gcorner(:,28)=(/-11,-10,-5,-4,+9,-11,0/)
634 gcorner(:,29)=(/+3,+11,+12,+6,-7,+3,0/)
635 gcorner(:,30)=(/-7,-8,-11,-10,+6,-7,0/)
636 gcorner(:,31)=(/+6,+9,+8,+3,-10,+6,0/)
637 gcorner(:,32)=(/-10,-12,-9,-7,+3,-10,0/)
638 gcorner(:,33)=(/-2,-3,-8,-9,+4,-2,0/)
640 gcorner(:,35)=(/+11,8,+7,+4,-2,+11,0/)
641 gcorner(:,36)=(/-9,-7,-1,-2,+11,-9,0/)
642 gcorner(:,37)=(/+1,+7,+9,+12,-5,+1,0/)
643 gcorner(:,38)=(/-5,-4,-7,-8,+12,-5,0/)
644 gcorner(:,39)=(/-8,-9,-6,-5,+1,-8,0/)
645 gcorner(:,40)=(/+12,+6,+4,+1,-8,+12,0/)
646 gcorner(:,41)=(/-1,-2,-10,-12,+8,-1,0/)
647 gcorner(:,42)=(/+5,+10,+11,+8,-1,+5,0/)
648 gcorner(:,43)=(/+8,+3,+2,+5,-12,+8,0/)
649 gcorner(:,44)=(/-12,-11,-3,-1,+5,-12,0/)
652 gcorner(:,45)=(/-8 ,+12,-5,+1,-8 ,0 ,0/)
653 gcorner(:,46)=(/-12,+8 ,-1,+5,-12,0 ,0/)
654 gcorner(:,47)=(/+11,-9,+4,-2,+11,0,0/)
655 gcorner(:,48)=(/-11,+2,-4,+9,-11,0,0/)
656 gcorner(:,49)=(/-7,+3,-10,+6,-7,0,0/)
657 gcorner(:,50)=(/-3,+7,-6,+10,-3,0,0/)
660 gcorner(:,51)=(/-02,-03,-08,-09,-06,-05,-02/)
661 gcorner(:,52)=(/+02,+05,+06,+09,+08,+03,+02/)
662 gcorner(:,53)=(/-04,-06,-12,-11,-03,-01,-04/)
663 gcorner(:,54)=(/+03,+11,+12,+06,+04,+01,+03/)
664 gcorner(:,55)=(/+10,+02,+01,+07,+09,+12,+10/)
665 gcorner(:,56)=(/+01,+07,+09,+12,+10,+02,+01/)
666 gcorner(:,57)=(/+05,+10,+11,+08,+07,+04,+05/)
667 gcorner(:,58)=(/-11,-10,-05,-04,-07,-08,-11/)
670 gcorner(:,59)=(/+11,-09,-06,-05,+01,+03,0/)
671 gcorner(:,60)=(/-01,+05,+06,+09,-11,-03,0/)
672 gcorner(:,61)=(/+04,-02,-10,-12,+08,+07,0/)
673 gcorner(:,62)=(/-08,+12,+10,+02,-04,-07,0/)
674 gcorner(:,63)=(/-07,+03,+02,+05,-12,-09,0/)
675 gcorner(:,64)=(/-03,+07,+09,+12,-05,-02,0/)
676 gcorner(:,65)=(/+01,-08,-11,-10,+06,+04,0/)
677 gcorner(:,66)=(/+08,-01,-04,-06,+10,+11,0/)
678 gcorner(:,67)=(/-02,+11,+12,+06,-07,-01,0/)
679 gcorner(:,68)=(/+07,-06,-12,-11,+02,+01,0/)
680 gcorner(:,69)=(/+03,-10,-05,-04,+09,+08,0/)
681 gcorner(:,70)=(/+10,-03,-08,-09,+04,+05,0/)
684 gcorner(:,71)=(/-02,+04,+06,+12,-08,-03,0/)
685 gcorner(:,72)=(/-04,+02,+03,+08,-12,-06,0/)
686 gcorner(:,73)=(/+05,-01,-07,-09,+11,+10,0/)
687 gcorner(:,74)=(/+01,-05,-10,-11,+09,+07,0/)
688 gcorner(:,75)=(/-01,+08,+09,+06,-10,-02,0/)
689 gcorner(:,76)=(/-08,+01,+02,+10,-06,-09,0/)
690 gcorner(:,77)=(/+03,-07,-04,-05,+12,+11,0/)
691 gcorner(:,78)=(/+07,-03,-11,-12,+05,+04,0/)
692 gcorner(:,79)=(/+04,-09,-12,-10,+03,+01,0/)
693 gcorner(:,80)=(/-03,+10,+12,+09,-04,-01,0/)
694 gcorner(:,81)=(/+02,-11,-08,-07,+06,+05,0/)
695 gcorner(:,82)=(/+11,-02,-05,-06,+07,+08,0/)
698 gcorner(:,83) =(/-08,+12,-05,+01,+04,-04,0/)
699 gcorner(:,84) =(/+12,-05,+01,-08,-07,+07,0/)
700 gcorner(:,85) =(/-05,+01,-08,+12,+09,-09,0/)
701 gcorner(:,86) =(/+01,-08,+12,-05,-06,+06,0/)
702 gcorner(:,87) =(/+08,-12,+05,-01,-02,+02,0/)
703 gcorner(:,88) =(/-12,+05,-01,+08,+03,-03,0/)
704 gcorner(:,89) =(/+05,-01,+08,-12,-11,+11,0/)
705 gcorner(:,90) =(/-01,+08,-12,+05,+10,-10,0/)
706 gcorner(:,91) =(/+11,-09,+04,-02,-01,+01,0/)
707 gcorner(:,92) =(/-09,+04,-02,+11,+03,-03,0/)
708 gcorner(:,93) =(/+04,-02,+11,-09,-08,+08,0/)
709 gcorner(:,94) =(/-02,+11,-09,+04,+07,-07,0/)
710 gcorner(:,95) =(/-11,+09,-04,+02,+05,-05,0/)
711 gcorner(:,96) =(/+09,-04,+02,-11,-10,+10,0/)
712 gcorner(:,97) =(/-04,+02,-11,+09,+12,-12,0/)
713 gcorner(:,98) =(/+02,-11,+09,-04,-04,+06,0/)
714 gcorner(:,99) =(/-03,+07,-06,+10,+05,-05,0/)
715 gcorner(:,100)=(/+07,-06,+10,-03,-04,+04,0/)
716 gcorner(:,101)=(/-06,+10,-03,+07,+01,-01,0/)
717 gcorner(:,102)=(/+10,-03,+07,-06,-02,+02,0/)
718 gcorner(:,103)=(/+03,-07,+06,-10,-12,+12,0/)
719 gcorner(:,104)=(/-07,+06,-10,+03,+09,-09,0/)
720 gcorner(:,105)=(/+06,-10,+03,-07,-08,+08,0/)
721 gcorner(:,106)=(/-10,+03,-07,+06,+11,-11,0/)
727 gnode(:, 1)=(/1,0,0,0/) ; bgnode( 1)=b
'10000000'
728 gnode(:, 2)=(/3,0,0,0/) ; bgnode( 2)=b
'00100000'
729 gnode(:, 3)=(/6,0,0,0/) ; bgnode( 3)=b
'00000100'
730 gnode(:, 4)=(/8,0,0,0/) ; bgnode( 4)=b'00000001
'
731 Gnode(:, 5)=(/2,0,0,0/) ; bGnode( 5)=B'01000000
'
732 Gnode(:, 6)=(/4,0,0,0/) ; bGnode( 6)=B'00010000
'
733 Gnode(:, 7)=(/5,0,0,0/) ; bGnode( 7)=B'00001000
'
734 Gnode(:, 8)=(/7,0,0,0/) ; bGnode( 8)=B'00000010
'
735 !----------------------------------------------------!
737 Gnode(:, 9)=(/1,2,0,0/) ; bGnode( 9)=B'11000000
'
738 Gnode(:,10)=(/1,4,0,0/) ; bGnode(10)=B'10010000
'
739 Gnode(:,11)=(/1,5,0,0/) ; bGnode(11)=B'10001000
'
740 Gnode(:,12)=(/2,3,0,0/) ; bGnode(12)=B'01100000
'
741 Gnode(:,13)=(/3,4,0,0/) ; bGnode(13)=B'00110000
'
742 Gnode(:,14)=(/3,7,0,0/) ; bGnode(14)=B'00100010
'
743 Gnode(:,15)=(/2,6,0,0/) ; bGnode(15)=B'01000100
'
744 Gnode(:,16)=(/5,6,0,0/) ; bGnode(16)=B'00001100
'
745 Gnode(:,17)=(/6,7,0,0/) ; bGnode(17)=B'00000110
'
746 Gnode(:,18)=(/4,8,0,0/) ; bGnode(18)=B'00010001
'
747 Gnode(:,19)=(/5,8,0,0/) ; bGnode(19)=B'00001001
'
748 Gnode(:,20)=(/7,8,0,0/) ; bGnode(20)=B'00000011
'
749 !----------------------------------------------------!
751 Gnode(:,21) =(/1,4,3,0/) ; bGnode(21)=B'10110000
'
752 Gnode(:,22) =(/2,1,4,0/) ; bGnode(22)=B'11010000
'
753 Gnode(:,23) =(/3,2,1,0/) ; bGnode(23)=B'11100000
'
754 Gnode(:,24) =(/4,3,2,0/) ; bGnode(24)=B'01110000
'
755 Gnode(:,25) =(/3,4,8,0/) ; bGnode(25)=B'00110001
'
756 Gnode(:,26) =(/4,8,7,0/) ; bGnode(26)=B'00010011
'
757 Gnode(:,27) =(/7,3,4,0/) ; bGnode(27)=B'00110010
'
758 Gnode(:,28) =(/8,7,3,0/) ; bGnode(28)=B'00100011
'
759 Gnode(:,29) =(/5,6,7,0/) ; bGnode(29)=B'00001110
'
760 Gnode(:,30) =(/6,7,8,0/) ; bGnode(30)=B'00000111
'
761 Gnode(:,31) =(/7,8,5,0/) ; bGnode(31)=B'00001011
'
762 Gnode(:,32) =(/8,5,6,0/) ; bGnode(32)=B'00001101
'
763 Gnode(:,33) =(/1,2,6,0/) ; bGnode(33)=B'11000100
'
764 Gnode(:,34) =(/2,6,5,0/) ; bGnode(34)=B'01001100
'
765 Gnode(:,35) =(/5,1,2,0/) ; bGnode(35)=B'11001000
'
766 Gnode(:,36) =(/6,5,1,0/) ; bGnode(36)=B'10001100
'
767 Gnode(:,37) =(/2,3,7,0/) ; bGnode(37)=B'01100010
'
768 Gnode(:,38) =(/3,7,6,0/) ; bGnode(38)=B'00100110
'
769 Gnode(:,39) =(/6,2,3,0/) ; bGnode(39)=B'01100100
'
770 Gnode(:,40) =(/7,6,2,0/) ; bGnode(40)=B'01000110
'
771 Gnode(:,41) =(/1,5,8,0/) ; bGnode(41)=B'10001001
'
772 Gnode(:,42) =(/4,1,5,0/) ; bGnode(42)=B'10011000
'
773 Gnode(:,43) =(/5,8,4,0/) ; bGnode(43)=B'00011001
'
774 Gnode(:,44) =(/8,4,1,0/) ; bGnode(44)=B'10010001
'
775 !----------------------------------------------------!
777 Gnode(:,45)=(/6,7,3,2/) ; bGnode(45)=B'01100110
'
778 Gnode(:,46)=(/8,5,1,4/) ; bGnode(46)=B'10011001
'
779 Gnode(:,47)=(/5,6,2,1/) ; bGnode(47)=B'11001100
'
780 Gnode(:,48)=(/8,4,3,7/) ; bGnode(48)=B'00110011
'
781 Gnode(:,49)=(/6,5,8,7/) ; bGnode(49)=B'00001111
'
782 Gnode(:,50)=(/1,2,3,4/) ; bGnode(50)=B'11110000
'
783 !----------------------------------------------------!
785 Gnode(:,51)=(/1,2,6,3/) ; bGnode(51)=B'11100100
'
786 Gnode(:,52)=(/4,8,7,5/) ; bGnode(52)=B'00011011
'
787 Gnode(:,53)=(/3,4,8,1/) ; bGnode(53)=B'10110001
'
788 Gnode(:,54)=(/5,6,7,2/) ; bGnode(54)=B'01001110
'
789 Gnode(:,55)=(/4,3,2,7/) ; bGnode(55)=B'01110010
'
790 Gnode(:,56)=(/2,3,7,4/) ; bGnode(56)=B'01110010
'
791 Gnode(:,57)=(/4,1,5,2/) ; bGnode(57)=B'11011000
'
792 Gnode(:,58)=(/8,7,3,6/) ; bGnode(58)=B'00100111
'
793 !----------------------------------------------------!
795 Gnode(:,59)=(/5,6,2,3/) ; bGnode(59)=B'01101100
'
796 Gnode(:,60)=(/1,4,8,7/) ; bGnode(60)=B'10010011
'
797 Gnode(:,61)=(/2,1,5,8/) ; bGnode(61)=B'11001001
'
798 Gnode(:,62)=(/6,7,3,4/) ; bGnode(62)=B'00110110
'
799 Gnode(:,63)=(/6,5,8,4/) ; bGnode(63)=B'00011101
'
800 Gnode(:,64)=(/1,2,3,7/) ; bGnode(64)=B'11100010
'
801 Gnode(:,65)=(/2,6,7,8/) ; bGnode(65)=B'01000111
'
802 Gnode(:,66)=(/5,1,4,3/) ; bGnode(66)=B'10111000
'
803 Gnode(:,67)=(/1,5,6,7/) ; bGnode(67)=B'10001110
'
804 Gnode(:,68)=(/2,3,4,8/) ; bGnode(68)=B'01110001
'
805 Gnode(:,69)=(/5,8,7,3/) ; bGnode(69)=B'00101011
'
806 Gnode(:,70)=(/4,1,2,6/) ; bGnode(70)=B'11010100
'
807 !----------------------------------------------------!
809 Gnode(:,71)=(/1,2,6,7/) ; bGnode(71)=B'11000110
'
810 Gnode(:,72)=(/3,4,8,5/) ; bGnode(72)=B'00111001
'
811 Gnode(:,73)=(/4,1,5,6/) ; bGnode(73)=B'10011100
'
812 Gnode(:,74)=(/2,3,7,8/) ; bGnode(74)=B'01100011
'
813 Gnode(:,75)=(/1,5,8,7/) ; bGnode(75)=B'10001011
'
814 Gnode(:,76)=(/6,2,3,4/) ; bGnode(76)=B'01110100
'
815 Gnode(:,77)=(/5,6,7,4/) ; bGnode(77)=B'00011110
'
816 Gnode(:,78)=(/2,1,4,8/) ; bGnode(78)=B'11010001
'
817 Gnode(:,79)=(/2,6,5,8/) ; bGnode(79)=B'01001101
'
818 Gnode(:,80)=(/1,4,3,7/) ; bGnode(80)=B'10110010
'
819 Gnode(:,81)=(/4,8,7,6/) ; bGnode(81)=B'00010111
'
820 Gnode(:,82)=(/5,1,2,3/) ; bGnode(82)=B'11101000
'
821 !----------------------------------------------------!
823 Gnode(:,83) =(/6,7,3,2/) ; bGnode(83) =B'01100110
' !POLYC R+.4
824 Gnode(:,84) =(/7,3,2,6/) ; bGnode(84) =B'01100110
' !POLYC R+.7
825 Gnode(:,85) =(/3,2,6,7/) ; bGnode(85) =B'01100110
' !POLYC R+.9
826 Gnode(:,86) =(/2,6,7,3/) ; bGnode(86) =B'01100110
' !POLYC R+.6
827 Gnode(:,87) =(/5,8,4,1/) ; bGnode(87) =B'10011001
' !POLYC R-.2
828 Gnode(:,88) =(/8,4,1,5/) ; bGnode(88) =B'10011001
' !POLYC R-.3
829 Gnode(:,89) =(/4,1,5,8/) ; bGnode(89) =B'10011001
' !POLYC R-.11
830 Gnode(:,90) =(/1,5,8,4/) ; bGnode(90) =B'10011001
' !POLYC R-.10
831 Gnode(:,91) =(/5,6,2,1/) ; bGnode(91) =B'11001100
' !POLYC S+.1
832 Gnode(:,92) =(/6,2,1,5/) ; bGnode(92) =B'11001100
' !POLYC S+.3
833 Gnode(:,93) =(/2,1,5,6/) ; bGnode(93) =B'11001100
' !POLYC S+.8
834 Gnode(:,94) =(/1,5,6,2/) ; bGnode(94) =B'11001100
' !POLYC S+.7
835 Gnode(:,95) =(/8,7,3,4/) ; bGnode(95) =B'00110011
' !POLYC S-.5
836 Gnode(:,96) =(/7,3,4,8/) ; bGnode(96) =B'00110011
' !POLYC S-.10
837 Gnode(:,97) =(/3,4,8,7/) ; bGnode(97) =B'00110011
' !POLYC S-.12
838 Gnode(:,98) =(/4,8,7,3/) ; bGnode(98) =B'00110011
' !POLYC S-.6
839 Gnode(:,99) =(/1,2,3,4/) ; bGnode(99) =B'11110000
' !POLYC T+.5
840 Gnode(:,100)=(/2,3,4,1/) ; bGnode(100) =B'11110000
' !POLYC T+.4
841 Gnode(:,101)=(/3,4,1,2/) ; bGnode(101) =B'11110000
' !POLYC T+.1
842 Gnode(:,102)=(/4,1,2,3/) ; bGnode(102) =B'11110000
' !POLYC T+.2
843 Gnode(:,103)=(/5,6,7,8/) ; bGnode(103) =B'00001111
' !POLYC T-.12
844 Gnode(:,104)=(/8,5,6,7/) ; bGnode(104) =B'00001111
' !POLYC T-.9
845 Gnode(:,105)=(/7,8,5,6/) ; bGnode(105) =B'00001111
' !POLYC T-.8
846 Gnode(:,106)=(/6,7,8,5/) ; bGnode(106) =B'00001111
' !POLYC T-.11
848 !----------------------------------------------------!
849 ! NODE TAGS FOR EACH OF 58 COMBINATIONS !
850 !----------------------------------------------------!
853 ! '1234567890123456789012345678901234567890123456789012345678
'/
881 INT22_BUF%iFACE(1:2,1,1)=(/1,3/); INT22_BUF%iFACE(1:2,2,1)=(/2,4/)
882 INT22_BUF%iFACE(1:2,1,2)=(/3,8/); INT22_BUF%iFACE(1:2,2,2)=(/4,7/)
883 INT22_BUF%iFACE(1:2,1,3)=(/5,7/); INT22_BUF%iFACE(1:2,2,3)=(/6,8/)
884 INT22_BUF%iFACE(1:2,1,4)=(/1,6/); INT22_BUF%iFACE(1:2,2,4)=(/2,5/)
885 INT22_BUF%iFACE(1:2,1,5)=(/2,7/); INT22_BUF%iFACE(1:2,2,5)=(/3,6/)
886 INT22_BUF%iFACE(1:2,1,6)=(/4,5/); INT22_BUF%iFACE(1:2,2,6)=(/1,8/)
888 !face_id -> (node_id, node_id, node_id, node_id)
889 INT22_BUF%nodFACE(1,1:4) = (/1,2,3,4/)
890 INT22_BUF%nodFACE(2,1:4) = (/4,3,7,8/)
891 INT22_BUF%nodFACE(3,1:4) = (/8,7,6,5/)
892 INT22_BUF%nodFACE(4,1:4) = (/5,6,2,1/)
893 INT22_BUF%nodFACE(5,1:4) = (/3,2,6,7/)
894 INT22_BUF%nodFACE(6,1:4) = (/5,1,4,8/)
897 INT22_BUF%bNodFACE(01) = B'000011110
' !last digit is position 0 and is unused
898 INT22_BUF%bNodFACE(02) = B'110011000
'
899 INT22_BUF%bNodFACE(03) = B'111100000
'
900 INT22_BUF%bNodFACE(04) = B'001100110
'
901 INT22_BUF%bNodFACE(05) = B'011001100
'
902 INT22_BUF%bNodFACE(06) = B'100110010
'
904 !(node_id, face_id) -> Is_On_face
905 INT22_BUF%IsNodeOnFace(1,1:6) = (/.TRUE. ,.FALSE.,.FALSE.,.TRUE .,.FALSE.,.TRUE. /)
906 INT22_BUF%IsNodeOnFace(2,1:6) = (/.TRUE. ,.FALSE.,.FALSE.,.TRUE. ,.TRUE. ,.FALSE./)
907 INT22_BUF%IsNodeOnFace(3,1:6) = (/.TRUE. ,.TRUE. ,.FALSE.,.FALSE.,.TRUE. ,.FALSE./)
908 INT22_BUF%IsNodeOnFace(4,1:6) = (/.TRUE. ,.TRUE. ,.FALSE.,.FALSE.,.FALSE.,.TRUE. /)
909 INT22_BUF%IsNodeOnFace(5,1:6) = (/.FALSE.,.FALSE.,.TRUE. ,.TRUE. ,.FALSE.,.TRUE. /)
910 INT22_BUF%IsNodeOnFace(6,1:6) = (/.FALSE.,.FALSE.,.TRUE. ,.TRUE. ,.TRUE. ,.FALSE./)
911 INT22_BUF%IsNodeOnFace(7,1:6) = (/.FALSE.,.TRUE. ,.TRUE. ,.FALSE.,.TRUE. ,.FALSE./)
912 INT22_BUF%IsNodeOnFace(8,1:6) = (/.FALSE.,.TRUE. ,.TRUE. ,.FALSE.,.FALSE.,.TRUE. /)
914 !edge number -> (node_id, node_id)
915 INT22_BUF%iEDGE(1:2, 1)=(/1,2/) ; INT22_BUF%iEDGE(1:2, 4)=(/3,2/);
916 INT22_BUF%iEDGE(1:2, 2)=(/1,4/) ; INT22_BUF%iEDGE(1:2, 5)=(/3,4/);
917 INT22_BUF%iEDGE(1:2, 3)=(/1,5/) ; INT22_BUF%iEDGE(1:2, 6)=(/3,7/);
918 INT22_BUF%iEDGE(1:2, 7)=(/6,2/) ; INT22_BUF%iEDGE(1:2, 10)=(/8,4/);
919 INT22_BUF%iEDGE(1:2, 8)=(/6,5/) ; INT22_BUF%iEDGE(1:2, 11)=(/8,5/);
920 INT22_BUF%iEDGE(1:2, 9)=(/6,7/) ; INT22_BUF%iEDGE(1:2, 12)=(/8,7/);
922! !diagonals Identification (if needed)
923! iEDGE(1:2, 13)=(/1,3/) ; iEDGE(1:2, 16)=(/2,4/);
924! iEDGE(1:2, 14)=(/1,6/) ; iEDGE(1:2, 17)=(/2,5/);
925! iEDGE(1:2, 15)=(/1,8/) ; iEDGE(1:2, 18)=(/2,7/);
927! iEDGE(1:2, 19)=(/3,6/) ; iEDGE(1:2, 21)=(/4,7/)
928! iEDGE(1:2, 20)=(/3,8/) ; iEDGE(1:2, 22)=(/4,5/);
930! iEDGE(1:2, 23)=(/5,7/) ; iEDGE(1:2, 24)=(/6,8/);
932 ! node_id -> 3 adjacent edges
933 INT22_BUF%i22WhichEdge(1, 1:3)=(/-01,-02,-03/)
934 INT22_BUF%i22WhichEdge(2, 1:3)=(/ 01, 04, 07/)
935 INT22_BUF%i22WhichEdge(3, 1:3)=(/-04,-05,-06/)
936 INT22_BUF%i22WhichEdge(4, 1:3)=(/ 02, 05, 10/)
937 INT22_BUF%i22WhichEdge(5, 1:3)=(/ 03, 08, 11/)
938 INT22_BUF%i22WhichEdge(6, 1:3)=(/-07,-08,-09/)
939 INT22_BUF%i22WhichEdge(7, 1:3)=(/ 06, 09, 12/)
940 INT22_BUF%i22WhichEdge(8, 1:3)=(/-10,-11,-12/)
942 ! node_id -> 3 adjacent faces
943 INT22_BUF%iFacesFromNode(1,1:3) = (/ 1,4,6 /)
944 INT22_BUF%iFacesFromNode(2,1:3) = (/ 1,4,5 /)
945 INT22_BUF%iFacesFromNode(3,1:3) = (/ 1,2,5 /)
946 INT22_BUF%iFacesFromNode(4,1:3) = (/ 1,2,6 /)
947 INT22_BUF%iFacesFromNode(5,1:3) = (/ 3,4,6 /)
948 INT22_BUF%iFacesFromNode(6,1:3) = (/ 3,4,5 /)
949 INT22_BUF%iFacesFromNode(7,1:3) = (/ 2,3,5 /)
950 INT22_BUF%iFacesFromNode(8,1:3) = (/ 2,3,6 /)
952 !(face_id,node_id) -> edge_id
953 INT22_BUF%iGetEdge(1,1)=+03; INT22_BUF%iGetEdge(1,2)=-07; INT22_BUF%iGetEdge(1,3)=+06; INT22_BUF%iGetEdge(1,4)=-10
954 INT22_BUF%iGetEdge(2,4)=-02; INT22_BUF%iGetEdge(2,3)=+04; INT22_BUF%iGetEdge(2,7)=-09; INT22_BUF%iGetEdge(2,8)=+11
955 INT22_BUF%iGetEdge(3,8)=+10; INT22_BUF%iGetEdge(3,7)=-06; INT22_BUF%iGetEdge(3,6)=+07; INT22_BUF%iGetEdge(3,5)=-03
956 INT22_BUF%iGetEdge(4,5)=-11; INT22_BUF%iGetEdge(4,6)=+09; INT22_BUF%iGetEdge(4,2)=-04; INT22_BUF%iGetEdge(4,1)=+02
957 INT22_BUF%iGetEdge(5,3)=+05; INT22_BUF%iGetEdge(5,2)=-01; INT22_BUF%iGetEdge(5,6)=+08; INT22_BUF%iGetEdge(5,7)=-12
958 INT22_BUF%iGetEdge(6,5)=-08; INT22_BUF%iGetEdge(6,1)=+01; INT22_BUF%iGetEdge(6,4)=-05; INT22_BUF%iGetEdge(6,8)=+12
960 !(face_id) -> {edge_ids}
961 INT22_BUF%iNormalEdgesList(1,1:4)= (/ +03,+06,-07,-10 /)
962 INT22_BUF%iNormalEdgesList(2,1:4)= (/ -02,+04,-09,+11 /)
963 INT22_BUF%iNormalEdgesList(3,1:4)= (/ -03,-06,+07,+10 /)
964 INT22_BUF%iNormalEdgesList(4,1:4)= (/ +02,-04,+09,-11 /)
965 INT22_BUF%iNormalEdgesList(5,1:4)= (/ -01,+05,+08,-12 /)
966 INT22_BUF%iNormalEdgesList(6,1:4)= (/ +01,-05,-08,+12 /)
969 !(face_id,node_id) -> opposite node
970 INT22_BUF%IGetOppositeNode(1,1)=05; INT22_BUF%IGetOppositeNode(1,2)=06;
971 INT22_BUF%IGetOppositeNode(2,4)=01; INT22_BUF%IGetOppositeNode(2,3)=02;
972 INT22_BUF%IGetOppositeNode(3,8)=04; INT22_BUF%IGetOppositeNode(3,7)=03;
973 INT22_BUF%IGetOppositeNode(4,5)=08; INT22_BUF%IGetOppositeNode(4,6)=07;
974 INT22_BUF%IGetOppositeNode(5,3)=04; INT22_BUF%IGetOppositeNode(5,2)=01;
975 INT22_BUF%IGetOppositeNode(6,5)=06; INT22_BUF%IGetOppositeNode(6,1)=02;
977 INT22_BUF%IGetOppositeNode(1,3)=07; INT22_BUF%IGetOppositeNode(1,4)=08;
978 INT22_BUF%IGetOppositeNode(2,7)=06; INT22_BUF%IGetOppositeNode(2,8)=05;
979 INT22_BUF%IGetOppositeNode(3,6)=02; INT22_BUF%IGetOppositeNode(3,5)=01;
980 INT22_BUF%IGetOppositeNode(4,2)=03; INT22_BUF%IGetOppositeNode(4,1)=04;
981 INT22_BUF%IGetOppositeNode(5,6)=05; INT22_BUF%IGetOppositeNode(5,7)=08;
982 INT22_BUF%IGetOppositeNode(6,4)=03; INT22_BUF%IGetOppositeNode(6,8)=07;
984 !(face_id,node_id) -> (tangent node 1, tangent node 2)
985 INT22_BUF%IGetTransvNodes(:,:,:) = 0
987 INT22_BUF%IGetTransvNodes(1,1,1:2) = (/4,2/) ;
988 INT22_BUF%IGetTransvNodes(1,2,1:2) = (/1,3/) ;
989 INT22_BUF%IGetTransvNodes(1,3,1:2) = (/2,4/) ;
990 INT22_BUF%IGetTransvNodes(1,4,1:2) = (/3,1/) ;
992 INT22_BUF%IGetTransvNodes(2,4,1:2) = (/3,8/) ;
993 INT22_BUF%IGetTransvNodes(2,3,1:2) = (/7,4/) ;
994 INT22_BUF%IGetTransvNodes(2,7,1:2) = (/8,3/) ;
995 INT22_BUF%IGetTransvNodes(2,8,1:2) = (/4,7/) ;
997 INT22_BUF%IGetTransvNodes(3,8,1:2) = (/5,7/) ;
998 INT22_BUF%IGetTransvNodes(3,7,1:2) = (/8,6/) ;
999 INT22_BUF%IGetTransvNodes(3,6,1:2) = (/7,5/) ;
1000 INT22_BUF%IGetTransvNodes(3,5,1:2) = (/6,8/) ;
1002 INT22_BUF%IGetTransvNodes(4,5,1:2) = (/1,6/) ;
1003 INT22_BUF%IGetTransvNodes(4,6,1:2) = (/5,2/) ;
1004 INT22_BUF%IGetTransvNodes(4,2,1:2) = (/6,1/) ;
1005 INT22_BUF%IGetTransvNodes(4,1,1:2) = (/2,5/) ;
1007 INT22_BUF%IGetTransvNodes(5,3,1:2) = (/2,7/) ;
1008 INT22_BUF%IGetTransvNodes(5,2,1:2) = (/6,3/) ;
1009 INT22_BUF%IGetTransvNodes(5,6,1:2) = (/7,2/) ;
1010 INT22_BUF%IGetTransvNodes(5,7,1:2) = (/3,6/) ;
1012 INT22_BUF%IGetTransvNodes(6,1,1:2) = (/4,5/) ;
1013 INT22_BUF%IGetTransvNodes(6,4,1:2) = (/8,1/) ;
1014 INT22_BUF%IGetTransvNodes(6,8,1:2) = (/5,4/) ;
1015 INT22_BUF%IGetTransvNodes(6,5,1:2) = (/1,8/) ;
1017 ! face_id -> (edge_id, edge_id, edge_id, edge_id)
1018 INT22_BUF%iGetEdgesFromFace(1,1:4) = (/01,02,05,04/)
1019 INT22_BUF%iGetEdgesFromFace(2,1:4) = (/05,10,12,06/)
1020 INT22_BUF%iGetEdgesFromFace(3,1:4) = (/12,11,08,09/)
1021 INT22_BUF%iGetEdgesFromFace(4,1:4) = (/01,03,08,07/)
1022 INT22_BUF%iGetEdgesFromFace(5,1:4) = (/04,06,09,07/)
1023 INT22_BUF%iGetEdgesFromFace(6,1:4) = (/02,03,11,10/)
1025 ! edge_id -> edge_id, edge_id
1026 INT22_BUF%iGetAdjFace( 01, 1:2 ) = (/ 01,04 /)
1027 INT22_BUF%iGetAdjFace( 02, 1:2 ) = (/ 01,06 /)
1028 INT22_BUF%iGetAdjFace( 03, 1:2 ) = (/ 04,06 /)
1029 INT22_BUF%iGetAdjFace( 04, 1:2 ) = (/ 01,05 /)
1030 INT22_BUF%iGetAdjFace( 05, 1:2 ) = (/ 01,02 /)
1031 INT22_BUF%iGetAdjFace( 06, 1:2 ) = (/ 02,05 /)
1032 INT22_BUF%iGetAdjFace( 07, 1:2 ) = (/ 04,05 /)
1033 INT22_BUF%iGetAdjFace( 08, 1:2 ) = (/ 03,04 /)
1034 INT22_BUF%iGetAdjFace( 09, 1:2 ) = (/ 03,05 /)
1035 INT22_BUF%iGetAdjFace( 10, 1:2 ) = (/ 02,06 /)
1036 INT22_BUF%iGetAdjFace( 11, 1:2 ) = (/ 03,06 /)
1037 INT22_BUF%iGetAdjFace( 12, 1:2 ) = (/ 02,03 /)
1040 !FACE_ID,EDGE_ID- > NODE_ID
1041 INT22_BUF%iGetNodeFromEdgeAndFace(:,:) = 0
1043 INT22_BUF%iGetNodeFromEdgeAndFace(1,03) = 1 ; INT22_BUF%iGetNodeFromEdgeAndFace(2,02) = 4
1044 INT22_BUF%iGetNodeFromEdgeAndFace(1,06) = 3 ; INT22_BUF%iGetNodeFromEdgeAndFace(2,04) = 3
1045 INT22_BUF%iGetNodeFromEdgeAndFace(1,07) = 6 ; INT22_BUF%iGetNodeFromEdgeAndFace(2,09) = 7
1046 INT22_BUF%iGetNodeFromEdgeAndFace(1,10) = 8 ; INT22_BUF%iGetNodeFromEdgeAndFace(2,11) = 8
1048 INT22_BUF%iGetNodeFromEdgeAndFace(3,03) = 5 ; INT22_BUF%iGetNodeFromEdgeAndFace(4,02) = 1
1049 INT22_BUF%iGetNodeFromEdgeAndFace(3,06) = 7 ; INT22_BUF%iGetNodeFromEdgeAndFace(4,04) = 2
1050 INT22_BUF%iGetNodeFromEdgeAndFace(3,07) = 6 ; INT22_BUF%iGetNodeFromEdgeAndFace(4,09) = 6
1051 INT22_BUF%iGetNodeFromEdgeAndFace(3,10) = 8 ; INT22_BUF%iGetNodeFromEdgeAndFace(4,11) = 5
1053 INT22_BUF%iGetNodeFromEdgeAndFace(5,01) = 2 ; INT22_BUF%iGetNodeFromEdgeAndFace(6,01) = 1
1054 INT22_BUF%iGetNodeFromEdgeAndFace(5,05) = 3 ; INT22_BUF%iGetNodeFromEdgeAndFace(6,05) = 4
1055 INT22_BUF%iGetNodeFromEdgeAndFace(5,08) = 6 ; INT22_BUF%iGetNodeFromEdgeAndFace(6,08) = 5
1056 INT22_BUF%iGetNodeFromEdgeAndFace(5,12) = 7 ; INT22_BUF%iGetNodeFromEdgeAndFace(6,12) = 8
1060 !iRightEdge(Face,nodeID)
1061 !next edge is clockwise edge when face is looked from cell centroid.
1062 ! "-": Means centripetal
1063 ! "+" : means centrifugal
1064 INT22_BUF%iLeftEdge(1,1)=+02; INT22_BUF%iLeftEdge(1,2)=-01; INT22_BUF%iLeftEdge(1,3)=+04; INT22_BUF%iLeftEdge(1,4)=-05; !1234 <- nodFACE(1,1:4) = (/1,2,3,4/)
1065 INT22_BUF%iLeftEdge(2,1)=-10; INT22_BUF%iLeftEdge(2,2)=+05; INT22_BUF%iLeftEdge(2,3)=-06; INT22_BUF%iLeftEdge(2,4)=+12; !4378 <- nodFACE(2,1:4) = (/4,3,7,8/)
1066 INT22_BUF%iLeftEdge(3,1)=+11; INT22_BUF%iLeftEdge(3,2)=-12; INT22_BUF%iLeftEdge(3,3)=+09; INT22_BUF%iLeftEdge(3,4)=-08; !8765 <- nodFACE(3,1:4) = (/8,7,6,5/)
1067 INT22_BUF%iLeftEdge(4,1)=-03; INT22_BUF%iLeftEdge(4,2)=+08; INT22_BUF%iLeftEdge(4,3)=-07; INT22_BUF%iLeftEdge(4,4)=+01; !5621 <- nodFACE(4,1:4) = (/5,6,2,1/)
1068 INT22_BUF%iLeftEdge(5,1)=+06; INT22_BUF%iLeftEdge(5,2)=-04; INT22_BUF%iLeftEdge(5,3)=+07; INT22_BUF%iLeftEdge(5,4)=-09; !3267 <- nodFACE(5,1:4) = (/3,2,6,7/)
1069 INT22_BUF%iLeftEdge(6,1)=-11; INT22_BUF%iLeftEdge(6,2)=+03; INT22_BUF%iLeftEdge(6,3)=-02; INT22_BUF%iLeftEdge(6,4)=+10; !5148 <- nodFACE(6,1:4) = (/5,1,4,8/)
1074 EDGE_LIST(NIN,J)%NBCUT = 0
1083 dx22min_l(0:NTHREAD-1) = EP30
1085 v22max_l(0:NTHREAD-1) = ZERO
1088 CritDeMerge22 = HALF
1093 NBCUT_MAX = 8 + 6 !cut plane in cut cell, maximum reached with 8 tetra (all 8 nodes isolated) +6 closure surface
1095 UVARL(0:NTHREAD-1,1:I22LEN,1:M51_N0PHAS+TRIMAT*M51_NVPHAS+I22LAW37) = ZERO
1096 SuperCellVOL_L(0:NTHREAD-1,0:TRIMAT+I22LAW37,1:I22LEN) = ZERO
1097 EINT_L(0:NTHREAD-1,1:I22LEN) = ZERO
1098 MOM_L(1:3,0:NTHREAD-1,1:I22LEN) = ZERO
1099 RHO_L(0:NTHREAD-1,1:I22LEN) = ZERO
1100 SIG_L(0:NTHREAD-1,1:6,1:I22LEN) = ZERO
1101 VOLD_L(0:NTHREAD-1,0:TRIMAT+I22LAW37,1:I22LEN) = ZERO
1102 UNLINKED_CELLS_L(0:NTHREAD-1,1:2,1:I22LEN) = 0
1103 N_UNLINKED_L(0:NTHREAD-1) = 0
1105 OLD_SecndList(NIN,1:I22LEN)%Num = 0
1106 OLD_SecndList(NIN,1:I22LEN)%NumSecndNodes = 0
1108 OLD_SecndList(NIN,1:I22LEN)%FM(J) = 0
1109 OLD_SecndList(NIN,1:I22LEN)%FV(J) = 0
1110 OLD_SecndList(NIN,1:I22LEN)%IV(J) = 0
1111 OLD_SecndList(NIN,1:I22LEN)%IBV(J) = 0
1112 OLD_SecndList(NIN,1:I22LEN)%ICELLv(J) = 0
1113 OLD_SecndList(NIN,1:I22LEN)%VOL(J) = ZERO
1114 OLD_SecndList(NIN,1:I22LEN)%NumNOD_Cell(J) = 0
1116 OLD_SecndList(NIN,1:I22LEN)%ListNodID(J,K) = 0
1122 !--------------------!
1125 !--------------------!
1130 !-----------------------!
1131 IBUG22_ccBufList = 0
1132 IBUG22_antidiff = -0
1136 IBUG22_intersect = -0
1137 IBUG22_subvol = 12781
1139 IBUG22_ident = 12781
1141 IBUG22_spe_convec = 0
1155 IBUG22_fcontASS = -0
1159 IBUG22_link_switch = -0
1160 IBUG22_tracking = -0
1161 IBUG22_prediction = -0
1162 IBUG22_UndirectLink = -0
1164 IBUG22_OrphanNodes = 0
1166 IBUG22_OUTP_CCbuffer = 0 !enables to output bricks in cut cell buffer (HyperMesh tcl script)
1167 IBUG22_OUTP_IntPoint = 0 !enables to output intersection points (HyperMesh tcl script)
1168 IBUG22_NVAR = 2 !-1: all, 1:mass, 2:energy
1169 IBUG22_ITRIMAT = 1 !-1: all, 0:global, 1:submat1, 2:submat2, 3:submat3, 4:submat4
1170 IBUG22_CC_LENGTH = 0
1177 IBUG22_ccBufList = IBUG22_ccBufList * IFLG
1178 IBUG22_antidiff = IBUG22_antidiff * IFLG
1179 IBUG22_upwind = IBUG22_upwind * IFLG
1180 IBUG22_tri = IBUG22_tri * IFLG
1181 IBUG22_trivox = IBUG22_trivox * IFLG
1182 IBUG22_intersect = IBUG22_intersect * IFLG
1183 IBUG22_subvol = IBUG22_subvol * IFLG
1184 IBUG22_aera = IBUG22_aera * IFLG
1185 IBUG22_ident = IBUG22_ident * IFLG
1186 IBUG22_convec = IBUG22_convec * IFLG
1187 IBUG22_spe_convec = IBUG22_spe_convec * IFLG
1188 IBUG22_eos = IBUG22_eos * IFLG
1189 IBUG22_dvol = IBUG22_dvol * IFLG
1190 IBUG22_sigeps51 = IBUG22_sigeps51 * IFLG
1191 IBUG22_ssp = IBUG22_ssp * IFLG
1192 IBUG22_flux = IBUG22_flux * IFLG
1193 IBUG22_flux22 = IBUG22_flux22 * IFLG
1194 IBUG22_volfrac = IBUG22_volfrac * IFLG
1195 IBUG22_conti = IBUG22_conti * IFLG
1196 IBUG22_fint = IBUG22_fint * IFLG
1197 IBUG22_sinit = IBUG22_sinit * IFLG
1198 IBUG22_nodalp = IBUG22_nodalp * IFLG
1199 IBUG22_amouil = IBUG22_amouil * IFLG
1200 IBUG22_fcont = IBUG22_fcont * IFLG
1201 IBUG22_fcontASS = IBUG22_fcontASS * IFLG
1202 IBUG22_Swet = IBUG22_Swet * IFLG
1203 IBUG22_destroy = IBUG22_destroy * IFLG
1204 IBUG22_merge = IBUG22_merge * IFLG
1205 IBUG22_link_switch = IBUG22_link_switch * IFLG
1206 IBUG22_tracking = IBUG22_tracking * IFLG
1207 IBUG22_prediction = IBUG22_prediction * IFLG
1208 IBUG22_UndirectLink = IBUG22_UndirectLink * IFLG
1209 IBUG22_Truss = IBUG22_Truss * IFLG
1210 IBUG22_DtMin = IBUG22_DtMin * IFLG
1211 IBUG22_OrphanNodes = IBUG22_OrphanNodes * IFLG
1212 IBUG22_OUTP_CCbuffer = IBUG22_OUTP_CCbuffer * IFLG
1213 IBUG22_OUTP_IntPoint = IBUG22_OUTP_IntPoint * IFLG
1214 IBUG22_NVAR = IBUG22_NVAR * IFLG
1215 IBUG22_ITRIMAT = IBUG22_ITRIMAT * IFLG
1216 IBUG22_CC_LENGTH = IBUG22_CC_LENGTH * IFLG
1219.AND..AND.
IF(INT22>0 IBUG22 == 1 IFLG/=0)THEN
1220 PRINT *, "=================="
1221 PRINT *, "= Output Flags : ="
1222 PRINT *, "=================="
1223 IF(IBUG22 /=0)print *,"IBUG22 "
1224 IF(IBUG22_tri /=0)print *,"IBUG22_tri "
1225 IF(IBUG22_trivox /=0)print *,"IBUG22_trivox "
1226 IF(IBUG22_intersect /=0)print *,"IBUG22_intersect "
1227 IF(IBUG22_subvol /=0)print *,"IBUG22_subvol "
1228 IF(IBUG22_aera /=0)print *,"IBUG22_aera "
1229 IF(IBUG22_ident /=0)print *,"IBUG22_ident "
1230 IF(IBUG22_convec /=0)print *,"IBUG22_convec "
1231 IF(IBUG22_eos /=0)print *,"IBUG22_eos "
1232 IF(IBUG22_dvol /=0)print *,"IBUG22_dvol "
1233 IF(IBUG22_sigeps51 /=0)print *,"IBUG22_sigeps51 "
1234 IF(IBUG22_ssp /=0)print *,"IBUG22_ssp "
1235 IF(IBUG22_flux /=0)print *,"IBUG22_flux "
1236 IF(IBUG22_flux22 /=0)print *,"IBUG22_flux22 "
1237 IF(IBUG22_volfrac /=0)print *,"IBUG22_volfrac "
1238 IF(IBUG22_conti /=0)print *,"IBUG22_conti "
1239 IF(IBUG22_fint /=0)print *,"IBUG22_fint "
1240 IF(IBUG22_sinit /=0)print *,"IBUG22_sinit "
1241 IF(IBUG22_nodalp /=0)print *,"IBUG22_nodalp "
1242 IF(IBUG22_amouil /=0)print *,"IBUG22_amouil "
1243 IF(IBUG22_spe_convec /=0)print *,"IBUG22_spe_convec "
1244 IF(IBUG22_fcont /=0)print *,"IBUG22_fcont "
1245 IF(IBUG22_Swet /=0)print *,"IBUG22_Swet "
1246 IF(IBUG22_destroy /=0)print *,"IBUG22_destroy "
1247 IF(IBUG22_merge /=0)print *,"IBUG22_merge "
1248 IF(IBUG22_UndirectLink /=0)print *,"IBUG22_UndirectLink "
1249 IF(IBUG22_Truss /=0)print *,"IBUG22_Truss "
1250 IF(IBUG22_DtMin /=0)print *,"IBUG22_DtMin "
1251 IF(IBUG22_OUTP_CCbuffer/=0)print *,"IBUG22_OUTP_CCbuffer"
1252 IF(IBUG22_OUTP_IntPoint/=0)print *,"IBUG22_OUTP_IntPoint"
1253 print *, "=================="
1257! print *, "**error inter22 : Multithreading not yet validated"