Arcane  v3.14.10.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{
32class MeshMaterialTesterModule;
33class MaterialHeatTestModule;
34}
35namespace Arcane::Accelerator::impl
36{
37class MatCommandContainerBase;
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
66
67 public:
68
69 ComponentItemVectorView() = default;
70
71 protected:
72
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
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
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
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
175 {}
176
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
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
232 {}
233
235 : ComponentItemVectorView(component, v)
236 {}
237
238 private:
239
246 EnvItemVectorView _subView(Integer begin, Integer size);
247
248 public:
249
251 IMeshEnvironment* environment() const;
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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Enumérateur sur une partie des mailles d'un composant (matériau ou milieu)
Représente un composant d'une maille multi-matériau.
Vue sur un vecteur sur les entités d'un composant.
ConstArrayView< Int32 > _internalLocalIds() const
Tableau des localId() des entités associées.
ARCCORE_HOST_DEVICE ComponentCell componentCell(Int32 index) const
Retourne la index-ème ComponentCell de la vue.
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.
Integer nbItem() const
Nombre d'entités dans la vue.
Vue sur une instance de ConstituentItemLocalIdList.
Implémentation de ComponentItemVector.
Enumérateur sur les mailles d'un milieu.
Vecteur sur les entités d'un milieu.
Maille arcane d'un milieu.
Vue sur un vecteur sur les entités d'un milieu.
ARCCORE_HOST_DEVICE EnvCell envCell(Int32 index) const
Récupère la index-ème EnvCell de la vue.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface d'un matériau d'un maillage.
Fonctor sur un interval d'itération instancié via une lambda fonction.
Enumérateur sur une partie des mailles d'un seul matériau.
Vecteur sur les entités d'un matériau.
Représente un matériau d'une maille multi-matériau.
Vue sur un vecteur sur les entités d'un matériau.
ARCCORE_HOST_DEVICE MatCell matCell(Int32 index) const
Récupère la index-ème MatCell de la vue.
Caractéristiques pour une variable matériaux tableau.
Matériau d'un maillage.
Active toujours les traces dans les parties Arcane concernant les matériaux.