@@ -251,15 +251,15 @@ _computeCellsToTransformForEnvironments(SmallSpan<const Int32> ids)
251
251
/* ---------------------------------------------------------------------------*/
252
252
253
253
void IncrementalComponentModifier::
254
- _addItemsToIndexer (MeshMaterialVariableIndexer* var_indexer,
255
- SmallSpan<const Int32> local_ids)
254
+ _computeItemsToAdd (ComponentItemListBuilder& list_builder, SmallSpan<const Int32> local_ids)
256
255
{
257
- // TODO Conserver l'instance au cours de toutes modifications
258
- ComponentItemListBuilder& list_builder = m_work_info.list_builder ;
259
- list_builder.setIndexer (var_indexer);
256
+ SmallSpan<const bool > cells_is_partial = m_work_info.m_cells_is_partial ;
257
+
258
+ Accelerator::GenericFilterer filterer (m_queue);
259
+
260
+ MeshMaterialVariableIndexer* var_indexer = list_builder.indexer ();
260
261
261
- const Int32 n = local_ids.size ();
262
- list_builder.preAllocate (n);
262
+ const Int32 nb_id = local_ids.size ();
263
263
264
264
SmallSpan<Int32> pure_indexes = list_builder.pureIndexes ();
265
265
SmallSpan<Int32> partial_indexes = list_builder.partialIndexes ();
@@ -268,10 +268,6 @@ _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
268
268
Int32 nb_partial_added = 0 ;
269
269
Int32 index_in_partial = var_indexer->maxIndexInMultipleArray ();
270
270
271
- SmallSpan<const bool > cells_is_partial = m_work_info.m_cells_is_partial ;
272
-
273
- Accelerator::GenericFilterer filterer (m_queue);
274
-
275
271
// TODO: pour l'instant on remplit en deux fois mais il serait
276
272
// possible de le faire en une seule fois en utilisation l'algorithme de Partition.
277
273
// Il faudrait alors inverser les éléments de la deuxième liste pour avoir
@@ -286,7 +282,7 @@ _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
286
282
Int32 local_id = local_ids[input_index];
287
283
pure_indexes[output_index] = local_id;
288
284
};
289
- filterer.applyWithIndex (n , select_lambda, setter_lambda, A_FUNCINFO);
285
+ filterer.applyWithIndex (nb_id , select_lambda, setter_lambda, A_FUNCINFO);
290
286
nb_pure_added = filterer.nbOutputElement ();
291
287
}
292
288
// Remplit la liste des mailles partielles
@@ -299,41 +295,11 @@ _addItemsToIndexer(MeshMaterialVariableIndexer* var_indexer,
299
295
partial_indexes[output_index] = index_in_partial + output_index;
300
296
partial_local_ids[output_index] = local_id;
301
297
};
302
- filterer.applyWithIndex (n , select_lambda, setter_lambda, A_FUNCINFO);
298
+ filterer.applyWithIndex (nb_id , select_lambda, setter_lambda, A_FUNCINFO);
303
299
nb_partial_added = filterer.nbOutputElement ();
304
300
}
305
301
306
302
list_builder.resize (nb_pure_added, nb_partial_added);
307
-
308
- if (traceMng ()->verbosityLevel () >= 5 )
309
- info () << " ADD_MATITEM_TO_INDEXER component=" << var_indexer->name ()
310
- << " nb_pure=" << list_builder.pureIndexes ().size ()
311
- << " nb_partial=" << list_builder.partialIndexes ().size ()
312
- << " \n pure=(" << list_builder.pureIndexes () << " )"
313
- << " \n partial=(" << list_builder.partialIndexes () << " )" ;
314
-
315
- // TODO: lors de cet appel, on connait le max de \a index_in_partial donc
316
- // on peut éviter de faire une réduction pour le recalculer.
317
-
318
- var_indexer->endUpdateAdd (list_builder, m_queue);
319
-
320
- // Maintenant que les nouveaux MatVar sont créés, il faut les
321
- // initialiser avec les bonnes valeurs.
322
- {
323
- _resizeVariablesIndexer (var_indexer->index ());
324
- // TODO: Comme tout est indépendant par variable, on pourrait
325
- // éventuellement utiliser plusieurs files.
326
- if (m_do_init_new_items) {
327
- Accelerator::ProfileRegion ps (m_queue, " InitializeNewItems" , 0xFFFF00 );
328
- RunQueue::ScopedAsync sc (&m_queue);
329
- IMeshMaterialMng* mm = m_material_mng;
330
- auto func = [&](IMeshMaterialVariable* mv) {
331
- mv->_internalApi ()->initializeNewItems (list_builder, m_queue);
332
- };
333
- functor::apply (mm, &IMeshMaterialMng::visitVariables, func);
334
- m_queue.barrier ();
335
- }
336
- }
337
303
}
338
304
339
305
/* ---------------------------------------------------------------------------*/
0 commit comments