Arcane  v4.1.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ConstituentModifierWorkInfo.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/* ConstituentModifierWorkInfo.h (C) 2000-2024 */
9/* */
10/* Structure de travail utilisée lors de la modification des constituants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_CONSTITUENTMODIFIERWORKINFO_H
13#define ARCANE_MATERIALS_INTERNAL_CONSTITUENTMODIFIERWORKINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/DualUniqueArray.h"
19
20#include "arcane/core/materials/internal/IMeshMaterialVariableInternal.h"
22#include "arcane/materials/internal/MeshMaterialVariableIndexer.h"
23#include "arcane/materials/internal/ComponentItemListBuilder.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane::Materials
29{
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
43class ARCANE_MATERIALS_EXPORT ConstituentModifierWorkInfo
44{
45 public:
46
47 ConstituentModifierWorkInfo(const MemoryAllocationOptions& opts, eMemoryRessource mem);
48
49 public:
50
71 bool is_verbose = false;
72
77
80 DualUniqueArray<Int32> m_saved_local_ids;
81
84
85 // Filtre indiquant si une maille sera partielle après l'ajout.
86 // Ce tableau est dimensionné au nombre de mailles ajoutées lors de la tranformation courante.
87 NumArray<bool, MDDim1> m_cells_is_partial;
88
89 ComponentItemListBuilder list_builder;
90
93
96
97 public:
98
100 void initialize(Int32 max_local_id, Int32 nb_material, Int32 nb_environment, RunQueue& queue);
101
102 public:
103
105 bool isTransformedCell(CellLocalId local_id) const
106 {
107 return m_cells_to_transform[local_id.localId()];
108 }
109
111 void setTransformedCell(CellLocalId local_id, bool v)
112 {
113 m_cells_to_transform[local_id.localId()] = v;
114 }
115
118 {
119 for (Int32 x : local_ids)
120 m_cells_to_transform[x] = false;
121 }
122
123 bool isRemovedCell(Int32 local_id) const { return m_removed_local_ids_filter[local_id]; }
124
126 void setRemovedCells(ConstArrayView<Int32> local_ids, bool value);
127
129 void setCurrentOperation(MaterialModifierOperation* operation);
130
132 bool isAdd() const { return m_is_add; }
133
134 SmallSpan<const bool> transformedCells() const { return m_cells_to_transform.to1DSmallSpan(); }
135 SmallSpan<bool> transformedCells() { return m_cells_to_transform.to1DSmallSpan(); }
136 SmallSpan<const bool> removedCells() const { return m_removed_local_ids_filter.to1DSmallSpan(); }
137 SmallSpan<bool> removedCells() { return m_removed_local_ids_filter.to1DSmallSpan(); }
138
139 private:
140
142 // Ce tableau est dimensionné au nombre de mailles.
144
146 // Ce tableau est dimensionné au nombre de mailles.
148
149 bool m_is_add = false;
150};
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155} // namespace Arcane::Materials
156
157/*---------------------------------------------------------------------------*/
158/*---------------------------------------------------------------------------*/
159
160#endif
File d'exécution pour un accélérateur.
Vue constante d'un tableau de type T.
Représente un tableau ayant une vue à la fois sur CPU et accélérateur.
Classe d'aide à la construction d'une liste de ComponentItem pour un MeshMaterialVariableIndexer.
UniqueArray< Int32 > cells_unchanged_in_env
Liste des mailles d'un milieu qui sont déjà présentes dans un milieu lors d'une opération.
UniqueArray< Int16 > m_cells_current_nb_material
Nombre de matériaux pour le milieu en cours d'évaluation.
DualUniqueArray< Int32 > pure_local_ids
Liste des mailles pures d'un constituant ajoutées/supprimées par l'opération en cours.
void resetTransformedCells(ConstArrayView< Int32 > local_ids)
Positionne l'état de transformation de la maille local_id pour l'opération courante.
bool isRemovedCell(Int32 local_id) const
Indique si la maille local_id est supprimée du matériaux pour l'opération courante.
DualUniqueArray< MatVarIndex > m_saved_matvar_indexes
Liste des MatVarIndex et LocalId à sauvegarder lors de la suppression de mailles matériaux.
bool isTransformedCell(CellLocalId local_id) const
Indique si la maille local_id est transformée lors de l'opération courante.
UniqueArray< CopyBetweenDataInfo > m_host_variables_copy_data
Informations pour les copies entre valeurs partielles et globales.
DualUniqueArray< bool > m_is_materials_modified
Tableau dimensionné aux matériaux qui est vrai si un matériau est concerné par la modification en cou...
NumArray< bool, MDDim1 > m_removed_local_ids_filter
Filtre indiquant les mailles qui sont supprimées du constituant.
UniqueArray< Int32 > cells_changed_in_env
Liste des mailles d'un milieu qui vont être ajoutées ou supprimées lors d'une opération.
NumArray< CopyBetweenDataInfo, MDDim1 > m_variables_copy_data
Informations pour les copies entre valeurs partielles et globales.
bool isAdd() const
Indique si l'opération courante est un ajout (true) ou une suppression (false) de mailles.
void initialize(Int32 max_local_id, Int32 nb_material, Int32 nb_environment, RunQueue &queue)
Initialise l'instance.
NumArray< bool, MDDim1 > m_cells_to_transform
Filtre indiquant les mailles qui doivent changer de status (Pure<->Partial)
DualUniqueArray< Int32 > partial_indexes
Liste des mailles partielles d'un constituant ajoutées/supprimées par l'opération en cours.
void setTransformedCell(CellLocalId local_id, bool v)
Positionne l'état de transformation de la maille local_id pour l'opération courante.
DualUniqueArray< bool > m_is_environments_modified
Tableau dimensionné aux milieux qui est vrai si un milieu est concerné par la modification en cours.
Opération d'ajout ou suppression de mailles d'un matériau.
Tableaux multi-dimensionnels pour les types numériques accessibles sur accélérateurs.
Vue d'un tableau d'éléments de type T.
Definition Span.h:774
Vecteur 1D de données avec sémantique par valeur (style STL).
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.
Arcane::eMemoryResource eMemoryRessource
Typedef pour la version Arcane historique (avec 2's')
std::int32_t Int32
Type entier signé sur 32 bits.