14#include "arcane/utils/TraceAccessor.h"
16#include "arcane/geometric/GeomElement.h"
17#include "arcane/geometric/GeomShapeView.h"
18#include "arcane/geometric/CellConnectivity.h"
25GEOMETRIC_BEGIN_NAMESPACE
35class GeomShapeConnectivity
39 GeomShapeConnectivity()
41 for(
int i=0; i<NB_BASIC_ITEM_TYPE; ++i )
42 GeomShapeView::global_cell_connectivity[i] = 0;
44 GeomShapeView::global_cell_connectivity[IT_NullType] = &m_null_connectivity;
45 GeomShapeView::global_cell_connectivity[IT_Vertex] = &m_vertex_connectivity;
46 GeomShapeView::global_cell_connectivity[IT_Line2] = &m_line2_connectivity;
47 GeomShapeView::global_cell_connectivity[IT_Triangle3] = &m_triangle3_connectivity;
48 GeomShapeView::global_cell_connectivity[IT_Quad4] = &m_quad4_connectivity;
49 GeomShapeView::global_cell_connectivity[IT_Pentagon5] = &m_pentagon5_connectivity;
50 GeomShapeView::global_cell_connectivity[IT_Hexagon6] = &m_hexagon6_connectivity;
51 GeomShapeView::global_cell_connectivity[IT_Tetraedron4] = &m_tetraedron4_connectivity;
52 GeomShapeView::global_cell_connectivity[IT_Pyramid5] = &m_pyramid5_connectivity;
53 GeomShapeView::global_cell_connectivity[IT_Pentaedron6] = &m_pentaedron6_connectivity;
54 GeomShapeView::global_cell_connectivity[IT_Hexaedron8] = &m_hexaedron8_connectivity;
55 GeomShapeView::global_cell_connectivity[IT_Heptaedron10] = &m_heptaedron10_connectivity;
56 GeomShapeView::global_cell_connectivity[IT_Octaedron12] = &m_octaedron12_connectivity;
79initializeConnectivity()
81 if (global_connectivity)
90CellConnectivity* GeomShapeView::global_cell_connectivity[NB_BASIC_ITEM_TYPE];
91GeomShapeConnectivity* GeomShapeView::global_connectivity = 0;
99class GeomShapeStdBuilder
100:
public GeomShapeMutableView
103 GeomShapeStdBuilder(
const GeomShapeMutableView& gsv)
104 : GeomShapeMutableView(gsv)
115 Real3( 0.25 * ( node(id1).x + node(id2).x + node(id3).x + node(id4).x ),
116 0.25 * ( node(id1).y + node(id2).y + node(id3).y + node(id4).y ),
117 0.25 * ( node(id1).z + node(id2).z + node(id3).z + node(id4).z )));
124 Real3( 0.5 * ( node(id1).x + node(id2).x ),
125 0.5 * ( node(id1).y + node(id2).y ),
134initFromHexa(HexaElementConstView hexa,GeomShape& geom_cell)
136 _setNullItem(IT_Hexaedron8);
141 geom_cell._setArray(*
this);
148initFromQuad(QuadElementConstView quad,GeomShape& geom_cell)
150 _setNullItem(IT_Quad4);
155 geom_cell._setArray(*
this);
206fillSubZonePentagon5(QuadElementView,
Integer)
215fillSubZoneHexagon6(QuadElementView,
Integer)
224fillSubZoneElement(HexaElementView sub_zone,
Integer i)
237fillSubZoneHexaedron8(HexaElementView sub_zone,
Integer i)
255fillSubZonePyramid5(HexaElementView sub_zone,
Integer i)
273fillSubZonePentaedron6(HexaElementView sub_zone,
Integer i)
289fillSubZoneTetraedron4(HexaElementView sub_zone,
Integer i)
303fillSubZoneHeptaedron10(HexaElementView sub_zone,
Integer i)
323fillSubZoneOctaedron12(HexaElementView sub_zone,
Integer i)
349void GeomShapeStdBuilder::
350computeNodePositionFromHexa(HexaElementConstView hexa)
355 Real3 c = nul_vector;
357 for(
Integer i = 0; i<8; ++i ){
362 setCenter(0.125 * c);
365 _addFaceD( 0 , 0 , 3 , 2 , 1 );
366 _addFaceD( 1 , 0 , 4 , 7 , 3 );
367 _addFaceD( 2 , 0 , 1 , 5 , 4 );
368 _addFaceD( 3 , 4 , 5 , 6 , 7 );
369 _addFaceD( 4 , 1 , 2 , 6 , 5 );
370 _addFaceD( 5 , 2 , 3 , 7 , 6 );
378void GeomShapeStdBuilder::
379computeNodePositionFromQuad(QuadElementConstView quad)
384 Real3 c = nul_vector;
395 _addFace2D( 0 , 0 , 1 );
396 _addFace2D( 1 , 1 , 2 );
397 _addFace2D( 2 , 2 , 3 );
398 _addFace2D( 3 , 3 , 0 );
409 view._setNullItem(IT_Hexaedron8);
428 view._setNullItem(IT_Quad4);
441GEOMETRIC_END_NAMESPACE
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.
const Real3 face(Integer i) const
Position du centre de la ième face de la forme.
const Real3 edge(Integer i) const
Position du centre de la i-ème arête de la forme.
const Real3 center() const
Position du centre de la forme.
const NodeConnectic & nodeConnectic(Integer i) const
Informations de connectivité aux noeuds.
Integer nodeAssociation(Integer i) const
Numéro local du sommet associé au sous volume de controle.
GeomShapeMutableView toMutableView()
Vue modifiable sur cet instance.
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 IT_NullType.
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::Heptaedron10.
Informations de connectivité pour les éléments 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 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.
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.