Arcane  v3.16.6.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);
149
150 public:
151
153 inline constexpr ARCCORE_HOST_DEVICE Item operator[](ItemLocalId local_id) const;
155 inline constexpr ARCCORE_HOST_DEVICE Item operator[](Int32 local_id) const;
156
157 private:
158
159 ItemSharedInfo* m_item_shared_info = nullptr;
160};
161
162/*---------------------------------------------------------------------------*/
163/*---------------------------------------------------------------------------*/
170template <typename ItemType_> class ItemLocalIdToItemConverterT
171: public ItemLocalIdToItemConverter
172{
173 public:
174
175 using ItemType = ItemType_;
176 using ItemLocalIdType = ItemLocalIdT<ItemType>;
177
178 public:
179
180 using ItemLocalIdToItemConverter::ItemLocalIdToItemConverter;
181
182 public:
183
185 inline constexpr ARCCORE_HOST_DEVICE ItemType operator[](ItemLocalIdType local_id) const;
187 inline constexpr ARCCORE_HOST_DEVICE ItemType operator[](Int32 local_id) const;
188};
189
190/*---------------------------------------------------------------------------*/
191/*---------------------------------------------------------------------------*/
192
201
210
219
228
237
246
247/*---------------------------------------------------------------------------*/
248/*---------------------------------------------------------------------------*/
249
250} // namespace Arcane
251
252/*---------------------------------------------------------------------------*/
253/*---------------------------------------------------------------------------*/
254
255#endif
Déclarations de types sur les entités.
Classe pour convertir un CellLocalId vers une maille.
Maille d'un maillage.
Definition Item.h:1205
Classe pour convertir un DoFLocalId vers un degré de liberté.
classe degré de liberté.
Definition Item.h:1517
Classe pour convertir un EdgeLocalId vers une arête.
Arête d'une maille.
Definition Item.h:823
Classe pour convertir un FaceLocalId vers une face.
Face d'une maille.
Definition Item.h:958
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:1778
ItemLocalIdToItemConverter()=default
Constructeur par défaut.
constexpr __host__ __device__ Item operator[](ItemLocalId local_id) const
Entité de numéro local local_id.
Definition Item.h:1759
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:582
Classe pour convertir un ParticleLocalId vers une particule.
Particule.
Definition Item.h:1411
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.