Arcane  v3.16.2.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 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 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); }
138
139 public:
140
143 {
144 Array<Integer>& buf = m_mng->m_ids_buffer;
145 Integer fi = buf[m_first_item_index + id];
146 return LocalEdge(&buf[fi]);
147 }
148
151 {
152 Array<Integer>& buf = m_mng->m_ids_buffer;
153 Integer fi = buf[m_first_item_index + m_nb_edge + id];
154 return LocalFace(&buf[fi]);
155 }
156
157 protected:
158
159 ItemTypeMng* m_mng = nullptr;
160 ItemTypeId m_type_id{ IT_NullType };
161 ItemTypeId m_linear_type_id{ IT_NullType };
166 Integer m_nb_node = 0;
167 Integer m_nb_edge = 0;
168 Integer m_nb_face = 0;
169 Int32 m_order = 1;
172 String m_type_name;
173};
174
175/*---------------------------------------------------------------------------*/
176/*---------------------------------------------------------------------------*/
177
178} // End namespace Arcane
179
180/*---------------------------------------------------------------------------*/
181/*---------------------------------------------------------------------------*/
182
183#endif
184
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.
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.