OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i22datainit.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!|| i22datainit ../engine/source/interfaces/int22/i22datainit.F
25!||--- called by ------------------------------------------------------
26!|| r_bufbric_22 ../engine/source/interfaces/int22/r_bufbric_22.F
27!||--- uses -----------------------------------------------------
28!|| i22bufbric_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
29!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
30!|| multimat_param_mod ../common_source/modules/multimat_param_mod.F90
31!||====================================================================
32 SUBROUTINE i22datainit()
33 USE i22tri_mod
35 USE multimat_param_mod , ONLY : m51_n0phas, m51_nvphas
36C-----------------------------------------------
37C D e s c r i p t i o n
38C-----------------------------------------------
39C Interface Type22 (/INTER/TYPE22) is an FSI coupling method based on cut cell method.
40C This experimental cut cell method is not completed, abandoned, and is not an official option.
41C
42C=======================================================================
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46#include "comlock.inc"
47#include "subvolumes.inc"
48#include "inter22.inc"
49#include "task_c.inc"
50#include "com01_c.inc"
51C-----------------------------------------------
52
53
54C=======================================================================
55C D A T A D E F I N I T I O N S
56C=======================================================================
57
58C=======================================================================
59C definitions from subvolumes.inc
60C=======================================================================
61 INTEGER I,NIN,J,K, IFLG
62
63 DATA lsectyp/14/
64
65 !----------------------------------------------------!
66 ! COMBINATIONS NUMBER !
67 !----------------------------------------------------!
68 DATA s_tetra /08/
69 DATA s_penta /12/
70 DATA s_poly3 /24/
71 DATA s_hexae /03/
72 DATA s_poly4 /04/
73 DATA s_poly4a/06/
74 DATA s_poly4b/06/
75 DATA s_polyc /24/
76 DATA s_polyh(1:8) /08,12,24,03,04,06,06,24/ !generic form
77 !----------------------------------------------------!
78 s22_max = s_tetra + s_penta + s_poly3 + s_hexae + s_poly4
79 . + s_poly4a + s_poly4b + s_polyc
80
81 !----------------------------------------------------!
82 ! MULTIPLICITIES !
83 !----------------------------------------------------!
84 DATA m_tetra /01/
85 DATA m_penta /01/
86 DATA m_poly3 /01/
87 DATA m_hexae /02/ !-> the same intersection points configuration leads to 2 different (opposite) graphes
88 DATA m_poly4 /02/ !-> the same intersection points configuration leads to 2 different (opposite) graphes
89 DATA m_poly4a/02/ !-> the same intersection points configuration leads to 2 different (opposite) graphes
90 DATA m_poly4b/02/ !-> the same intersection points configuration leads to 2 different (opposite) graphes
91 DATA m_polyc /01/
92 DATA m_polyh(1:8) /01,01,01,02,02,02,02,01/ !generic form
93
94 !----------------------------------------------------!
95 ! COMBINATIONS INDEXES (first index from 1:52) !
96 !----------------------------------------------------!
97 DATA d_tetra /01/
98 DATA d_penta /09/
99 DATA d_poly3 /21/
100 DATA d_hexae /45/
101 DATA d_poly4 /51/
102 DATA d_poly4a/59/
103 DATA d_poly4b/71/
104 DATA d_polyc /83/
105 DATA d_polyh(1:8) /01,09,21,45,51,59,71,83/ !generic form
106
107 !----------------------------------------------------!
108 ! main NODES NUMBER !
109 !----------------------------------------------------!
110 DATA n_tetra /01/
111 DATA n_penta /02/
112 DATA n_poly3 /03/
113 DATA n_hexae /04/
114 DATA n_poly4 /04/
115 DATA n_poly4a/04/
116 DATA n_poly4b/04/
117 DATA n_polyc /04/
118 DATA n_polyh(1:8) /01,02,03,04,04,04,04,04/ !generic form
119
120 !----------------------------------------------------!
121 ! NUMBER OF FACES !
122 !----------------------------------------------------!
123 DATA f_tetra /03/
124 DATA f_penta /04/
125 DATA f_poly3 /05/
126 DATA f_hexae /05/
127 DATA f_poly4 /06/
128 DATA f_poly4a/06/
129 DATA f_poly4b/06/
130 DATA f_polyc /05/
131 DATA f_polyh(1:8) /03,04,05,05,06,06,06,05/ !generic form
132
133 !----------------------------------------------------!
134 ! NUMBER OF CORNER(EDGE) !
135 !----------------------------------------------------!
136 DATA c_tetra /03/
137 DATA c_penta /04/
138 DATA c_poly3 /05/
139 DATA c_hexae /04/
140 DATA c_poly4 /06/
141 DATA c_poly4a/06/
142 DATA c_poly4b/06/
143 DATA c_polyc /06/
144 DATA c_polyh(1:8) /03,04,05,04,06,06,06,06/ !generic form
145
146 !----------------------------------------------------!
147 ! SUBVOLUMES COMBINATIONS !
148 !----------------------------------------------------!
149 !TETRA
150 DATA bcode(01) /b'111000000000'/ !3584 !1
151 DATA bcode(02) /b'000111000000'/ !0448 !2
152 DATA bcode(03) /b'000000111000'/ !0056 !3
153 DATA bcode(04) /b'000000000111'/ !0007 !4
154 DATA bcode(05) /b'100100100000'/ !2336 !5
155 DATA bcode(06) /b'010010000100'/ !1156 !6
156 DATA bcode(07) /b'001000010010'/ !0530 !7
157 DATA bcode(08) /b'000001001001'/ !0073 !8
158 !----------------------------------------------------!
159 !PENTA
160 DATA bcode(09) /b'011100100000'/ !1824 !9
161 DATA bcode(10) /b'101010000100'/ !2692 !10
162 DATA bcode(11) /b'110000010010'/ !3090 !11
163 DATA bcode(12) /b'100011100000'/ !2272 !12
164 DATA bcode(13) /b'010101000100'/ !1348 !13
165 DATA bcode(14) /b'000110001001'/ !0393 !14
166 DATA bcode(15) /b'100100011000'/ !2328 !15
167 DATA bcode(16) /b'001000101010'/ !0554 !16
168 DATA bcode(17) /b'000001110001'/ !0113 !17
169 DATA bcode(18) /b'010010000011'/ !1155 !18
170 DATA bcode(19) /b'001000010101'/ !0533 !19
171 DATA bcode(20) /b'000001001110'/ !0078 !20
172 !----------------------------------------------------!
173 !POLY3
174 DATA bcode(21) /b'101101000100'/ !2884 !21
175 DATA bcode(22) /b'001110100100'/ !0932 !22
176 DATA bcode(23) /b'011011100000'/ !1760 !23
177 DATA bcode(24) /b'110001100100'/ !3172 !24
178 DATA bcode(25) /b'010101000011'/ !1347 !25
179 DATA bcode(26) /b'010011001010'/ !1226 !26
180 DATA bcode(27) /b'010100001101'/ !1293 !27
181 DATA bcode(28) /b'000110001110'/ !0398 !28
182 DATA bcode(29) /b'001001100011'/ !0611 !29
183 DATA bcode(30) /b'000001110110'/ !0118 !30
184 DATA bcode(31) /b'001001011100'/ !0604 !31
185 DATA bcode(32) /b'001000101101'/ !0557 !32
186 DATA bcode(33) /b'011100011000'/ !1816 !33
187 DATA bcode(34) /b'101100001010'/ !2826 !34
188 DATA bcode(35) /b'010100110010'/ !1330 !35
189 DATA bcode(36) /b'110000101010'/ !3114 !36
190 DATA bcode(37) /b'100010101001'/ !2217 !37
191 DATA bcode(38) /b'000110110001'/ !0433 !38
192 DATA bcode(39) /b'100011011000'/ !2264 !39
193 DATA bcode(40) /b'100101010001'/ !2385 !40
194 DATA bcode(41) /b'110000010101'/ !3093 !41
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 !----------------------------------------------------!
199 !HEXAE
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 !----------------------------------------------------!
207 !POLY4
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 !----------------------------------------------------!
217 !POLY4A
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
230 !POLY4B
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 !----------------------------------------------------!
244 !POLYC
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
249
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
254
255 DATA bCODE(91) /B'110100001010'/ !POLYC S+.1
256 DATA bcode(92) /b'011100001010'/ !POLYC S+.3
257 DATA bcode(93) /b'010100011010'/ !POLYC S+.8
258 DATA bcode(94) /b'010100101010'/ !POLYC S+.7
259
260 DATA bcode(95) /b'010110001010'/ !POLYC S-.5
261 DATA bcode(96) /b'010100001110'/ !POLYC S-.10
262 DATA bcode(97) /b'010100001011'/ !POLYC S-.12
263 DATA bcode(98) /b'010101001010'/ !POLYC S-.6
264
265 DATA bcode(99) /b'001011100100'/ !POLYC T+.5
266 DATA bcode(100) /b'001101100100'/ !POLYC T+.4
267 DATA bcode(101) /b'101001100100'/ !POLYC T+.1
268 DATA bcode(102) /b'011001100100'/ !POLYC T+.2
269
270 DATA bcode(103) /b'001001100101'/ !POLYC T-.12
271 DATA bcode(104) /b'001001101100'/ !POLYC T-.9
272 DATA bcode(105) /b'001001110100'/ !POLYC T-.8
273 DATA bcode(106) /b'001001100110'/ !POLYC T-.11
274 !----------------------------------------------------!
275
276 !----------------------------------------------------!
277 ! RETRIEVING POLYHEDRA FAMILY (1-5) FROM A 1-58 CODE!
278 !----------------------------------------------------!
279 getpolyhedratype(01:08) = 1 !Type1=TETRA
280 getpolyhedratype(09:20) = 2 !Type2=PENTA
281 getpolyhedratype(21:44) = 3 !Type2=POLY3
282 getpolyhedratype(45:50) = 4 !Type2=HEXAE
283 getpolyhedratype(51:58) = 5 !Type2=POLY4
284 getpolyhedratype(59:70) = 5 !Type2=POLY4A
285 getpolyhedratype(71:82) = 5 !Type2=POLY4B
286 getpolyhedratype(83:106) = 6 !Type2=POLYC
287
288 getnumtria(1) = 1 !Type1=TETRA
289 getnumtria(2) = 2 !Type2=PENTA
290 getnumtria(3) = 3 !Type2=POLY3
291 getnumtria(4) = 2 !Type2=HEXAE
292 getnumtria(5) = 4 !Type2=POLY4
293 getnumtria(6) = 4 !Type2=POLY4A
294 getnumtria(7) = 4 !Type2=POLY4B
295 getnumtria(8) = 4 !Type2=POLYC
296
297 gtria(:, 1, 1) = (/1,2,3/) !TETRA (1 triangle )
298
299 gtria(:, 1, 2) = (/1,2,3/) !PENTA (2 triangles)
300 gtria(:, 2, 2) = (/1,3,4/)
301
302 gtria(:, 1, 3) = (/2,3,4/) !POLY3 (3 triangles)
303 gtria(:, 2, 3) = (/1,2,4/)
304 gtria(:, 3, 3) = (/1,4,5/)
305
306 gtria(:, 1, 4) = (/1,2,3/) !HEXAE (2 triangles)
307 gtria(:, 2, 4) = (/1,3,4/)
308
309 gtria(:, 1, 5) = (/1,6,5/) !POLY4 (4 triangles)
310 gtria(:, 2, 5) = (/1,5,4/)
311 gtria(:, 3, 5) = (/1,3,4/)
312 gtria(:, 4, 5) = (/1,2,3/)
313
314 gtria(:, 1, 6) = (/2,3,4/) !POLY4A (4 triangles)
315 gtria(:, 2, 6) = (/2,4,5/)
316 gtria(:, 3, 6) = (/2,5,1/)
317 gtria(:, 4, 6) = (/1,5,6/)
318
319 gtria(:, 1, 7) = (/2,3,4/) !POLY4B (4 triangles)
320 gtria(:, 2, 7) = (/2,4,5/)
321 gtria(:, 3, 7) = (/2,5,1/)
322 gtria(:, 4, 7) = (/1,5,6/)
323
324 gtria(:, 1, 8) = (/1,5,4/) !POLYC (4 triangles)
325 gtria(:, 2, 8) = (/1,5,6/)
326 gtria(:, 3, 8) = (/1,6,2/)
327 gtria(:, 4, 8) = (/2,3,6/)
328
329 !----------------------------------------------------!
330 ! COMBINATIONS NAMES !
331 !----------------------------------------------------!
332 !TETRA
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 '
341 !----------------------------------------------------!
342 !PENTA
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 '
355 !----------------------------------------------------!
356 !POLY3
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 '
381 !----------------------------------------------------!
382 !HEXAE
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- '
389 !----------------------------------------------------!
390 !POLY4
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 '
399 !----------------------------------------------------!
400 !POLY4A
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 '
413 !----------------------------------------------------!
414 !POLY4B
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 '
427 !----------------------------------------------------!
428 !POLYC
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 '
453
454 !----------------------------------------------------!
455 ! SUBVOLUME 'G'RAPH : 'F'ACES !
456 !----------------------------------------------------!
457 !TETRA
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/)
466 !----------------------------------------------------!
467 !PENTA
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/)
480 !----------------------------------------------------!
481 !POLY3
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/)
506 !----------------------------------------------------!
507 !HEXA
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/)
514 !----------------------------------------------------!
515 !POLY4
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/)
524 !----------------------------------------------------!
525 !POLY4A
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/)
538 !----------------------------------------------------!
539 !POLY4B
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/)
552 !----------------------------------------------------!
553 !POLYC
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/)
578 !--------------------------- -------------------------!
579 ! SUBVOLUME 'G'RAPH : 'N'NUMBERR of 'Pt'POINT ! !enables to have number of point on local face of a given polyhedron. Check graph index1-6 corresponds to Fa,Fb,Fc,Fd,Fe,Ff
580 !----------------------------------------------------!
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
589
590 DO i=01,08;gnnod(:,i) = (/1,1,1,0,0,0/);ENDDO
591 DO i=09,20;gnnod(:,i) = (/1,1,2,2,0,0/);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
598 !----------------------------------------------------!
599 ! SUBVOLUME 'G'RAPH : 'C'ORNER ! !EDGE id => intersection node id (CORNER).
600 !----------------------------------------------------!
601 !TETRA
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/)
610 !----------------------------------------------------!
611 !PENTA
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/)
624 !----------------------------------------------------!
625 !POLY3
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/)
639 gcorner(:,34)=(/+4,+1,+3,+11,-9,+4,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/)
650 !----------------------------------------------------!
651 !HEXAE
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/)
658 !----------------------------------------------------!
659 !POLY4
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/)
668 !----------------------------------------------------!
669 !POLY4A
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/)
682 !----------------------------------------------------!
683 !POLY4B
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/)
696 !----------------------------------------------------!
697 !POLYC
698 gcorner(:,83) =(/-08,+12,-05,+01,+04,-04,0/) !POLYC R+.4
699 gcorner(:,84) =(/+12,-05,+01,-08,-07,+07,0/) !POLYC R+.7
700 gcorner(:,85) =(/-05,+01,-08,+12,+09,-09,0/) !POLYC R+.9
701 gcorner(:,86) =(/+01,-08,+12,-05,-06,+06,0/) !POLYC R+.6
702 gcorner(:,87) =(/+08,-12,+05,-01,-02,+02,0/) !POLYC R-.2
703 gcorner(:,88) =(/-12,+05,-01,+08,+03,-03,0/) !POLYC R-.3
704 gcorner(:,89) =(/+05,-01,+08,-12,-11,+11,0/) !POLYC R-.11
705 gcorner(:,90) =(/-01,+08,-12,+05,+10,-10,0/) !POLYC R-.10
706 gcorner(:,91) =(/+11,-09,+04,-02,-01,+01,0/) !POLYC S+.1
707 gcorner(:,92) =(/-09,+04,-02,+11,+03,-03,0/) !POLYC S+.3
708 gcorner(:,93) =(/+04,-02,+11,-09,-08,+08,0/) !POLYC S+.8
709 gcorner(:,94) =(/-02,+11,-09,+04,+07,-07,0/) !POLYC S+.7
710 gcorner(:,95) =(/-11,+09,-04,+02,+05,-05,0/) !POLYC S-.5
711 gcorner(:,96) =(/+09,-04,+02,-11,-10,+10,0/) !POLYC S-.10
712 gcorner(:,97) =(/-04,+02,-11,+09,+12,-12,0/) !POLYC S-.12
713 gcorner(:,98) =(/+02,-11,+09,-04,-04,+06,0/) !POLYC S-.6
714 gcorner(:,99) =(/-03,+07,-06,+10,+05,-05,0/) !POLYC T+.5
715 gcorner(:,100)=(/+07,-06,+10,-03,-04,+04,0/) !POLYC T+.4
716 gcorner(:,101)=(/-06,+10,-03,+07,+01,-01,0/) !POLYC T+.1
717 gcorner(:,102)=(/+10,-03,+07,-06,-02,+02,0/) !POLYC T+.2
718 gcorner(:,103)=(/+03,-07,+06,-10,-12,+12,0/) !POLYC T-.12
719 gcorner(:,104)=(/-07,+06,-10,+03,+09,-09,0/) !POLYC T-.9
720 gcorner(:,105)=(/+06,-10,+03,-07,-08,+08,0/) !POLYC T-.8
721 gcorner(:,106)=(/-10,+03,-07,+06,+11,-11,0/) !POLYC T-.11
722
723 !----------------------------------------------------!
724 ! SUBVOLUME 'G'RAPH : 'main 'N'ODES !
725 !----------------------------------------------------!
726 !TETRA
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 !----------------------------------------------------!
736 !PENTA
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 !----------------------------------------------------!
750 !POLY3
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 !----------------------------------------------------!
776 !HEXAE
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 !----------------------------------------------------!
784 !POLY4
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 !----------------------------------------------------!
794 !POLY4A
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 !----------------------------------------------------!
808 !POLY4B
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 !----------------------------------------------------!
822 !POLYC
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
847
848 !----------------------------------------------------!
849 ! NODE TAGS FOR EACH OF 58 COMBINATIONS !
850 !----------------------------------------------------!
851 ! 1 10 20 30 40 50
852 ! | | | | | |
853 ! '1234567890123456789012345678901234567890123456789012345678'/
854c DATA b22CombiNode(01) /B'0000000000000000000000000000000000000000000000000000000000'/ !1,9,10,11,21,22,23,24,25,26,32,33,44,46,47,49,52,54,56,58
855c DATA b22CombiNode(02) /B'0000000000000000000000000000000000000000000000000000000000'/
856c DATA b22CombiNode(03) /B'0000000000000000000000000000000000000000000000000000000000'/
857c DATA b22CombiNode(04) /B'0000000000000000000000000000000000000000000000000000000000'/
858c DATA b22CombiNode(05) /B'0000000000000000000000000000000000000000000000000000000000'/
859c DATA b22CombiNode(06) /B'0000000000000000000000000000000000000000000000000000000000'/
860c DATA b22CombiNode(07) /B'0000000000000000000000000000000000000000000000000000000000'/
861c DATA b22CombiNode(08) /B'0000000000000000000000000000000000000000000000000000000000'/
862
863c DATA b22CombiEdge(01) /B'0000000000000000000000000000000000000000000000000000000000'/
864c DATA b22CombiEdge(02) /B'0000000000000000000000000000000000000000000000000000000000'/
865c DATA b22CombiEdge(03) /B'0000000000000000000000000000000000000000000000000000000000'/
866c DATA b22CombiEdge(04) /B'0000000000000000000000000000000000000000000000000000000000'/
867c DATA b22CombiEdge(05) /B'0000000000000000000000000000000000000000000000000000000000'/
868c DATA b22CombiEdge(06) /B'0000000000000000000000000000000000000000000000000000000000'/
869c DATA b22CombiEdge(07) /B'0000000000000000000000000000000000000000000000000000000000'/
870c DATA b22CombiEdge(08) /B'0000000000000000000000000000000000000000000000000000000000'/
871c DATA b22CombiEdge(09) /B'0000000000000000000000000000000000000000000000000000000000'/
872c DATA b22CombiEdge(10) /B'0000000000000000000000000000000000000000000000000000000000'/
873c DATA b22CombiEdge(11) /B'0000000000000000000000000000000000000000000000000000000000'/
874c DATA b22CombiEdge(12) /B'0000000000000000000000000000000000000000000000000000000000'/
875
876C=======================================================================
877C definitions
878C=======================================================================
879
880 !diagonal vectors
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/)
887
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/)
895
896 !same in binary
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'
903
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. /)
913
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/);
921
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/);
926! !
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/);
929! !
930! iEDGE(1:2, 23)=(/5,7/) ; iEDGE(1:2, 24)=(/6,8/);
931
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/)
941
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 /)
951
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
959
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 /)
967
968
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;
976
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;
983
984 !(face_id,node_id) -> (tangent node 1, tangent node 2)
985 INT22_BUF%IGetTransvNodes(:,:,:) = 0
986 !
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/) ;
991
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/) ;
996
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/) ;
1001
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/) ;
1006
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/) ;
1011
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/) ;
1016
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/)
1024
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 /)
1038
1039
1040 !FACE_ID,EDGE_ID- > NODE_ID
1041 INT22_BUF%iGetNodeFromEdgeAndFace(:,:) = 0
1042
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
1047
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
1052
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
1057
1058
1059
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/)
1070
1071 IF(INT22>0)THEN
1072 DO NIN=1,INT22
1073 DO J=1,12*I22LEN
1074 EDGE_LIST(NIN,J)%NBCUT = 0
1075 ENDDO
1076 ENDDO
1077 ENDIF
1078
1079C=======================================================================
1080 IDT_INT22 = 0
1081 dt22_min = EP30
1082 dx22_min = EP30
1083 dx22min_l(0:NTHREAD-1) = EP30
1084 v22_max = ZERO
1085 v22max_l(0:NTHREAD-1) = ZERO
1086 nCross22 = FIVE
1087 CritMerge22 = HALF
1088 CritDeMerge22 = HALF
1089 CritDVol22 = FOURTH
1090 NADJ_F = 5
1091 NBOLD(1) = NB
1092 IIAD22(:,:) = 0
1093 NBCUT_MAX = 8 + 6 !cut plane in cut cell, maximum reached with 8 tetra (all 8 nodes isolated) +6 closure surface
1094 I22_DEGENERATED = 0
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
1104 DO NIN=1,INT22
1105 OLD_SecndList(NIN,1:I22LEN)%Num = 0
1106 OLD_SecndList(NIN,1:I22LEN)%NumSecndNodes = 0
1107 DO J=1,24
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
1115 DO K=1,8
1116 OLD_SecndList(NIN,1:I22LEN)%ListNodID(J,K) = 0
1117 ENDDO
1118 ENDDO!next J
1119 ENDDO!next NIN
1120C=======================================================================
1121
1122 !--------------------!
1123 ! ALL !
1124 ! ON(1) / OFF(0) !
1125 !--------------------!
1126 IFLG = 0 !IOUTP22
1127
1128 IF(INT22 > 0)THEN
1129 IBUG22 = 0
1130 !-----------------------!
1131 IBUG22_ccBufList = 0
1132 IBUG22_antidiff = -0
1133 IBUG22_upwind = -0
1134 IBUG22_tri = 0
1135 IBUG22_trivox = 0
1136 IBUG22_intersect = -0
1137 IBUG22_subvol = 12781
1138 IBUG22_aera = 0
1139 IBUG22_ident = 12781
1140 IBUG22_convec = 0
1141 IBUG22_spe_convec = 0
1142 IBUG22_eos = 0
1143 IBUG22_dvol = -0
1144 IBUG22_sigeps51 = 0
1145 IBUG22_ssp = 0
1146 IBUG22_flux = -0
1147 IBUG22_flux22 = -0
1148 IBUG22_volfrac = 0
1149 IBUG22_conti = 0
1150 IBUG22_fint = 12781
1151 IBUG22_sinit = 0
1152 IBUG22_nodalp = 0
1153 IBUG22_amouil = 0
1154 IBUG22_fcont = -0
1155 IBUG22_fcontASS = -0
1156 IBUG22_Swet = -0
1157 IBUG22_destroy = -0
1158 IBUG22_merge = -0
1159 IBUG22_link_switch = -0
1160 IBUG22_tracking = -0
1161 IBUG22_prediction = -0
1162 IBUG22_UndirectLink = -0
1163 IBUG22_Truss = 0
1164 IBUG22_OrphanNodes = 0
1165 IBUG22_DtMin = 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
1171 ENDIF
1172
1173
1174
1175 !---------------!
1176 IF(INT22 > 0)THEN
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
1217 ENDIF
1218
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 *, "=================="
1254 ENDIF
1255
1256! IF(NTHREAD>1)THEN
1257! print *, "**error inter22 : Multithreading not yet validated"
1258! stop
1259! ENDIF
1260
1261 RETURN
1262 END
1263
1264
subroutine i22datainit()
Definition i22datainit.F:33