Arcane  v3.16.9.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemTypeInfo.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ItemTypeInfo.h (C) 2000-2025 */
9/* */
10/* Informations sur un type d'entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMTYPEINFO_H
13#define ARCANE_CORE_ITEMTYPEINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
19#include "arcane/core/ItemTypeMng.h"
20#include "arcane/core/ItemTypeId.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
45{
46 public:
47
51 class LocalFace
52 {
53 public:
54
55 explicit LocalFace(Integer* index)
56 : m_index(index)
57 {}
58
59 public:
60
62 Integer typeId() const { return m_index[0]; }
64 Integer nbNode() const { return m_index[1]; }
66 Integer node(Integer i) const { return m_index[2 + i]; }
68 Integer nbEdge() const { return m_index[2 + nbNode()]; }
70 Integer edge(Integer i) const { return m_index[3 + nbNode() + i]; }
71
72 private:
73
75 };
76
83 class LocalEdge
84 {
85 public:
86
87 explicit LocalEdge(Integer* index)
88 : m_index(index)
89 {}
90
91 public:
92
94 Integer beginNode() const { return m_index[0]; }
96 Integer endNode() const { return m_index[1]; }
98 Integer leftFace() const { return m_index[2]; }
100 Integer rightFace() const { return m_index[3]; }
101
102 private:
103
105 };
106
107 protected:
108
110 ItemTypeInfo() = default;
111
112 public:
113
115 Int16 typeId() const { return m_type_id.typeId(); }
117 ItemTypeId itemTypeId() const { return m_type_id; }
119 Integer nbLocalNode() const { return m_nb_node; }
121 Integer nbLocalFace() const { return m_nb_face; }
123 Integer nbLocalEdge() const { return m_nb_edge; }
125 String typeName() const { return m_type_name; }
127 Int16 dimension() const { return m_dimension; }
129 bool isValidForCell() const { return m_is_valid_for_cell; }
131 Int32 order() const { return m_order; }
133 Int16 linearTypeId() const { return m_linear_type_id.typeId(); }
135 ItemTypeId linearItemTypeId() const { return m_linear_type_id; }
137 const ItemTypeInfo* linearTypeInfo() const { return m_mng->typeFromId(m_linear_type_id); }
139 bool hasCenterNode() const { return m_has_center_node; }
140
141 public:
142
145 {
146 Array<Integer>& buf = m_mng->m_ids_buffer;
147 Integer fi = buf[m_first_item_index + id];
148 return LocalEdge(&buf[fi]);
149 }
150
153 {
154 Array<Integer>& buf = m_mng->m_ids_buffer;
155 Integer fi = buf[m_first_item_index + m_nb_edge + id];
156 return LocalFace(&buf[fi]);
157 }
158
159 protected:
160
161 ItemTypeMng* m_mng = nullptr;
162 ItemTypeId m_type_id{ IT_NullType };
163 ItemTypeId m_linear_type_id{ IT_NullType };
169 bool m_has_center_node = false;
170 Integer m_nb_node = 0;
171 Integer m_nb_edge = 0;
172 Integer m_nb_face = 0;
173 Int32 m_order = 1;
176 String m_type_name;
177};
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
181
182} // End namespace Arcane
183
184/*---------------------------------------------------------------------------*/
185/*---------------------------------------------------------------------------*/
186
187#endif
188
Tableau d'items de types quelconques.
Type d'une entité (Item).
Definition ItemTypeId.h:32
Informations locales sur une arête d'une maille.
Integer leftFace() const
Indice local à la maille de la face à gauche de l'arête.
Integer endNode() const
Indice local à la maille du sommet extrémité de l'arête.
Integer rightFace() const
Indice local à la maille du la face à droite de l'arête.
Integer * m_index
Indices dans le tampon des infos de la face.
Integer beginNode() const
Indice local à la maille du sommet origine de l'arête.
Informations locales sur une face d'une maille.
Integer node(Integer i) const
Indice locale dans la maille du i-ème noeud de la face.
Integer * m_index
Indices dans le tampon des infos de la face.
Integer nbEdge() const
Nombre d'arête de la face.
Integer typeId() const
Type de l'entité face.
Integer edge(Integer i) const
Arête de la face.
Integer nbNode() const
Nombre de noeuds de la face.
LocalEdge localEdge(Integer id) const
Connectivité locale de la i-ème arête de la maille.
bool m_has_center_node
Indique si le type a un nœud au centre (pour les faces ou les mailles)
bool hasCenterNode() const
Indique si le type a un noeud au centre.
Int32 order() const
Ordre du type.
Int16 m_dimension
Dimension (-1) si pas initialisé.
LocalFace localFace(Integer id) const
Connectivité locale de la i-ème face de la maille.
const ItemTypeInfo * linearTypeInfo() const
Type de l'élément linéaire correspondant.
Integer nbLocalEdge() const
Nombre d'arêtes de l'entité
Int16 dimension() const
Dimension de l'élément (<0 si inconnu)
Integer nbLocalNode() const
Nombre de noeuds de l'entité
ItemTypeId linearItemTypeId() const
Type de l'élément linéaire correspondant.
Int16 linearTypeId() const
Type de l'élément linéaire correspondant.
String typeName() const
Nom du type.
Integer m_first_item_index
Indice de ce type dans la liste des index de m_mng.
bool m_is_valid_for_cell
Indique si le type est valide pour une maille.
Integer nbLocalFace() const
Nombre de faces de l'entité
ItemTypeInfo()=default
Constructeur par défaut.
bool isValidForCell() const
Indique si le type est valide pour créér une maille (Cell)
Int16 typeId() const
Numéro du type.
ItemTypeId itemTypeId() const
Numéro du type.
Gestionnaire des types d'entités d'un maillage.
Definition ItemTypeMng.h:65
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
std::int16_t Int16
Type entier signé sur 16 bits.
std::int32_t Int32
Type entier signé sur 32 bits.