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::
50 m_linear_type_id = type_id;
53 m_type_name = type_name;
54 _setNbEdgeAndFace(nb_edge, nb_face);
60void ItemTypeInfoBuilder::
64 setInfos(mng, type_id, type_name, Dimension::DimUnknown, nb_node, nb_edge, nb_face);
70void ItemTypeInfoBuilder::
71setInfos(ItemTypeMng* mng, Int16 type_id, String type_name,
72 Int32 nb_node, Int32 nb_edge, Int32 nb_face)
80void ItemTypeInfoBuilder::
94 m_linear_type_id = linear_type_id;
134 buf.
add(IT_FaceVertex);
161 std::array<Int16, 2> begin_end_node,
162 std::array<Int16, 2> left_and_right_face)
164 Int16 n0 = begin_end_node[0];
165 Int16 n1 = begin_end_node[1];
167 addEdge(edge_face_index, n0, n1, left_and_right_face[0], left_and_right_face[1]);
197 buf.
add(IT_Triangle3);
203 for (
Integer i = 0; i < 3; ++i)
217 buf.
add(IT_Triangle6);
226 for (
Integer i = 0; i < 3; ++i)
246 for (
Integer i = 0; i < 4; ++i)
271 for (
Integer i = 0; i < 4; ++i)
284 buf.
add(IT_Pentagon5);
292 for (
Integer i = 0; i < 5; ++i)
306 buf.
add(IT_Hexagon6);
315 for (
Integer i = 0; i < 6; ++i)
329 buf.
add(IT_Heptagon7);
339 for (
Integer i = 0; i < 7; ++i)
353 buf.
add(IT_Octogon8);
364 for (
Integer i = 0; i < 8; ++i)
381 buf.
add(face_nb_node);
382 for (
Integer i = 0; i < face_nb_node; ++i)
384 buf.
add(face_nb_node);
385 for (
Integer i = 0; i < face_nb_node; ++i)
403 for (
Integer i_edge = 0; i_edge < face_nb_edge; ++i_edge) {
406 Integer endNode = local_face.
node((i_edge + 1) % face_nb_edge);
408 for (
Integer i = 0; i < cell_nb_edge; ++i) {
410 if ((local_edge.
beginNode() == beginNode && local_edge.
endNode() == endNode) ||
413 ARCANE_FATAL(
"Conflicting item definition : duplicated edge [{0}:{1}] found as edge {2} and {3} of item {4}({5})",
419 ARCANE_FATAL(
"Undefined edge [{0}:{1}] found as edge of item {2}({3})",
421 index[3 + face_nb_node + i_edge] = face_edge;
422 ARCANE_ASSERT((face_edge == local_face.
edge(i_edge)), (
"Inconsitent face-edge allocation"));
430void ItemTypeInfoBuilder::
435 Integer total = m_nb_face + m_nb_edge;
#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.
Tableau d'items de types quelconques.
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 setOrder(Int16 order, ItemTypeId linear_type)
Positionne l'ordre du type.
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 addEdge2D(Integer edge_index, Integer n0, Integer n1)
Ajoute une arête pour une maille 2D.
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 addEdgeAndFaceLine(Int32 edge_face_index, std::array< Int16, 2 > begin_end_node, std::array< Int16, 2 > left_and_right_face)
Ajoute une arête et une face.
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.
Int32 order() const
Ordre du type.
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 m_first_item_index
Indice de ce type dans la liste des index de m_mng.
Integer nbLocalFace() const
Nombre de faces de l'entité
Int16 typeId() const
Numéro du type.
Gestionnaire des types d'entités d'un maillage.
UniqueArray< Integer > m_ids_buffer
Tableau contenant les 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.