12#ifndef ARCANE_INDEXEDITEMCONNECTIVITYVIEW_H
13#define ARCANE_INDEXEDITEMCONNECTIVITYVIEW_H
17#include "arcane/Item.h"
18#include "arcane/IItemFamily.h"
34class ARCANE_CORE_EXPORT IndexedItemConnectivityViewBase
36 friend class IndexedItemConnectivityViewBase2;
40 IndexedItemConnectivityViewBase() =
default;
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(); }
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);
109class ARCANE_CORE_EXPORT IndexedItemConnectivityViewBase2
113 IndexedItemConnectivityViewBase2() =
default;
118 : m_container_view(view.m_container_view)
131 return m_container_view.itemsIds<
Item>(lid);
144template<
typename ItemType1,
typename ItemType2>
145class IndexedItemConnectivityGenericViewT
146:
public IndexedItemConnectivityViewBase2
150 using ItemType1Type = ItemType1;
151 using ItemType2Type = ItemType2;
152 using ItemLocalId1 =
typename ItemType1::LocalIdType;
153 using ItemLocalId2 =
typename ItemType2::LocalIdType;
159 : IndexedItemConnectivityViewBase2(view)
164 view._checkValid(k1,k2);
167 IndexedItemConnectivityGenericViewT() =
default;
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
195template<
typename ItemType>
196class IndexedItemConnectivityViewT<ItemType,
Node>
197:
public IndexedItemConnectivityGenericViewT<ItemType,Node>
200 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType,Node>;
201 using ItemLocalIdType =
typename ItemType::LocalIdType;
202 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
203 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
206 IndexedItemConnectivityViewT() =
default;
223template<
typename ItemType>
224class IndexedItemConnectivityViewT<ItemType,
Edge>
225:
public IndexedItemConnectivityGenericViewT<ItemType,Edge>
228 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType,Edge>;
229 using ItemLocalIdType =
typename ItemType::LocalIdType;
230 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
231 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
234 IndexedItemConnectivityViewT() =
default;
251template<
typename ItemType>
252class IndexedItemConnectivityViewT<ItemType,
Face>
253:
public IndexedItemConnectivityGenericViewT<ItemType,Face>
256 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType,Face>;
257 using ItemLocalIdType =
typename ItemType::LocalIdType;
258 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
259 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
262 IndexedItemConnectivityViewT() =
default;
279template<
typename ItemType>
280class IndexedItemConnectivityViewT<ItemType,
Cell>
281:
public IndexedItemConnectivityGenericViewT<ItemType,Cell>
284 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType,Cell>;
285 using ItemLocalIdType =
typename ItemType::LocalIdType;
286 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
287 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
290 IndexedItemConnectivityViewT() =
default;
307template<
typename ItemType>
308class IndexedItemConnectivityViewT<ItemType,
DoF>
309:
public IndexedItemConnectivityGenericViewT<ItemType,DoF>
312 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType,DoF>;
313 using ItemLocalIdType =
typename ItemType::LocalIdType;
314 using ItemLocalIdViewType =
typename BaseClass::ItemLocalIdViewType;
315 using ItemLocalId2 =
typename BaseClass::ItemLocalId2;
318 IndexedItemConnectivityViewT() =
default;
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>;
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.
__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.
void init(SmallSpan< const Int32 > nb_item, SmallSpan< const Int32 > indexes, SmallSpan< const Int32 > list_data, eItemKind source_kind, eItemKind target_kind)
Initialise la vue.
__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.
std::int32_t Int32
Type entier signé sur 32 bits.