Arcane  v3.16.0.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{
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
40class ARCANE_MATERIALS_EXPORT IncrementalComponentModifier
41: public TraceAccessor
42{
43 friend class MeshMaterialModifierImpl;
44
45 public:
46
47 IncrementalComponentModifier(AllEnvData* all_env_data,const RunQueue& queue);
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;
70
71 public:
72
73 void flagRemovedCells(SmallSpan<const Int32> local_ids, bool value_to_set);
74
75 public:
76
78 void _resetTransformedCells(SmallSpan<const Int32> ids);
79 void _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
80 SmallSpan<const Int32> local_ids);
81 void _removeItemsInGroup(ItemGroup cells,SmallSpan<const Int32> removed_ids);
84 void _applyInitializeWithZero(const InitializeWithZeroArgs& args);
85 void _computeItemsToAdd(ComponentItemListBuilder& list_builder, SmallSpan<const Int32> local_ids);
86
87 private:
88
89 void _switchCellsForEnvironments(const IMeshEnvironment* modified_env,
91 void _switchCellsForMaterials(const MeshMaterial* modified_mat,
95 SmallSpan<const Int32> local_ids, bool update_env_indexer);
97 SmallSpan<const Int32> local_ids, bool update_env_indexer);
99 void _resizeVariablesIndexer(Int32 var_index);
100};
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105} // namespace Arcane::Materials
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
110#endif
File d'exécution pour un accélérateur.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
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.
void _switchCellsForMaterials(const MeshMaterial *modified_mat, SmallSpan< const Int32 > ids)
Transforme les entités pour un milieu.
Int32 _computeCellsToTransformForEnvironments(SmallSpan< const Int32 > ids)
Calcule les mailles à transformer lorsqu'on modifie les mailles d'un milieu.
void _switchCellsForEnvironments(const IMeshEnvironment *modified_env, SmallSpan< const Int32 > ids)
Transforme les entités pour les milieux.
void _applyCopyVariableViews(RunQueue &queue)
Effectue la copie des vues pour les variables.
bool m_force_multiple_command_for_resize
Vrai si on force à utiliser une seule commande pour le redimensionnement.
void _addItemsToEnvironment(MeshEnvironment *env, MeshMaterial *mat, SmallSpan< const Int32 > local_ids, bool update_env_indexer)
Ajoute les mailles d'un matériau du milieu.
void _applyCopyBetweenPartialsAndGlobals(const CopyBetweenPartialAndGlobalArgs &args, RunQueue &queue)
Effectue la copie entre les valeurs partielles et globales.
void _resizeVariablesIndexer(Int32 var_index)
Redimensionne l'index var_index des variables.
void _copyBetweenPartialsAndGlobals(const CopyBetweenPartialAndGlobalArgs &args)
Copie entre les valeurs partielles et les valeurs globales.
Int32 m_use_generic_copy_between_pure_and_partial
1 ou 2 si on utilise une version générique pour les copies entre pure et partiel
Int32 _computeCellsToTransformForMaterial(const MeshMaterial *mat, SmallSpan< const Int32 > ids)
Calcule les mailles à transformer pour le matériau \at mat.
void _removeItemsFromEnvironment(MeshEnvironment *env, MeshMaterial *mat, SmallSpan< const Int32 > local_ids, bool update_env_indexer)
Supprime les mailles d'un matériau du milieu.
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.
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Active toujours les traces dans les parties Arcane concernant les matériaux.
MATERIALS_BEGIN_NAMESPACE class ARCANE_MATERIALS_EXPORT(64) SimdMatVarIndex
Indexeur SIMD sur un composant.
std::int32_t Int32
Type entier signé sur 32 bits.