13#ifndef ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
14#define ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
18#include "arcane/ArcaneTypes.h"
20#include "arcane/geometric/GeometricGlobal.h"
23#define ARCANE_UNUSED_ATTRIBUTE __attribute__((unused))
25#define ARCANE_UNUSED_ATTRIBUTE
32GEOMETRIC_BEGIN_NAMESPACE
83 Integer nbNode()
const {
return m_nb_node; }
84 Integer node(Integer i)
const {
return m_node[i]; }
91 m_node[0] = NULL_ITEM_ID;
92 m_node[1] = NULL_ITEM_ID;
93 m_node[2] = NULL_ITEM_ID;
94 m_node[3] = NULL_ITEM_ID;
95 m_node[4] = NULL_ITEM_ID;
96 m_node[5] = NULL_ITEM_ID;
100 Integer n3,Integer n4,Integer n5)
103 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
104 m_node[3] = n3; m_node[4] = n4; m_node[5] = n5;
107 FaceConnectic(Integer n0,Integer n1,Integer n2,Integer n3,Integer n4)
110 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
111 m_node[3] = n3; m_node[4] = n4;
117 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2; m_node[3] = n3;
123 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
129 m_node[0] = n0; m_node[1] = n1;
154 Integer nbNode()
const {
return 2; }
158 m_node[0] = NULL_ITEM_ID; m_node[1] = NULL_ITEM_ID;
159 m_face[0] = NULL_ITEM_ID; m_face[1] = NULL_ITEM_ID;
164 m_node[0] = n0; m_node[1] = n1;
165 m_face[0] = f0; m_face[1] = f1;
169 inline Integer node(Integer i)
const {
return m_node[i]; }
170 inline Integer face(Integer i)
const {
return m_face[i]; }
191 m_edge[0] = NULL_ITEM_ID; m_edge[1] = NULL_ITEM_ID; m_edge[2] = NULL_ITEM_ID;
192 m_face[0] = NULL_ITEM_ID; m_face[1] = NULL_ITEM_ID; m_face[2] = NULL_ITEM_ID;
193 m_node[0] = m_node[1] = m_node[2] = m_node[3] = NULL_ITEM_ID;
197 Integer f0,Integer f1,Integer f2,
198 Integer n0, Integer n1, Integer n2, Integer n3)
200 m_edge[0] = e0; m_edge[1] = e1; m_edge[2] = e2;
201 m_face[0] = f0; m_face[1] = f1; m_face[2] = f2;
202 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2, m_node[3] = n3;
207 Integer n0, Integer n1, Integer n2)
209 m_face[0] = f0; m_face[1] = f1;
210 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2;
215 inline Integer edge(Integer i)
const {
return m_edge[i]; }
216 inline Integer face(Integer i)
const {
return m_face[i]; }
217 inline Integer node(Integer i)
const {
return m_node[i]; }
239 : m_edge(0), m_face1(0), m_face2(0), m_node_pos(0), m_node_neg(0)
244 Integer node_pos, Integer node_neg)
245 : m_edge (edge), m_face1(face1), m_face2(face2), m_node_pos(node_pos),
246 m_node_neg (node_neg)
252 : m_edge(NULL_ITEM_LOCAL_ID), m_face1(face1),
253 m_face2(NULL_ITEM_LOCAL_ID), m_node_pos(node_pos),
254 m_node_neg (node_neg)
258 inline Integer edge()
const {
return m_edge; }
259 inline Integer firstFace()
const {
return m_face1; }
260 inline Integer secondFace()
const {
return m_face2; }
261 inline Integer positiveNode ()
const {
return m_node_pos;}
262 inline Integer negativeNode ()
const {
return m_node_neg;}
281const Integer hexa_node_association[8]={0,1,2,3,4,5,6,7};
284const NodeConnectic hexa_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
286 NodeConnectic( 0, 3, 4, 0, 1, 2, 0, 1, 3, 4),
287 NodeConnectic( 1, 0, 5, 0, 2, 4, 1, 2, 0, 5),
288 NodeConnectic( 2, 1, 6, 0, 4, 5, 2, 3, 1, 6),
289 NodeConnectic( 3, 2, 7, 0, 5, 1, 3, 0, 2, 7),
290 NodeConnectic( 11, 8, 4, 3, 2, 1, 4, 7, 5, 0),
291 NodeConnectic( 8, 9, 5, 3, 4, 2, 5, 4, 6, 1),
292 NodeConnectic( 9, 10, 6, 3, 5, 4, 6, 5, 7, 2),
293 NodeConnectic( 10, 11, 7, 3, 1, 5, 7, 6, 4, 3)
297const EdgeConnectic hexa_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
299 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,4),EdgeConnectic(2,3,0,5),EdgeConnectic(3,0,0,1),
300 EdgeConnectic(0,4,2,1),EdgeConnectic(1,5,4,2),EdgeConnectic(2,6,5,4),EdgeConnectic(3,7,1,5),
301 EdgeConnectic(4,5,2,3),EdgeConnectic(5,6,4,3),EdgeConnectic(6,7,5,3),EdgeConnectic(7,4,1,3)
305const FaceConnectic hexa_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
307 FaceConnectic(0,3,2,1),FaceConnectic(0,4,7,3),FaceConnectic(0,1,5,4),
308 FaceConnectic(4,5,6,7),FaceConnectic(1,2,6,5),FaceConnectic(2,3,7,6)
312const SVCFaceConnectic hexa_svc_face_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
314 SVCFaceConnectic(4, 1, 0, 1, 2 ),
315 SVCFaceConnectic(1, 11, 3, 4, 7 ),
316 SVCFaceConnectic(5, 7, 1, 3, 7 ),
317 SVCFaceConnectic(3, 9, 4, 5, 6 ),
318 SVCFaceConnectic(2, 0, 0, 0, 1 ),
319 SVCFaceConnectic(3, 10, 5, 6, 7 ),
320 SVCFaceConnectic(4, 6, 5, 2, 6 ),
321 SVCFaceConnectic(2, 5, 4, 1, 5 ),
322 SVCFaceConnectic(5, 2, 0, 2, 3 ),
323 SVCFaceConnectic(1, 4, 2, 0, 4 ),
324 SVCFaceConnectic(0, 3, 1, 0, 3 ),
325 SVCFaceConnectic(3, 8, 2, 4, 5 )
331const Integer pyra_node_association[8]={0,1,2,3,4,4,4,4};
333const NodeConnectic pyra_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
335 NodeConnectic( 0, 3, 4, 0, 1, 2, 0, 1, 3, 4),
336 NodeConnectic( 1, 0, 5, 0, 2, 3, 1, 2, 0, 4),
337 NodeConnectic( 2, 1, 6, 0, 3, 4, 2, 3, 1, 4),
338 NodeConnectic( 3, 2, 7, 0, 4, 1, 3, 0, 2, 4),
339 NodeConnectic( 11, 8, 4, 5, 2, 1, 4, 1, 0, 3),
340 NodeConnectic( 8, 9, 5, 5, 3, 2, 4, 2, 1, 0),
341 NodeConnectic( 9, 10, 6, 5, 4, 3, 4, 3, 2, 1),
342 NodeConnectic( 10, 11, 7, 5, 1, 4, 4, 0, 3, 2)
346const EdgeConnectic pyra_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
348 EdgeConnectic(0,1,0,2),
349 EdgeConnectic(1,2,0,3),
350 EdgeConnectic(2,3,0,4),
351 EdgeConnectic(3,0,0,1),
352 EdgeConnectic(0,4,2,1),
353 EdgeConnectic(1,4,3,2),
354 EdgeConnectic(2,4,4,3),
355 EdgeConnectic(3,4,1,4),
356 EdgeConnectic(4,4,2,5),
357 EdgeConnectic(4,4,3,5),
358 EdgeConnectic(4,4,4,5),
359 EdgeConnectic(4,4,1,5)
362const FaceConnectic pyra_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
364 FaceConnectic(0,3,2,1),
365 FaceConnectic(0,4,3),
366 FaceConnectic(0,1,4),
367 FaceConnectic(1,2,4),
368 FaceConnectic(2,3,4),
373const SVCFaceConnectic pyra_svc_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
375 SVCFaceConnectic(4, 2, 0, 2, 3 ),
376 SVCFaceConnectic(2, 0, 0, 0, 1 ),
377 SVCFaceConnectic(4, 7, 1, 3, 4 ),
378 SVCFaceConnectic(2, 5, 3, 1, 4 ),
379 SVCFaceConnectic(3, 1, 0, 1, 2 ),
380 SVCFaceConnectic(3, 6, 4, 2, 4 ),
381 SVCFaceConnectic(1, 4, 2, 0, 4 ),
382 SVCFaceConnectic(0, 3, 1, 0, 3 )
389const Integer penta_node_association[6]={0,1,2,3,4,5};
391const NodeConnectic penta_node_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
393 NodeConnectic( 0, 2, 3, 0, 1, 2, 0, 1, 2, 3),
394 NodeConnectic( 1, 0, 4, 0, 2, 4, 1, 2, 0, 4),
395 NodeConnectic( 2, 1, 5, 0, 4, 1, 2, 0, 1, 5),
396 NodeConnectic( 8, 6, 3, 3, 2, 1, 3, 5, 4, 0),
397 NodeConnectic( 6, 7, 4, 3, 4, 2, 4, 3, 5, 1),
398 NodeConnectic( 7, 8, 5, 3, 1, 4, 5, 4, 3, 2)
402const EdgeConnectic penta_edge_connectic[9] ARCANE_UNUSED_ATTRIBUTE =
404 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,4),EdgeConnectic(2,0,1,0),EdgeConnectic(0,3,1,2),
405 EdgeConnectic(1,4,2,4),EdgeConnectic(2,5,4,1),EdgeConnectic(3,4,2,3),EdgeConnectic(4,5,4,3),
406 EdgeConnectic(5,3,1,3)
409const FaceConnectic penta_face_connectic[5] ARCANE_UNUSED_ATTRIBUTE =
411 FaceConnectic(0,2,1),FaceConnectic(0,3,5,2),FaceConnectic(0,1,4,3),
412 FaceConnectic(3,4,5),FaceConnectic(1,2,5,4)
416const SVCFaceConnectic penta_svc_face_connectic[9] ARCANE_UNUSED_ATTRIBUTE =
418 SVCFaceConnectic(1, 8, 3, 3, 5 ),
419 SVCFaceConnectic(4, 5, 1, 2, 5 ),
420 SVCFaceConnectic(0, 2, 1, 0, 2 ),
421 SVCFaceConnectic(4, 1, 0, 1, 2 ),
422 SVCFaceConnectic(3, 6, 2, 3, 4 ),
423 SVCFaceConnectic(2, 4, 4, 1, 4 ),
424 SVCFaceConnectic(2, 0, 0, 0, 1 ),
425 SVCFaceConnectic(1, 3, 2, 0, 3 ),
426 SVCFaceConnectic(3, 7, 4, 4, 5 )
433const Integer tetra_node_association[4]={0,1,2,3};
435const NodeConnectic tetra_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
437 NodeConnectic( 0, 2, 3, 0, 1, 2, 0, 1, 2, 3),
438 NodeConnectic( 1, 0, 4, 0, 2, 3, 1, 2, 0, 3),
439 NodeConnectic( 2, 1, 5, 0, 3, 1, 2, 0, 1, 3),
440 NodeConnectic( 3, 5, 4, 1, 3, 2, 3, 0, 2, 1)
443const EdgeConnectic tetra_edge_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
445 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,3),EdgeConnectic(2,0,0,1),EdgeConnectic(0,3,1,2),
446 EdgeConnectic(1,3,2,3),EdgeConnectic(2,3,1,3)
449const FaceConnectic tetra_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
451 FaceConnectic(0,2,1),FaceConnectic(0,3,2),FaceConnectic(0,1,3),
456const SVCFaceConnectic tetra_svc_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
458 SVCFaceConnectic(0, 2, 1, 0, 2 ),
459 SVCFaceConnectic(2, 4, 3, 1, 3 ),
460 SVCFaceConnectic(2, 0, 0, 0, 1 ),
461 SVCFaceConnectic(1, 3, 2, 0, 3 ),
462 SVCFaceConnectic(3, 5, 1, 2, 3 ),
463 SVCFaceConnectic(3, 1, 0, 1, 2 )
469const Integer wedge7_node_association[10]={0,1,2,3,4,5,6,7,8,9};
471const NodeConnectic wedge7_node_connectic[10] ARCANE_UNUSED_ATTRIBUTE =
473 NodeConnectic( 0, 4, 10, 0, 6, 2, 0, 1, 4, 5),
474 NodeConnectic( 1, 0, 11, 0, 2, 3, 1, 2, 0, 6),
475 NodeConnectic( 2, 1, 12, 0, 3, 4, 2, 3, 1, 7),
476 NodeConnectic( 3, 2, 13, 0, 4, 5, 3, 4, 2, 8),
477 NodeConnectic( 4, 3, 14, 0, 5, 6, 4, 0, 3, 9),
478 NodeConnectic( 9, 5, 10, 1, 2, 6, 5, 9, 6, 0),
479 NodeConnectic( 5, 6, 11, 1, 3, 2, 6, 5, 7, 1),
480 NodeConnectic( 6, 7, 12, 1, 4, 3, 7, 6, 8, 2),
481 NodeConnectic( 7, 8, 13, 1, 5, 4, 8, 7, 9, 3),
482 NodeConnectic( 8, 9, 14, 1, 6, 5, 9, 8, 5, 4)
485const EdgeConnectic wedge7_edge_connectic[15] ARCANE_UNUSED_ATTRIBUTE =
487 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,3),EdgeConnectic(2,3,0,4),EdgeConnectic(3,4,0,5),
488 EdgeConnectic(4,0,0,6),EdgeConnectic(5,6,2,1),EdgeConnectic(6,7,3,1),EdgeConnectic(7,8,4,1),
489 EdgeConnectic(8,9,5,1),EdgeConnectic(9,5,6,1),EdgeConnectic(0,5,6,2),EdgeConnectic(1,6,2,3),
490 EdgeConnectic(2,7,3,4),EdgeConnectic(3,8,4,5),EdgeConnectic(4,9,5,6)
493const FaceConnectic wedge7_face_connectic[7] ARCANE_UNUSED_ATTRIBUTE =
495 FaceConnectic(0,4,3,2,1),FaceConnectic(5,6,7,8,9),FaceConnectic(0,1,6,5),
496 FaceConnectic(1,2,7,6), FaceConnectic(2,3,8,7), FaceConnectic(3,4,9,8),
497 FaceConnectic(4,0,5,9)
501const SVCFaceConnectic wedge7_svc_face_connectic[15] ARCANE_UNUSED_ATTRIBUTE =
503 SVCFaceConnectic(6, 9, 1, 5, 9 ),
504 SVCFaceConnectic(1, 8, 5, 8, 9 ),
505 SVCFaceConnectic(1, 6, 3, 6, 7 ),
506 SVCFaceConnectic(4, 13, 5, 3, 8 ),
507 SVCFaceConnectic(4, 2, 0, 2, 3 ),
508 SVCFaceConnectic(2, 0, 0, 0, 1 ),
509 SVCFaceConnectic(1, 7, 4, 7, 8 ),
510 SVCFaceConnectic(1, 5, 2, 5, 6 ),
511 SVCFaceConnectic(3, 1, 0, 1, 2 ),
512 SVCFaceConnectic(6, 10, 2, 0, 5 ),
513 SVCFaceConnectic(2, 11, 3, 1, 6 ),
514 SVCFaceConnectic(3, 12, 4, 2, 7 ),
515 SVCFaceConnectic(0, 4, 6, 0, 4 ),
516 SVCFaceConnectic(5, 14, 6, 4, 9 ),
517 SVCFaceConnectic(5, 3, 0, 3, 4 )
523const Integer wedge8_node_association[12]={0,1,2,3,4,5,6,7,8,9,10,11};
524const NodeConnectic wedge8_node_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
526 NodeConnectic( 0, 5, 12, 0, 7, 2, 0, 1, 5, 6),
527 NodeConnectic( 1, 0, 13, 0, 2, 3, 1, 2, 0, 7),
528 NodeConnectic( 2, 1, 14, 0, 3, 4, 2, 3, 1, 8),
529 NodeConnectic( 3, 2, 15, 0, 4, 5, 3, 4, 2, 9),
530 NodeConnectic( 4, 3, 16, 0, 5, 6, 4, 5, 3, 10),
531 NodeConnectic( 5, 4, 17, 0, 6, 7, 5, 0, 4, 11),
532 NodeConnectic( 11, 6, 12, 1, 2, 7, 6, 11, 7, 0),
533 NodeConnectic( 6, 7, 13, 1, 3, 2, 7, 6, 8 ,1),
534 NodeConnectic( 7, 8, 14, 1, 4, 3, 8, 7, 9, 2),
535 NodeConnectic( 8, 9, 15, 1, 5, 4, 9, 8, 10, 3),
536 NodeConnectic( 9, 10, 16, 1, 6, 5, 10, 9, 11, 4),
537 NodeConnectic( 10, 11, 17, 1, 7, 6, 11, 10, 6, 5)
540const EdgeConnectic wedge8_edge_connectic[18] ARCANE_UNUSED_ATTRIBUTE =
542 EdgeConnectic( 0, 1, 0, 2), EdgeConnectic( 1, 2, 0, 3),
543 EdgeConnectic( 2, 3, 0, 4), EdgeConnectic( 3, 4, 0, 5),
544 EdgeConnectic( 4, 5, 0, 6), EdgeConnectic( 5, 0, 0, 7),
545 EdgeConnectic( 6, 7, 2, 1), EdgeConnectic( 7, 8, 3, 1),
546 EdgeConnectic( 8, 9, 4, 1), EdgeConnectic( 9,10, 5, 1),
547 EdgeConnectic(10,11, 6, 1), EdgeConnectic(11, 6, 7, 1),
548 EdgeConnectic( 0, 6, 7, 2), EdgeConnectic( 1, 7, 2, 3),
549 EdgeConnectic( 2, 8, 3, 4), EdgeConnectic( 3, 9, 4, 5),
550 EdgeConnectic( 4,10, 5, 6), EdgeConnectic( 5,11, 6, 7)
554const FaceConnectic wedge8_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
556 FaceConnectic( 0, 5, 4, 3, 2, 1), FaceConnectic( 6, 7, 8, 9,10,11),
557 FaceConnectic( 0, 1, 7, 6 ), FaceConnectic( 1, 2, 8, 7 ),
558 FaceConnectic( 2, 3, 9, 8 ), FaceConnectic( 3, 4,10, 9 ),
559 FaceConnectic( 4, 5,11,10 ), FaceConnectic( 5, 0, 6,11 )
563const SVCFaceConnectic wedge8_svc_face_connectic[18] ARCANE_UNUSED_ATTRIBUTE =
565 SVCFaceConnectic(1, 9, 5, 9, 10 ),
566 SVCFaceConnectic(1, 8, 4, 8, 9 ),
567 SVCFaceConnectic(7, 12, 2, 0, 6 ),
568 SVCFaceConnectic(7, 11, 1, 6, 11 ),
569 SVCFaceConnectic(6, 17, 7, 5, 11 ),
570 SVCFaceConnectic(4, 15, 5, 3, 9 ),
571 SVCFaceConnectic(2, 13, 3, 1, 7 ),
572 SVCFaceConnectic(0, 5, 7, 0, 5 ),
573 SVCFaceConnectic(1, 10, 6, 10, 11 ),
574 SVCFaceConnectic(1, 6, 2, 6, 7 ),
575 SVCFaceConnectic(6, 4, 0, 4, 5 ),
576 SVCFaceConnectic(5, 16, 6, 4, 10 ),
577 SVCFaceConnectic(4, 2, 0, 2, 3 ),
578 SVCFaceConnectic(2, 0, 0, 0, 1 ),
579 SVCFaceConnectic(1, 7, 3, 7, 8 ),
580 SVCFaceConnectic(3, 1, 0, 1, 2 ),
581 SVCFaceConnectic(5, 3, 0, 3, 4 ),
582 SVCFaceConnectic(3, 14, 4, 2, 8 )
589const Integer quad_node_association[4]={0,1,2,3};
592const NodeConnectic quad_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
594 NodeConnectic( 0, 3, 0, 1, 3),
595 NodeConnectic( 1, 0, 1, 2, 0),
596 NodeConnectic( 2, 1, 2, 3, 1),
597 NodeConnectic( 3, 2, 3, 0, 2),
601const FaceConnectic quad_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
603 FaceConnectic(0,1),FaceConnectic(1,2),FaceConnectic(2,3),FaceConnectic(3,0)
607const SVCFaceConnectic quad_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
609 SVCFaceConnectic(0, 0, 1 ),
610 SVCFaceConnectic(1, 1, 2 ),
611 SVCFaceConnectic(2, 2, 3 ),
612 SVCFaceConnectic(3, 3, 0 ),
617const Integer triangle_node_association[4]={0,1,2,0};
619const NodeConnectic triangle_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
621 NodeConnectic( 0, 3, 0, 1, 3),
622 NodeConnectic( 1, 0, 1, 2, 0),
623 NodeConnectic( 2, 1, 2, 0, 1),
624 NodeConnectic( 3, 2, 0, 0, 2),
628const FaceConnectic triangle_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
638const SVCFaceConnectic triangle_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
640 SVCFaceConnectic(0, 0, 1 ),
641 SVCFaceConnectic(1, 1, 2 ),
642 SVCFaceConnectic(2, 2, 0 ),
643 SVCFaceConnectic(3, 0, 0 ),
658 inline Real node(Integer i)
const {
return m_node[i]; }
662 Real a4,Real a5,Real a6 ,Real a7,
663 Real a8,Real a9,Real a10,Real a11)
665 m_node[0] = a0; m_node[1] = a1; m_node[ 2] = a2; m_node[ 3] = a3;
666 m_node[4] = a4; m_node[5] = a5; m_node[ 6] = a6; m_node[ 7] = a7;
667 m_node[8] = a8; m_node[9] = a9; m_node[10] = a10; m_node[11] = a11;
674 return (m_node[0] + m_node[1] + m_node[2] + m_node[3] + m_node[4]
675 + m_node[5] + m_node[6] + m_node[7]
676 + m_node[8] + m_node[9] + m_node[10] + m_node[11]);
683GEOMETRIC_END_NAMESPACE
Int32 Integer
Type représentant un entier.
Structures de connectique locale des mailles.
Structure de connectique locale.
Tableau de 12 éléments de type réel. Utilisé pour la pondération des des noeuds des mailles (la plus ...
Structures de connectique locale des mailles.
Structures de connectique locale des mailles et svc.