Skip to content

Commit aef208f

Browse files
[arcane,materials] Utilise 'ComponentItemInternalLocalId' à la place de 'ComponentItemInternal*' dans 'ComponentItemInternal'.
1 parent 56df1ea commit aef208f

File tree

4 files changed

+19
-12
lines changed

4 files changed

+19
-12
lines changed

arcane/src/arcane/core/materials/ComponentItemInternal.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,9 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
244244
return &m_shared_info->m_component_item_internal_view[m_super_component_item_local_id.localId()];
245245
}
246246

247-
void _setSuperAndGlobalItem(ComponentItemInternal* cii, ItemLocalId ii)
247+
void _setSuperAndGlobalItem(ComponentItemInternalLocalId cii, ItemLocalId ii)
248248
{
249-
if (cii)
250-
m_super_component_item_local_id = cii->_internalLocalId();
249+
m_super_component_item_local_id = cii;
251250
m_global_item_local_id = ii.localId();
252251
}
253252

@@ -277,10 +276,9 @@ class ARCANE_CORE_EXPORT ComponentItemInternal
277276
}
278277

279278
//! Positionne le premier sous-composant.
280-
void _setFirstSubItem(ComponentItemInternal* first_sub_item)
279+
void _setFirstSubItem(ComponentItemInternalLocalId first_sub_item)
281280
{
282-
if (first_sub_item)
283-
m_first_sub_component_item_local_id = first_sub_item->_internalLocalId();
281+
m_first_sub_component_item_local_id = first_sub_item;
284282
}
285283

286284
void _setComponent(Int32 component_id)

arcane/src/arcane/materials/AllEnvData.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,10 @@ _computeInfosForEnvCells()
199199
ItemGroup all_cells = cell_family->allItems();
200200
ConstArrayView<MeshEnvironment*> true_environments(m_material_mng->trueEnvironments());
201201

202+
ComponentItemInternalRange all_env_items_internal_range = m_item_internal_data.allEnvItemsInternalRange();
202203
ArrayView<ComponentItemInternal> all_env_items_internal = m_item_internal_data.allEnvItemsInternal();
203204
ArrayView<ComponentItemInternal> env_items_internal = m_item_internal_data.envItemsInternal();
205+
ComponentItemInternalRange env_items_internal_range = m_item_internal_data.envItemsInternalRange();
204206
ConstArrayView<Int16> cells_nb_env = m_component_connectivity_list->cellsNbEnvironment();
205207

206208
// Calcule pour chaque maille sa position dans le tableau des milieux
@@ -245,7 +247,7 @@ _computeInfosForEnvCells()
245247
Int32 nb_mat = m_component_connectivity_list->cellNbMaterial(CellLocalId(lid), env_id);
246248
ComponentItemInternal& ref_ii = env_items_internal[pos];
247249
env_items_internal_pointer[z] = &env_items_internal[pos];
248-
ref_ii._setSuperAndGlobalItem(&all_env_items_internal[lid], ItemLocalId(lid));
250+
ref_ii._setSuperAndGlobalItem(all_env_items_internal_range[lid], ItemLocalId(lid));
249251
ref_ii._setNbSubItem(nb_mat);
250252
ref_ii._setVariableIndex(mvi);
251253
ref_ii._setComponent(env_id);
@@ -263,11 +265,11 @@ _computeInfosForEnvCells()
263265
Int32 lid = icell.itemLocalId();
264266
Int32 n = cells_nb_env[lid];
265267
ComponentItemInternal& ref_ii = all_env_items_internal[lid];
266-
ref_ii._setSuperAndGlobalItem(nullptr,c);
268+
ref_ii._setSuperAndGlobalItem({},c);
267269
ref_ii._setVariableIndex(MatVarIndex(0,lid));
268270
ref_ii._setNbSubItem(n);
269271
if (n!=0)
270-
ref_ii._setFirstSubItem(&env_items_internal[env_cell_indexes[lid]]);
272+
ref_ii._setFirstSubItem(env_items_internal_range[env_cell_indexes[lid]]);
271273
}
272274
}
273275
}

arcane/src/arcane/materials/MeshEnvironment.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,13 @@ computeMaterialIndexes(ComponentItemInternalData* item_internal_data)
194194
IItemFamily* cell_family = cells().itemFamily();
195195
Integer max_local_id = cell_family->maxLocalId();
196196
ArrayView<ComponentItemInternal> mat_items_internal = item_internal_data->matItemsInternal(id());
197+
ComponentItemInternalRange mat_items_internal_range = item_internal_data->matItemsInternalRange(id());
197198

198199
Int32UniqueArray cells_index(max_local_id);
199200
Int32UniqueArray cells_pos(max_local_id);
200201
//TODO: regarder comment supprimer ce tableau cells_env qui n'est normalement pas utile
201202
// car on doit pouvoir directement utiliser les m_items_internal
202-
UniqueArray<ComponentItemInternal*> cells_env(max_local_id);
203+
UniqueArray<ComponentItemInternalLocalId> cells_env(max_local_id);
203204

204205
{
205206
Integer cell_index = 0;
@@ -214,9 +215,9 @@ computeMaterialIndexes(ComponentItemInternalData* item_internal_data)
214215
cells_pos[lid] = cell_index;
215216
//info(4) << "XZ=" << z << " LID=" << lid << " POS=" << cell_index;
216217
if (nb_mat!=0){
217-
env_item->_setFirstSubItem(&mat_items_internal[cell_index]);
218+
env_item->_setFirstSubItem(mat_items_internal_range[cell_index]);
218219
}
219-
cells_env[lid] = env_item;
220+
cells_env[lid] = env_item->_internalLocalId();
220221
cell_index += nb_mat;
221222
}
222223
}

arcane/src/arcane/materials/internal/ComponentItemInternalData.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,12 @@ class ComponentItemInternalData
160160
return m_env_items_internal_range;
161161
}
162162

163+
//! Liste des mailles matériaux pour le \a env_index ème milieu
164+
ComponentItemInternalRange matItemsInternalRange(Int32 env_index)
165+
{
166+
return m_mat_items_internal_range[env_index];
167+
}
168+
163169
//! Redimensionne les structures allouant les 'ComponentItemInternal'
164170
void resizeComponentItemInternals(Int32 max_local_id, Int32 total_env_cell);
165171

0 commit comments

Comments
 (0)