Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IncrementalComponentModifier.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/* IncrementalComponentModifier.h (C) 2000-2024 */
9/* */
10/* Modification incrémentale des constituants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_INCREMENTALCOMPONENTMODIFIER_H
13#define ARCANE_MATERIALS_INTERNAL_INCREMENTALCOMPONENTMODIFIER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
20#include "arcane/materials/internal/MeshMaterialVariableIndexer.h"
21#include "arcane/materials/internal/ConstituentModifierWorkInfo.h"
22
23#include "arcane/accelerator/core/RunQueue.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane::Materials
29{
30class CopyBetweenPartialAndGlobalArgs;
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
40class ARCANE_MATERIALS_EXPORT IncrementalComponentModifier
41: public TraceAccessor
42{
43 friend class MeshMaterialModifierImpl;
44
45 public:
46
48
49 public:
50
51 void initialize(bool is_debug);
52 void apply(MaterialModifierOperation* operation);
53 void finalize();
54 void setDoCopyBetweenPartialAndPure(bool v) { m_do_copy_between_partial_and_pure = v; }
55 void setDoInitNewItems(bool v) { m_do_init_new_items = v; }
56
57 private:
58
59 AllEnvData* m_all_env_data = nullptr;
60 MeshMaterialMng* m_material_mng = nullptr;
62 RunQueue m_queue;
63 bool m_do_copy_between_partial_and_pure = true;
64 bool m_do_init_new_items = true;
65 bool m_is_debug = false;
67 Int32 m_use_generic_copy_between_pure_and_partial = 0;
68
69 public:
70
71 void flagRemovedCells(SmallSpan<const Int32> local_ids, bool value_to_set);
72
73 public:
74
75 Int32 _computeCellsToTransformForEnvironments(SmallSpan<const Int32> ids);
76 void _resetTransformedCells(SmallSpan<const Int32> ids);
77 void _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
79 void _removeItemsInGroup(ItemGroup cells,SmallSpan<const Int32> removed_ids);
80 void _applyCopyBetweenPartialsAndGlobals(const CopyBetweenPartialAndGlobalArgs& args, RunQueue& queue);
81 void _applyCopyVariableViews(RunQueue& queue);
82 void _applyInitializeWithZero(const InitializeWithZeroArgs& args);
83 void _computeItemsToAdd(ComponentItemListBuilder& list_builder, SmallSpan<const Int32> local_ids);
84
85 private:
86
87 void _switchCellsForEnvironments(const IMeshEnvironment* modified_env,
89 void _switchCellsForMaterials(const MeshMaterial* modified_mat,
91 Int32 _computeCellsToTransformForMaterial(const MeshMaterial* mat, SmallSpan<const Int32> ids);
92 void _removeItemsFromEnvironment(MeshEnvironment* env, MeshMaterial* mat,
94 void _addItemsToEnvironment(MeshEnvironment* env, MeshMaterial* mat,
96 void _copyBetweenPartialsAndGlobals(const CopyBetweenPartialAndGlobalArgs& args);
97 void _resizeVariablesIndexer(Int32 var_index);
98};
99
100/*---------------------------------------------------------------------------*/
101/*---------------------------------------------------------------------------*/
102
103} // namespace Arcane::Materials
104
105/*---------------------------------------------------------------------------*/
106/*---------------------------------------------------------------------------*/
107
108#endif
File d'exécution pour un accélérateur.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
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.
Structure de travail utilisée lors de la modification des constituants (via MeshMaterialModifier).
Arguments des méthodes de copie entre valeurs partielles et globales.
Arguments des méthodes de copie entre valeurs partielles et globales.
Opération d'ajout ou suppression de mailles d'un matériau.
Implémentation d'un gestion des matériaux.
Matériau d'un maillage.
Active toujours les traces dans les parties Arcane concernant les matériaux.