Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemTypeInfoBuilder.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* ItemTypeInfoBuilder.h (C) 2000-2023 */
9/* */
10/* Construction d'un type d'entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMTYPEINFOBUILDER_H
13#define ARCANE_ITEMTYPEINFOBUILDER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemTypeInfo.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28/*!
29 * \internal
30 * \brief Construction des infos d'un type d'entité du maillage.
31 *
32 * Pour des raisons de performances, on essaie de stocker ces informations
33 * de manière contigue en mémoire car elles seront accédées très souvent.
34 * Pour cela, on utilise un Buffer dans ItemTypeMng.
35 *
36 * La méthode setInfos() permet d'indiquer le type et le nombre de noeuds, d'arêtes
37 * et de faces du type. Il faut ensuite appeler les méthodes addEdge() et addFace...()
38 *
39 * Une fois le type complètement défini, il ne doit plus être modifié.
40 *
41 * Pour un numéro de type donné, il n'existe qu'une instance de ItemTypeInfo et cette
42 * instance reste valide tant que le gestionnaire de type (ItemTypeMng) n'est pas détruit.
43 * Par conséquent, il est possible de stocker le pointeur sur l'instance et
44 * de comparer deux types uniquement en comparant les pointeurs
45 */
47: public ItemTypeInfo
48{
49 public:
50
51 //! Constructeur par défaut
53
54 public:
55
56 // TODO: Rendre obsolète
57 void setInfos(ItemTypeMng* mng,
58 Integer type_id, String type_name,
59 Integer nb_node, Integer nb_edge, Integer nb_face);
60
61 // TODO: Rendre obsolète
62 void setInfos(ItemTypeMng* mng,
63 ItemTypeId type_id, String type_name,
64 Integer nb_node, Integer nb_edge, Integer nb_face);
65
66 /*!
67 * \brief Positionne les informations d'un type.
68 */
69 void setInfos(ItemTypeMng* mng, ItemTypeId type_id, String type_name, Int16 dimension,
70 Integer nb_node, Integer nb_edge, Integer nb_face);
71
72 /*!
73 * \brief Ajoute une arête à la liste des arêtes
74 *
75 * \a n0 noeud origine
76 * \a n1 noeud extremité
77 * \a f_left numéro local de la face à gauche
78 * \a f_right numéro local de la face à droite
79 */
80 void addEdge(Integer edge_index,Integer n0,Integer n1,Integer f_left,Integer f_right);
81
82 //! Ajoute un sommet à la liste des faces (pour les elements 1D)
83 void addFaceVertex(Integer face_index,Integer n0);
84
85 //! Ajoute une ligne à la liste des faces (pour les elements 2D)
86 void addFaceLine(Integer face_index,Integer n0,Integer n1);
87
88 //! Ajoute une ligne quadratique à la liste des faces (pour les elements 2D)
89 void addFaceLine3(Integer face_index,Integer n0,Integer n1,Integer n2);
90
91 //! Ajoute un triangle à la liste des faces
92 void addFaceTriangle(Integer face_index,Integer n0,Integer n1,Integer n2);
93
94 //! Ajoute un triangle quadratique à la liste des faces
95 void addFaceTriangle6(Integer face_index,Integer n0,Integer n1,Integer n2,
96 Integer n3, Integer n4, Integer n5);
97
98 //! Ajoute un quadrilatère à la liste des faces
99 void addFaceQuad(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3);
100
101 //! Ajoute un quadrilatère quadratique à la liste des faces
102 void addFaceQuad8(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3,
103 Integer n4,Integer n5,Integer n6,Integer n7);
104
105 //! Ajoute un pentagone à la liste des faces
106 void addFacePentagon(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3,Integer n4);
107
108 //! Ajoute un hexagone à la liste des faces
109 void addFaceHexagon(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3,
110 Integer n4,Integer n5);
111
112 //! Ajoute un heptagone à la liste des faces
113 void addFaceHeptagon(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3,
114 Integer n4,Integer n5, Integer n6);
115
116 //! Ajoute un heptagone à la liste des faces
117 void addFaceOctogon(Integer face_index,Integer n0,Integer n1,Integer n2,Integer n3,
118 Integer n4,Integer n5, Integer n6, Integer n7);
119
120 //! Ajoute une face générique à la liste des faces
121 void addFaceGeneric(Integer face_index,Integer type_id,ConstArrayView<Integer> n);
122
123 //! Calcule les relations face->arêtes
125
126 void setIsValidForCell(bool is_valid)
127 {
128 m_is_valid_for_cell = is_valid;
129 }
130
131 private:
132
133 void _setNbEdgeAndFace(Integer nb_edge,Integer nb_face);
134 void _checkDimension(Int16 dim);
135};
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
139
140} // End namespace Arcane
141
142/*---------------------------------------------------------------------------*/
143/*---------------------------------------------------------------------------*/
144
145#endif
146
Type d'une entité (Item).
Definition ItemTypeId.h:32
void addFaceHexagon(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4, Integer n5)
Ajoute un hexagone à la liste des faces.
void addEdge(Integer edge_index, Integer n0, Integer n1, Integer f_left, Integer f_right)
Ajoute une arête à la liste des arêtes.
void addFacePentagon(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4)
Ajoute un pentagone à la liste des faces.
void addFaceHeptagon(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4, Integer n5, Integer n6)
Ajoute un heptagone à la liste des faces.
void addFaceQuad8(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4, Integer n5, Integer n6, Integer n7)
Ajoute un quadrilatère quadratique à la liste des faces.
void addFaceLine3(Integer face_index, Integer n0, Integer n1, Integer n2)
Ajoute une ligne quadratique à la liste des faces (pour les elements 2D)
void addFaceOctogon(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4, Integer n5, Integer n6, Integer n7)
Ajoute un heptagone à la liste des faces.
void addFaceGeneric(Integer face_index, Integer type_id, ConstArrayView< Integer > n)
Ajoute une face générique à la liste des faces.
void addFaceVertex(Integer face_index, Integer n0)
Ajoute un sommet à la liste des faces (pour les elements 1D)
ItemTypeInfoBuilder()=default
Constructeur par défaut.
void addFaceTriangle(Integer face_index, Integer n0, Integer n1, Integer n2)
Ajoute un triangle à la liste des faces.
void computeFaceEdgeInfos()
Calcule les relations face->arêtes.
void addFaceQuad(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3)
Ajoute un quadrilatère à la liste des faces.
void addFaceLine(Integer face_index, Integer n0, Integer n1)
Ajoute une ligne à la liste des faces (pour les elements 2D)
void addFaceTriangle6(Integer face_index, Integer n0, Integer n1, Integer n2, Integer n3, Integer n4, Integer n5)
Ajoute un triangle quadratique à la liste des faces.
Infos sur un type d'entité du maillage.
Int16 dimension() const
Dimension de l'élément (<0 si inconnu)
bool m_is_valid_for_cell
Indique si le type est valide pour une maille.
Gestionnaire des types d'entités de maillage.
Definition ItemTypeMng.h:66
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-