12#ifndef ARCANE_CORE_INDEXEDITEMCONNECTIVITYVIEW_H
13#define ARCANE_CORE_INDEXEDITEMCONNECTIVITYVIEW_H
18#include "arcane/core/Item.h"
19#include "arcane/core/IItemFamily.h"
35class ARCANE_CORE_EXPORT IndexedItemConnectivityViewBase
37 friend class IndexedItemConnectivityViewBase2;
41 IndexedItemConnectivityViewBase() =
default;
44 : m_container_view(container_view)
45 , m_source_kind(source_kind)
46 , m_target_kind(target_kind)
53 constexpr ARCCORE_HOST_DEVICE
Int32 nbSourceItem()
const {
return m_container_view.nbItem(); }
55 constexpr ARCCORE_HOST_DEVICE
Int32 nbItem(
ItemLocalId lid)
const {
return m_container_view.m_nb_connected_items[lid]; }
59 return m_container_view.itemsIds<
Item>(lid);
61 eItemKind sourceItemKind()
const {
return m_source_kind; }
62 eItemKind targetItemKind()
const {
return m_target_kind; }
65 ARCANE_DEPRECATED_REASON(
"Y2022: This method is internal to Arcane and should be replaced by call to constructor")
70 m_source_kind = source_kind;
71 m_target_kind = target_kind;
78 m_container_view = view.m_container_view;
79 m_source_kind = view.m_source_kind;
80 m_target_kind = view.m_target_kind;
85 ItemConnectivityContainerView m_container_view;
86 eItemKind m_source_kind = IK_Unknown;
87 eItemKind m_target_kind = IK_Unknown;
91 [[noreturn]]
void _badConversion(eItemKind k1, eItemKind k2)
const;
95 void _checkValid(eItemKind k1, eItemKind k2)
const
97 if (k1 != m_source_kind || k2 != m_target_kind)
98 _badConversion(k1, k2);
110class ARCANE_CORE_EXPORT IndexedItemConnectivityViewBase2
114 IndexedItemConnectivityViewBase2() =
default;
119 : m_container_view(view.m_container_view)
132 return m_container_view.itemsIds<
Item>(lid);
145template<
typename ItemType1,
typename ItemType2>
146class IndexedItemConnectivityGenericViewT
147:
public IndexedItemConnectivityViewBase2
151 using ItemType1Type = ItemType1;
152 using ItemType2Type = ItemType2;
153 using ItemLocalId1 = ItemType1::LocalIdType;
154 using ItemLocalId2 = ItemType2::LocalIdType;
160 : IndexedItemConnectivityViewBase2(view)
165 view._checkValid(k1,k2);
168 IndexedItemConnectivityGenericViewT() =
default;
173 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
items(ItemLocalId1 lid)
const
175 return m_container_view.itemsIds<ItemType2>(lid);
179 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
itemIds(ItemLocalId1 lid)
const
181 return m_container_view.itemsIds<ItemType2>(lid);
185 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
itemId(ItemLocalId1 lid,
Int32 index)
const
187 return m_container_view.itemId<ItemLocalId2>(lid, index);
196template<
typename ItemType>
197class IndexedItemConnectivityViewT<ItemType,
Node>
198:
public IndexedItemConnectivityGenericViewT<ItemType,Node>
202 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Node>;
203 using ItemLocalIdType = ItemType::LocalIdType;
204 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
205 using ItemLocalId2 = BaseClass::ItemLocalId2;
212 IndexedItemConnectivityViewT() =
default;
217 constexpr ARCCORE_HOST_DEVICE
Int32 nbNode(ItemLocalIdType lid)
const
222 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodes(ItemLocalIdType lid)
const
227 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodeIds(ItemLocalIdType lid)
const
232 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
nodeId(ItemLocalIdType lid,
Int32 index)
const
243template<
typename ItemType>
244class IndexedItemConnectivityViewT<ItemType,
Edge>
245:
public IndexedItemConnectivityGenericViewT<ItemType, Edge>
249 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Edge>;
250 using ItemLocalIdType = ItemType::LocalIdType;
251 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
252 using ItemLocalId2 = BaseClass::ItemLocalId2;
259 IndexedItemConnectivityViewT() =
default;
264 constexpr ARCCORE_HOST_DEVICE
Int32 nbEdge(ItemLocalIdType lid)
const
269 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
edges(ItemLocalIdType lid)
const
274 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
edgeIds(ItemLocalIdType lid)
const
279 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
edgeId(ItemLocalIdType lid,
Int32 index)
const
290template<
typename ItemType>
291class IndexedItemConnectivityViewT<ItemType,
Face>
292:
public IndexedItemConnectivityGenericViewT<ItemType, Face>
296 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Face>;
297 using ItemLocalIdType = ItemType::LocalIdType;
298 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
299 using ItemLocalId2 = BaseClass::ItemLocalId2;
306 IndexedItemConnectivityViewT() =
default;
311 constexpr ARCCORE_HOST_DEVICE
Int32 nbFace(ItemLocalIdType lid)
const
316 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
faces(ItemLocalIdType lid)
const
321 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
faceIds(ItemLocalIdType lid)
const
326 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
faceId(ItemLocalIdType lid,
Int32 index)
const
337template <
typename ItemType>
338class IndexedItemConnectivityViewT<ItemType,
Cell>
339:
public IndexedItemConnectivityGenericViewT<ItemType, Cell>
343 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Cell>;
344 using ItemLocalIdType = ItemType::LocalIdType;
345 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
346 using ItemLocalId2 = BaseClass::ItemLocalId2;
353 IndexedItemConnectivityViewT() =
default;
358 constexpr ARCCORE_HOST_DEVICE
Int32 nbCell(ItemLocalIdType lid)
const
363 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
cells(ItemLocalIdType lid)
const
368 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
cellIds(ItemLocalIdType lid)
const
373 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
cellId(ItemLocalIdType lid,
Int32 index)
const
384template <
typename ItemType>
385class IndexedItemConnectivityViewT<ItemType,
DoF>
386:
public IndexedItemConnectivityGenericViewT<ItemType, DoF>
390 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, DoF>;
391 using ItemLocalIdType = ItemType::LocalIdType;
392 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
393 using ItemLocalId2 = BaseClass::ItemLocalId2;
400 IndexedItemConnectivityViewT() =
default;
405 constexpr ARCCORE_HOST_DEVICE
Int32 nbDof(ItemLocalIdType lid)
const
410 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofs(ItemLocalIdType lid)
const
415 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofIds(ItemLocalIdType lid)
const
420 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
dofId(ItemLocalIdType lid,
Int32 index)
const
433class ARCANE_CORE_EXPORT IndexedParticleCellConnectivityView
434:
public IndexedItemConnectivityGenericViewT<Particle, Cell>
438 using BaseClass = IndexedItemConnectivityGenericViewT<Particle, Cell>;
440 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
441 using ItemLocalId2 = BaseClass::ItemLocalId2;
449 explicit IndexedParticleCellConnectivityView(
IItemFamily* pf);
450 IndexedParticleCellConnectivityView() =
default;
455 constexpr ARCCORE_HOST_DEVICE
bool hasCell(ItemLocalIdType lid)
const
457 return !
cellId(lid).isNull();
460 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
cellId(ItemLocalIdType lid)
const
469using IndexedCellNodeConnectivityView = IndexedItemConnectivityViewT<Cell,Node>;
470using IndexedCellEdgeConnectivityView = IndexedItemConnectivityViewT<Cell,Edge>;
471using IndexedCellFaceConnectivityView = IndexedItemConnectivityViewT<Cell,Face>;
472using IndexedCellCellConnectivityView = IndexedItemConnectivityViewT<Cell,Cell>;
473using IndexedCellDoFConnectivityView = IndexedItemConnectivityViewT<Cell,DoF>;
475using IndexedFaceNodeConnectivityView = IndexedItemConnectivityViewT<Face,Node>;
476using IndexedFaceEdgeConnectivityView = IndexedItemConnectivityViewT<Face,Edge>;
477using IndexedFaceFaceConnectivityView = IndexedItemConnectivityViewT<Face,Face>;
478using IndexedFaceCellConnectivityView = IndexedItemConnectivityViewT<Face,Cell>;
479using IndexedFaceDoFConnectivityView = IndexedItemConnectivityViewT<Face,DoF>;
481using IndexedEdgeNodeConnectivityView = IndexedItemConnectivityViewT<Edge,Node>;
482using IndexedEdgeEdgeConnectivityView = IndexedItemConnectivityViewT<Edge,Edge>;
483using IndexedEdgeFaceConnectivityView = IndexedItemConnectivityViewT<Edge,Face>;
484using IndexedEdgeCellConnectivityView = IndexedItemConnectivityViewT<Edge,Cell>;
485using IndexedEdgeDoFConnectivityView = IndexedItemConnectivityViewT<Edge,DoF>;
487using IndexedNodeNodeConnectivityView = IndexedItemConnectivityViewT<Node,Node>;
488using IndexedNodeEdgeConnectivityView = IndexedItemConnectivityViewT<Node,Edge>;
489using IndexedNodeFaceConnectivityView = IndexedItemConnectivityViewT<Node,Face>;
490using IndexedNodeCellConnectivityView = IndexedItemConnectivityViewT<Node,Cell>;
491using IndexedNodeDoFConnectivityView = IndexedItemConnectivityViewT<Node,DoF>;
493using IndexedDoFNodeConnectivityView = IndexedItemConnectivityViewT<DoF,Node>;
494using IndexedDoFEdgeConnectivityView = IndexedItemConnectivityViewT<DoF,Edge>;
495using IndexedDoFFaceConnectivityView = IndexedItemConnectivityViewT<DoF,Face>;
496using IndexedDoFCellConnectivityView = IndexedItemConnectivityViewT<DoF,Cell>;
497using IndexedDoFDoFConnectivityView = IndexedItemConnectivityViewT<DoF,DoF>;
Déclarations des types généraux de Arcane.
Interface d'une famille d'entités.
Interface d'une famille de particules.
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.
constexpr __host__ __device__ ItemLocalIdListViewT< Item > items(ItemLocalId lid) const
Liste des entités connectées à l'entité lid.
constexpr __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.
Classe de base d'une vue sur une connectivité non structurée.
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.
constexpr __host__ __device__ ItemLocalIdListViewT< Item > items(ItemLocalId lid) const
Liste des entités connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbItem(ItemLocalId lid) const
Nombre d'entités connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType cellIds(ItemLocalIdType lid) const
Liste des mailles connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType cells(ItemLocalIdType lid) const
Liste des mailles connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbCell(ItemLocalIdType lid) const
Nombre de mailles connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalId2 cellId(ItemLocalIdType lid, Int32 index) const
i-ème maille connectée à l'entité lid
constexpr __host__ __device__ Int32 nbDof(ItemLocalIdType lid) const
Nombre de DoFs connectés à l'entité lid.
constexpr __host__ __device__ ItemLocalId2 dofId(ItemLocalIdType lid, Int32 index) const
i-ème DoF connecté à l'entité lid
constexpr __host__ __device__ ItemLocalIdViewType dofIds(ItemLocalIdType lid) const
Liste des DoFs connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType dofs(ItemLocalIdType lid) const
Liste des DoFs connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalId2 edgeId(ItemLocalIdType lid, Int32 index) const
i-ème arête connectée à l'entité lid
constexpr __host__ __device__ ItemLocalIdViewType edges(ItemLocalIdType lid) const
Liste des arêtes connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType edgeIds(ItemLocalIdType lid) const
Liste des arêtes connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbEdge(ItemLocalIdType lid) const
Nombre d'arêtes connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType faces(ItemLocalIdType lid) const
Liste des faces connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbFace(ItemLocalIdType lid) const
Nombre de faces connectées à l'entité lid.
constexpr __host__ __device__ ItemLocalId2 faceId(ItemLocalIdType lid, Int32 index) const
i-ème face connectée à l'entité lid
constexpr __host__ __device__ ItemLocalIdViewType faceIds(ItemLocalIdType lid) const
Liste des faces connectées à l'entité lid.
constexpr __host__ __device__ Int32 nbNode(ItemLocalIdType lid) const
Nombre de noeuds connectés à l'entité lid.
constexpr __host__ __device__ ItemLocalIdViewType nodes(ItemLocalIdType lid) const
Liste des noeuds connectés à l'entité lid.
constexpr __host__ __device__ ItemLocalId2 nodeId(ItemLocalIdType lid, Int32 index) const
i-ème noeud connecté à l'entité lid
constexpr __host__ __device__ ItemLocalIdViewType nodeIds(ItemLocalIdType lid) const
Liste des noeuds connectés à l'entité lid.
constexpr __host__ __device__ bool hasCell(ItemLocalIdType lid) const
Indique si la particule lid est connectée à une maille.
constexpr __host__ __device__ ItemLocalId2 cellId(ItemLocalIdType lid) const
Maille connectée à l'entité lid.
Vues sur les conteneurs contenant les connectivités. Cette classe permet de rendre opaque en dehors d...
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.
ParticleLocalId LocalIdType
Type du localId()
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.