Arcane  v3.14.10.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-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/* ItemTypeInfo.h (C) 2000-2023 */
9/* */
10/* Informations sur un type d'entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMTYPEINFO_H
13#define ARCANE_ITEMTYPEINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
19#include "arcane/ItemTypeMng.h"
20#include "arcane/ItemTypeId.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
47{
48 public:
49
54 {
55 public:
56 LocalFace(Integer* index) : m_index(index) {}
57 public:
59 Integer typeId() const { return m_index[0]; }
61 Integer nbNode() const { return m_index[1]; }
63 Integer node(Integer i) const { return m_index[2+i]; }
65 Integer nbEdge() const { return m_index[2+nbNode()]; }
67 Integer edge(Integer i) const { return m_index[3+nbNode()+i]; }
68 private:
69 Integer *m_index;
70 };
71
79 {
80 public:
81 LocalEdge(Integer* index) : m_index(index) {}
82 public:
84 Integer beginNode() const { return m_index[0]; }
86 Integer endNode() const { return m_index[1]; }
88 Integer leftFace() const { return m_index[2]; }
90 Integer rightFace() const { return m_index[3]; }
91 private:
92 Integer *m_index;
93 };
94
95 protected:
96
98 ItemTypeInfo() = default;
99
100 public:
101
103 Int16 typeId() const { return m_type_id.typeId(); }
105 ItemTypeId itemTypeId() const { return m_type_id; }
107 Integer nbLocalNode() const { return m_nb_node; }
109 Integer nbLocalFace() const { return m_nb_face; }
111 Integer nbLocalEdge() const { return m_nb_edge; }
113 String typeName() const { return m_type_name; }
115 Int16 dimension() const { return m_dimension; }
117 bool isValidForCell() const { return m_is_valid_for_cell; }
118
119 public:
120
122 LocalEdge localEdge(Integer id) const
123 {
124 Array<Integer>& buf = m_mng->m_ids_buffer;
125 Integer fi = buf[m_first_item_index + id];
126 return LocalEdge(&buf[fi]);
127 }
128
130 LocalFace localFace(Integer id) const
131 {
132 Array<Integer>& buf = m_mng->m_ids_buffer;
133 Integer fi = buf[m_first_item_index + m_nb_edge + id];
134 return LocalFace(&buf[fi]);
135 }
136
137 protected:
138
139 ItemTypeMng* m_mng = nullptr;
140 ItemTypeId m_type_id{ IT_NullType };
142 Int16 m_dimension = (-1);
145 Integer m_nb_node = 0;
146 Integer m_nb_edge = 0;
147 Integer m_nb_face = 0;
148 Integer m_first_item_index = 0;
149 String m_type_name;
150};
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155} // End namespace Arcane
156
157/*---------------------------------------------------------------------------*/
158/*---------------------------------------------------------------------------*/
159
160#endif
161
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.
Infos sur un type d'entité du maillage.
LocalEdge localEdge(Integer id) const
Connectivité locale de la i-ème arête de la maille.
Int16 m_dimension
Dimension (-1) si pas initialisé.
LocalFace localFace(Integer id) const
Connectivité locale de la i-ème face de la maille.
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é
String typeName() const
Nom du type.
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 de maillage.
Definition ItemTypeMng.h:66
UniqueArray< Integer > m_ids_buffer
Tampon d'allocation des données de type.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-