14#include "arcane/utils/FatalErrorException.h"
15#include "arcane/utils/TraceInfo.h"
18#include "arcane/core/ItemTypeInfoBuilder.h"
29void ItemTypeInfoBuilder::
30_checkDimension(
Int16 dim)
37 ARCANE_FATAL(
"Incoherent dimension for ItemType: current='{0}' new='{1}'",
44void ItemTypeInfoBuilder::
52 m_type_name = type_name;
53 _setNbEdgeAndFace(nb_edge, nb_face);
59void ItemTypeInfoBuilder::
63 setInfos(mng, type_id, type_name, Dimension::DimUnknown, nb_node, nb_edge, nb_face);
69void ItemTypeInfoBuilder::
70setInfos(ItemTypeMng* mng, Int16 type_id, String type_name,
71 Int32 nb_node, Int32 nb_edge, Int32 nb_face)
79void ItemTypeInfoBuilder::
93 buf[m_first_item_index + edge_index] = buf.
size();
108 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
109 buf.
add(IT_FaceVertex);
123 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
137 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
154 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
155 buf.
add(IT_Triangle3);
161 for (
Integer i = 0; i < 3; ++i)
174 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
175 buf.
add(IT_Triangle6);
184 for (
Integer i = 0; i < 3; ++i)
196 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
204 for (
Integer i = 0; i < 4; ++i)
217 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
229 for (
Integer i = 0; i < 4; ++i)
241 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
242 buf.
add(IT_Pentagon5);
250 for (
Integer i = 0; i < 5; ++i)
263 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
264 buf.
add(IT_Hexagon6);
273 for (
Integer i = 0; i < 6; ++i)
286 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
287 buf.
add(IT_Heptagon7);
297 for (
Integer i = 0; i < 7; ++i)
310 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
311 buf.
add(IT_Octogon8);
322 for (
Integer i = 0; i < 8; ++i)
336 buf[m_first_item_index + m_nb_edge + face_index] = buf.
size();
339 buf.
add(face_nb_node);
340 for (
Integer i = 0; i < face_nb_node; ++i)
342 buf.
add(face_nb_node);
343 for (
Integer i = 0; i < face_nb_node; ++i)
356 Integer fi = buf[m_first_item_index + m_nb_edge + i_face];
361 for (
Integer i_edge = 0; i_edge < face_nb_edge; ++i_edge) {
364 Integer endNode = local_face.
node((i_edge + 1) % face_nb_edge);
366 for (
Integer i = 0; i < cell_nb_edge; ++i) {
368 if ((local_edge.
beginNode() == beginNode && local_edge.
endNode() == endNode) ||
371 ARCANE_FATAL(
"Conflicting item definition : duplicated edge [{0}:{1}] found as edge {2} and {3} of item {4}({5})",
377 ARCANE_FATAL(
"Undefined edge [{0}:{1}] found as edge of item {2}({3})",
379 index[3 + face_nb_node + i_edge] = face_edge;
380 ARCANE_ASSERT((face_edge == local_face.
edge(i_edge)), (
"Inconsitent face-edge allocation"));
388void ItemTypeInfoBuilder::
393 Integer total = m_nb_face + m_nb_edge;
396 m_first_item_index = buf.
size();
397 buf.
resize(m_first_item_index + total);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Déclarations des types généraux de Arcane.
Integer size() const
Nombre d'éléments du vecteur.
Classe de base des vecteurs 1D de données.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Vue constante d'un tableau de type T.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Type d'une entité (Item).
static ItemTypeId fromInteger(Int64 v)
Créé une instance à partir d'un entier.
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)
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)
Dimension
Dimension du type.
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.
Informations locales sur une arête d'une maille.
Integer endNode() const
Indice local à la maille du sommet extrémité de l'arête.
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 nbEdge() const
Nombre d'arête de la 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.
Int16 m_dimension
Dimension (-1) si pas initialisé.
Integer nbLocalEdge() const
Nombre d'arêtes de l'entité
Int16 dimension() const
Dimension de l'élément (<0 si inconnu)
String typeName() const
Nom du type.
Integer nbLocalFace() const
Nombre de faces de l'entité
Int16 typeId() const
Numéro du type.
Gestionnaire des types d'entités de maillage.
UniqueArray< Integer > m_ids_buffer
Tampon d'allocation des données de type.
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.