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);
171 sub_zone.
init(node(nodeAssociation(
id)),face(nc.face(0)), center(),face(nc.face(1)));
206fillSubZonePentagon5(QuadElementView,
Integer)
215fillSubZoneHexagon6(QuadElementView,
Integer)
224fillSubZoneElement(HexaElementView sub_zone,
Integer i)
228 sub_zone.
init(node(nodeAssociation(i)),
229 edge(nc.edge(0)),face(nc.face(0)),edge(nc.edge(1)),
230 edge(nc.edge(2)),face(nc.face(2)),center(),face(nc.face(1)));
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
void computeNodePositionFromHexa(HexaElementConstView hexa)
En 3D, calcule les psoitions à partir de l'hexaèdre hexa.
void computeNodePositionFromQuad(QuadElementConstView quad)
En 2D, calcule les positions à partir du quad quad.
GeomShapeMutableView toMutableView()
Vue modifiable sur cet instance.
Exception lorsqu'une fonction n'est pas implémentée.
Informations de connectivité pour les éléments géométriques de type IT_NullType.
Classe gérant un vecteur de réel de dimension 3.
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.
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 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.
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.
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 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 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.