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 Itmpindex22,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 !-----------------------!
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
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
1160 ibug22_tracking = -0
1163 ibug22_truss = 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
1180 ibug22_tri = ibug22_tri * iflg
1184 ibug22_aera = ibug22_aera * iflg
1185 ibug22_ident = ibug22_ident * iflg
1188 ibug22_eos = ibug22_eos * iflg
1189 ibug22_dvol = ibug22_dvol * iflg
1191 ibug22_ssp = ibug22_ssp * iflg
1192 ibug22_flux = ibug22_flux * iflg
1195 ibug22_conti = ibug22_conti * iflg
1196 ibug22_fint = ibug22_fint * iflg
1197 ibug22_sinit = ibug22_sinit * iflg
1200 ibug22_fcont = ibug22_fcont * iflg
1202 ibug22_swet = ibug22_swet * iflg
1204 ibug22_merge = ibug22_merge * iflg
1209 ibug22_truss = ibug22_truss * iflg
1210 ibug22_dtmin = ibug22_dtmin * iflg
1214 ibug22_nvar = ibug22_nvar * iflg
1217 ENDIF
1218
1219 IF(int22>0 .AND. ibug22 == 1 .AND. 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
type(edge_entity), dimension(:,:), allocatable, target edge_list
type(int22_buf_t) int22_buf
integer ibug22_orphannodes
integer ibug22_outp_intpoint
integer ibug22_undirectlink
integer ibug22_spe_convec
integer ibug22_link_switch
integer ibug22_prediction
integer ibug22_outp_ccbuffer
int main(int argc, char *argv[])