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
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;
112 _addFaceD(Integer fid,Integer id1,Integer id2,Integer id3,Integer id4)
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 )));
121 _addFace2D(Integer fid,Integer id1,Integer id2)
124 Real3( 0.5 * ( node(id1).x + node(id2).x ),
125 0.5 * ( node(id1).y + node(id2).y ),
136 _setNullItem(IT_Hexaedron8);
141 geom_cell._setArray(*
this);
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)));
181 case 0: sub_zone.
init(node(0),face( 0),center(),face(3));
break;
182 case 1: sub_zone.
init(node(1),face( 1),center(),face(0));
break;
183 case 2: sub_zone.
init(node(2),face( 2),center(),face(1));
break;
184 case 3: sub_zone.
init(node(3),face( 3),center(),face(2));
break;
195 case 0: sub_zone.
init(node(0),face(0),center(),node(0));
break;
196 case 1: sub_zone.
init(node(1),face(1),center(),face(0));
break;
197 case 2: sub_zone.
init(node(2),face(2),center(),face(1));
break;
198 case 3: sub_zone.
init(node(0),node(0),center(),face(2));
break;
208 throw NotImplementedException(A_FUNCINFO);
217 throw NotImplementedException(A_FUNCINFO);
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)));
240 case 0: sub_zone.
init(node(0),edge( 0),face(0),edge( 3),edge( 4),face(2),center(),face(1));
break;
241 case 1: sub_zone.
init(node(1),edge( 1),face(0),edge( 0),edge( 5),face(4),center(),face(2));
break;
242 case 2: sub_zone.
init(node(2),edge( 2),face(0),edge( 1),edge( 6),face(5),center(),face(4));
break;
243 case 3: sub_zone.
init(node(3),edge( 3),face(0),edge( 2),edge( 7),face(1),center(),face(5));
break;
244 case 4: sub_zone.
init(node(4),edge(11),face(3),edge( 8),edge( 4),face(1),center(),face(2));
break;
245 case 5: sub_zone.
init(node(5),edge( 8),face(3),edge( 9),edge( 5),face(2),center(),face(4));
break;
246 case 6: sub_zone.
init(node(6),edge( 9),face(3),edge(10),edge( 6),face(4),center(),face(5));
break;
247 case 7: sub_zone.
init(node(7),edge(10),face(3),edge(11),edge( 7),face(5),center(),face(1));
break;
258 case 0: sub_zone.
init(node(0),edge(0),face(0),edge(3),edge(4),face(2),center(),face(1));
break;
259 case 1: sub_zone.
init(node(1),edge(1),face(0),edge(0),edge(5),face(3),center(),face(2));
break;
260 case 2: sub_zone.
init(node(2),edge(2),face(0),edge(1),edge(6),face(4),center(),face(3));
break;
261 case 3: sub_zone.
init(node(3),edge(3),face(0),edge(2),edge(7),face(1),center(),face(4));
break;
262 case 4: sub_zone.
init(node(4),node(4),node(4),node(4),edge(4),face(1),center(),face(2));
break;
263 case 5: sub_zone.
init(node(4),node(4),node(4),node(4),edge(5),face(2),center(),face(3));
break;
264 case 6: sub_zone.
init(node(4),node(4),node(4),node(4),edge(6),face(3),center(),face(4));
break;
265 case 7: sub_zone.
init(node(4),node(4),node(4),node(4),edge(7),face(4),center(),face(1));
break;
276 case 0: sub_zone.
init(node(0),edge(0),face(0),edge(2),edge( 3),face(2),center(),face(1));
break;
277 case 1: sub_zone.
init(node(1),edge(1),face(0),edge(0),edge( 4),face(4),center(),face(2));
break;
278 case 2: sub_zone.
init(node(2),edge(2),face(0),edge(1),edge( 5),face(1),center(),face(4));
break;
279 case 3: sub_zone.
init(node(3),edge(8),face(3),edge(6),edge( 3),face(1),center(),face(2));
break;
280 case 4: sub_zone.
init(node(4),edge(6),face(3),edge(7),edge( 4),face(2),center(),face(4));
break;
281 case 5: sub_zone.
init(node(5),edge(7),face(3),edge(8),edge( 5),face(4),center(),face(1));
break;
292 case 0: sub_zone.
init(node(0),edge(0),face(0),edge( 2),edge(3),face(2),center(),face(1));
break;
293 case 1: sub_zone.
init(node(1),edge(1),face(0),edge( 0),edge(4),face(3),center(),face(2));
break;
294 case 2: sub_zone.
init(node(2),edge(2),face(0),edge( 1),edge(5),face(1),center(),face(3));
break;
295 case 3: sub_zone.
init(node(3),edge(3),face(1),edge( 5),edge(4),face(2),center(),face(3));
break;
306 case 0: sub_zone.
init(node(0),edge( 0),face(0),edge( 4),edge(10),face(2),center(),face(6));
break;
307 case 1: sub_zone.
init(node(1),edge( 1),face(0),edge( 0),edge(11),face(3),center(),face(2));
break;
308 case 2: sub_zone.
init(node(2),edge( 2),face(0),edge( 1),edge(12),face(4),center(),face(3));
break;
309 case 3: sub_zone.
init(node(3),edge( 3),face(0),edge( 2),edge(13),face(5),center(),face(4));
break;
310 case 4: sub_zone.
init(node(4),edge( 4),face(0),edge( 3),edge(14),face(6),center(),face(5));
break;
311 case 5: sub_zone.
init(node(5),edge( 9),face(1),edge( 5),edge(10),face(6),center(),face(2));
break;
312 case 6: sub_zone.
init(node(6),edge( 5),face(1),edge( 6),edge(11),face(2),center(),face(3));
break;
313 case 7: sub_zone.
init(node(7),edge( 6),face(1),edge( 7),edge(12),face(3),center(),face(4));
break;
314 case 8: sub_zone.
init(node(8),edge( 7),face(1),edge( 8),edge(13),face(4),center(),face(5));
break;
315 case 9: sub_zone.
init(node(9),edge( 8),face(1),edge( 9),edge(14),face(5),center(),face(6));
break;
326 case 0: sub_zone.
init(node( 0),edge( 0),face(0),edge( 5),edge(12),face(2),center(),face(7));
break;
327 case 1: sub_zone.
init(node( 1),edge( 1),face(0),edge( 0),edge(13),face(3),center(),face(2));
break;
328 case 2: sub_zone.
init(node( 2),edge( 2),face(0),edge( 1),edge(14),face(4),center(),face(3));
break;
329 case 3: sub_zone.
init(node( 3),edge( 3),face(0),edge( 2),edge(15),face(5),center(),face(4));
break;
330 case 4: sub_zone.
init(node( 4),edge( 4),face(0),edge( 3),edge(16),face(6),center(),face(5));
break;
331 case 5: sub_zone.
init(node( 5),edge( 5),face(0),edge( 4),edge(17),face(7),center(),face(6));
break;
332 case 6: sub_zone.
init(node( 6),edge(11),face(1),edge( 6),edge(12),face(7),center(),face(2));
break;
333 case 7: sub_zone.
init(node( 7),edge( 6),face(1),edge( 7),edge(13),face(2),center(),face(3));
break;
334 case 8: sub_zone.
init(node( 8),edge( 7),face(1),edge( 8),edge(14),face(3),center(),face(4));
break;
335 case 9: sub_zone.
init(node( 9),edge( 8),face(1),edge( 9),edge(15),face(4),center(),face(5));
break;
336 case 10: sub_zone.
init(node(10),edge( 9),face(1),edge(10),edge(16),face(5),center(),face(6));
break;
337 case 11: sub_zone.
init(node(11),edge(10),face(1),edge(11),edge(17),face(6),center(),face(7));
break;
349void GeomShapeStdBuilder::
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::
384 Real3 c = nul_vector;
386 for( Integer i = 0; i<4; ++i )
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.
Vue modifiable sur un GeomShape.
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.
GeomShapeMutableView toMutableView()
Vue modifiable sur cet instance.
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::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 modifiable 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 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.
Structures de connectique locale des mailles.