Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshMaterialVariableIndexer.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/* MeshMaterialVariableIndexer.h (C) 2000-2024 */
9/* */
10/* Indexer pour les variables materiaux. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLEINDEXER_H
13#define ARCANE_MATERIALS_INTERNAL_MESHMATERIALVARIABLEINDEXER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/TraceAccessor.h"
20
22#include "arcane/core/ItemGroup.h"
23#include "arcane/core/materials/MatVarIndex.h"
24
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Materials
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
50class ARCANE_MATERIALS_EXPORT MeshMaterialVariableIndexer
51: public TraceAccessor
52{
53 friend class AllEnvData;
54 friend class MaterialModifierOperation;
55 friend class MeshEnvironment;
56 friend class MeshMaterial;
57 friend class MeshComponentData;
58 friend class MeshMaterialMng;
59 friend class IncrementalComponentModifier;
60 template <typename DataType> friend class ItemMaterialVariableScalar;
61
62 public:
63
64 MeshMaterialVariableIndexer(ITraceMng* tm, const String& name);
65
66 public:
67
69 const String& name() const { return m_name; }
70
77
78 Integer index() const { return m_index; }
79 ConstArrayView<MatVarIndex> matvarIndexes() const { return m_matvar_indexes; }
80 const CellGroup& cells() const { return m_cells; }
81 void checkValid();
83 bool isEnvironment() const { return m_is_environment; }
84 void dumpStats() const;
85
86 public:
87
88 // Méthodes publiques car utilisées sur accélérateurs
89 void endUpdateAdd(const ComponentItemListBuilder& builder, RunQueue& queue);
90 void endUpdateRemoveV2(ConstituentModifierWorkInfo& work_info, Integer nb_remove, RunQueue& queue);
91 void transformCells(ConstituentModifierWorkInfo& args, RunQueue& queue, bool is_from_env);
92
93 private:
94
96
97 void endUpdate(const ComponentItemListBuilderOld& builder);
98 Array<MatVarIndex>& matvarIndexesArray() { return m_matvar_indexes; }
99 void setCells(const CellGroup& cells) { m_cells = cells; }
100 void setIsEnvironment(bool is_environment) { m_is_environment = is_environment; }
101 void setIndex(Integer index) { m_index = index; }
102 Integer nbItem() const { return m_local_ids.size(); }
103 ConstArrayView<Int32> localIds() const { return m_local_ids; }
104
105 void changeLocalIds(Int32ConstArrayView old_to_new_ids);
106 void endUpdateRemove(ConstituentModifierWorkInfo& args, Integer nb_remove, RunQueue& queue);
108
109 private:
110
111 private:
112
115
118
121
124
127
137
139 bool m_is_environment = false;
140
143
151 Int32 m_nb_useless_remove_transform = 0;
152
155
156 private:
157
158 static void _changeLocalIdsV2(MeshMaterialVariableIndexer* var_indexer,
159 Int32ConstArrayView old_to_new_ids);
160 void _init();
161};
162
163/*---------------------------------------------------------------------------*/
164/*---------------------------------------------------------------------------*/
165
166} // End namespace Arcane::Materials
167
168/*---------------------------------------------------------------------------*/
169/*---------------------------------------------------------------------------*/
170
171#endif
172
Déclarations de types sur les entités.
File d'exécution pour un accélérateur.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Classe d'aide à la construction d'une liste de ComponentItem pour un MeshMaterialVariableIndexer.
Classe d'aide à la construction d'une liste de ComponentItem pour un MeshMaterialVariableIndexer.
Structure de travail utilisée lors de la modification des constituants (via MeshMaterialModifier).
Infos d'un matériau d'un maillage.
bool m_is_print_useless_transform
Indique si on affiche un message lors d'une transformation inutile.
CellGroup m_cells
Liste des mailles de cet indexer.
Integer m_index
Index de cette instance dans la liste des indexeurs.
bool m_is_environment
Vrai si l'indexeur est associé à un milieu.
bool isEnvironment() const
Vrai si cet indexeur est celui d'un milieu.
Int32 m_nb_transform_called
Nombre d'appels aux méthodes de transformation.
UniqueArray< MatVarIndex > m_matvar_indexes
Liste des indexs pour les variables matériaux.
UniqueArray< Int32 > m_local_ids
Liste des localId() des entités correspondantes à m_matvar_indexes. NOTE: à terme,...
Int32 m_nb_useless_add_transform
Nombre d'appels inutiles aux méthodes de transformation.
const String & name() const
Nom de l'indexeur.
Integer m_max_index_in_multiple_array
Indice max plus 1 dans le tableau des valeurs multiples.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
ItemGroupT< Cell > CellGroup
Groupe de mailles.
Definition ItemTypes.h:183
Active toujours les traces dans les parties Arcane concernant les matériaux.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
MATERIALS_BEGIN_NAMESPACE class ARCANE_MATERIALS_EXPORT(64) SimdMatVarIndex
Indexeur SIMD sur un composant.
std::int32_t Int32
Type entier signé sur 32 bits.