12#ifndef ARCANE_CORE_ITEM_H
13#define ARCANE_CORE_ITEM_H
18#include "arcane/core/ItemInternal.h"
19#include "arcane/core/ItemLocalId.h"
35#define ARCANE_CHECK_KIND(type) _checkKind(type())
37#define ARCANE_CHECK_KIND(type)
41#define ARCANE_WANT_ITEM_STAT
44#ifdef ARCANE_WANT_ITEM_STAT
45#define ARCANE_ITEM_ADD_STAT(var) ++var
47#define ARCANE_ITEM_ADD_STAT(var)
82class ARCANE_CORE_EXPORT
Item
85 friend class ItemEnumeratorBaseT<
Item>;
87 friend class ItemVector;
88 friend class ItemVectorView;
89 friend class ItemVectorViewConstIterator;
90 friend class ItemConnectedListViewConstIterator;
91 friend class SimdItem;
92 friend class SimdItemEnumeratorBase;
93 friend class ItemInfoListView;
94 friend class ItemLocalIdToItemConverter;
95 template<
typename ItemType>
friend class ItemLocalIdToItemConverterT;
96 friend class ItemPairEnumerator;
97 template<
int Extent>
friend class ItemConnectedListView;
98 template<
typename ItemType>
friend class ItemEnumeratorBaseT;
101 friend class ItemCompatibility;
110 using ItemBase = impl::ItemBase;
125 Index() : m_local_id(NULL_ITEM_LOCAL_ID){}
126 explicit Index(
Int32 id) : m_local_id(id){}
127 Index(Item item) : m_local_id(item.localId()){}
128 operator ItemLocalId()
const {
return ItemLocalId{m_local_id}; }
130 Int32 localId()
const {
return m_local_id; }
146 Unknown ARCANE_DEPRECATED_REASON(
"Use 'IT_NullType' instead") = IT_NullType,
147 Vertex ARCANE_DEPRECATED_REASON(
"Use 'IT_Vertex' instead") = IT_Vertex,
148 Bar2 ARCANE_DEPRECATED_REASON(
"Use 'IT_Line2' instead") = IT_Line2,
149 Tri3 ARCANE_DEPRECATED_REASON(
"Use 'IT_Triangle3' instead") = IT_Triangle3,
150 Quad4 ARCANE_DEPRECATED_REASON(
"Use 'IT_Quad4' instead") = IT_Quad4,
151 Pentagon5 ARCANE_DEPRECATED_REASON(
"Use 'IT_Pentagon5' instead") = IT_Pentagon5,
152 Hexagon6 ARCANE_DEPRECATED_REASON(
"Use 'IT_Hexagon6' instead") = IT_Hexagon6,
153 Tetra ARCANE_DEPRECATED_REASON(
"Use 'IT_Tetraedron4' instead") = IT_Tetraedron4,
154 Pyramid ARCANE_DEPRECATED_REASON(
"Use 'IT_Pyramid5' instead") = IT_Pyramid5,
155 Penta ARCANE_DEPRECATED_REASON(
"Use 'IT_Pentaedron6' instead") = IT_Pentaedron6,
156 Hexa ARCANE_DEPRECATED_REASON(
"Use 'IT_Hexaedron8' instead") = IT_Hexaedron8,
157 Wedge7 ARCANE_DEPRECATED_REASON(
"Use 'IT_Heptaedron10' instead") = IT_Heptaedron10,
158 Wedge8 ARCANE_DEPRECATED_REASON(
"Use 'IT_Octaedron12' instead") = IT_Octaedron12
166 ARCCORE_DEPRECATED_2021(
"Use ItemTypeMng::typeName() instead")
184 ARCANE_CHECK_PTR(ainternal);
187 ARCANE_ITEM_ADD_STAT(m_nb_created_from_internal);
193 constexpr ARCCORE_HOST_DEVICE
Item(
const ItemBase& abase)
203 ARCANE_ITEM_ADD_STAT(m_nb_created_from_internalptr);
270 inline Node toNode()
const;
272 inline Cell toCell()
const;
274 inline Edge toEdge()
const;
276 inline Face toFace()
const;
280 inline DoF toDoF()
const;
353 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead")
358 return ItemInternal::nullItem();
396 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
397 Item* operator->() {
return this; }
399 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
400 const Item* operator->()
const {
return this; }
419 constexpr void _checkKind(
bool is_valid)
const
424 [[noreturn]]
void _badConversion()
const;
427 _setFromInternal(ainternal);
429 constexpr void _set(
const Item& rhs)
452 constexpr NodeLocalId _nodeId(
Int32 index)
const {
return NodeLocalId(_connectivity()->_nodeLocalIdV2(m_local_id,index)); }
453 constexpr EdgeLocalId _edgeId(Int32 index)
const {
return EdgeLocalId(_connectivity()->_edgeLocalIdV2(m_local_id,index)); }
454 constexpr FaceLocalId _faceId(Int32 index)
const {
return FaceLocalId(_connectivity()->_faceLocalIdV2(m_local_id,index)); }
455 constexpr CellLocalId _cellId(Int32 index)
const {
return CellLocalId(_connectivity()->_cellLocalIdV2(m_local_id,index)); }
456 Int32 _hParentId(Int32 index)
const {
return _connectivity()->_hParentLocalIdV2(m_local_id,index); }
457 Int32 _hChildId(Int32 index)
const {
return _connectivity()->_hChildLocalIdV2(m_local_id,index); }
458 impl::ItemIndexedListView<DynExtent> _nodeList()
const {
return _connectivity()->nodeList(m_local_id); }
459 impl::ItemIndexedListView<DynExtent> _edgeList()
const {
return _connectivity()->edgeList(m_local_id); }
460 impl::ItemIndexedListView<DynExtent> _faceList()
const {
return _connectivity()->faceList(m_local_id); }
461 impl::ItemIndexedListView<DynExtent> _cellList()
const {
return _connectivity()->cellList(m_local_id); }
462 NodeLocalIdView _nodeIds()
const {
return _connectivity()->nodeLocalIdsView(m_local_id); }
463 EdgeLocalIdView _edgeIds()
const {
return _connectivity()->edgeLocalIdsView(m_local_id); }
464 FaceLocalIdView _faceIds()
const {
return _connectivity()->faceLocalIdsView(m_local_id); }
465 CellLocalIdView _cellIds()
const {
return _connectivity()->cellLocalIdsView(m_local_id); }
467 constexpr inline Node _node(Int32 index)
const;
468 constexpr inline Edge _edge(Int32 index)
const;
469 constexpr inline Face _face(Int32 index)
const;
470 constexpr inline Cell _cell(Int32 index)
const;
472 ItemBase _hParentBase(Int32 index)
const {
return _connectivity()->hParentBase(m_local_id, index, m_shared_info); }
473 ItemBase _hChildBase(Int32 index)
const {
return _connectivity()->hChildBase(m_local_id, index, m_shared_info); }
474 ItemBase _toItemBase()
const {
return ItemBase(m_local_id,m_shared_info); }
483 return m_shared_info->m_connectivity;
485 void _setFromInternal(ItemBase* rhs)
487 ARCANE_ITEM_ADD_STAT(m_nb_set_from_internal);
488 m_local_id = rhs->m_local_id;
489 m_shared_info = rhs->m_shared_info;
491 constexpr void _setFromItem(
const Item& rhs)
493 m_local_id = rhs.m_local_id;
494 m_shared_info = rhs.m_shared_info;
499 static void dumpStats(ITraceMng* tm);
500 static void resetStats();
504 static std::atomic<int> m_nb_created_from_internal;
505 static std::atomic<int> m_nb_created_from_internalptr;
506 static std::atomic<int> m_nb_set_from_internal;
510 ItemInternal* _internal()
const
512 if (m_local_id!=NULL_ITEM_LOCAL_ID)
514 return ItemInternal::nullItem();
564#include "arcane/core/ItemVectorView.h"
565#include "arcane/core/ItemConnectedListView.h"
583 using ThatClass =
Node;
585 friend class ItemEnumeratorBaseT<ThatClass>;
594 friend class ItemLocalIdToItemConverterT<ThatClass>;
602 class ARCANE_DEPRECATED_REASON(
"Y2024: Use NodeLocalId instead") Index
608 explicit Index(
Int32 id) : Base(
id){}
609 Index(
Node item) : Base(item){}
610 operator NodeLocalId()
const {
return NodeLocalId{localId()}; }
617 :
Item(local_id,shared_info) {}
629 { ARCANE_CHECK_KIND(
isNode); }
632 constexpr Node(
const ItemBase& abase) :
Item(abase)
633 { ARCANE_CHECK_KIND(
isNode); }
637 { ARCANE_CHECK_KIND(
isNode); }
640 Node(
const ItemInternalPtr* internals,
Int32 local_id) :
Item(internals,local_id)
641 { ARCANE_CHECK_KIND(
isNode); }
708 return _toItemBase()._internalActiveCells2(local_ids);
711 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
712 Node* operator->() {
return this; }
714 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
715 const Node* operator->()
const {
return this; }
721constexpr inline Node Item::
722_node(
Int32 index)
const
724 return Node(_connectivity()->nodeBase(
m_local_id,index));
739 friend class ItemEnumeratorBaseT<ThatClass>;
748 friend class ItemLocalIdToItemConverterT<ThatClass>;
754 :
Item(local_id,shared_info) {}
775 :
Item(internals,local_id)
807 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
810 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
811 const ItemWithNodes* operator->()
const {
return this; }
827 using ThatClass =
Edge;
846 class ARCANE_DEPRECATED_REASON(
"Y2024: Use EdgeLocalId instead") Index
852 explicit Index(
Int32 id) : Base(
id){}
853 Index(
Edge item) : Base(item){}
854 operator EdgeLocalId()
const {
return EdgeLocalId{localId()}; }
873 { ARCANE_CHECK_KIND(
isEdge); }
877 { ARCANE_CHECK_KIND(
isEdge); }
881 { ARCANE_CHECK_KIND(
isEdge); }
886 { ARCANE_CHECK_KIND(
isEdge); }
936 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
937 Edge* operator->() {
return this; }
939 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
940 const Edge* operator->()
const {
return this; }
946constexpr inline Edge Item::
947_edge(
Int32 index)
const
949 return Edge(_connectivity()->edgeBase(
m_local_id,index));
965 using ThatClass =
Face;
984 class ARCANE_DEPRECATED_REASON(
"Y2024: Use FaceLocalId instead") Index
990 explicit Index(
Int32 id) : Base(
id){}
991 Index(
Face item) : Base(item){}
992 operator FaceLocalId()
const {
return FaceLocalId{localId()}; }
1011 { ARCANE_CHECK_KIND(
isFace); }
1015 { ARCANE_CHECK_KIND(
isFace); }
1019 { ARCANE_CHECK_KIND(
isFace); }
1024 { ARCANE_CHECK_KIND(
isFace); }
1086 inline Cell boundaryCell()
const;
1089 inline Cell backCell()
const;
1095 inline Cell frontCell()
const;
1105 inline Cell oppositeCell(
Cell cell)
const;
1114 ARCANE_ASSERT((
backCellId()==cell_id ||
frontCellId()==cell_id),(
"cell is not connected to the face"));
1167 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1168 Face* operator->() {
return this; }
1170 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1171 const Face* operator->()
const {
return this; }
1177constexpr inline Face Item::
1178_face(
Int32 index)
const
1180 return Face(_connectivity()->faceBase(
m_local_id,index));
1215 using ThatClass =
Cell;
1234 class ARCANE_DEPRECATED_REASON(
"Y2024: Use CellLocalId instead") Index
1240 explicit Index(
Int32 id) : Base(
id){}
1241 Index(
Cell item) : Base(item){}
1242 operator CellLocalId()
const {
return CellLocalId{localId()}; }
1261 { ARCANE_CHECK_KIND(
isCell); }
1265 { ARCANE_CHECK_KIND(
isCell); }
1269 { ARCANE_CHECK_KIND(
isCell); }
1274 { ARCANE_CHECK_KIND(
isCell); }
1346 bool isActive()
const {
return _toItemBase().isActive(); }
1348 bool isSubactive()
const {
return _toItemBase().isSubactive(); }
1376 return (this->_hParentBase(0).
level() + 1);
1386 return _toItemBase().whichChildAmI(iitem->
localId());
1396 return _toItemBase().whichChildAmI(local_id);
1399 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1400 Cell* operator->() {
return this; }
1402 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1403 const Cell* operator->()
const {
return this; }
1409constexpr inline Cell Item::
1410_cell(
Int32 index)
const
1426 friend class ItemEnumeratorBaseT<ThatClass>;
1435 friend class ItemLocalIdToItemConverterT<ThatClass>;
1441 :
Item(local_id,shared_info) {}
1465 :
Item(internals,local_id)
1491 CellLocalId
cellId()
const {
return _cellId(0); }
1503 Int32 cell_local_id = _cellId(0).localId();
1504 if (cell_local_id==NULL_ITEM_LOCAL_ID)
1509 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1510 Particle* operator->() {
return this; }
1512 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1513 const
Particle* operator->()
const {
return this; }
1533 using ThatClass =
DoF;
1535 friend class ItemEnumeratorBaseT<ThatClass>;
1544 friend class ItemLocalIdToItemConverterT<ThatClass>;
1550 :
Item(local_id,shared_info) {}
1562 { ARCANE_CHECK_KIND(
isDoF); }
1565 constexpr DoF(
const ItemBase& abase) :
Item(abase)
1566 { ARCANE_CHECK_KIND(
isDoF); }
1570 { ARCANE_CHECK_KIND(
isDoF); }
1574 :
Item(internals,local_id)
1575 { ARCANE_CHECK_KIND(
isDoF); }
1584 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1585 DoF* operator->() {
return this; }
1587 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1588 const
DoF* operator->()
const {
return this; }
1683 ARCANE_CHECK_KIND(
isNode);
1690 ARCANE_CHECK_KIND(
isEdge);
1697 ARCANE_CHECK_KIND(
isFace);
1704 ARCANE_CHECK_KIND(
isCell);
1718 ARCANE_CHECK_KIND(
isDoF);
1726ItemLocalId(
Item item)
1727: m_local_id(item.localId())
1731template<
typename ItemType>
inline ItemLocalIdT<ItemType>::
1732ItemLocalIdT(ItemType item)
1733: ItemLocalId(item.localId())
1743 return Item(local_id.localId(), m_item_shared_info);
1752 return Item(local_id, m_item_shared_info);
1761 return ItemType(local_id.localId(), m_item_shared_info);
1770 return ItemType(local_id, m_item_shared_info);
1779 return Item(local_id.localId(), m_item_shared_info);
1788 return Item(local_id, m_item_shared_info);
1794template<
typename ItemType_>
inline constexpr ARCCORE_HOST_DEVICE ItemType_
1798 return ItemType(local_id.localId(), m_item_shared_info);
1804template<
typename ItemType_>
inline constexpr ARCCORE_HOST_DEVICE ItemType_
1808 return ItemType(local_id, m_item_shared_info);
1819#include "arcane/core/ItemCompatibility.h"
Déclarations de types sur les entités.
Cell topHParent() const
parent de niveau 0 pour l'AMR
Int32 nbEdge() const
Nombre d'arêtes de la maille.
constexpr Cell(const ItemBase &abase)
Construit une référence à l'entité abase.
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Int32 nbHChildren() const
Nombre d'enfants pour l'AMR.
Cell(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Face face(Int32 i) const
i-ème face de la maille
FaceLocalIdView faceIds() const
Liste des faces de la maille.
Cell(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
Int32 nbFace() const
Nombre de faces de la maille.
Cell & operator=(ItemInternal *ainternal)
Opérateur de copie.
Cell(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
CellLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
EdgeLocalIdView edgeIds() const
Liste des arêtes de la maille.
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la maille
Int32 whichChildAmI(const ItemInternal *iitem) const
constexpr Cell(const Item &aitem)
Construit une référence à l'entité aitem.
Cell hChild(Int32 i) const
i-ème enfant AMR
bool hasHChildren() const
Edge edge(Int32 i) const
i-ème arête de la maille
Cell()=default
Constructeur d'une maille nulle.
Int32 whichChildAmI(CellLocalId local_id) const
FaceLocalId faceId(Int32 i) const
i-ème face de la maille
EdgeConnectedListViewType edges() const
Liste des arêtes de la maille.
Int32 nbHParent() const
Nombre de parent pour l'AMR.
constexpr eItemKind kind() const
Genre de l'entité
CellLocalId LocalIdType
Type du localId()
constexpr DoF(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
DoF(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
DoF()=default
Constructeur d'une maille non connectée.
DoFLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
constexpr DoF(const Item &aitem)
Construit une référence à l'entité abase.
DoF & operator=(ItemInternal *ainternal)
Opérateur de copie.
DoF(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
constexpr DoF(const ItemBase &abase)
Construit une référence à l'entité abase.
constexpr eItemKind kind() const
Genre de l'entité
FaceConnectedListViewType faces() const
Liste des faces de l'arête.
constexpr eItemKind kind() const
Genre de l'entité
CellConnectedListViewType cells() const
Liste des mailles de l'arête.
Cell cell(Int32 i) const
i-ème maille de l'arête
Face face(Int32 i) const
i-ème face de l'arête
Edge(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
constexpr Edge(const Item &aitem)
Construit une référence à l'entité aitem.
FaceLocalIdView faceIds() const
Liste des faces de l'arête.
Edge & operator=(ItemInternal *ainternal)
Opérateur de copie.
Int32 nbFace() const
Nombre de faces connectées à l'arête.
CellLocalIdView cellIds() const
Liste des mailles de l'arête.
constexpr Edge(const ItemBase &abase)
Construit une référence à l'entité abase.
Edge()=default
Créé une arête nulle.
FaceLocalId faceId(Int32 i) const
i-ème face de l'arête
Edge(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
EdgeLocalId LocalIdType
Type du localId()
Edge(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Int32 nbNode() const
Nombre de sommets de l'arête.
CellLocalId cellId(Int32 i) const
i-ème maille de l'arête
Int32 nbCell() const
Nombre de mailles connectées à l'arête.
EdgeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Face()=default
Création d'une face non connecté au maillage.
bool isMasterFace() const
true s'il s'agit de la face maître d'une interface
constexpr eItemKind kind() const
Genre de l'entité
FaceLocalId LocalIdType
Type du localId()
CellLocalId frontCellId() const
Maille devant la face (maille nulle si aucune)
Cell frontCell() const
Maille devant la face (maille nulle si aucune)
CellLocalId cellId(Int32 i) const
i-ème maille de la face
EdgeLocalIdView edgeIds() const
Liste des arêtes de la face.
Cell cell(Int32 i) const
i-ème maille de la face
Int32 nbCell() const
Nombre de mailles de la face (1 ou 2)
ARCANE_DEPRECATED_118 bool isBoundary() const
FaceConnectedListViewType slaveFaces() const
Liste des faces esclaves associées à cette face maître.
constexpr Face(const Item &aitem)
Construit une référence à l'entité aitem.
ARCANE_DEPRECATED_118 bool isBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
EdgeConnectedListViewType edges() const
Liste des arêtes de la face.
bool isSubDomainBoundary() const
Indique si la face est au bord du sous-domaine (i.e nbCell()==1)
FaceLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
EdgeLocalId edgeId(Int32 i) const
i-ème arête de la face
CellConnectedListViewType cells() const
Liste des mailles de la face.
Face masterFace() const
Face maître associée à cette face.
bool isSlaveFace() const
true s'il s'agit d'une face esclave d'une interface
Edge edge(Int32 i) const
i-ème arête de la face
constexpr Face(const ItemBase &abase)
Construit une référence à l'entité abase.
CellLocalId backCellId() const
Maille derrière la face (maille nulle si aucune)
Face(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
bool isSubDomainBoundaryOutside() const
Indique si la face est au bord t orientée vers l'extérieur.
Face(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
Cell boundaryCell() const
Maille associée à cette face frontière (maille nulle si aucune)
Int32 nbEdge() const
Nombre d'arêtes de la face.
bool isTiedFace() const
true s'il s'agit d'une face esclave ou maître d'une interface
CellLocalIdView cellIds() const
Liste des mailles de la face.
Face & operator=(ItemInternal *ainternal)
Opérateur de copie.
Cell backCell() const
Maille derrière la face (maille nulle si aucune)
constexpr Face(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Cell oppositeCell(Cell cell) const
Maille opposée de cette face à la maille cell.
CellLocalId oppositeCellId(CellLocalId cell_id) const
Maille opposée de cette face à la maille cell.
Interface d'une famille d'entités.
Classe de base pour les entités du maillage.
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
ItemSharedInfo * m_shared_info
Infos partagées entre toutes les entités ayant les mêmes caractéristiques.
Int32 localId() const
Numéro local (au sous-domaine) de l'entité
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
Vue sur une liste d'entités connectées à une autre.
@ II_Shared
L'entité est partagée par un autre sous-domaine.
@ II_HasBackCell
L'entité a une maille derrière.
@ II_Own
L'entité est une entité propre au sous-domaine.
@ II_Boundary
L'entité est sur la frontière.
Classe de base des vues spécialisées des informations sur les entités.
ItemType operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Item operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
Structure interne d'une entité de maillage.
Classe pour convertir un ItemLocalId vers une entité (Item).
constexpr __host__ __device__ ItemType operator[](ItemLocalIdType local_id) const
Entité de numéro local local_id.
constexpr __host__ __device__ Item operator[](ItemLocalId local_id) const
Entité de numéro local local_id.
Index d'un Item dans une variable.
Structure interne partagée d'une entité de maillage.
ConstArrayView< ItemInternal * > m_items_internal
ItemInternal des entités.
Type d'une entité (Item).
Infos sur un type d'entité du maillage.
Identifiant unique d'une entité.
Vue sur un tableau typé d'entités.
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
ItemWithNodes(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
NodeLocalId nodeId(Int32 index) const
i-ème noeud de l'entité.
constexpr ItemWithNodes(const Item &aitem)
Construit une référence à l'entité aitem.
Node node(Int32 i) const
i-ème noeud de l'entité
constexpr ItemWithNodes(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Int32 nbLinearNode() const
Nombre de noeuds de l'entité linéaire associée (si entité ordre 2 ou plus)
NodeConnectedListViewType nodes() const
Liste des noeuds de l'entité
ItemWithNodes(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
ItemWithNodes()=default
Création d'une entité non connectée au maillage.
Int32 nbNode() const
Nombre de noeuds de l'entité
constexpr ItemWithNodes(const ItemBase &abase)
Construit une référence à l'entité abase.
NodeLocalIdView nodeIds() const
Liste des noeuds de l'entité
ItemWithNodes & operator=(ItemInternal *ainternal)
Opérateur de copie.
Index d'un Item dans une variable.
Classe de base d'un élément de maillage.
Int32 nbParent() const
Nombre de parents pour les sous-maillages.
constexpr bool isDoF() const
true is l'entité est du genre DoF
const ItemTypeInfo * typeInfo() const
Infos sur le type de l'entité.
impl::MutableItemBase mutableItemBase() const
Partie interne modifiable de l'entité.
Int32 _nbHParent() const
Nombre de parent pour l'AMR.
static const Int32 NULL_ELEMENT
Indice d'un élément nul.
constexpr Int32 flags() const
Flags de l'entité
Item(ItemInternal *ainternal)
Construit une référence à l'entité internal.
ItemInternal * internal() const
Partie interne de l'entité.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Edge toEdge() const
Converti l'entité en le genre Edge.
Item(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
constexpr Integer _nbCell() const
Nombre de mailles connectées à l'entité (pour les noeuds, arêtes et faces)
Item()=default
Création d'une entité de maillage nulle.
constexpr bool isFace() const
true si l'entité est du genre Edge.
static String typeName(Int32 type)
Nom du type de maille cell_type.
Int32 owner() const
Numéro du sous-domaine propriétaire de l'entité
ItemSharedInfo * m_shared_info
Infos partagées entre toutes les entités ayant les mêmes caractéristiques.
ItemLocalId LocalIdType
Type du localId()
constexpr bool isParticle() const
true is l'entité est du genre Particle.
ItemWithNodes toItemWithNodes() const
Converti l'entité en le genre ItemWithNodes.
DoF toDoF() const
Converti l'entité en le genre DoF.
Cell toCell() const
Converti l'entité en le genre Cell.
@ Tri3
Elément de type triangle (3 sommets, 2D)
@ Quad4
Elément de type quad (4 sommets, 2D)
@ Pentagon5
Elément de type pentagone (5 sommets, 2D)
@ Unknown
Elément de type nul.
@ Pyramid
Elément de type pyramide (5 sommets, 3D)
@ Bar2
Elément de type arête (2 sommets, 1D, 2D et 3D)
@ Vertex
Elément de type noeud (1 sommet 1D, 2D et 3D)
@ Hexa
Elément de type hexaèdre (8 sommets, 3D)
@ Hexagon6
Elément de type hexagone (6 sommets, 2D)
@ Penta
Elément de type pentaèdre (6 sommets, 3D)
@ Wedge8
Elément de type prisme à 8 faces (base hexagonale)
@ Wedge7
Elément de type prisme à 7 faces (base pentagonale)
@ Tetra
Elément de type tétraédre (4 sommets, 3D)
constexpr Integer _nbFace() const
Nombre de faces de l'entité ou nombre de faces connectés à l'entités (pour les noeuds et arêtes)
IItemFamily * itemFamily() const
Famille dont est issue l'entité
constexpr Integer _nbEdge() const
Nombre d'arêtes de l'entité ou nombre d'arêtes connectés à l'entités (pour les noeuds)
Particle toParticle() const
Converti l'entité en le genre Particle.
constexpr bool hasFlags(Int32 flags) const
Retourne si les flags flags sont positionnées pour l'entité
constexpr __host__ __device__ Item(const ItemBase &abase)
Construit une référence à l'entité abase.
constexpr bool isNode() const
true si l'entité est du genre Node.
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
constexpr __host__ __device__ Item(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
constexpr bool null() const
true si l'entité est nul (i.e. non connecté au maillage)
constexpr bool isItemWithNodes() const
true si l'entité est du genre ItemWithNodes.
constexpr Integer _nbNode() const
Nombre de noeuds de l'entité
constexpr ItemLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Face toFace() const
Converti l'entité en le genre Edge.
constexpr bool isOwn() const
true si l'entité est appartient au sous-domaine
Integer _nbParent() const
Nombre de parent pour les sous-maillages.
constexpr bool isCell() const
true si l'entité est du genre Cell.
Item parent(Int32 i) const
i-ème parent pour les sous-maillages
ItemTypeId itemTypeId() const
Type de l'entité
Item parent() const
premier parent pour les sous-maillages
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
constexpr bool isEdge() const
true si l'entité est du genre Edge.
impl::ItemBase itemBase() const
Partie interne de l'entité.
bool isShared() const
Vrai si l'entité est partagé d'autres sous-domaines.
constexpr eItemKind kind() const
Genre de l'entité
Int32 _nbHChildren() const
Nombre d' enfants pour l'AMR.
constexpr Int32 _flags() const
Flags de l'entité
Int16 type() const
Type de l'entité
Int32 _nbLinearNode() const
Nombre de noeuds de l'entité
Item & operator=(ItemInternal *ainternal)
Opérateur de copie.
Node toNode() const
Converti l'entité en le genre Node.
constexpr NodeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Cell cell(Int32 i) const
i-ème maille du noeud
constexpr eItemKind kind() const
Genre de l'entité
FaceLocalIdView faceIds() const
Liste des faces du noeud.
Node(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
CellConnectedListViewType cells() const
Liste des mailles du noeud.
CellVectorView _internalActiveCells(Int32Array &local_ids) const
Enumére les mailles connectées au noeud.
constexpr Int32 nbFace() const
Nombre de faces connectées au noeud.
Node(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
EdgeLocalIdView edgeIds() const
Liste des arêtes du noeud.
FaceLocalId faceId(Int32 i) const
i-ème face du noeud
constexpr Int32 nbEdge() const
Nombre d'arêtes connectées au noeud.
FaceConnectedListViewType faces() const
Liste des faces du noeud.
constexpr Node(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
Node & operator=(ItemInternal *ainternal)
Opérateur de copie.
Face face(Int32 i) const
i-ème face du noeud
constexpr Node(const Item &aitem)
Construit une référence à l'entité abase.
CellLocalIdView cellIds() const
Liste des mailles du noeud.
constexpr Node(const ItemBase &abase)
Construit une référence à l'entité abase.
Edge edge(Int32 i) const
i-ème arête du noeud
Int32 nbCell() const
Nombre de mailles connectées au noeud.
EdgeConnectedListViewType edges() const
Liste des arêtes du noeud.
CellLocalId cellId(Int32 i) const
i-ème maille du noeud
EdgeLocalId edgeId(Int32 i) const
i-ème arête du noeud
NodeLocalId LocalIdType
Type du localId()
Particle()=default
Constructeur d'une particule nulle.
bool hasCell() const
Vrai si la particule est dans une maille du maillage.
Particle(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
ParticleLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
constexpr eItemKind kind() const
Genre de l'entité
Cell cell() const
Maille à laquelle appartient la particule. Il faut appeler setCell() avant d'appeler cette fonction....
CellLocalId cellId() const
Maille connectée à la particule.
Particle(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
constexpr Particle(const ItemBase &abase)
Construit une référence à l'entité abase.
Cell cellOrNull() const
Maille à laquelle appartient la particule ou maille nulle. Retourne cell() si la particule est dans u...
Particle & operator=(ItemInternal *ainternal)
Opérateur de copie.
ParticleLocalId LocalIdType
Type du localId()
constexpr Particle(const Item &aitem)
Construit une référence à l'entité aitem.
Particle(ItemInternal *ainternal)
(deprecated) Construit une référence à l'entité internal
Gère un vecteur d'entité ItemType.
Chaîne de caractères unicode.
ItemLocalIdListViewT< Node > NodeLocalIdView
Vue sur les localId() d'une liste de noeuds.
ItemVectorViewT< Cell > CellVectorView
Vue sur un vecteur de mailles.
ItemLocalIdListViewT< Edge > EdgeLocalIdView
Vue sur les localId() d'une liste d'arêtes.
ItemLocalIdListViewT< Face > FaceLocalIdView
Vue sur les localId() d'une liste de faces.
ItemLocalIdListViewT< Cell > CellLocalIdView
Vue sur les localId() d'une liste de mailles.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
NodeConnectedListView NodeConnectedListViewType
Liste de noeuds connectés.
Int32 Integer
Type représentant un entier.
CellConnectedListView CellConnectedListViewType
Liste de mailles connectées.
bool operator<(const Item &item1, const Item &item2)
Compare deux entités.
eItemKind
Genre d'entité de maillage.
@ IK_Particle
Entité de maillage de genre particule.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
@ IK_Face
Entité de maillage de genre face.
@ IK_DoF
Entité de maillage de genre degre de liberte.
@ IK_Edge
Entité de maillage de genre arête.
std::int16_t Int16
Type entier signé sur 16 bits.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
EdgeConnectedListView EdgeConnectedListViewType
Liste d'arêtes connectées.
FaceConnectedListView FaceConnectedListViewType
Liste de faces connectées.
@ Cell
Le maillage est AMR par maille.
std::int32_t Int32
Type entier signé sur 32 bits.