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.
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.