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;
347 ARCANE_DEPRECATED_REASON(
"Y2024: This method is internal to Arcane. use itemBase() or mutableItemBase() instead")
352 return ItemInternal::nullItem();
390 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
391 Item* operator->() {
return this; }
393 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
394 const Item* operator->()
const {
return this; }
413 void _checkKind(
bool is_valid)
const
418 void _badConversion()
const;
421 _setFromInternal(ainternal);
423 void _set(
const Item& rhs)
446 NodeLocalId _nodeId(
Int32 index)
const {
return NodeLocalId(_connectivity()->_nodeLocalIdV2(m_local_id,index)); }
447 EdgeLocalId _edgeId(Int32 index)
const {
return EdgeLocalId(_connectivity()->_edgeLocalIdV2(m_local_id,index)); }
448 FaceLocalId _faceId(Int32 index)
const {
return FaceLocalId(_connectivity()->_faceLocalIdV2(m_local_id,index)); }
449 CellLocalId _cellId(Int32 index)
const {
return CellLocalId(_connectivity()->_cellLocalIdV2(m_local_id,index)); }
450 Int32 _hParentId(Int32 index)
const {
return _connectivity()->_hParentLocalIdV2(m_local_id,index); }
451 Int32 _hChildId(Int32 index)
const {
return _connectivity()->_hChildLocalIdV2(m_local_id,index); }
452 impl::ItemIndexedListView<DynExtent> _nodeList()
const {
return _connectivity()->nodeList(m_local_id); }
453 impl::ItemIndexedListView<DynExtent> _edgeList()
const {
return _connectivity()->edgeList(m_local_id); }
454 impl::ItemIndexedListView<DynExtent> _faceList()
const {
return _connectivity()->faceList(m_local_id); }
455 impl::ItemIndexedListView<DynExtent> _cellList()
const {
return _connectivity()->cellList(m_local_id); }
456 NodeLocalIdView _nodeIds()
const {
return _connectivity()->nodeLocalIdsView(m_local_id); }
457 EdgeLocalIdView _edgeIds()
const {
return _connectivity()->edgeLocalIdsView(m_local_id); }
458 FaceLocalIdView _faceIds()
const {
return _connectivity()->faceLocalIdsView(m_local_id); }
459 CellLocalIdView _cellIds()
const {
return _connectivity()->cellLocalIdsView(m_local_id); }
461 inline Node _node(Int32 index)
const;
462 inline Edge _edge(Int32 index)
const;
463 inline Face _face(Int32 index)
const;
464 inline Cell _cell(Int32 index)
const;
466 ItemBase _hParentBase(Int32 index)
const {
return _connectivity()->hParentBase(m_local_id, index, m_shared_info); }
467 ItemBase _hChildBase(Int32 index)
const {
return _connectivity()->hChildBase(m_local_id, index, m_shared_info); }
468 ItemBase _toItemBase()
const {
return ItemBase(m_local_id,m_shared_info); }
477 return m_shared_info->m_connectivity;
479 void _setFromInternal(ItemBase* rhs)
481 ARCANE_ITEM_ADD_STAT(m_nb_set_from_internal);
482 m_local_id = rhs->m_local_id;
483 m_shared_info = rhs->m_shared_info;
485 void _setFromItem(
const Item& rhs)
487 m_local_id = rhs.m_local_id;
488 m_shared_info = rhs.m_shared_info;
493 static void dumpStats(ITraceMng* tm);
494 static void resetStats();
498 static std::atomic<int> m_nb_created_from_internal;
499 static std::atomic<int> m_nb_created_from_internalptr;
500 static std::atomic<int> m_nb_set_from_internal;
504 ItemInternal* _internal()
const
506 if (m_local_id!=NULL_ITEM_LOCAL_ID)
508 return ItemInternal::nullItem();
558#include "arcane/ItemVectorView.h"
559#include "arcane/ItemConnectedListView.h"
577 using ThatClass =
Node;
579 friend class ItemEnumeratorBaseT<ThatClass>;
588 friend class ItemLocalIdToItemConverterT<ThatClass>;
596 class ARCANE_DEPRECATED_REASON(
"Y2024: Use NodeLocalId instead") Index
602 explicit Index(
Int32 id) : Base(
id){}
603 Index(
Node item) : Base(item){}
604 operator NodeLocalId()
const {
return NodeLocalId{localId()}; }
611 :
Item(local_id,shared_info) {}
623 { ARCANE_CHECK_KIND(
isNode); }
627 { ARCANE_CHECK_KIND(
isNode); }
631 { ARCANE_CHECK_KIND(
isNode); }
634 Node(
const ItemInternalPtr* internals,
Int32 local_id) :
Item(internals,local_id)
635 { ARCANE_CHECK_KIND(
isNode); }
699 return _toItemBase()._internalActiveCells2(local_ids);
702 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
703 Node* operator->() {
return this; }
705 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
706 const Node* operator->()
const {
return this; }
713_node(
Int32 index)
const
715 return Node(_connectivity()->nodeBase(
m_local_id,index));
730 friend class ItemEnumeratorBaseT<ThatClass>;
739 friend class ItemLocalIdToItemConverterT<ThatClass>;
745 :
Item(local_id,shared_info) {}
766 :
Item(internals,local_id)
798 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
801 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
802 const ItemWithNodes* operator->()
const {
return this; }
818 using ThatClass =
Edge;
837 class ARCANE_DEPRECATED_REASON(
"Y2024: Use EdgeLocalId instead") Index
843 explicit Index(
Int32 id) : Base(
id){}
844 Index(
Edge item) : Base(item){}
845 operator EdgeLocalId()
const {
return EdgeLocalId{localId()}; }
864 { ARCANE_CHECK_KIND(
isEdge); }
868 { ARCANE_CHECK_KIND(
isEdge); }
872 { ARCANE_CHECK_KIND(
isEdge); }
877 { ARCANE_CHECK_KIND(
isEdge); }
924 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
925 Edge* operator->() {
return this; }
927 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
928 const Edge* operator->()
const {
return this; }
935_edge(
Int32 index)
const
937 return Edge(_connectivity()->edgeBase(
m_local_id,index));
953 using ThatClass =
Face;
972 class ARCANE_DEPRECATED_REASON(
"Y2024: Use FaceLocalId instead") Index
978 explicit Index(
Int32 id) : Base(
id){}
979 Index(
Face item) : Base(item){}
980 operator FaceLocalId()
const {
return FaceLocalId{localId()}; }
999 { ARCANE_CHECK_KIND(
isFace); }
1003 { ARCANE_CHECK_KIND(
isFace); }
1007 { ARCANE_CHECK_KIND(
isFace); }
1012 { ARCANE_CHECK_KIND(
isFace); }
1071 inline Cell boundaryCell()
const;
1074 inline Cell backCell()
const;
1080 inline Cell frontCell()
const;
1090 inline Cell oppositeCell(
Cell cell)
const;
1099 ARCANE_ASSERT((
backCellId()==cell_id ||
frontCellId()==cell_id),(
"cell is not connected to the face"));
1152 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1153 Face* operator->() {
return this; }
1155 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1156 const Face* operator->()
const {
return this; }
1163_face(
Int32 index)
const
1165 return Face(_connectivity()->faceBase(
m_local_id,index));
1200 using ThatClass =
Cell;
1219 class ARCANE_DEPRECATED_REASON(
"Y2024: Use CellLocalId instead") Index
1225 explicit Index(
Int32 id) : Base(
id){}
1226 Index(
Cell item) : Base(item){}
1227 operator CellLocalId()
const {
return CellLocalId{localId()}; }
1246 { ARCANE_CHECK_KIND(
isCell); }
1250 { ARCANE_CHECK_KIND(
isCell); }
1254 { ARCANE_CHECK_KIND(
isCell); }
1259 { ARCANE_CHECK_KIND(
isCell); }
1328 bool isActive()
const {
return _toItemBase().isActive(); }
1330 bool isSubactive()
const {
return _toItemBase().isSubactive(); }
1358 return (this->_hParentBase(0).
level() + 1);
1368 return _toItemBase().whichChildAmI(iitem->
localId());
1378 return _toItemBase().whichChildAmI(local_id);
1381 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1382 Cell* operator->() {
return this; }
1384 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1385 const Cell* operator->()
const {
return this; }
1392_cell(
Int32 index)
const
1408 friend class ItemEnumeratorBaseT<ThatClass>;
1417 friend class ItemLocalIdToItemConverterT<ThatClass>;
1423 :
Item(local_id,shared_info) {}
1447 :
Item(internals,local_id)
1470 CellLocalId
cellId()
const {
return _cellId(0); }
1482 Int32 cell_local_id = _cellId(0).localId();
1483 if (cell_local_id==NULL_ITEM_LOCAL_ID)
1488 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1489 Particle* operator->() {
return this; }
1491 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1492 const
Particle* operator->()
const {
return this; }
1512 using ThatClass =
DoF;
1514 friend class ItemEnumeratorBaseT<ThatClass>;
1523 friend class ItemLocalIdToItemConverterT<ThatClass>;
1529 :
Item(local_id,shared_info) {}
1541 { ARCANE_CHECK_KIND(
isDoF); }
1545 { ARCANE_CHECK_KIND(
isDoF); }
1549 { ARCANE_CHECK_KIND(
isDoF); }
1553 :
Item(internals,local_id)
1554 { ARCANE_CHECK_KIND(
isDoF); }
1563 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1564 DoF* operator->() {
return this; }
1566 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this operator. Use operator '.' instead")
1567 const
DoF* operator->()
const {
return this; }
1659 ARCANE_CHECK_KIND(
isNode);
1666 ARCANE_CHECK_KIND(
isEdge);
1673 ARCANE_CHECK_KIND(
isFace);
1680 ARCANE_CHECK_KIND(
isCell);
1694 ARCANE_CHECK_KIND(
isDoF);
1702ItemLocalId(
Item item)
1703: m_local_id(item.localId())
1707template<
typename ItemType>
inline ItemLocalIdT<ItemType>::
1708ItemLocalIdT(ItemType item)
1709: ItemLocalId(item.localId())
1719 return Item(local_id.localId(), m_item_shared_info);
1728 return Item(local_id, m_item_shared_info);
1737 return ItemType(local_id.localId(), m_item_shared_info);
1746 return ItemType(local_id, m_item_shared_info);
1755 return Item(local_id.localId(), m_item_shared_info);
1764 return Item(local_id, m_item_shared_info);
1770template<
typename ItemType_>
inline constexpr ARCCORE_HOST_DEVICE ItemType_
1774 return ItemType(local_id.localId(), m_item_shared_info);
1780template<
typename ItemType_>
inline constexpr ARCCORE_HOST_DEVICE ItemType_
1784 return ItemType(local_id, m_item_shared_info);
1795#include "arcane/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.
Cell(const Item &aitem)
Construit une référence à l'entité aitem.
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)
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
Cell hChild(Int32 i) const
i-ème enfant AMR
bool hasHChildren() const
Cell(const ItemBase &abase)
Construit une référence à l'entité abase.
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.
CellLocalId LocalIdType
Type du localId()
DoF(const ItemInternalPtr *internals, Int32 local_id)
Construit une référence à l'entité internal.
DoF()=default
Constructeur d'une maille non connectée.
DoF(const ItemBase &abase)
Construit une référence à l'entité abase.
DoF(const Item &aitem)
Construit une référence à l'entité abase.
DoFLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
DoF & operator=(ItemInternal *ainternal)
Opérateur de copie.
DoF(ItemInternal *ainternal)
Construit une référence à l'entité internal.
DoF(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
FaceConnectedListViewType faces() const
Liste des faces de l'arête.
CellConnectedListViewType cells() const
Liste des mailles de l'arête.
Cell cell(Int32 i) const
i-ème maille de l'arête
Edge(const ItemBase &abase)
Construit une référence à l'entité abase.
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.
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.
Edge(const Item &aitem)
Construit une référence à l'entité aitem.
Edge()=default
Créé une arête nulle.
FaceLocalId faceId(Int32 i) const
i-ème face de l'arête
Edge(ItemInternal *ainternal)
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
FaceLocalId LocalIdType
Type du localId()
CellLocalId frontCellId() const
Maille devant la face (maille nulle si aucune)
Face(const ItemBase &abase)
Construit une référence à l'entité abase.
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.
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)
Face(const Item &aitem)
Construit une référence à l'entité aitem.
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
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)
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
Face(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
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)
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é.
ItemWithNodes(const ItemBase &abase)
Construit une référence à l'entité abase.
Node node(Int32 i) const
i-ème noeud de l'entité
ItemWithNodes(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
ItemWithNodes(const Item &aitem)
Construit une référence à l'entité aitem.
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)
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é
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.
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.
bool isItemWithNodes() const
true si l'entité est du genre ItemWithNodes.
Item(ItemInternal *ainternal)
Construit une référence à l'entité internal.
Integer _nbEdge() const
Nombre d'arêtes de l'entité ou nombre d'arêtes connectés à l'entités (pour les noeuds)
Integer _nbNode() const
Nombre de noeuds de l'entité
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.
Item()=default
Création d'une entité de maillage nulle.
bool isOwn() const
true si l'entité est appartient au sous-domaine
static String typeName(Int32 type)
Nom du type de maille cell_type.
bool isCell() const
true si l'entité est du genre Cell.
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()
Integer _nbFace() const
Nombre de faces de l'entité ou nombre de faces connectés à l'entités (pour les noeuds et arêtes)
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.
eItemKind kind() const
Genre de l'entité
@ 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)
IItemFamily * itemFamily() const
Famille dont est issue l'entité
Particle toParticle() const
Converti l'entité en le genre Particle.
constexpr __host__ __device__ Item(const ItemBase &abase)
Construit une référence à l'entité abase.
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)
Int32 _flags() const
Flags de l'entité
constexpr ItemLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
bool isFace() const
true si l'entité est du genre Edge.
Face toFace() const
Converti l'entité en le genre Edge.
bool isNode() const
true si l'entité est du genre Node.
Integer _nbParent() const
Nombre de parent pour les sous-maillages.
Integer _nbCell() const
Nombre de mailles connectées à l'entité (pour les noeuds, arêtes et faces)
bool isEdge() const
true si l'entité est du genre Edge.
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
bool isDoF() const
true is l'entité est du genre DoF
Int32 m_local_id
Numéro local (au sous-domaine) de l'entité.
impl::ItemBase itemBase() const
Partie interne de l'entité.
bool isShared() const
Vrai si l'entité est partagé d'autres sous-domaines.
bool isParticle() const
true is l'entité est du genre Particle.
Int32 _nbHChildren() const
Nombre d' enfants pour l'AMR.
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.
Cell cell(Int32 i) const
i-ème maille du noeud
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.
Node(ItemInternal *ainternal)
Construit une référence à l'entité internal.
EdgeLocalIdView edgeIds() const
Liste des arêtes du noeud.
Node(Int32 local_id, ItemSharedInfo *shared_info)
Constructeur réservé pour les énumérateurs.
NodeLocalId itemLocalId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Node(const Item &aitem)
Construit une référence à l'entité abase.
FaceLocalId faceId(Int32 i) const
i-ème face du noeud
FaceConnectedListViewType faces() const
Liste des faces du noeud.
Node & operator=(ItemInternal *ainternal)
Opérateur de copie.
Face face(Int32 i) const
i-ème face du noeud
Int32 nbEdge() const
Nombre d'arêtes connectées au noeud.
Node(const ItemBase &abase)
Construit une référence à l'entité abase.
CellLocalIdView cellIds() const
Liste des mailles du noeud.
Edge edge(Int32 i) const
i-ème arête du noeud
Int32 nbFace() const
Nombre de faces connectées au 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(const ItemBase &abase)
Construit une référence à l'entité abase.
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.
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.
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()
Particle(const Item &aitem)
Construit une référence à l'entité aitem.
Particle(ItemInternal *ainternal)
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.