14#include "arcane/materials/AllCellToAllEnvCellConverter.h"
16#include "arcane/core/IItemFamily.h"
18#include "arcane/core/ItemGroup.h"
19#include "arcane/core/materials/internal/IMeshMaterialMngInternal.h"
46Int32 AllCellToAllEnvCell::Impl::
54 auto select_func = [=] ARCCORE_HOST_DEVICE(Int32 i) -> Int32 {
67void AllCellToAllEnvCell::Impl::
88 allcell_allenvcell[cid] = Span<ComponentItemLocalId>(mem_pool + offset, nb_env);
91 allcell_allenvcell[cid] = Span<ComponentItemLocalId>();
100AllCellToAllEnvCell(IMeshMaterialMng* mm)
108void AllCellToAllEnvCell::
111 if (m_allcell_allenvcell_ptr) {
112 m_allcell_allenvcell.resize(0);
113 m_allcell_allenvcell_ptr =
nullptr;
114 m_mem_pool.resize(0);
116 m_material_mng =
nullptr;
118 m_current_max_nb_env = 0;
127 return Impl::_computeMaxNbEnvPerCell(m_material_mng);
137 m_size =
mm->mesh()->cellFamily()->maxLocalId() + 1;
139 m_allcell_allenvcell.resize(m_size);
140 m_allcell_allenvcell_ptr = m_allcell_allenvcell.to1DSpan().data();
148 Int32
pool_size = m_current_max_nb_env * m_size;
160 Integer offset(
cid * m_current_max_nb_env);
174void AllCellToAllEnvCell::
178 if (m_size != m_material_mng->
mesh()->allCells().itemFamily()->maxLocalId() + 1) {
190 ARCANE_ASSERT((m_allcell_allenvcell_ptr), (
"Trying to change memory pool within a null structure"));
194 auto pool_size(m_current_max_nb_env * m_size);
199 Impl::_updateValues(m_material_mng, m_mem_pool.to1DSpan().data(), m_allcell_allenvcell_ptr, m_current_max_nb_env);
205CellToAllEnvCellAccessor::
206CellToAllEnvCellAccessor(
const IMeshMaterialMng* mmmng)
207: m_cell_allenvcell(mmmng->_internalApi()->getAllCellToAllEnvCell())
Types et fonctions pour gérer les synchronisations sur les accélérateurs.
Types et macros pour gérer les énumérations des entités sur les accélérateurs.
#define RUNCOMMAND_ENUMERATE(ItemTypeName, iter_name, item_group,...)
Macro pour itérer sur accélérateur sur un groupe d'entités.
Algorithme générique de réduction sur accélérateur.
File d'exécution pour un accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Int32 maxNbEnvPerCell() const
Méthode pour donner le nombre maximal d'environnements présents sur une maille à l'instant t.
void initialize()
Fonction de création alternative. Il faut attendre que les données relatives aux matériaux soient fin...
Maille arcane avec info matériaux et milieux.
Conversion de 'Cell' en 'AllEnvCell'.
Index d'un Item matériaux dans une variable.
Maille arcane d'un milieu.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
virtual IMesh * mesh()=0
Maillage associé.
RunCommand makeCommand(const RunQueue &run_queue)
Créé une commande associée à la file run_queue.
Active toujours les traces dans les parties Arcane concernant les matériaux.