Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemLocalId.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemLocalId.h (C) 2000-2025 */
9/* */
10/* Numéro local d'une entité du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMLOCALID_H
13#define ARCANE_CORE_ITEMLOCALID_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26class ItemSharedInfo;
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31// TODO: rendre obsolète les constructeurs qui prennent un argument
32// un ItemEnumerator
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
40class ARCANE_CORE_EXPORT ItemLocalId
41{
42 public:
43
44 ItemLocalId() = default;
45 constexpr ARCCORE_HOST_DEVICE explicit ItemLocalId(Int32 id)
46 : m_local_id(id)
47 {}
48 // La définition de ce constructeur est dans ItemInternal.h
49 inline ItemLocalId(ItemInternal* item);
50 inline ItemLocalId(ItemConnectedEnumerator enumerator);
51 template <typename ItemType> inline ItemLocalId(ItemEnumeratorT<ItemType> enumerator);
52 template <typename ItemType> inline ItemLocalId(ItemConnectedEnumeratorT<ItemType> enumerator);
53 inline ItemLocalId(Item item);
54 constexpr ARCCORE_HOST_DEVICE operator Int32() const { return m_local_id; }
55 constexpr ARCCORE_HOST_DEVICE Int32 asInt32() const { return m_local_id; }
56 constexpr ARCCORE_HOST_DEVICE Int32 asInteger() const { return m_local_id; }
57
58 public:
59
60 constexpr ARCCORE_HOST_DEVICE Int32 localId() const { return m_local_id; }
61 constexpr ARCCORE_HOST_DEVICE bool isNull() const { return m_local_id == NULL_ITEM_LOCAL_ID; }
62
63 public:
64
66 {
67 auto* ptr = reinterpret_cast<const ItemLocalId*>(v.data());
68 return { ptr, v.size() };
69 }
71 {
72 auto* ptr = reinterpret_cast<const Int32*>(v.data());
73 return { ptr, v.size() };
74 }
75
76 private:
77
78 Int32 m_local_id = NULL_ITEM_LOCAL_ID;
79};
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
87template <typename ItemType_>
88class ItemLocalIdT
89: public ItemLocalId
90{
91 public:
92
93 using ItemType = ItemType_;
94 using ThatClass = ItemLocalIdT<ItemType>;
95
96 public:
97
98 ItemLocalIdT() = default;
99 constexpr ARCCORE_HOST_DEVICE explicit ItemLocalIdT(Int32 id)
100 : ItemLocalId(id)
101 {}
102 inline ItemLocalIdT(ItemInternal* item);
103 inline ItemLocalIdT(ItemConnectedEnumeratorT<ItemType> enumerator);
104 inline ItemLocalIdT(ItemType item);
105
106 public:
107
109 {
110 auto* ptr = reinterpret_cast<const ThatClass*>(v.data());
111 return { ptr, v.size() };
112 }
113
115 {
116 auto* ptr = reinterpret_cast<const Int32*>(v.data());
117 return { ptr, v.size() };
118 }
119
120 public:
121
122 ARCANE_DEPRECATED_REASON("Y2022: Use strongly typed 'ItemEnumeratorT<ItemType>' or 'ItemType'")
123 inline ItemLocalIdT(ItemEnumerator enumerator);
124};
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
134class ARCANE_CORE_EXPORT ItemLocalIdToItemConverter
135{
136 template <typename ItemType_> friend class ItemLocalIdToItemConverterT;
137
138 public:
139
140 explicit ItemLocalIdToItemConverter(IItemFamily* family);
141
142 public:
143
145 inline constexpr ARCCORE_HOST_DEVICE Item operator[](ItemLocalId local_id) const;
147 inline constexpr ARCCORE_HOST_DEVICE Item operator[](Int32 local_id) const;
148
149 private:
150
151 ItemSharedInfo* m_item_shared_info = nullptr;
152};
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
162template <typename ItemType_> class ItemLocalIdToItemConverterT
163: public ItemLocalIdToItemConverter
164{
165 public:
166
167 using ItemType = ItemType_;
168 using ItemLocalIdType = ItemLocalIdT<ItemType>;
169
170 public:
171
172 using ItemLocalIdToItemConverter::ItemLocalIdToItemConverter;
173
174 public:
175
177 inline constexpr ARCCORE_HOST_DEVICE ItemType operator[](ItemLocalIdType local_id) const;
179 inline constexpr ARCCORE_HOST_DEVICE ItemType operator[](Int32 local_id) const;
180};
181
182/*---------------------------------------------------------------------------*/
183/*---------------------------------------------------------------------------*/
184
193
202
211
220
229
238
239/*---------------------------------------------------------------------------*/
240/*---------------------------------------------------------------------------*/
241
242} // namespace Arcane
243
244/*---------------------------------------------------------------------------*/
245/*---------------------------------------------------------------------------*/
246
247#endif
Déclarations de types sur les entités.
Classe pour convertir un CellLocalId vers une maille.
Maille d'un maillage.
Definition Item.h:1191
Classe pour convertir un DoFLocalId vers un degré de liberté.
classe degré de liberté.
Definition Item.h:1503
Classe pour convertir un EdgeLocalId vers une arête.
Arête d'une maille.
Definition Item.h:809
Classe pour convertir un FaceLocalId vers une face.
Face d'une maille.
Definition Item.h:944
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Enumérateur sur une liste typée d'entités connectées de type ItemType.
Enumérateur sur une liste d'entités connectées à une autre.
Enumérateur sur une liste typée d'entités de type ItemType.
Enumérateur sur une liste d'entités.
Structure interne d'une entité de maillage.
Index d'une entité ItemType dans une variable.
Definition ItemLocalId.h:90
Classe pour convertir un ItemLocalId vers une entité (Item).
constexpr __host__ __device__ ItemType operator[](ItemLocalIdType local_id) const
Entité de numéro local local_id.
Definition Item.h:1764
constexpr __host__ __device__ Item operator[](ItemLocalId local_id) const
Entité de numéro local local_id.
Definition Item.h:1745
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Structure interne partagée d'une entité de maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Classe pour convertir un NodeLocalId vers une arête.
Noeud d'un maillage.
Definition Item.h:573
Classe pour convertir un ParticleLocalId vers une particule.
Particule.
Definition Item.h:1397
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Definition Span.h:212
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Definition Span.h:422
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int32_t Int32
Type entier signé sur 32 bits.