Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/ComponentPartItemVectorView.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/* ComponentPartItemVectorView.h (C) 2000-2024 */
9/* */
10/* Vue sur un vecteur sur une partie des entités composants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_COMPONENTPARTITEMVECTORVIEW_H
13#define ARCANE_CORE_MATERIALS_COMPONENTPARTITEMVECTORVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
18
19#include "arcane/core/materials/MaterialsCoreGlobal.h"
20#include "arcane/core/materials/ComponentItemInternal.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::Materials
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \ingroup ArcaneMaterials
32 * \brief Vue sur une partie pure ou partielles des entités d'un composant.
33 */
34class ARCANE_CORE_EXPORT ComponentPartItemVectorView
35{
36 friend class MeshComponentPartData;
37 friend class ComponentPartCellEnumerator;
38
39 protected:
40
41 /*!
42 * \brief Construit une vue sur une partie des entité du composant \a component.
43 *
44 * Ce constructeur n'est en principe pas appelé directement. Pour construire
45 * une telle vue il est préférable de passer par les méthodes
46 * IMeshComponent::pureItems(), IMeshComponent::impureItems() ou
47 * IMeshComponent::partItems().
48 */
49 ComponentPartItemVectorView(IMeshComponent* component, Int32 component_part_index,
50 Int32ConstArrayView value_indexes,
51 Int32ConstArrayView item_indexes,
52 const ConstituentItemLocalIdListView& constituent_list_view,
53 eMatPart part)
54 : m_component(component)
55 , m_component_part_index(component_part_index)
56 , m_value_indexes(value_indexes)
57 , m_item_indexes(item_indexes)
58 , m_constituent_list_view(constituent_list_view)
59 , m_part(part)
60 {
61 }
62
63 public:
64
65 //! Construit une vue non initialisée
67
68 public:
69
70 //! Nombre d'entités dans la vue
71 Integer nbItem() const { return m_value_indexes.size(); }
72
73 //! Composant associé
74 IMeshComponent* component() const { return m_component; }
75
76 // Index de la partie de ce composant (équivalent à MatVarIndex::arrayIndex()).
77 Int32 componentPartIndex() const { return m_component_part_index; }
78
79 //! Liste des valueIndex() de la partie
80 Int32ConstArrayView valueIndexes() const { return m_value_indexes; }
81
82 //! Liste des indices dans \a itemsInternal() des entités.
83 Int32ConstArrayView itemIndexes() const { return m_item_indexes; }
84
85 //! Partie du composant.
86 eMatPart part() const { return m_part; }
87
88 protected:
89
90 //! Tableau parties internes des entités
91 const ConstituentItemLocalIdListView& constituentItemListView() const { return m_constituent_list_view; }
92
93 private:
94
95 //! Gestionnaire de constituants
96 IMeshComponent* m_component = nullptr;
97
98 //! Indice du constituant pour l'accès aux valeurs partielles.
99 Int32 m_component_part_index = -1;
100
101 //! Liste des valueIndex() de la partie
102 Int32ConstArrayView m_value_indexes;
103
104 //! Liste des indices dans \a m_items_internal de chaque maille matériau.
105 Int32ConstArrayView m_item_indexes;
106
107 //! Liste des ComponentItemInternal* pour ce constituant.
108 ConstituentItemLocalIdListView m_constituent_list_view;
109
110 //! Partie du constituant
111 eMatPart m_part = eMatPart::Pure;
112};
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116/*!
117 * \ingroup ArcaneMaterials
118 * \brief Vue sur la partie pure d'un composant.
119 */
120class ARCANE_CORE_EXPORT ComponentPurePartItemVectorView
122{
123 friend class MatPurePartItemVectorView;
124 friend class EnvPurePartItemVectorView;
125 friend class MeshComponentPartData;
126
127 private:
128
129 //! Construit une vue sur une partie des entité du composant \a component.
131 Int32ConstArrayView value_indexes,
132 Int32ConstArrayView item_indexes,
133 const ConstituentItemLocalIdListView& constituent_list_view)
134 : ComponentPartItemVectorView(component, 0, value_indexes, item_indexes, constituent_list_view, eMatPart::Pure)
135 {
136 }
137
138 public:
139
140 //! Construit une vue non initialisée
142};
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146/*!
147 * \ingroup ArcaneMaterials
148 * \brief Vue sur la partie impure d'un composant.
149 */
150class ARCANE_CORE_EXPORT ComponentImpurePartItemVectorView
152{
153 friend class MatImpurePartItemVectorView;
154 friend class EnvImpurePartItemVectorView;
155 friend class MeshComponentPartData;
156
157 private:
158
159 //! Construit une vue sur une partie des entité du composant \a component.
161 Int32 component_part_index,
162 Int32ConstArrayView value_indexes,
163 Int32ConstArrayView item_indexes,
164 const ConstituentItemLocalIdListView& constituent_list_view)
165 : ComponentPartItemVectorView(component, component_part_index, value_indexes,
166 item_indexes, constituent_list_view, eMatPart::Impure)
167 {
168 }
169
170 public:
171
172 //! Construit une vue non initialisée
174};
175
176/*---------------------------------------------------------------------------*/
177/*---------------------------------------------------------------------------*/
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
181/*!
182 * \ingroup ArcaneMaterials
183 * \brief Vue sur une partie pure ou partielles des entités d'un matériau.
184 */
185class ARCANE_CORE_EXPORT MatPartItemVectorView
187{
188 public:
189
190 //! Construit une vue pour le matériau \a material.
192 //! Construit une vue non initialisée
194
195 public:
196
197 //! Matériau associé
198 IMeshMaterial* material() const { return m_material; }
199
200 private:
201
202 IMeshMaterial* m_material = nullptr;
203};
204
205/*---------------------------------------------------------------------------*/
206/*---------------------------------------------------------------------------*/
207/*!
208 * \ingroup ArcaneMaterials
209 * \brief Vue sur la partie pure des entités d'un matériau.
210 */
211class ARCANE_CORE_EXPORT MatPurePartItemVectorView
213{
214 public:
215
216 //! Construit une vue pour le matériau \a material.
219 //! Construit une vue non initialisée
221
222 public:
223
224 operator ComponentPurePartItemVectorView() const
225 {
226 return { component(), valueIndexes(),
227 itemIndexes(), constituentItemListView() };
228 }
229};
230
231/*---------------------------------------------------------------------------*/
232/*---------------------------------------------------------------------------*/
233/*!
234 * \ingroup ArcaneMaterials
235 * \brief Vue sur la partie impure des entités d'un matériau.
236 */
237class ARCANE_CORE_EXPORT MatImpurePartItemVectorView
239{
240 public:
241
242 //! Construit une vue pour le matériau \a material.
245 //! Construit une vue non initialisée
247
248 public:
249
250 operator ComponentImpurePartItemVectorView() const
251 {
252 return { component(), componentPartIndex(),
253 valueIndexes(),
254 itemIndexes(), constituentItemListView() };
255 }
256};
257
258/*---------------------------------------------------------------------------*/
259/*---------------------------------------------------------------------------*/
260
261/*---------------------------------------------------------------------------*/
262/*---------------------------------------------------------------------------*/
263/*!
264 * \ingroup ArcaneMaterials
265 * \brief Vue sur une partie pure ou partielles des entités d'un milieu.
266 */
267class ARCANE_CORE_EXPORT EnvPartItemVectorView
269{
270 public:
271
272 //! Construit une vue pour le milieu \a env.
274 //! Construit une vue non initialisée
276
277 public:
278
279 //! Matériau associé
280 IMeshEnvironment* environment() const { return m_environment; }
281
282 private:
283
284 IMeshEnvironment* m_environment = nullptr;
285};
286
287/*---------------------------------------------------------------------------*/
288/*---------------------------------------------------------------------------*/
289/*!
290 * \ingroup ArcaneMaterials
291 * \brief Vue sur la partie pure des entités d'un milieu.
292 */
293class ARCANE_CORE_EXPORT EnvPurePartItemVectorView
295{
296 public:
297
298 //! Construit une vue pour le milieu \a env.
301 //! Construit une vue non initialisée
303
304 public:
305
306 operator ComponentPurePartItemVectorView() const
307 {
308 return { component(), valueIndexes(),
309 itemIndexes(), constituentItemListView() };
310 }
311};
312
313/*---------------------------------------------------------------------------*/
314/*---------------------------------------------------------------------------*/
315/*!
316 * \ingroup ArcaneMaterials
317 * \brief Vue sur la partie impure des entités d'un milieu.
318 */
319class ARCANE_CORE_EXPORT EnvImpurePartItemVectorView
321{
322 public:
323
324 //! Construit une vue pour le milieu \a env.
327 //! Construit une vue non initialisée
329
330 public:
331
332 operator ComponentImpurePartItemVectorView() const
333 {
334 return { component(), componentPartIndex(),
335 valueIndexes(),
336 itemIndexes(), constituentItemListView() };
337 }
338};
339
340/*---------------------------------------------------------------------------*/
341/*---------------------------------------------------------------------------*/
342
343} // End namespace Arcane::Materials
344
345/*---------------------------------------------------------------------------*/
346/*---------------------------------------------------------------------------*/
347
348#endif
ComponentImpurePartItemVectorView()=default
Construit une vue non initialisée.
Enumérateur sur une sous-partie (pure ou partielle) d'un sous-ensemble des mailles d'un composant (ma...
Vue sur une partie pure ou partielles des entités d'un composant.
ComponentPartItemVectorView()=default
Construit une vue non initialisée.
Int32ConstArrayView itemIndexes() const
Liste des indices dans itemsInternal() des entités.
const ConstituentItemLocalIdListView & constituentItemListView() const
Tableau parties internes des entités.
ComponentPartItemVectorView(IMeshComponent *component, Int32 component_part_index, Int32ConstArrayView value_indexes, Int32ConstArrayView item_indexes, const ConstituentItemLocalIdListView &constituent_list_view, eMatPart part)
Construit une vue sur une partie des entité du composant component.
Int32ConstArrayView valueIndexes() const
Liste des valueIndex() de la partie.
ComponentPurePartItemVectorView()=default
Construit une vue non initialisée.
EnvImpurePartItemVectorView(IMeshEnvironment *env, const ComponentImpurePartItemVectorView &view)
Construit une vue pour le milieu env.
Vue sur une partie pure ou partielles des entités d'un milieu.
EnvPartItemVectorView()=default
Construit une vue non initialisée.
EnvPurePartItemVectorView(IMeshEnvironment *env, const ComponentPurePartItemVectorView &view)
Construit une vue pour le milieu env.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface d'un matériau d'un maillage.
Vue sur la partie impure des entités d'un matériau.
MatImpurePartItemVectorView(IMeshMaterial *material, const ComponentImpurePartItemVectorView &view)
Construit une vue pour le matériau material.
Vue sur une partie pure ou partielles des entités d'un matériau.
MatPartItemVectorView()=default
Construit une vue non initialisée.
Vue sur la partie pure des entités d'un matériau.
MatPurePartItemVectorView(IMeshMaterial *material, const ComponentPurePartItemVectorView &view)
Construit une vue pour le matériau material.
Vue constante d'un tableau de type T.
Active toujours les traces dans les parties Arcane concernant les matériaux.
eMatPart
Partie d'un composant.