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")
71 m_source_kind = source_kind;
72 m_target_kind = target_kind;
79 m_container_view = view.m_container_view;
80 m_source_kind = view.m_source_kind;
81 m_target_kind = view.m_target_kind;
86 ItemConnectivityContainerView m_container_view;
87 eItemKind m_source_kind = IK_Unknown;
88 eItemKind m_target_kind = IK_Unknown;
92 [[noreturn]]
void _badConversion(eItemKind k1, eItemKind k2)
const;
96 void _checkValid(eItemKind k1, eItemKind k2)
const
98 if (k1 != m_source_kind || k2 != m_target_kind)
99 _badConversion(k1, k2);
111class ARCANE_CORE_EXPORT IndexedItemConnectivityViewBase2
115 IndexedItemConnectivityViewBase2() =
default;
120 : m_container_view(view.m_container_view)
133 return m_container_view.itemsIds<
Item>(lid);
146template<
typename ItemType1,
typename ItemType2>
147class IndexedItemConnectivityGenericViewT
148:
public IndexedItemConnectivityViewBase2
152 using ItemType1Type = ItemType1;
153 using ItemType2Type = ItemType2;
154 using ItemLocalId1 = ItemType1::LocalIdType;
155 using ItemLocalId2 = ItemType2::LocalIdType;
161 : IndexedItemConnectivityViewBase2(view)
166 view._checkValid(k1,k2);
169 IndexedItemConnectivityGenericViewT() =
default;
174 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
items(ItemLocalId1 lid)
const
176 return m_container_view.itemsIds<ItemType2>(lid);
180 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
itemIds(ItemLocalId1 lid)
const
182 return m_container_view.itemsIds<ItemType2>(lid);
186 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
itemId(ItemLocalId1 lid,
Int32 index)
const
188 return m_container_view.itemId<ItemLocalId2>(lid, index);
197template<
typename ItemType>
198class IndexedItemConnectivityViewT<ItemType,
Node>
199:
public IndexedItemConnectivityGenericViewT<ItemType,Node>
203 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Node>;
204 using ItemLocalIdType = ItemType::LocalIdType;
205 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
206 using ItemLocalId2 = BaseClass::ItemLocalId2;
213 IndexedItemConnectivityViewT() =
default;
218 constexpr ARCCORE_HOST_DEVICE
Int32 nbNode(ItemLocalIdType lid)
const
223 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodes(ItemLocalIdType lid)
const
228 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
nodeIds(ItemLocalIdType lid)
const
233 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
nodeId(ItemLocalIdType lid,
Int32 index)
const
244template<
typename ItemType>
245class IndexedItemConnectivityViewT<ItemType,
Edge>
246:
public IndexedItemConnectivityGenericViewT<ItemType, Edge>
250 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Edge>;
251 using ItemLocalIdType = ItemType::LocalIdType;
252 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
253 using ItemLocalId2 = BaseClass::ItemLocalId2;
260 IndexedItemConnectivityViewT() =
default;
265 constexpr ARCCORE_HOST_DEVICE
Int32 nbEdge(ItemLocalIdType lid)
const
270 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
edges(ItemLocalIdType lid)
const
275 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
edgeIds(ItemLocalIdType lid)
const
280 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
edgeId(ItemLocalIdType lid,
Int32 index)
const
291template<
typename ItemType>
292class IndexedItemConnectivityViewT<ItemType,
Face>
293:
public IndexedItemConnectivityGenericViewT<ItemType, Face>
297 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Face>;
298 using ItemLocalIdType = ItemType::LocalIdType;
299 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
300 using ItemLocalId2 = BaseClass::ItemLocalId2;
307 IndexedItemConnectivityViewT() =
default;
312 constexpr ARCCORE_HOST_DEVICE
Int32 nbFace(ItemLocalIdType lid)
const
317 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
faces(ItemLocalIdType lid)
const
322 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
faceIds(ItemLocalIdType lid)
const
327 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
faceId(ItemLocalIdType lid,
Int32 index)
const
338template <
typename ItemType>
339class IndexedItemConnectivityViewT<ItemType,
Cell>
340:
public IndexedItemConnectivityGenericViewT<ItemType, Cell>
344 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, Cell>;
345 using ItemLocalIdType = ItemType::LocalIdType;
346 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
347 using ItemLocalId2 = BaseClass::ItemLocalId2;
354 IndexedItemConnectivityViewT() =
default;
359 constexpr ARCCORE_HOST_DEVICE
Int32 nbCell(ItemLocalIdType lid)
const
364 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
cells(ItemLocalIdType lid)
const
369 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
cellIds(ItemLocalIdType lid)
const
374 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
cellId(ItemLocalIdType lid,
Int32 index)
const
385template <
typename ItemType>
386class IndexedItemConnectivityViewT<ItemType,
DoF>
387:
public IndexedItemConnectivityGenericViewT<ItemType, DoF>
391 using BaseClass = IndexedItemConnectivityGenericViewT<ItemType, DoF>;
392 using ItemLocalIdType = ItemType::LocalIdType;
393 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
394 using ItemLocalId2 = BaseClass::ItemLocalId2;
401 IndexedItemConnectivityViewT() =
default;
406 constexpr ARCCORE_HOST_DEVICE
Int32 nbDof(ItemLocalIdType lid)
const
411 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofs(ItemLocalIdType lid)
const
416 constexpr ARCCORE_HOST_DEVICE ItemLocalIdViewType
dofIds(ItemLocalIdType lid)
const
421 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
dofId(ItemLocalIdType lid,
Int32 index)
const
434class ARCANE_CORE_EXPORT IndexedParticleCellConnectivityView
435:
public IndexedItemConnectivityGenericViewT<Particle, Cell>
439 using BaseClass = IndexedItemConnectivityGenericViewT<Particle, Cell>;
441 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
442 using ItemLocalId2 = BaseClass::ItemLocalId2;
450 explicit IndexedParticleCellConnectivityView(
IItemFamily* pf);
451 IndexedParticleCellConnectivityView() =
default;
456 constexpr ARCCORE_HOST_DEVICE
bool hasCell(ItemLocalIdType lid)
const
458 return !
cellId(lid).isNull();
461 constexpr ARCCORE_HOST_DEVICE ItemLocalId2
cellId(ItemLocalIdType lid)
const
474class ARCANE_CORE_EXPORT MutableIndexedParticleCellConnectivityView
475:
public IndexedParticleCellConnectivityView
481 using ItemLocalIdViewType = BaseClass::ItemLocalIdViewType;
482 using ItemLocalId2 = BaseClass::ItemLocalId2;
486 explicit MutableIndexedParticleCellConnectivityView(
IParticleFamily* pf);
487 explicit MutableIndexedParticleCellConnectivityView(
IItemFamily* pf);
492 ARCCORE_HOST_DEVICE
void setCellId(ParticleLocalId particle_lid, CellLocalId cell_lid)
const
494 m_container_view._setParticleCellId(particle_lid, cell_lid);
505using IndexedCellNodeConnectivityView = IndexedItemConnectivityViewT<Cell,Node>;
506using IndexedCellEdgeConnectivityView = IndexedItemConnectivityViewT<Cell,Edge>;
507using IndexedCellFaceConnectivityView = IndexedItemConnectivityViewT<Cell,Face>;
508using IndexedCellCellConnectivityView = IndexedItemConnectivityViewT<Cell,Cell>;
509using IndexedCellDoFConnectivityView = IndexedItemConnectivityViewT<Cell,DoF>;
511using IndexedFaceNodeConnectivityView = IndexedItemConnectivityViewT<Face,Node>;
512using IndexedFaceEdgeConnectivityView = IndexedItemConnectivityViewT<Face,Edge>;
513using IndexedFaceFaceConnectivityView = IndexedItemConnectivityViewT<Face,Face>;
514using IndexedFaceCellConnectivityView = IndexedItemConnectivityViewT<Face,Cell>;
515using IndexedFaceDoFConnectivityView = IndexedItemConnectivityViewT<Face,DoF>;
517using IndexedEdgeNodeConnectivityView = IndexedItemConnectivityViewT<Edge,Node>;
518using IndexedEdgeEdgeConnectivityView = IndexedItemConnectivityViewT<Edge,Edge>;
519using IndexedEdgeFaceConnectivityView = IndexedItemConnectivityViewT<Edge,Face>;
520using IndexedEdgeCellConnectivityView = IndexedItemConnectivityViewT<Edge,Cell>;
521using IndexedEdgeDoFConnectivityView = IndexedItemConnectivityViewT<Edge,DoF>;
523using IndexedNodeNodeConnectivityView = IndexedItemConnectivityViewT<Node,Node>;
524using IndexedNodeEdgeConnectivityView = IndexedItemConnectivityViewT<Node,Edge>;
525using IndexedNodeFaceConnectivityView = IndexedItemConnectivityViewT<Node,Face>;
526using IndexedNodeCellConnectivityView = IndexedItemConnectivityViewT<Node,Cell>;
527using IndexedNodeDoFConnectivityView = IndexedItemConnectivityViewT<Node,DoF>;
529using IndexedDoFNodeConnectivityView = IndexedItemConnectivityViewT<DoF,Node>;
530using IndexedDoFEdgeConnectivityView = IndexedItemConnectivityViewT<DoF,Edge>;
531using IndexedDoFFaceConnectivityView = IndexedItemConnectivityViewT<DoF,Face>;
532using IndexedDoFCellConnectivityView = IndexedItemConnectivityViewT<DoF,Cell>;
533using 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.
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.
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.
__host__ __device__ void setCellId(ParticleLocalId particle_lid, CellLocalId cell_lid) const
Maille connectée à l'entité lid.
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.