Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
GeometricConnectic.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* GeometricConnectic.h (C) 2000-2014 */
9/* */
10/* Connectiques des élements 2D/3D. . */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13#ifndef ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
14#define ARCANE_GEOMETRIC_GEOMETRICCONNECTIC_H
15/*---------------------------------------------------------------------------*/
16/*---------------------------------------------------------------------------*/
17
18#include "arcane/ArcaneTypes.h"
19
20#include "arcane/geometric/GeometricGlobal.h"
21
22#ifdef __GNUC__
23#define ARCANE_UNUSED_ATTRIBUTE __attribute__((unused))
24#else
25#define ARCANE_UNUSED_ATTRIBUTE
26#endif
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31ARCANE_BEGIN_NAMESPACE
32GEOMETRIC_BEGIN_NAMESPACE
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69/*---------------------------------------------------------------------------*/
80{
81 public:
82
83 Integer nbNode() const { return m_nb_node; }
84 Integer node(Integer i) const { return m_node[i]; }
85
86 public:
87
89 : m_nb_node(0)
90 {
91 m_node[0] = NULL_ITEM_ID;
92 m_node[1] = NULL_ITEM_ID;
93 m_node[2] = NULL_ITEM_ID;
94 m_node[3] = NULL_ITEM_ID;
95 m_node[4] = NULL_ITEM_ID;
96 m_node[5] = NULL_ITEM_ID;
97 }
98
99 FaceConnectic(Integer n0,Integer n1,Integer n2,
100 Integer n3,Integer n4,Integer n5)
101 : m_nb_node(6)
102 {
103 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
104 m_node[3] = n3; m_node[4] = n4; m_node[5] = n5;
105 }
106
107 FaceConnectic(Integer n0,Integer n1,Integer n2,Integer n3,Integer n4)
108 : m_nb_node(5)
109 {
110 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
111 m_node[3] = n3; m_node[4] = n4;
112 }
113
114 FaceConnectic(Integer n0,Integer n1,Integer n2,Integer n3)
115 : m_nb_node(4)
116 {
117 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2; m_node[3] = n3;
118 }
119
120 FaceConnectic(Integer n0,Integer n1,Integer n2)
121 : m_nb_node(3)
122 {
123 m_node[0] = n0; m_node[1] = n1; m_node[2] = n2;
124 }
125
126 FaceConnectic(Integer n0,Integer n1)
127 : m_nb_node(2)
128 {
129 m_node[0] = n0; m_node[1] = n1;
130 }
131 private:
132
133 Integer m_node[6];
134 Integer m_nb_node;
135};
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
152{
153 public :
154 Integer nbNode() const { return 2; }
155
157 {
158 m_node[0] = NULL_ITEM_ID; m_node[1] = NULL_ITEM_ID;
159 m_face[0] = NULL_ITEM_ID; m_face[1] = NULL_ITEM_ID;
160 }
161
162 EdgeConnectic(Integer n0,Integer n1,Integer f0,Integer f1 )
163 {
164 m_node[0] = n0; m_node[1] = n1;
165 m_face[0] = f0; m_face[1] = f1;
166 }
167 public:
168
169 inline Integer node(Integer i) const { return m_node[i]; }
170 inline Integer face(Integer i) const { return m_face[i]; }
171
172 private:
173
174 Integer m_node[2];
175 Integer m_face[2];
176};
177
178/*---------------------------------------------------------------------------*/
179/*---------------------------------------------------------------------------*/
187{
188 public:
190 {
191 m_edge[0] = NULL_ITEM_ID; m_edge[1] = NULL_ITEM_ID; m_edge[2] = NULL_ITEM_ID;
192 m_face[0] = NULL_ITEM_ID; m_face[1] = NULL_ITEM_ID; m_face[2] = NULL_ITEM_ID;
193 m_node[0] = m_node[1] = m_node[2] = m_node[3] = NULL_ITEM_ID;
194 }
195 // 3D
196 NodeConnectic(Integer e0,Integer e1,Integer e2,
197 Integer f0,Integer f1,Integer f2,
198 Integer n0, Integer n1, Integer n2, Integer n3)
199 {
200 m_edge[0] = e0; m_edge[1] = e1; m_edge[2] = e2;
201 m_face[0] = f0; m_face[1] = f1; m_face[2] = f2;
202 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2, m_node[3] = n3;
203 }
204
205 // 2D
206 NodeConnectic(Integer f0,Integer f1,
207 Integer n0, Integer n1, Integer n2)
208 {
209 m_face[0] = f0; m_face[1] = f1;
210 m_node[0] = n0, m_node[1] = n1, m_node[2] = n2;
211 }
212
213 public:
214
215 inline Integer edge(Integer i) const { return m_edge[i]; }
216 inline Integer face(Integer i) const { return m_face[i]; }
217 inline Integer node(Integer i) const { return m_node[i]; }
218 private:
219
220 Integer m_edge[3];
221 Integer m_face[3];
222 Integer m_node[4];
223};
224
225/*---------------------------------------------------------------------------*/
226/*---------------------------------------------------------------------------*/
235{
236 public:
237
239 : m_edge(0), m_face1(0), m_face2(0), m_node_pos(0), m_node_neg(0)
240 {}
241
242 // 3D
243 SVCFaceConnectic(Integer face1, Integer edge, Integer face2,
244 Integer node_pos, Integer node_neg)
245 : m_edge (edge), m_face1(face1), m_face2(face2), m_node_pos(node_pos),
246 m_node_neg (node_neg)
247 {
248 }
249
250 // 2D
251 SVCFaceConnectic(Integer face1, Integer node_pos, Integer node_neg)
252 : m_edge(NULL_ITEM_LOCAL_ID), m_face1(face1),
253 m_face2(NULL_ITEM_LOCAL_ID), m_node_pos(node_pos),
254 m_node_neg (node_neg)
255 {
256 }
257
258 inline Integer edge() const { return m_edge; }
259 inline Integer firstFace() const { return m_face1; }
260 inline Integer secondFace() const { return m_face2; }
261 inline Integer positiveNode () const { return m_node_pos;}
262 inline Integer negativeNode () const { return m_node_neg;}
263
264 private:
265
266 Integer m_edge;
267 Integer m_face1;
268 Integer m_face2;
269 Integer m_node_pos;
270 Integer m_node_neg;
271};
272
273/*---------------------------------------------------------------------------*/
274/*---------------------------------------------------------------------------*/
275
276
277// tableaux de constantes pour les hexaèdres
278//------------------------------------------
279
280// noeuds de l'hexaèdre
281const Integer hexa_node_association[8]={0,1,2,3,4,5,6,7};
282
283// pour chaque noeud, on donne les 3 arêtes et les 3 faces auxquelles il est connecté
284const NodeConnectic hexa_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
285{
286 NodeConnectic( /* Edges */ 0, 3, 4, /* Faces */ 0, 1, 2, /* Nodes */ 0, 1, 3, 4),
287 NodeConnectic( /* Edges */ 1, 0, 5, /* Faces */ 0, 2, 4, /* Nodes */ 1, 2, 0, 5),
288 NodeConnectic( /* Edges */ 2, 1, 6, /* Faces */ 0, 4, 5, /* Nodes */ 2, 3, 1, 6),
289 NodeConnectic( /* Edges */ 3, 2, 7, /* Faces */ 0, 5, 1, /* Nodes */ 3, 0, 2, 7),
290 NodeConnectic( /* Edges */ 11, 8, 4, /* Faces */ 3, 2, 1, /* Nodes */ 4, 7, 5, 0),
291 NodeConnectic( /* Edges */ 8, 9, 5, /* Faces */ 3, 4, 2, /* Nodes */ 5, 4, 6, 1),
292 NodeConnectic( /* Edges */ 9, 10, 6, /* Faces */ 3, 5, 4, /* Nodes */ 6, 5, 7, 2),
293 NodeConnectic( /* Edges */ 10, 11, 7, /* Faces */ 3, 1, 5, /* Nodes */ 7, 6, 4, 3)
294};
295
296// pour chaque arête, on donne les 2 noeuds qui la composent et les 2 faces auxquelles elle est connectée
297const EdgeConnectic hexa_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
298{
299 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,4),EdgeConnectic(2,3,0,5),EdgeConnectic(3,0,0,1),
300 EdgeConnectic(0,4,2,1),EdgeConnectic(1,5,4,2),EdgeConnectic(2,6,5,4),EdgeConnectic(3,7,1,5),
301 EdgeConnectic(4,5,2,3),EdgeConnectic(5,6,4,3),EdgeConnectic(6,7,5,3),EdgeConnectic(7,4,1,3)
302};
303
304// pour chaque face, on donne les noeuds qui la composent
305const FaceConnectic hexa_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
306{
307 FaceConnectic(0,3,2,1),FaceConnectic(0,4,7,3),FaceConnectic(0,1,5,4),
308 FaceConnectic(4,5,6,7),FaceConnectic(1,2,6,5),FaceConnectic(2,3,7,6)
309};
310
311// Generated by calcul.rb
312const SVCFaceConnectic hexa_svc_face_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
313{
314 SVCFaceConnectic(4, 1, 0, 1, 2 ),
315 SVCFaceConnectic(1, 11, 3, 4, 7 ),
316 SVCFaceConnectic(5, 7, 1, 3, 7 ),
317 SVCFaceConnectic(3, 9, 4, 5, 6 ),
318 SVCFaceConnectic(2, 0, 0, 0, 1 ),
319 SVCFaceConnectic(3, 10, 5, 6, 7 ),
320 SVCFaceConnectic(4, 6, 5, 2, 6 ),
321 SVCFaceConnectic(2, 5, 4, 1, 5 ),
322 SVCFaceConnectic(5, 2, 0, 2, 3 ),
323 SVCFaceConnectic(1, 4, 2, 0, 4 ),
324 SVCFaceConnectic(0, 3, 1, 0, 3 ),
325 SVCFaceConnectic(3, 8, 2, 4, 5 )
326};
327
328// tableaux de constantes pour les pyramides
329//------------------------------------------
330
331const Integer pyra_node_association[8]={0,1,2,3,4,4,4,4};
332
333const NodeConnectic pyra_node_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
334{
335 NodeConnectic( /* Edges */ 0, 3, 4, /* Faces */ 0, 1, 2, /* Nodes */ 0, 1, 3, 4),
336 NodeConnectic( /* Edges */ 1, 0, 5, /* Faces */ 0, 2, 3, /* Nodes */ 1, 2, 0, 4),
337 NodeConnectic( /* Edges */ 2, 1, 6, /* Faces */ 0, 3, 4, /* Nodes */ 2, 3, 1, 4),
338 NodeConnectic( /* Edges */ 3, 2, 7, /* Faces */ 0, 4, 1, /* Nodes */ 3, 0, 2, 4),
339 NodeConnectic( /* Edges */ 11, 8, 4, /* Faces */ 5, 2, 1, /* Nodes */ 4, 1, 0, 3),
340 NodeConnectic( /* Edges */ 8, 9, 5, /* Faces */ 5, 3, 2, /* Nodes */ 4, 2, 1, 0),
341 NodeConnectic( /* Edges */ 9, 10, 6, /* Faces */ 5, 4, 3, /* Nodes */ 4, 3, 2, 1),
342 NodeConnectic( /* Edges */ 10, 11, 7, /* Faces */ 5, 1, 4, /* Nodes */ 4, 0, 3, 2)
343};
344
345
346const EdgeConnectic pyra_edge_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
347{
348 EdgeConnectic(0,1,0,2),
349 EdgeConnectic(1,2,0,3),
350 EdgeConnectic(2,3,0,4),
351 EdgeConnectic(3,0,0,1),
352 EdgeConnectic(0,4,2,1),
353 EdgeConnectic(1,4,3,2),
354 EdgeConnectic(2,4,4,3),
355 EdgeConnectic(3,4,1,4),
356 EdgeConnectic(4,4,2,5),
357 EdgeConnectic(4,4,3,5),
358 EdgeConnectic(4,4,4,5),
359 EdgeConnectic(4,4,1,5)
360};
361
362const FaceConnectic pyra_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
363{
364 FaceConnectic(0,3,2,1),
365 FaceConnectic(0,4,3),
366 FaceConnectic(0,1,4),
367 FaceConnectic(1,2,4),
368 FaceConnectic(2,3,4),
369 FaceConnectic(4,4,4)
370};
371
372// Generated by calcul.rb and modified to remove null faces
373const SVCFaceConnectic pyra_svc_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
374{
375 SVCFaceConnectic(4, 2, 0, 2, 3 ),
376 SVCFaceConnectic(2, 0, 0, 0, 1 ),
377 SVCFaceConnectic(4, 7, 1, 3, 4 ),
378 SVCFaceConnectic(2, 5, 3, 1, 4 ),
379 SVCFaceConnectic(3, 1, 0, 1, 2 ),
380 SVCFaceConnectic(3, 6, 4, 2, 4 ),
381 SVCFaceConnectic(1, 4, 2, 0, 4 ),
382 SVCFaceConnectic(0, 3, 1, 0, 3 )
383};
384
385
386// tableaux de constantes pour les pentaèdres
387//-------------------------------------------
388
389const Integer penta_node_association[6]={0,1,2,3,4,5};
390
391const NodeConnectic penta_node_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
392{
393 NodeConnectic( /* Edges */ 0, 2, 3, /* Faces */ 0, 1, 2, /* Nodes */ 0, 1, 2, 3),
394 NodeConnectic( /* Edges */ 1, 0, 4, /* Faces */ 0, 2, 4, /* Nodes */ 1, 2, 0, 4),
395 NodeConnectic( /* Edges */ 2, 1, 5, /* Faces */ 0, 4, 1, /* Nodes */ 2, 0, 1, 5),
396 NodeConnectic( /* Edges */ 8, 6, 3, /* Faces */ 3, 2, 1, /* Nodes */ 3, 5, 4, 0),
397 NodeConnectic( /* Edges */ 6, 7, 4, /* Faces */ 3, 4, 2, /* Nodes */ 4, 3, 5, 1),
398 NodeConnectic( /* Edges */ 7, 8, 5, /* Faces */ 3, 1, 4, /* Nodes */ 5, 4, 3, 2)
399};
400
401
402const EdgeConnectic penta_edge_connectic[9] ARCANE_UNUSED_ATTRIBUTE =
403{
404 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,4),EdgeConnectic(2,0,1,0),EdgeConnectic(0,3,1,2),
405 EdgeConnectic(1,4,2,4),EdgeConnectic(2,5,4,1),EdgeConnectic(3,4,2,3),EdgeConnectic(4,5,4,3),
406 EdgeConnectic(5,3,1,3)
407};
408
409const FaceConnectic penta_face_connectic[5] ARCANE_UNUSED_ATTRIBUTE =
410{
411 FaceConnectic(0,2,1),FaceConnectic(0,3,5,2),FaceConnectic(0,1,4,3),
412 FaceConnectic(3,4,5),FaceConnectic(1,2,5,4)
413};
414
415// Generated by calcul.rb
416const SVCFaceConnectic penta_svc_face_connectic[9] ARCANE_UNUSED_ATTRIBUTE =
417{
418 SVCFaceConnectic(1, 8, 3, 3, 5 ),
419 SVCFaceConnectic(4, 5, 1, 2, 5 ),
420 SVCFaceConnectic(0, 2, 1, 0, 2 ),
421 SVCFaceConnectic(4, 1, 0, 1, 2 ),
422 SVCFaceConnectic(3, 6, 2, 3, 4 ),
423 SVCFaceConnectic(2, 4, 4, 1, 4 ),
424 SVCFaceConnectic(2, 0, 0, 0, 1 ),
425 SVCFaceConnectic(1, 3, 2, 0, 3 ),
426 SVCFaceConnectic(3, 7, 4, 4, 5 )
427};
428
429
430// tableaux de constantes pour les tétraèdres
431//-------------------------------------------
432
433const Integer tetra_node_association[4]={0,1,2,3};
434
435const NodeConnectic tetra_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
436{
437 NodeConnectic( /* Edges */ 0, 2, 3, /* Faces */ 0, 1, 2, /* Nodes */ 0, 1, 2, 3),
438 NodeConnectic( /* Edges */ 1, 0, 4, /* Faces */ 0, 2, 3, /* Nodes */ 1, 2, 0, 3),
439 NodeConnectic( /* Edges */ 2, 1, 5, /* Faces */ 0, 3, 1, /* Nodes */ 2, 0, 1, 3),
440 NodeConnectic( /* Edges */ 3, 5, 4, /* Faces */ 1, 3, 2, /* Nodes */ 3, 0, 2, 1)
441};
442
443const EdgeConnectic tetra_edge_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
444{
445 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,3),EdgeConnectic(2,0,0,1),EdgeConnectic(0,3,1,2),
446 EdgeConnectic(1,3,2,3),EdgeConnectic(2,3,1,3)
447};
448
449const FaceConnectic tetra_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
450{
451 FaceConnectic(0,2,1),FaceConnectic(0,3,2),FaceConnectic(0,1,3),
452 FaceConnectic(3,1,2)
453};
454
455// Generated by calcul.rb
456const SVCFaceConnectic tetra_svc_face_connectic[6] ARCANE_UNUSED_ATTRIBUTE =
457{
458 SVCFaceConnectic(0, 2, 1, 0, 2 ),
459 SVCFaceConnectic(2, 4, 3, 1, 3 ),
460 SVCFaceConnectic(2, 0, 0, 0, 1 ),
461 SVCFaceConnectic(1, 3, 2, 0, 3 ),
462 SVCFaceConnectic(3, 5, 1, 2, 3 ),
463 SVCFaceConnectic(3, 1, 0, 1, 2 )
464};
465
466// tableaux de constantes pour les prismes à base pentagonale
467//-----------------------------------------------------------
468
469const Integer wedge7_node_association[10]={0,1,2,3,4,5,6,7,8,9};
470
471const NodeConnectic wedge7_node_connectic[10] ARCANE_UNUSED_ATTRIBUTE =
472{
473 NodeConnectic( /* Edges */ 0, 4, 10, /* Faces */ 0, 6, 2, /* Nodes */ 0, 1, 4, 5),
474 NodeConnectic( /* Edges */ 1, 0, 11, /* Faces */ 0, 2, 3, /* Nodes */ 1, 2, 0, 6),
475 NodeConnectic( /* Edges */ 2, 1, 12, /* Faces */ 0, 3, 4, /* Nodes */ 2, 3, 1, 7),
476 NodeConnectic( /* Edges */ 3, 2, 13, /* Faces */ 0, 4, 5, /* Nodes */ 3, 4, 2, 8),
477 NodeConnectic( /* Edges */ 4, 3, 14, /* Faces */ 0, 5, 6, /* Nodes */ 4, 0, 3, 9),
478 NodeConnectic( /* Edges */ 9, 5, 10, /* Faces */ 1, 2, 6, /* Nodes */ 5, 9, 6, 0),
479 NodeConnectic( /* Edges */ 5, 6, 11, /* Faces */ 1, 3, 2, /* Nodes */ 6, 5, 7, 1),
480 NodeConnectic( /* Edges */ 6, 7, 12, /* Faces */ 1, 4, 3, /* Nodes */ 7, 6, 8, 2),
481 NodeConnectic( /* Edges */ 7, 8, 13, /* Faces */ 1, 5, 4, /* Nodes */ 8, 7, 9, 3),
482 NodeConnectic( /* Edges */ 8, 9, 14, /* Faces */ 1, 6, 5, /* Nodes */ 9, 8, 5, 4)
483};
484
485const EdgeConnectic wedge7_edge_connectic[15] ARCANE_UNUSED_ATTRIBUTE =
486{
487 EdgeConnectic(0,1,0,2),EdgeConnectic(1,2,0,3),EdgeConnectic(2,3,0,4),EdgeConnectic(3,4,0,5),
488 EdgeConnectic(4,0,0,6),EdgeConnectic(5,6,2,1),EdgeConnectic(6,7,3,1),EdgeConnectic(7,8,4,1),
489 EdgeConnectic(8,9,5,1),EdgeConnectic(9,5,6,1),EdgeConnectic(0,5,6,2),EdgeConnectic(1,6,2,3),
490 EdgeConnectic(2,7,3,4),EdgeConnectic(3,8,4,5),EdgeConnectic(4,9,5,6)
491};
492
493const FaceConnectic wedge7_face_connectic[7] ARCANE_UNUSED_ATTRIBUTE =
494{
495 FaceConnectic(0,4,3,2,1),FaceConnectic(5,6,7,8,9),FaceConnectic(0,1,6,5),
496 FaceConnectic(1,2,7,6), FaceConnectic(2,3,8,7), FaceConnectic(3,4,9,8),
497 FaceConnectic(4,0,5,9)
498};
499
500// Generated by calcul.rb
501const SVCFaceConnectic wedge7_svc_face_connectic[15] ARCANE_UNUSED_ATTRIBUTE =
502{
503 SVCFaceConnectic(6, 9, 1, 5, 9 ),
504 SVCFaceConnectic(1, 8, 5, 8, 9 ),
505 SVCFaceConnectic(1, 6, 3, 6, 7 ),
506 SVCFaceConnectic(4, 13, 5, 3, 8 ),
507 SVCFaceConnectic(4, 2, 0, 2, 3 ),
508 SVCFaceConnectic(2, 0, 0, 0, 1 ),
509 SVCFaceConnectic(1, 7, 4, 7, 8 ),
510 SVCFaceConnectic(1, 5, 2, 5, 6 ),
511 SVCFaceConnectic(3, 1, 0, 1, 2 ),
512 SVCFaceConnectic(6, 10, 2, 0, 5 ),
513 SVCFaceConnectic(2, 11, 3, 1, 6 ),
514 SVCFaceConnectic(3, 12, 4, 2, 7 ),
515 SVCFaceConnectic(0, 4, 6, 0, 4 ),
516 SVCFaceConnectic(5, 14, 6, 4, 9 ),
517 SVCFaceConnectic(5, 3, 0, 3, 4 )
518};
519
520// tableaux de constantes pour les prismes à base hexagonale
521//-----------------------------------------------------------
522
523const Integer wedge8_node_association[12]={0,1,2,3,4,5,6,7,8,9,10,11};
524const NodeConnectic wedge8_node_connectic[12] ARCANE_UNUSED_ATTRIBUTE =
525{
526 NodeConnectic( /* Edges */ 0, 5, 12, /* Faces */ 0, 7, 2, /* Nodes */ 0, 1, 5, 6),
527 NodeConnectic( /* Edges */ 1, 0, 13, /* Faces */ 0, 2, 3, /* Nodes */ 1, 2, 0, 7),
528 NodeConnectic( /* Edges */ 2, 1, 14, /* Faces */ 0, 3, 4, /* Nodes */ 2, 3, 1, 8),
529 NodeConnectic( /* Edges */ 3, 2, 15, /* Faces */ 0, 4, 5, /* Nodes */ 3, 4, 2, 9),
530 NodeConnectic( /* Edges */ 4, 3, 16, /* Faces */ 0, 5, 6, /* Nodes */ 4, 5, 3, 10),
531 NodeConnectic( /* Edges */ 5, 4, 17, /* Faces */ 0, 6, 7, /* Nodes */ 5, 0, 4, 11),
532 NodeConnectic( /* Edges */ 11, 6, 12, /* Faces */ 1, 2, 7, /* Nodes */ 6, 11, 7, 0),
533 NodeConnectic( /* Edges */ 6, 7, 13, /* Faces */ 1, 3, 2, /* Nodes */ 7, 6, 8 ,1),
534 NodeConnectic( /* Edges */ 7, 8, 14, /* Faces */ 1, 4, 3, /* Nodes */ 8, 7, 9, 2),
535 NodeConnectic( /* Edges */ 8, 9, 15, /* Faces */ 1, 5, 4, /* Nodes */ 9, 8, 10, 3),
536 NodeConnectic( /* Edges */ 9, 10, 16, /* Faces */ 1, 6, 5, /* Nodes */ 10, 9, 11, 4),
537 NodeConnectic( /* Edges */ 10, 11, 17, /* Faces */ 1, 7, 6, /* Nodes */ 11, 10, 6, 5)
538};
539
540const EdgeConnectic wedge8_edge_connectic[18] ARCANE_UNUSED_ATTRIBUTE =
541{
542 EdgeConnectic( 0, 1, 0, 2), EdgeConnectic( 1, 2, 0, 3),
543 EdgeConnectic( 2, 3, 0, 4), EdgeConnectic( 3, 4, 0, 5),
544 EdgeConnectic( 4, 5, 0, 6), EdgeConnectic( 5, 0, 0, 7),
545 EdgeConnectic( 6, 7, 2, 1), EdgeConnectic( 7, 8, 3, 1),
546 EdgeConnectic( 8, 9, 4, 1), EdgeConnectic( 9,10, 5, 1),
547 EdgeConnectic(10,11, 6, 1), EdgeConnectic(11, 6, 7, 1),
548 EdgeConnectic( 0, 6, 7, 2), EdgeConnectic( 1, 7, 2, 3),
549 EdgeConnectic( 2, 8, 3, 4), EdgeConnectic( 3, 9, 4, 5),
550 EdgeConnectic( 4,10, 5, 6), EdgeConnectic( 5,11, 6, 7)
551
552};
553
554const FaceConnectic wedge8_face_connectic[8] ARCANE_UNUSED_ATTRIBUTE =
555{
556 FaceConnectic( 0, 5, 4, 3, 2, 1), FaceConnectic( 6, 7, 8, 9,10,11),
557 FaceConnectic( 0, 1, 7, 6 ), FaceConnectic( 1, 2, 8, 7 ),
558 FaceConnectic( 2, 3, 9, 8 ), FaceConnectic( 3, 4,10, 9 ),
559 FaceConnectic( 4, 5,11,10 ), FaceConnectic( 5, 0, 6,11 )
560};
561
562// Generated by calcul.rb
563const SVCFaceConnectic wedge8_svc_face_connectic[18] ARCANE_UNUSED_ATTRIBUTE =
564{
565 SVCFaceConnectic(1, 9, 5, 9, 10 ),
566 SVCFaceConnectic(1, 8, 4, 8, 9 ),
567 SVCFaceConnectic(7, 12, 2, 0, 6 ),
568 SVCFaceConnectic(7, 11, 1, 6, 11 ),
569 SVCFaceConnectic(6, 17, 7, 5, 11 ),
570 SVCFaceConnectic(4, 15, 5, 3, 9 ),
571 SVCFaceConnectic(2, 13, 3, 1, 7 ),
572 SVCFaceConnectic(0, 5, 7, 0, 5 ),
573 SVCFaceConnectic(1, 10, 6, 10, 11 ),
574 SVCFaceConnectic(1, 6, 2, 6, 7 ),
575 SVCFaceConnectic(6, 4, 0, 4, 5 ),
576 SVCFaceConnectic(5, 16, 6, 4, 10 ),
577 SVCFaceConnectic(4, 2, 0, 2, 3 ),
578 SVCFaceConnectic(2, 0, 0, 0, 1 ),
579 SVCFaceConnectic(1, 7, 3, 7, 8 ),
580 SVCFaceConnectic(3, 1, 0, 1, 2 ),
581 SVCFaceConnectic(5, 3, 0, 3, 4 ),
582 SVCFaceConnectic(3, 14, 4, 2, 8 )
583};
584
585// tableaux de constantes pour les quadrangles
586//---------------------------------------------
587
588// noeuds du quadrangle
589const Integer quad_node_association[4]={0,1,2,3};
590
591// pour chaque noeud, on donne les 2 faces auxquelles il est connecté
592const NodeConnectic quad_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
593{
594 NodeConnectic( /* Faces */ 0, 3, /* Nodes */ 0, 1, 3),
595 NodeConnectic( /* Faces */ 1, 0, /* Nodes */ 1, 2, 0),
596 NodeConnectic( /* Faces */ 2, 1, /* Nodes */ 2, 3, 1),
597 NodeConnectic( /* Faces */ 3, 2, /* Nodes */ 3, 0, 2),
598};
599
600// pour chaque face, on donne les 2 noeuds qui la composent
601const FaceConnectic quad_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
602{
603 FaceConnectic(0,1),FaceConnectic(1,2),FaceConnectic(2,3),FaceConnectic(3,0)
604};
605
606// Generated by calcul.rb
607const SVCFaceConnectic quad_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
608{
609 SVCFaceConnectic(0, 0, 1 ),
610 SVCFaceConnectic(1, 1, 2 ),
611 SVCFaceConnectic(2, 2, 3 ),
612 SVCFaceConnectic(3, 3, 0 ),
613};
614// tableaux de constantes pour les triangles
615//------------------------------------------
616
617const Integer triangle_node_association[4]={0,1,2,0};
618
619const NodeConnectic triangle_node_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
620{
621 NodeConnectic( /* Faces */ 0, 3, /* Nodes */ 0, 1, 3),
622 NodeConnectic( /* Faces */ 1, 0, /* Nodes */ 1, 2, 0),
623 NodeConnectic( /* Faces */ 2, 1, /* Nodes */ 2, 0, 1),
624 NodeConnectic( /* Faces */ 3, 2, /* Nodes */ 0, 0, 2),
625};
626
627
628const FaceConnectic triangle_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
629{
630 FaceConnectic(0,1),
631 FaceConnectic(1,2),
632 FaceConnectic(2,0),
633 FaceConnectic(0,0),
634
635};
636
637// Generated by calcul.rb
638const SVCFaceConnectic triangle_svc_face_connectic[4] ARCANE_UNUSED_ATTRIBUTE =
639{
640 SVCFaceConnectic(0, 0, 1 ),
641 SVCFaceConnectic(1, 1, 2 ),
642 SVCFaceConnectic(2, 2, 0 ),
643 SVCFaceConnectic(3, 0, 0 ),
644};
645
646
647/*---------------------------------------------------------------------------*/
648/*---------------------------------------------------------------------------*/
654{
655 private:
656 Real m_node[12];
657 public:
658 inline Real node(Integer i) const { return m_node[i]; }
659 public:
660
661 LocalCellNodeReal(Real a0,Real a1,Real a2 ,Real a3,
662 Real a4,Real a5,Real a6 ,Real a7,
663 Real a8,Real a9,Real a10,Real a11)
664 {
665 m_node[0] = a0; m_node[1] = a1; m_node[ 2] = a2; m_node[ 3] = a3;
666 m_node[4] = a4; m_node[5] = a5; m_node[ 6] = a6; m_node[ 7] = a7;
667 m_node[8] = a8; m_node[9] = a9; m_node[10] = a10; m_node[11] = a11;
668 }
669
670
671 public:
672 Real sum() const
673 {
674 return (m_node[0] + m_node[1] + m_node[2] + m_node[3] + m_node[4]
675 + m_node[5] + m_node[6] + m_node[7]
676 + m_node[8] + m_node[9] + m_node[10] + m_node[11]);
677 }
678};
679
680/*---------------------------------------------------------------------------*/
681/*---------------------------------------------------------------------------*/
682
683GEOMETRIC_END_NAMESPACE
684ARCANE_END_NAMESPACE
685
686/*---------------------------------------------------------------------------*/
687/*---------------------------------------------------------------------------*/
688
689#endif
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Int32 Integer
Type représentant un entier.
Structures de connectique locale des mailles.
Structure de connectique locale.
Tableau de 12 éléments de type réel. Utilisé pour la pondération des des noeuds des mailles (la plus ...
Structures de connectique locale des mailles.
Structures de connectique locale des mailles et svc.