Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemInfoListView.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* ItemInfoListView.h (C) 2000-2024 */
9/* */
10/* Vue sur une liste pour obtenir des informations sur les entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMINFOLISTVIEW_H
13#define ARCANE_ITEMINFOLISTVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/ItemGenericInfoListView.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Vue sur une liste pour obtenir des informations sur les entités.
29 *
30 * Comme toutes les vues, ces instances sont temporaires et ne doivent pas être
31 * conservées entre deux modifications de la famille associée.
32 *
33 * Les méthodes de cette classe ne sont valides que si l'instance a été initialisée
34 * avec une famille (IItemFamily) non nulle.
35 *
36 * Via cette classe, il est possible de récupérer une instance de Item à partir
37 * d'un numéro local ItemLocalId.
38 */
39class ARCANE_CORE_EXPORT ItemInfoListView
41{
43 friend class mesh::ItemFamily;
44 friend ItemVector;
45 friend ItemPairEnumerator;
47 template <int Extent> friend class ItemConnectedListView;
48 template <typename ItemType> friend class ItemEnumeratorBaseT;
49
50 // A supprimer lorqu'on n'aura plus besoin de _itemsInternal()
51 friend ItemVectorView;
52
53 public:
54
55 ItemInfoListView() = default;
56
57 /*!
58 * \brief Construit une vue associée à la famille \a family.
59 *
60 * \a family peut valoir \a nullptr auquel cas l'instance n'est
61 * pas utilisable pour récupérer des informations sur les entités
62 */
63 explicit ItemInfoListView(IItemFamily* family);
64
65 public:
66
67 //! Famille associée
68 IItemFamily* itemFamily() const { return m_item_shared_info->itemFamily(); }
69
70 // NOTE: Les définitions des deux méthodes operator[] sont dans Item.h
71
72 //! Entité associée du numéro local \a local_id
73 inline Item operator[](ItemLocalId local_id) const;
74
75 //! Entité associée du numéro local \a local_id
76 inline Item operator[](Int32 local_id) const;
77
78 private:
79
80 // Seule ItemFamily peut créer des instances via ce constructeur
81 explicit ItemInfoListView(ItemSharedInfo* shared_info)
82 : ItemGenericInfoListView(shared_info)
83 {}
84
85 protected:
86
87 using BaseClass::m_flags;
88 using BaseClass::m_item_shared_info;
89 void _checkValid(eItemKind expected_kind);
90};
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94/*!
95 * \brief Classe de base des vues spécialisées des informations sur les entités.
96 */
97template <typename ItemType>
99: public ItemInfoListView
100{
101 public:
102
103 ItemInfoListViewT() = default;
104
105 //! Construit une vue associée à la famille \a family.
107 : ItemInfoListView(family)
108 {
110 }
111
112 public:
113
114 // NOTE: Les définitions des deux méthodes operator[] sont dans Item.h
115
116 //! Entité associée du numéro local \a local_id
117 inline ItemType operator[](ItemLocalId local_id) const;
118
119 //! Entité associée du numéro local \a local_id
120 inline ItemType operator[](Int32 local_id) const;
121};
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125/*!
126 * \brief Vue sur les informations des noeuds.
127 */
129: public ItemInfoListViewT<Node>
130{
131 public:
132
134
135 public:
136
137 NodeInfoListView() = default;
138
139 //! Construit une vue associée à la famille \a family.
141 : BaseClass(family)
142 {}
143};
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147/*!
148 * \brief Vue sur les informations des arêtes.
149 */
151: public ItemInfoListViewT<Edge>
152{
153 public:
154
156
157 public:
158
159 EdgeInfoListView() = default;
160
161 //! Construit une vue associée à la famille \a family.
163 : BaseClass(family)
164 {}
165};
166
167/*---------------------------------------------------------------------------*/
168/*---------------------------------------------------------------------------*/
169/*!
170 * \brief Vue sur les informations des faces.
171 */
173: public ItemInfoListViewT<Face>
174{
175 public:
176
178
179 public:
180
181 FaceInfoListView() = default;
182
183 //! Construit une vue associée à la famille \a family.
185 : BaseClass(family)
186 {}
187
188 public:
189
190 constexpr ARCCORE_HOST_DEVICE bool isSubDomainBoundary(FaceLocalId local_id) const
191 {
192 return ItemFlags::isSubDomainBoundary(m_flags[local_id]);
193 }
194 constexpr ARCCORE_HOST_DEVICE bool isSubDomainBoundaryOutside(FaceLocalId local_id) const
195 {
196 return ItemFlags::isSubDomainBoundaryOutside(m_flags[local_id]);
197 }
198 constexpr ARCCORE_HOST_DEVICE Int32 backCellIndex(FaceLocalId local_id) const
199 {
200 return ItemFlags::backCellIndex(m_flags[local_id]);
201 }
202 constexpr ARCCORE_HOST_DEVICE Int32 frontCellIndex(FaceLocalId local_id) const
203 {
204 return ItemFlags::frontCellIndex(m_flags[local_id]);
205 }
206};
207
208/*---------------------------------------------------------------------------*/
209/*---------------------------------------------------------------------------*/
210/*!
211 * \brief Vue sur les informations des mailles.
212 */
214: public ItemInfoListViewT<Cell>
215{
216 public:
217
219
220 public:
221
222 CellInfoListView() = default;
223
224 //! Construit une vue associée à la famille \a family.
226 : BaseClass(family)
227 {}
228};
229
230/*---------------------------------------------------------------------------*/
231/*---------------------------------------------------------------------------*/
232/*!
233 * \brief Vue sur les informations des particules.
234 */
236: public ItemInfoListViewT<Particle>
237{
238 public:
239
241
242 public:
243
244 ParticleInfoListView() = default;
245
246 //! Construit une vue associée à la famille \a family.
248 : BaseClass(family)
249 {}
250};
251
252/*---------------------------------------------------------------------------*/
253/*---------------------------------------------------------------------------*/
254/*!
255 * \brief Vue sur les informations des DoFs.
256 */
258: public ItemInfoListViewT<DoF>
259{
260 public:
261
263
264 public:
265
266 DoFInfoListView() = default;
267
268 //! Construit une vue associée à la famille \a family.
269 explicit DoFInfoListView(IItemFamily* family)
270 : BaseClass(family)
271 {}
272};
273
274/*---------------------------------------------------------------------------*/
275/*---------------------------------------------------------------------------*/
276
277} // End namespace Arcane
278
279/*---------------------------------------------------------------------------*/
280/*---------------------------------------------------------------------------*/
281
282#endif
Vue sur les informations des mailles.
CellInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
Vue sur les informations des DoFs.
DoFInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
Vue sur les informations des arêtes.
EdgeInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
Vue sur les informations des faces.
FaceInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
Interface d'une famille d'entités.
Vue sur une liste d'entités connectées à une autre entité.
Classe de base des énumérateurs sur une liste d'entité.
static constexpr Int32 backCellIndex(FlagType f)
Index dans la face la maille derrière.
Definition ItemFlags.h:94
static constexpr Int32 frontCellIndex(FlagType f)
Index dans la face la maille devant.
Definition ItemFlags.h:109
Vue sur les informations génériques d'une famille d'entités.
Classe de base des vues spécialisées des informations sur les entités.
ItemInfoListViewT(IItemFamily *family)
Construit une vue associée à la famille family.
ItemType operator[](ItemLocalId local_id) const
Entité associée du numéro local local_id.
Definition Item.h:1711
Vue sur une liste pour obtenir des informations sur les entités.
IItemFamily * itemFamily() const
Famille associée.
void _checkValid(eItemKind expected_kind)
Vérifie que le genre d'entité correspond à celui attendu.
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
Enumérateur sur un tableau de tableaux d'entités du maillage.
Vue sur un vecteur d'entités.
Vecteur d'entités.
Definition ItemVector.h:59
Classe de base d'un élément de maillage.
Definition Item.h:83
Vue sur les informations des noeuds.
NodeInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
Vue sur les informations des particules.
ParticleInfoListView(IItemFamily *family)
Construit une vue associée à la famille family.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-