Arcane  v3.14.10.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
36class MeshMaterialInfo;
37class IMeshEnvironment;
38class ComponentItemListBuilder;
39class ComponentItemListBuilderOld;
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;
60 template <typename DataType> friend class ItemMaterialVariableScalar;
61
62 public:
63
65
66 public:
67
69 const String& name() const { return m_name; }
70
76 Integer maxIndexInMultipleArray() const { return m_max_index_in_multiple_array + 1; }
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
114 Integer m_index = -1;
115
117 Integer m_max_index_in_multiple_array = -1;
118
121
124
127
137
139 bool m_is_environment = false;
140
142 Int32 m_nb_transform_called = 0;
143
150 Int32 m_nb_useless_add_transform = 0;
151 Int32 m_nb_useless_remove_transform = 0;
152
154 bool m_is_print_useless_transform = false;
155
156 private:
157
158 static void _changeLocalIdsV2(MeshMaterialVariableIndexer* var_indexer,
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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Informations sur les valeurs des milieux.
Definition AllEnvData.h:44
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).
Variable scalaire sur un matériau du maillage.
Opération d'ajout ou suppression de mailles d'un matériau.
Données d'un constituant (matériau ou milieu) d'un maillage.
Implémentation d'un gestion des matériaux.
CellGroup m_cells
Liste des mailles de cet indexer.
bool isEnvironment() const
Vrai si cet indexeur est celui d'un milieu.
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,...
const String & name() const
Nom de l'indexeur.
Matériau d'un maillage.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
Active toujours les traces dans les parties Arcane concernant les matériaux.
Int32 Integer
Type représentant un entier.