Arcane
v3.15.3.0
Documentation utilisateur
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
19
#include "
arcane/core/ItemTypes.h
"
20
21
/*---------------------------------------------------------------------------*/
22
/*---------------------------------------------------------------------------*/
23
24
namespace
Arcane
25
{
26
class
ItemSharedInfo;
27
28
/*---------------------------------------------------------------------------*/
29
/*---------------------------------------------------------------------------*/
30
31
// TODO: rendre obsolète les constructeurs qui prennent un argument
32
// un ItemEnumerator
33
34
/*---------------------------------------------------------------------------*/
35
/*---------------------------------------------------------------------------*/
36
/*!
37
* \ingroup Mesh
38
* \brief Index d'un Item dans une variable.
39
*/
40
class
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
65
static
SmallSpan<const ItemLocalId>
fromSpanInt32(
SmallSpan<const Int32>
v)
66
{
67
auto
*
ptr
=
reinterpret_cast<
const
ItemLocalId
*
>
(v.data());
68
return
{
ptr
, v.size() };
69
}
70
static
SmallSpan<const Int32>
toSpanInt32(
SmallSpan<const ItemLocalId>
v)
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
/*---------------------------------------------------------------------------*/
83
/*!
84
* \ingroup Mesh
85
* \brief Index d'une entité \a ItemType dans une variable.
86
*/
87
template
<
typename
ItemType_>
88
class
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
108
static
SmallSpan<const ItemLocalId>
fromSpanInt32(
SmallSpan<const Int32>
v)
109
{
110
auto
*
ptr
=
reinterpret_cast<
const
ThatClass
*
>
(v.data());
111
return
{
ptr
, v.size() };
112
}
113
114
static
SmallSpan<const Int32>
toSpanInt32(
SmallSpan<const ThatClass>
v)
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
/*---------------------------------------------------------------------------*/
128
/*!
129
* \brief Classe pour convertir un ItemLocalId vers une entité (Item).
130
*
131
* Les instances de cette classe restent valides durant toute la durée
132
* de vie de la famille associée.
133
*/
134
class
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
144
//! Entité de numéro local \a local_id
145
inline
constexpr
ARCCORE_HOST_DEVICE
Item
operator[](
ItemLocalId
local_id)
const
;
146
//! Entité de numéro local \a local_id
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
/*---------------------------------------------------------------------------*/
156
/*!
157
* \brief Classe pour convertir un ItemLocalId vers une entité (Item).
158
*
159
* Les instances de cette classe restent valides durant toute la durée
160
* de vie de la famille associée.
161
*/
162
template
<
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
176
//! Entité de numéro local \a local_id
177
inline
constexpr
ARCCORE_HOST_DEVICE
ItemType
operator[]
(
ItemLocalIdType
local_id)
const
;
178
//! Entité de numéro local \a local_id
179
inline
constexpr
ARCCORE_HOST_DEVICE
ItemType
operator[]
(Int32 local_id)
const
;
180
};
181
182
/*---------------------------------------------------------------------------*/
183
/*---------------------------------------------------------------------------*/
184
185
//! Classe pour convertir un NodeLocalId vers une arête.
186
class
NodeLocalIdToNodeConverter
187
:
public
ItemLocalIdToItemConverterT
<Node>
188
{
189
public
:
190
191
using
ItemLocalIdToItemConverterT
<
Node
>::ItemLocalIdToItemConverterT;
192
};
193
194
//! Classe pour convertir un EdgeLocalId vers une arête.
195
class
EdgeLocalIdToEdgeConverter
196
:
public
ItemLocalIdToItemConverterT
<Edge>
197
{
198
public
:
199
200
using
ItemLocalIdToItemConverterT
<
Edge
>::ItemLocalIdToItemConverterT;
201
};
202
203
//! Classe pour convertir un FaceLocalId vers une face.
204
class
FaceLocalIdToFaceConverter
205
:
public
ItemLocalIdToItemConverterT
<Face>
206
{
207
public
:
208
209
using
ItemLocalIdToItemConverterT
<
Face
>::ItemLocalIdToItemConverterT;
210
};
211
212
//! Classe pour convertir un CellLocalId vers une maille.
213
class
CellLocalIdToCellConverter
214
:
public
ItemLocalIdToItemConverterT
<Cell>
215
{
216
public
:
217
218
using
ItemLocalIdToItemConverterT
<
Cell
>::ItemLocalIdToItemConverterT;
219
};
220
221
//! Classe pour convertir un ParticleLocalId vers une particule.
222
class
ParticleLocalIdToParticleConverter
223
:
public
ItemLocalIdToItemConverterT
<Particle>
224
{
225
public
:
226
227
using
ItemLocalIdToItemConverterT
<
Particle
>::ItemLocalIdToItemConverterT;
228
};
229
230
//! Classe pour convertir un DoFLocalId vers un degré de liberté.
231
class
DoFLocalIdToDoFConverter
232
:
public
ItemLocalIdToItemConverterT
<DoF>
233
{
234
public
:
235
236
using
ItemLocalIdToItemConverterT
<
DoF
>::ItemLocalIdToItemConverterT;
237
};
238
239
/*---------------------------------------------------------------------------*/
240
/*---------------------------------------------------------------------------*/
241
242
}
// namespace Arcane
243
244
/*---------------------------------------------------------------------------*/
245
/*---------------------------------------------------------------------------*/
246
247
#endif
ItemTypes.h
Déclarations de types sur les entités.
Arcane::CellLocalIdToCellConverter
Classe pour convertir un CellLocalId vers une maille.
Definition
ItemLocalId.h:215
Arcane::Cell
Maille d'un maillage.
Definition
Item.h:1191
Arcane::DoFLocalIdToDoFConverter
Classe pour convertir un DoFLocalId vers un degré de liberté.
Definition
ItemLocalId.h:233
Arcane::DoF
classe degré de liberté.
Definition
Item.h:1503
Arcane::EdgeLocalIdToEdgeConverter
Classe pour convertir un EdgeLocalId vers une arête.
Definition
ItemLocalId.h:197
Arcane::Edge
Arête d'une maille.
Definition
Item.h:809
Arcane::FaceLocalIdToFaceConverter
Classe pour convertir un FaceLocalId vers une face.
Definition
ItemLocalId.h:206
Arcane::Face
Face d'une maille.
Definition
Item.h:944
Arcane::IItemFamily
Interface d'une famille d'entités.
Definition
IItemFamily.h:111
Arcane::ItemConnectedEnumerator
Enumérateur sur une liste d'entités connectées à une autre.
Definition
ItemConnectedEnumerator.h:41
Arcane::ItemEnumerator
Enumérateur sur une liste d'entités.
Definition
ItemEnumerator.h:58
Arcane::ItemInternal
Definition
ItemInternal.h:908
Arcane::ItemLocalIdT
Index d'une entité ItemType dans une variable.
Definition
ItemLocalId.h:90
Arcane::ItemLocalIdToItemConverterT
Classe pour convertir un ItemLocalId vers une entité (Item).
Definition
ItemLocalId.h:164
Arcane::ItemLocalIdToItemConverterT::operator[]
constexpr __host__ __device__ ItemType operator[](ItemLocalIdType local_id) const
Entité de numéro local local_id.
Definition
Item.h:1764
Arcane::ItemLocalIdToItemConverter
Classe pour convertir un ItemLocalId vers une entité (Item).
Definition
ItemLocalId.h:135
Arcane::ItemLocalId
Index d'un Item dans une variable.
Definition
ItemLocalId.h:41
Arcane::ItemSharedInfo
Definition
ItemSharedInfo.h:55
Arcane::Item
Classe de base d'un élément de maillage.
Definition
Item.h:83
Arcane::NodeLocalIdToNodeConverter
Classe pour convertir un NodeLocalId vers une arête.
Definition
ItemLocalId.h:188
Arcane::Node
Noeud d'un maillage.
Definition
Item.h:573
Arcane::ParticleLocalIdToParticleConverter
Classe pour convertir un ParticleLocalId vers une particule.
Definition
ItemLocalId.h:224
Arcane::Particle
Particule.
Definition
Item.h:1397
Arccore::Ref
Référence à une instance.
Definition
arccore/src/base/arccore/base/Ref.h:143
Arcane
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Definition
AbstractCaseDocumentVisitor.cc:20
arcane
core
ItemLocalId.h
Généré le Lundi 10 Février 2025 02:47:08 pour Arcane par
1.9.8