13#ifndef ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
14#define ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
20#include "arcane/geometry/GeometricGlobal.h"
23#define ARCANE_UNUSED_ATTRIBUTE __attribute__((unused))
25#define ARCANE_UNUSED_ATTRIBUTE
31namespace Arcane::geometric
85 Integer nbNode()
const {
return m_nb_node; }
93 m_node[0] = NULL_ITEM_ID;
94 m_node[1] = NULL_ITEM_ID;
95 m_node[2] = NULL_ITEM_ID;
96 m_node[3] = NULL_ITEM_ID;
97 m_node[4] = NULL_ITEM_ID;
98 m_node[5] = NULL_ITEM_ID;
172 Integer nbNode()
const {
return 2; }
176 m_node[0] = NULL_ITEM_ID;
177 m_node[1] = NULL_ITEM_ID;
178 m_face[0] = NULL_ITEM_ID;
179 m_face[1] = NULL_ITEM_ID;
216 m_edge[0] = NULL_ITEM_ID;
217 m_edge[1] = NULL_ITEM_ID;
218 m_edge[2] = NULL_ITEM_ID;
219 m_face[0] = NULL_ITEM_ID;
220 m_face[1] = NULL_ITEM_ID;
221 m_face[2] = NULL_ITEM_ID;
222 m_node[0] = m_node[1] = m_node[2] = m_node[3] = NULL_ITEM_ID;
235 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2, m_node[3] = n3;
244 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2;
270struct SVCFaceConnectic
288 , m_node_pos(node_pos)
289 , m_node_neg(node_neg)
295 : m_edge(NULL_ITEM_LOCAL_ID)
297 , m_face2(NULL_ITEM_LOCAL_ID)
298 , m_node_pos(node_pos)
299 , m_node_neg(node_neg)
303 inline Integer edge()
const {
return m_edge; }
304 inline Integer firstFace()
const {
return m_face1; }
305 inline Integer secondFace()
const {
return m_face2; }
306 inline Integer positiveNode()
const {
return m_node_pos; }
307 inline Integer negativeNode()
const {
return m_node_neg; }
325const Integer hexa_node_association[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
328const NodeConnectic hexa_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE = {
329 NodeConnectic( 0, 3, 4, 0, 1, 2, 0, 1, 3, 4),
330 NodeConnectic( 1, 0, 5, 0, 2, 4, 1, 2, 0, 5),
331 NodeConnectic( 2, 1, 6, 0, 4, 5, 2, 3, 1, 6),
332 NodeConnectic( 3, 2, 7, 0, 5, 1, 3, 0, 2, 7),
333 NodeConnectic( 11, 8, 4, 3, 2, 1, 4, 7, 5, 0),
334 NodeConnectic( 8, 9, 5, 3, 4, 2, 5, 4, 6, 1),
335 NodeConnectic( 9, 10, 6, 3, 5, 4, 6, 5, 7, 2),
336 NodeConnectic( 10, 11, 7, 3, 1, 5, 7, 6, 4, 3)
340const EdgeConnectic hexa_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE = {
341 EdgeConnectic(0, 1, 0, 2), EdgeConnectic(1, 2, 0, 4), EdgeConnectic(2, 3, 0, 5), EdgeConnectic(3, 0, 0, 1),
342 EdgeConnectic(0, 4, 2, 1), EdgeConnectic(1, 5, 4, 2), EdgeConnectic(2, 6, 5, 4), EdgeConnectic(3, 7, 1, 5),
343 EdgeConnectic(4, 5, 2, 3), EdgeConnectic(5, 6, 4, 3), EdgeConnectic(6, 7, 5, 3), EdgeConnectic(7, 4, 1, 3)
347const FaceConnectic hexa_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE = {
348 FaceConnectic(0, 3, 2, 1),
FaceConnectic(0, 4, 7, 3),
FaceConnectic(0, 1, 5, 4),
349 FaceConnectic(4, 5, 6, 7),
FaceConnectic(1, 2, 6, 5),
FaceConnectic(2, 3, 7, 6)
353const SVCFaceConnectic hexa_svc_face_connectic[12] ARCANE_UNUSED_ATTRIBUTE = {
371const Integer pyra_node_association[8] = { 0, 1, 2, 3, 4, 4, 4, 4 };
373const NodeConnectic pyra_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE = {
374 NodeConnectic( 0, 3, 4, 0, 1, 2, 0, 1, 3, 4),
375 NodeConnectic( 1, 0, 5, 0, 2, 3, 1, 2, 0, 4),
376 NodeConnectic( 2, 1, 6, 0, 3, 4, 2, 3, 1, 4),
377 NodeConnectic( 3, 2, 7, 0, 4, 1, 3, 0, 2, 4),
378 NodeConnectic( 11, 8, 4, 5, 2, 1, 4, 1, 0, 3),
379 NodeConnectic( 8, 9, 5, 5, 3, 2, 4, 2, 1, 0),
380 NodeConnectic( 9, 10, 6, 5, 4, 3, 4, 3, 2, 1),
384const EdgeConnectic pyra_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE = {
399const FaceConnectic pyra_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE = {
409const SVCFaceConnectic pyra_svc_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE = {
423const Integer penta_node_association[6] = { 0, 1, 2, 3, 4, 5 };
425const NodeConnectic penta_node_connectic[6] ARCANE_UNUSED_ATTRIBUTE = {
426 NodeConnectic( 0, 2, 3, 0, 1, 2, 0, 1, 2, 3),
427 NodeConnectic( 1, 0, 4, 0, 2, 4, 1, 2, 0, 4),
428 NodeConnectic( 2, 1, 5, 0, 4, 1, 2, 0, 1, 5),
429 NodeConnectic( 8, 6, 3, 3, 2, 1, 3, 5, 4, 0),
430 NodeConnectic( 6, 7, 4, 3, 4, 2, 4, 3, 5, 1),
434const EdgeConnectic penta_edge_connectic[9] ARCANE_UNUSED_ATTRIBUTE = {
435 EdgeConnectic(0, 1, 0, 2),
EdgeConnectic(1, 2, 0, 4),
EdgeConnectic(2, 0, 1, 0),
EdgeConnectic(0, 3, 1, 2),
436 EdgeConnectic(1, 4, 2, 4),
EdgeConnectic(2, 5, 4, 1),
EdgeConnectic(3, 4, 2, 3),
EdgeConnectic(4, 5, 4, 3),
440const FaceConnectic penta_face_connectic[5] ARCANE_UNUSED_ATTRIBUTE = {
441 FaceConnectic(0, 2, 1),
FaceConnectic(0, 3, 5, 2),
FaceConnectic(0, 1, 4, 3),
446const SVCFaceConnectic penta_svc_face_connectic[9] ARCANE_UNUSED_ATTRIBUTE = {
461const Integer tetra_node_association[4] = { 0, 1, 2, 3 };
463const NodeConnectic tetra_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
464 NodeConnectic( 0, 2, 3, 0, 1, 2, 0, 1, 2, 3),
465 NodeConnectic( 1, 0, 4, 0, 2, 3, 1, 2, 0, 3),
466 NodeConnectic( 2, 1, 5, 0, 3, 1, 2, 0, 1, 3),
470const EdgeConnectic tetra_edge_connectic[6] ARCANE_UNUSED_ATTRIBUTE = {
471 EdgeConnectic(0, 1, 0, 2),
EdgeConnectic(1, 2, 0, 3),
EdgeConnectic(2, 0, 0, 1),
EdgeConnectic(0, 3, 1, 2),
475const FaceConnectic tetra_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
481const SVCFaceConnectic tetra_svc_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE = {
493const Integer wedge7_node_association[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
495const NodeConnectic wedge7_node_connectic[10] ARCANE_UNUSED_ATTRIBUTE = {
496 NodeConnectic( 0, 4, 10, 0, 6, 2, 0, 1, 4, 5),
497 NodeConnectic( 1, 0, 11, 0, 2, 3, 1, 2, 0, 6),
498 NodeConnectic( 2, 1, 12, 0, 3, 4, 2, 3, 1, 7),
499 NodeConnectic( 3, 2, 13, 0, 4, 5, 3, 4, 2, 8),
500 NodeConnectic( 4, 3, 14, 0, 5, 6, 4, 0, 3, 9),
501 NodeConnectic( 9, 5, 10, 1, 2, 6, 5, 9, 6, 0),
502 NodeConnectic( 5, 6, 11, 1, 3, 2, 6, 5, 7, 1),
503 NodeConnectic( 6, 7, 12, 1, 4, 3, 7, 6, 8, 2),
504 NodeConnectic( 7, 8, 13, 1, 5, 4, 8, 7, 9, 3),
508const EdgeConnectic wedge7_edge_connectic[15] ARCANE_UNUSED_ATTRIBUTE = {
509 EdgeConnectic(0, 1, 0, 2),
EdgeConnectic(1, 2, 0, 3),
EdgeConnectic(2, 3, 0, 4),
EdgeConnectic(3, 4, 0, 5),
510 EdgeConnectic(4, 0, 0, 6),
EdgeConnectic(5, 6, 2, 1),
EdgeConnectic(6, 7, 3, 1),
EdgeConnectic(7, 8, 4, 1),
511 EdgeConnectic(8, 9, 5, 1),
EdgeConnectic(9, 5, 6, 1),
EdgeConnectic(0, 5, 6, 2),
EdgeConnectic(1, 6, 2, 3),
512 EdgeConnectic(2, 7, 3, 4),
EdgeConnectic(3, 8, 4, 5),
EdgeConnectic(4, 9, 5, 6)
515const FaceConnectic wedge7_face_connectic[7] ARCANE_UNUSED_ATTRIBUTE = {
516 FaceConnectic(0, 4, 3, 2, 1),
FaceConnectic(5, 6, 7, 8, 9),
FaceConnectic(0, 1, 6, 5),
517 FaceConnectic(1, 2, 7, 6),
FaceConnectic(2, 3, 8, 7),
FaceConnectic(3, 4, 9, 8),
522const SVCFaceConnectic wedge7_svc_face_connectic[15] ARCANE_UNUSED_ATTRIBUTE = {
543const Integer wedge8_node_association[12] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
544const NodeConnectic wedge8_node_connectic[12] ARCANE_UNUSED_ATTRIBUTE = {
545 NodeConnectic( 0, 5, 12, 0, 7, 2, 0, 1, 5, 6),
546 NodeConnectic( 1, 0, 13, 0, 2, 3, 1, 2, 0, 7),
547 NodeConnectic( 2, 1, 14, 0, 3, 4, 2, 3, 1, 8),
548 NodeConnectic( 3, 2, 15, 0, 4, 5, 3, 4, 2, 9),
549 NodeConnectic( 4, 3, 16, 0, 5, 6, 4, 5, 3, 10),
550 NodeConnectic( 5, 4, 17, 0, 6, 7, 5, 0, 4, 11),
551 NodeConnectic( 11, 6, 12, 1, 2, 7, 6, 11, 7, 0),
552 NodeConnectic( 6, 7, 13, 1, 3, 2, 7, 6, 8, 1),
553 NodeConnectic( 7, 8, 14, 1, 4, 3, 8, 7, 9, 2),
554 NodeConnectic( 8, 9, 15, 1, 5, 4, 9, 8, 10, 3),
555 NodeConnectic( 9, 10, 16, 1, 6, 5, 10, 9, 11, 4),
559const EdgeConnectic wedge8_edge_connectic[18] ARCANE_UNUSED_ATTRIBUTE = {
572const FaceConnectic wedge8_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE = {
573 FaceConnectic(0, 5, 4, 3, 2, 1),
FaceConnectic(6, 7, 8, 9, 10, 11),
580const SVCFaceConnectic wedge8_svc_face_connectic[18] ARCANE_UNUSED_ATTRIBUTE = {
605const Integer quad_node_association[4] = { 0, 1, 2, 3 };
608const NodeConnectic quad_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
616const FaceConnectic quad_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
621const SVCFaceConnectic quad_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
630const Integer triangle_node_association[4] = { 0, 1, 2, 0 };
632const NodeConnectic triangle_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
639const FaceConnectic triangle_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
648const SVCFaceConnectic triangle_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE = {
662struct LocalCellNodeReal
670 inline Real node(
Integer i)
const {
return m_node[i]; }
696 return (m_node[0] + m_node[1] + m_node[2] + m_node[3] + m_node[4] + m_node[5] + m_node[6] + m_node[7] + m_node[8] + m_node[9] + m_node[10] + m_node[11]);
Declarations of Arcane's general types.
Int32 Integer
Type representing an integer.
double Real
Type representing a real number.
Local cell connectivity structures.
Local connectivity structure.
Local cell connectivity structures.
Local cell and svc connectivity structures.