Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
core/materials/ComponentItemVectorView.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/* ComponentItemVectorView.h (C) 2000-2024 */
9/* */
10/* Vue sur un vecteur sur des entités de constituants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_COMPONENTITEMVECTORVIEW_H
13#define ARCANE_CORE_MATERIALS_COMPONENTITEMVECTORVIEW_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/ArrayView.h"
19
20#include "arcane/core/ItemGroup.h"
21
22#include "arcane/core/materials/MatVarIndex.h"
23#include "arcane/core/materials/IMeshComponent.h"
24#include "arcane/core/materials/ComponentItemInternal.h"
25#include "arcane/core/materials/MatItem.h"
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace ArcaneTest
31{
34}
35namespace Arcane::Accelerator::impl
36{
38}
39
40namespace Arcane::Materials
41{
42
43/*---------------------------------------------------------------------------*/
44/*---------------------------------------------------------------------------*/
50class ARCANE_CORE_EXPORT ComponentItemVectorView
51{
52 friend class ComponentItemVector;
53 friend class ConstituentItemVectorImpl;
54 friend class MatItemVectorView;
55 friend class EnvItemVectorView;
56 friend class MatCellEnumerator;
57 friend class EnvCellEnumerator;
58 friend class ComponentCellEnumerator;
62 template <typename ViewType, typename LambdaType>
63 friend class LambdaMatItemRangeFunctorT;
64 template <typename DataType> friend class
65 MaterialVariableArrayTraits;
66
67 public:
68
69 ComponentItemVectorView() = default;
70
71 protected:
72
76 ConstituentItemLocalIdListView constituent_local_ids,
77 ConstArrayView<Int32> local_ids)
78 : m_matvar_indexes_view(mvi)
79 , m_constituent_list_view(constituent_local_ids)
80 , m_items_local_id_view(local_ids)
81 , m_component(component)
82 {
83 }
84
87 : m_component(component)
88 {
89 }
90
92 ComponentItemVectorView(IMeshComponent* component, ComponentItemVectorView rhs_view)
93 : m_matvar_indexes_view(rhs_view.m_matvar_indexes_view)
94 , m_constituent_list_view(rhs_view.m_constituent_list_view)
95 , m_items_local_id_view(rhs_view.m_items_local_id_view)
96 , m_component(component)
97 {
98 }
99
100 public:
101
103 Integer nbItem() const { return m_matvar_indexes_view.size(); }
104
106 IMeshComponent* component() const { return m_component; }
107
109 ARCCORE_HOST_DEVICE ComponentCell componentCell(Int32 index) const
110 {
111 return m_constituent_list_view._constituenItemBase(index);
112 }
113
114 private:
115
116 // Tableau des MatVarIndex de cette vue.
117 ConstArrayView<MatVarIndex> _matvarIndexes() const { return m_matvar_indexes_view; }
118
120 ConstArrayView<Int32> _internalLocalIds() const { return m_items_local_id_view; }
121
122 ConstituentItemLocalIdListView _constituentItemListView() const { return m_constituent_list_view; }
129 ComponentItemVectorView _subView(Integer begin, Integer size);
130
132 bool _isSamePointerData(const ComponentItemVectorView& rhs) const
133 {
134 bool test1 = m_constituent_list_view._isSamePointerData(rhs.m_constituent_list_view);
135 return test1 && (m_matvar_indexes_view.data() == rhs.m_matvar_indexes_view.data());
136 }
137
138 private:
139
140 // NOTE: Cette classe est wrappée directement en C#.
141 // Si on modifie les champs de cette classe, il faut modifier le type correspondant
142 // dans le wrappeur.
143 ConstArrayView<MatVarIndex> m_matvar_indexes_view;
144 ConstituentItemLocalIdListView m_constituent_list_view;
145 ConstArrayView<Int32> m_items_local_id_view;
146 IMeshComponent* m_component = nullptr;
147};
148
149/*---------------------------------------------------------------------------*/
150/*---------------------------------------------------------------------------*/
156class ARCANE_CORE_EXPORT MatItemVectorView
157: public ComponentItemVectorView
158{
159 friend class MatCellVector;
160 friend class MeshMaterial;
161 template <typename ViewType, typename LambdaType>
162 friend class LambdaMatItemRangeFunctorT;
163
164 public:
165
166 MatItemVectorView() = default;
167
168 private:
169
170 MatItemVectorView(IMeshComponent* component,
172 ConstituentItemLocalIdListView constituent_local_ids,
173 ConstArrayView<Int32> local_ids)
174 : ComponentItemVectorView(component, mv_indexes, constituent_local_ids, local_ids)
175 {}
176
177 MatItemVectorView(IMeshComponent* component, ComponentItemVectorView v)
178 : ComponentItemVectorView(component, v)
179 {}
180
181 private:
182
189 MatItemVectorView _subView(Integer begin, Integer size);
190
191 public:
192
194 IMeshMaterial* material() const;
195
197 ARCCORE_HOST_DEVICE MatCell matCell(Int32 index) const { return MatCell(componentCell(index)); }
198
199 // Temporaire: à conserver pour compatibilité
200 ARCANE_DEPRECATED_240 MatItemVectorView subView(Integer begin, Integer size)
201 {
202 return _subView(begin, size);
203 }
204};
205
206/*---------------------------------------------------------------------------*/
207/*---------------------------------------------------------------------------*/
213class ARCANE_CORE_EXPORT EnvItemVectorView
214: public ComponentItemVectorView
215{
216 friend class EnvCellVector;
217 friend class MeshEnvironment;
218 template <typename ViewType, typename LambdaType>
219 friend class LambdaMatItemRangeFunctorT;
220
221 public:
222
223 EnvItemVectorView() = default;
224
225 private:
226
227 EnvItemVectorView(IMeshComponent* component,
229 ConstituentItemLocalIdListView constituent_local_ids,
230 ConstArrayView<Int32> local_ids)
231 : ComponentItemVectorView(component, mv_indexes, constituent_local_ids, local_ids)
232 {}
233
234 EnvItemVectorView(IMeshComponent* component, ComponentItemVectorView v)
235 : ComponentItemVectorView(component, v)
236 {}
237
238 private:
239
246 EnvItemVectorView _subView(Integer begin, Integer size);
247
248 public:
249
252
254 ARCCORE_HOST_DEVICE EnvCell envCell(Int32 index) const { return EnvCell(componentCell(index)); }
255};
256
257/*---------------------------------------------------------------------------*/
258/*---------------------------------------------------------------------------*/
259
260} // End namespace Arcane::Materials
261
262/*---------------------------------------------------------------------------*/
263/*---------------------------------------------------------------------------*/
264
265#endif
266
Module de test pour la gestion des matériaux et des milieux.
Module de test pour la gestion des matériaux et des milieux.
Vue constante d'un tableau de type T.
Vue sur un vecteur sur les entités d'un composant.
ConstArrayView< Int32 > _internalLocalIds() const
Tableau des localId() des entités associées.
ComponentItemVectorView(IMeshComponent *component)
Construit une vue vide pour le composant component.
bool _isSamePointerData(const ComponentItemVectorView &rhs) const
Pour les tests vérifie que rhs et l'instance pointent sur les même données.
ComponentItemVectorView(IMeshComponent *component, ComponentItemVectorView rhs_view)
Construit une vue à partir d'une autre vue.
ComponentItemVectorView(IMeshComponent *component, ConstArrayView< MatVarIndex > mvi, ConstituentItemLocalIdListView constituent_local_ids, ConstArrayView< Int32 > local_ids)
Construit un vecteur contenant les entités de group pour le composant component.
__host__ __device__ ComponentCell componentCell(Int32 index) const
Retourne la index-ème ComponentCell de la vue.
Integer nbItem() const
Nombre d'entités dans la vue.
Vue sur une instance de ConstituentItemLocalIdList.
Maille arcane d'un milieu.
EnvItemVectorView _subView(Integer begin, Integer size)
Créé une sous-vue de cette vue.
__host__ __device__ EnvCell envCell(Int32 index) const
Récupère la index-ème EnvCell de la vue.
IMeshEnvironment * environment() const
Milieu associé
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface d'un matériau d'un maillage.
Représente un matériau d'une maille multi-matériau.
Vue sur un vecteur sur les entités d'un matériau.
MatItemVectorView _subView(Integer begin, Integer size)
Créé une sous-vue de cette vue.
__host__ __device__ MatCell matCell(Int32 index) const
Récupère la index-ème MatCell de la vue.
IMeshMaterial * material() const
Matériau associé
Active toujours les traces dans les parties Arcane concernant les matériaux.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.