12#ifndef ARCANE_INDEXEDITEMCONNECTIVITYVIEW_H
13#define ARCANE_INDEXEDITEMCONNECTIVITYVIEW_H
17#include "arcane/Item.h"
18#include "arcane/IItemFamily.h"
43 : m_container_view(container_view)
44 , m_source_kind(source_kind)
45 , m_target_kind(target_kind)
52 constexpr ARCCORE_HOST_DEVICE Int32
nbSourceItem()
const {
return m_container_view.nbItem(); }
54 ARCCORE_HOST_DEVICE Int32
nbItem(
ItemLocalId lid)
const {
return m_container_view.m_nb_connected_items[lid]; }
58 return m_container_view.itemsIds<
Item>(lid);
60 eItemKind sourceItemKind()
const {
return m_source_kind; }
61 eItemKind targetItemKind()
const {
return m_target_kind; }
64 ARCANE_DEPRECATED_REASON(
"Y2022: This method is internal to Arcane and should be replaced by call to constructor")
69 m_source_kind = source_kind;
70 m_target_kind = target_kind;
77 m_container_view = view.m_container_view;
78 m_source_kind = view.m_source_kind;
79 m_target_kind = view.m_target_kind;
84 ItemConnectivityContainerView m_container_view;
85 eItemKind m_source_kind = IK_Unknown;
86 eItemKind m_target_kind = IK_Unknown;
90 [[noreturn]]
void _badConversion(eItemKind k1, eItemKind k2)
const;
94 inline void _checkValid(eItemKind k1, eItemKind k2)
const
96 if (k1 != m_source_kind || k2 != m_target_kind)
97 _badConversion(k1, k2);
118 : m_container_view(view.m_container_view)
125 constexpr ARCCORE_HOST_DEVICE Int32
nbSourceItem()
const {
return m_container_view.nbItem(); }
127 ARCCORE_HOST_DEVICE Int32
nbItem(
ItemLocalId lid)
const {
return m_container_view.m_nb_connected_items[lid]; }
131 return m_container_view.itemsIds<
Item>(lid);
144template<
typename ItemType1,
typename ItemType2>
150 using ItemType1Type = ItemType1;
151 using ItemType2Type = ItemType2;
152 using ItemLocalId1 =
typename ItemType1::LocalIdType;
153 using ItemLocalId2 =
typename ItemType2::LocalIdType;
164 view._checkValid(k1,k2);
172 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
items(ItemLocalId1 lid)
const
174 return m_container_view.template itemsIds<ItemType2>(lid);
178 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
itemIds(ItemLocalId1 lid)
const
180 return m_container_view.template itemsIds<ItemType2>(lid);
184 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
itemId(ItemLocalId1 lid, Int32 index)
const
186 return m_container_view.template itemId<ItemLocalId2>(lid, index);
195template<
typename ItemType>
201 using ItemLocalIdType =
typename ItemType::LocalIdType;
202 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
203 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
209 ARCCORE_HOST_DEVICE Int32
nbNode(ItemLocalIdType lid)
const {
return BaseClass::nbItem(lid); }
211 ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodes(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
213 ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodeIds(ItemLocalIdType lid)
const {
return BaseClass::itemIds(lid); }
215 ARCCORE_HOST_DEVICE ItemLocalId2
nodeId(ItemLocalIdType lid,Int32 index)
const {
return BaseClass::itemId(lid,index); }
223template<
typename ItemType>
229 using ItemLocalIdType =
typename ItemType::LocalIdType;
230 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
231 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
237 ARCCORE_HOST_DEVICE Int32
nbEdge(ItemLocalIdType lid)
const {
return BaseClass::nbItem(lid); }
239 ARCCORE_HOST_DEVICE ItemLocalIdViewType
edges(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
241 ARCCORE_HOST_DEVICE ItemLocalIdViewType
edgeIds(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
243 ARCCORE_HOST_DEVICE ItemLocalId2
edgeId(ItemLocalIdType lid,Int32 index)
const {
return BaseClass::itemId(lid,index); }
251template<
typename ItemType>
257 using ItemLocalIdType =
typename ItemType::LocalIdType;
258 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
259 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
265 ARCCORE_HOST_DEVICE Int32
nbFace(ItemLocalIdType lid)
const {
return BaseClass::nbItem(lid); }
267 ARCCORE_HOST_DEVICE ItemLocalIdViewType
faces(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
269 ARCCORE_HOST_DEVICE ItemLocalIdViewType
faceIds(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
271 ARCCORE_HOST_DEVICE ItemLocalId2
faceId(ItemLocalIdType lid,Int32 index)
const {
return BaseClass::itemId(lid,index); }
279template<
typename ItemType>
285 using ItemLocalIdType =
typename ItemType::LocalIdType;
286 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
287 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
293 ARCCORE_HOST_DEVICE Int32
nbCell(ItemLocalIdType lid)
const {
return BaseClass::nbItem(lid); }
295 ARCCORE_HOST_DEVICE ItemLocalIdViewType
cells(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
297 ARCCORE_HOST_DEVICE ItemLocalIdViewType
cellIds(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
299 ARCCORE_HOST_DEVICE ItemLocalId2
cellId(ItemLocalIdType lid,Int32 index)
const {
return BaseClass::itemId(lid,index); }
307template<
typename ItemType>
313 using ItemLocalIdType =
typename ItemType::LocalIdType;
314 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
315 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
321 ARCCORE_HOST_DEVICE Int32
nbDof(ItemLocalIdType lid)
const {
return BaseClass::nbItem(lid); }
323 ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofs(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
325 ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofIds(ItemLocalIdType lid)
const {
return BaseClass::items(lid); }
327 ARCCORE_HOST_DEVICE ItemLocalId2
dofId(ItemLocalIdType lid,Int32 index)
const {
return BaseClass::itemId(lid,index); }
333using IndexedCellNodeConnectivityView = IndexedItemConnectivityViewT<Cell,Node>;
334using IndexedCellEdgeConnectivityView = IndexedItemConnectivityViewT<Cell,Edge>;
335using IndexedCellFaceConnectivityView = IndexedItemConnectivityViewT<Cell,Face>;
336using IndexedCellCellConnectivityView = IndexedItemConnectivityViewT<Cell,Cell>;
337using IndexedCellDoFConnectivityView = IndexedItemConnectivityViewT<Cell,DoF>;
339using IndexedFaceNodeConnectivityView = IndexedItemConnectivityViewT<Face,Node>;
340using IndexedFaceEdgeConnectivityView = IndexedItemConnectivityViewT<Face,Edge>;
341using IndexedFaceFaceConnectivityView = IndexedItemConnectivityViewT<Face,Face>;
342using IndexedFaceCellConnectivityView = IndexedItemConnectivityViewT<Face,Cell>;
343using IndexedFaceDoFConnectivityView = IndexedItemConnectivityViewT<Face,DoF>;
345using IndexedEdgeNodeConnectivityView = IndexedItemConnectivityViewT<Edge,Node>;
346using IndexedEdgeEdgeConnectivityView = IndexedItemConnectivityViewT<Edge,Edge>;
347using IndexedEdgeFaceConnectivityView = IndexedItemConnectivityViewT<Edge,Face>;
348using IndexedEdgeCellConnectivityView = IndexedItemConnectivityViewT<Edge,Cell>;
349using IndexedEdgeDoFConnectivityView = IndexedItemConnectivityViewT<Edge,DoF>;
351using IndexedNodeNodeConnectivityView = IndexedItemConnectivityViewT<Node,Node>;
352using IndexedNodeEdgeConnectivityView = IndexedItemConnectivityViewT<Node,Edge>;
353using IndexedNodeFaceConnectivityView = IndexedItemConnectivityViewT<Node,Face>;
354using IndexedNodeCellConnectivityView = IndexedItemConnectivityViewT<Node,Cell>;
355using IndexedNodeDoFConnectivityView = IndexedItemConnectivityViewT<Node,DoF>;
357using IndexedDoFNodeConnectivityView = IndexedItemConnectivityViewT<DoF,Node>;
358using IndexedDoFEdgeConnectivityView = IndexedItemConnectivityViewT<DoF,Edge>;
359using IndexedDoFFaceConnectivityView = IndexedItemConnectivityViewT<DoF,Face>;
360using IndexedDoFCellConnectivityView = IndexedItemConnectivityViewT<DoF,Cell>;
361using IndexedDoFDoFConnectivityView = IndexedItemConnectivityViewT<DoF,DoF>;
Vue spécialisée sur une connectivité non structurée entre deux entités.
constexpr __host__ __device__ ItemLocalId2 itemId(ItemLocalId1 lid, Int32 index) const
i-ème entitée connectée à l'entité lid
constexpr __host__ __device__ ItemLocalIdViewType items(ItemLocalId1 lid) const
Liste des entités connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType itemIds(ItemLocalId1 lid) const
Liste des entités connectées à l'entité lid.
Classe de base d'une vue sur une connectivité non structurée.
__host__ __device__ ItemLocalIdListViewT< Item > items(ItemLocalId lid) const
Liste des entités connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbSourceItem() const
Nombre d'entités source.
__host__ __device__ Int32 nbItem(ItemLocalId lid) const
Nombre d'entités connectées à l'entité lid.
Classe de base d'une vue sur une connectivité non structurée.
__host__ __device__ Int32 nbItem(ItemLocalId lid) const
Nombre d'entités connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbSourceItem() const
Nombre d'entités source.
__host__ __device__ ItemLocalIdListViewT< Item > items(ItemLocalId lid) const
Liste des entités connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType cells(ItemLocalIdType lid) const
Liste des mailles connectées à l'entité lid.
__host__ __device__ ItemLocalId2 cellId(ItemLocalIdType lid, Int32 index) const
i-ème maille connectée à l'entité lid
__host__ __device__ ItemLocalIdViewType cellIds(ItemLocalIdType lid) const
Liste des mailles connectées à l'entité lid.
__host__ __device__ Int32 nbCell(ItemLocalIdType lid) const
Nombre de mailles connectées à l'entité lid.
__host__ __device__ Int32 nbDof(ItemLocalIdType lid) const
Nombre de DoFs connectés à l'entité lid.
__host__ __device__ ItemLocalId2 dofId(ItemLocalIdType lid, Int32 index) const
i-ème DoF connecté à l'entité lid
__host__ __device__ ItemLocalIdViewType dofIds(ItemLocalIdType lid) const
Liste des DoFs connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType dofs(ItemLocalIdType lid) const
Liste des DoFs connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType edgeIds(ItemLocalIdType lid) const
Liste des arêtes connectées à l'entité lid.
__host__ __device__ ItemLocalId2 edgeId(ItemLocalIdType lid, Int32 index) const
i-ème arête connectée à l'entité lid
__host__ __device__ Int32 nbEdge(ItemLocalIdType lid) const
Nombre d'arêtes connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType edges(ItemLocalIdType lid) const
Liste des arêtes connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType faces(ItemLocalIdType lid) const
Liste des faces connectées à l'entité lid.
__host__ __device__ Int32 nbFace(ItemLocalIdType lid) const
Nombre de faces connectées à l'entité lid.
__host__ __device__ ItemLocalId2 faceId(ItemLocalIdType lid, Int32 index) const
i-ème face connectée à l'entité lid
__host__ __device__ ItemLocalIdViewType faceIds(ItemLocalIdType lid) const
Liste des faces connectées à l'entité lid.
__host__ __device__ ItemLocalIdViewType nodes(ItemLocalIdType lid) const
Liste des noeuds connectés à l'entité lid.
__host__ __device__ ItemLocalId2 nodeId(ItemLocalIdType lid, Int32 index) const
i-ème noeud connecté à l'entité lid
__host__ __device__ ItemLocalIdViewType nodeIds(ItemLocalIdType lid) const
Liste des noeuds connectés à l'entité lid.
__host__ __device__ Int32 nbNode(ItemLocalIdType lid) const
Nombre de noeuds connectés à l'entité lid.
Vue typée sur une liste d'entités d'une connectivité.
Index d'un Item dans une variable.
static eItemKind kind()
Genre de l'entité
Classe de base d'un élément de maillage.
Vue d'un tableau d'éléments de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.