14#include "arcane/utils/TraceAccessor.h"
16#include "arcane/geometry/GeomElement.h"
17#include "arcane/geometry/GeomShapeView.h"
18#include "arcane/geometry/CellConnectivity.h"
24namespace Arcane::geometric
34class GeomShapeConnectivity
38 GeomShapeConnectivity()
40 for(
int i=0; i<NB_BASIC_ITEM_TYPE; ++i )
41 GeomShapeView::global_cell_connectivity[i] = 0;
43 GeomShapeView::global_cell_connectivity[IT_NullType] = &m_null_connectivity;
44 GeomShapeView::global_cell_connectivity[IT_Vertex] = &m_vertex_connectivity;
45 GeomShapeView::global_cell_connectivity[IT_Line2] = &m_line2_connectivity;
46 GeomShapeView::global_cell_connectivity[IT_Triangle3] = &m_triangle3_connectivity;
47 GeomShapeView::global_cell_connectivity[IT_Quad4] = &m_quad4_connectivity;
48 GeomShapeView::global_cell_connectivity[IT_Pentagon5] = &m_pentagon5_connectivity;
49 GeomShapeView::global_cell_connectivity[IT_Hexagon6] = &m_hexagon6_connectivity;
50 GeomShapeView::global_cell_connectivity[IT_Tetraedron4] = &m_tetraedron4_connectivity;
51 GeomShapeView::global_cell_connectivity[IT_Pyramid5] = &m_pyramid5_connectivity;
52 GeomShapeView::global_cell_connectivity[IT_Pentaedron6] = &m_pentaedron6_connectivity;
53 GeomShapeView::global_cell_connectivity[IT_Hexaedron8] = &m_hexaedron8_connectivity;
54 GeomShapeView::global_cell_connectivity[IT_Heptaedron10] = &m_heptaedron10_connectivity;
55 GeomShapeView::global_cell_connectivity[IT_Octaedron12] = &m_octaedron12_connectivity;
78initializeConnectivity()
80 if (global_connectivity)
89CellConnectivity* GeomShapeView::global_cell_connectivity[NB_BASIC_ITEM_TYPE];
90GeomShapeConnectivity* GeomShapeView::global_connectivity = 0;
98class GeomShapeStdBuilder
99:
public GeomShapeMutableView
102 GeomShapeStdBuilder(
const GeomShapeMutableView& gsv)
103 : GeomShapeMutableView(gsv)
114 Real3( 0.25 * ( node(id1).x + node(id2).x + node(id3).x + node(id4).x ),
115 0.25 * ( node(id1).y + node(id2).y + node(id3).y + node(id4).y ),
116 0.25 * ( node(id1).z + node(id2).z + node(id3).z + node(id4).z )));
123 Real3( 0.5 * ( node(id1).x + node(id2).x ),
124 0.5 * ( node(id1).y + node(id2).y ),
133initFromHexa(HexaElementConstView hexa,GeomShape& geom_cell)
135 _setNullItem(IT_Hexaedron8);
140 geom_cell._setArray(*
this);
147initFromQuad(QuadElementConstView quad,GeomShape& geom_cell)
149 _setNullItem(IT_Quad4);
154 geom_cell._setArray(*
this);
354 Real3 c = nul_vector;
356 for(
Integer i = 0; i<8; ++i ){
361 setCenter(0.125 * c);
364 _addFaceD( 0 , 0 , 3 , 2 , 1 );
365 _addFaceD( 1 , 0 , 4 , 7 , 3 );
366 _addFaceD( 2 , 0 , 1 , 5 , 4 );
367 _addFaceD( 3 , 4 , 5 , 6 , 7 );
368 _addFaceD( 4 , 1 , 2 , 6 , 5 );
369 _addFaceD( 5 , 2 , 3 , 7 , 6 );
383 Real3 c = nul_vector;
394 _addFace2D( 0 , 0 , 1 );
395 _addFace2D( 1 , 1 , 2 );
396 _addFace2D( 2 , 2 , 3 );
397 _addFace2D( 3 , 3 , 0 );
408 view._setNullItem(IT_Hexaedron8);
427 view._setNullItem(IT_Quad4);
Classe gérant un vecteur de réel de dimension 3.
void computeNodePositionFromQuad(QuadElementConstView quad)
En 2D, calcule les positions à partir du quad quad.
void computeNodePositionFromHexa(HexaElementConstView hexa)
En 3D, calcule les psoitions à partir de l'hexaèdre hexa.
const Real3 node(Integer i) const
Position du ième noeud de la forme.
void fillSubZoneHexaedron8(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZoneOctaedron12(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
const Real3 face(Integer i) const
Position du centre de la ième face de la forme.
void fillSubZoneQuad4(Quad4ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
ARCANE_DEPRECATED_122 void initFromHexa(HexaElementConstView hexa, GeomShape &geom_cell)
const Real3 edge(Integer i) const
Position du centre de la i-ème arête de la forme.
ARCANE_DEPRECATED_122 void initFromQuad(QuadElementConstView hexa, GeomShape &geom_cell)
void fillSubZoneHeptaedron10(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZoneHexagon6(Quad4ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZonePentaedron6(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZoneTriangle3(Quad4ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZoneTetraedron4(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
Face face() const
Face associée (null si aucune)
const Real3 center() const
Position du centre de la forme.
const NodeConnectic & nodeConnectic(Integer i) const
Informations de connectivité aux noeuds.
void fillSubZonePyramid5(Hexaedron8ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZonePentagon5(Quad4ElementView svc, Integer i)
Remplit svc avec les informations du i-ème sous-volume de contrôle.
void fillSubZoneElement(HexaElementView hexa, Integer i)
Remplit hexa avec les informations du i-ème sous-volume de contrôle.
Integer nodeAssociation(Integer i) const
Numéro local du sommet associé au sous volume de controle.
Hexaedron8ShapeView initFromHexaedron8(Hexaedron8ElementConstView hexa)
Initialise la forme avec un hexaèdre hexa et retourne une vue dessus.
Quad4ShapeView initFromQuad4(Quad4ElementConstView quad)
Initialise la forme avec un quadrangle quad et retourne une vue dessus.
GeomShapeMutableView toMutableView()
Vue modifiable sur cet instance.
Informations de connectivité pour les éléments géométriques de type GeomType::Heptaedron10.
Informations de connectivité pour les éléments géométriques de type GeomType::Hexaedron8.
Vue constante sur les éléments géométriques de type GeomType::Hexaedron8.
void init(const Real3 &a0, const Real3 &a1, const Real3 &a2, const Real3 &a3, const Real3 &a4, const Real3 &a5, const Real3 &a6, const Real3 &a7)
Initialise la vue avec les coordonnées passées en argument.
Vue spécifique sur les formes géométriques de type GeomType::Hexaedron8.
Informations de connectivité pour les éléments géométriques de type GeomType::Hexagon6.
Informations de connectivité pour les éléments géométriques de type GeomType::Line2.
Informations de connectivité pour les éléments géométriques de type IT_NullType.
Informations de connectivité pour les éléments géométriques de type GeomType::Octaedron12.
Informations de connectivité pour les éléments géométriques de type GeomType::Pentaedron6.
Informations de connectivité pour les éléments géométriques de type GeomType::Pentagon5.
Informations de connectivité pour les éléments géométriques de type GeomType::Pyramid5.
Informations de connectivité pour les éléments géométriques de type GeomType::Quad4.
Vue constante sur les éléments géométriques de type GeomType::Quad4.
Vue modifiable sur les éléments géométriques de type GeomType::Quad4.
void init(const Real3 &a0, const Real3 &a1, const Real3 &a2, const Real3 &a3)
Initialise la vue avec les coordonnées passées en argument.
Vue spécifique sur les formes géométriques de type GeomType::Quad4.
Informations de connectivité pour les éléments géométriques de type GeomType::Tetraedron4.
Informations de connectivité pour les éléments géométriques de type GeomType::Triangle3.
Informations de connectivité pour les éléments géométriques de type GeomType::Vertex.
Int32 Integer
Type représentant un entier.
Structures de connectique locale des mailles.