Skip to content

Commit 0660716

Browse files
Merge pull request #1187 from arcaneframework/dev/gg-use-componentiteminternal-localid-in-more-places
Replace some usage of 'ComponentItemInternal*' with 'ComponentItemInternalLocalId'
2 parents 1b70d5d + aef208f commit 0660716

File tree

5 files changed

+24
-20
lines changed

5 files changed

+24
-20
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: 7 additions & 4 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,13 +247,14 @@ _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);
253+
ref_ii._setComponent(env_id);
251254
}
252255
}
253256
for( MeshEnvironment* env : true_environments ){
254-
env->computeMaterialIndexes(*m_component_connectivity_list, &m_item_internal_data);
257+
env->computeMaterialIndexes(&m_item_internal_data);
255258
}
256259
}
257260

@@ -262,11 +265,11 @@ _computeInfosForEnvCells()
262265
Int32 lid = icell.itemLocalId();
263266
Int32 n = cells_nb_env[lid];
264267
ComponentItemInternal& ref_ii = all_env_items_internal[lid];
265-
ref_ii._setSuperAndGlobalItem(nullptr,c);
268+
ref_ii._setSuperAndGlobalItem({},c);
266269
ref_ii._setVariableIndex(MatVarIndex(0,lid));
267270
ref_ii._setNbSubItem(n);
268271
if (n!=0)
269-
ref_ii._setFirstSubItem(&env_items_internal[env_cell_indexes[lid]]);
272+
ref_ii._setFirstSubItem(env_items_internal_range[env_cell_indexes[lid]]);
270273
}
271274
}
272275
}

arcane/src/arcane/materials/MeshEnvironment.cc

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -187,40 +187,37 @@ computeNbMatPerCell()
187187
* computeNbMatPerCell() et computeItemListForMaterials() ont été appelées
188188
*/
189189
void MeshEnvironment::
190-
computeMaterialIndexes(const ConstituentConnectivityList& connectivity_list, ComponentItemInternalData* item_internal_data)
190+
computeMaterialIndexes(ComponentItemInternalData* item_internal_data)
191191
{
192192
info(4) << "Compute (V2) indexes for environment name=" << name();
193193

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-
//Int32ArrayView nb_mat_per_cell = m_nb_mat_per_cell.asArray();
203+
UniqueArray<ComponentItemInternalLocalId> cells_env(max_local_id);
204204

205205
{
206206
Integer cell_index = 0;
207-
const Int16 env_id = this->componentId();
208207
Int32ConstArrayView local_ids = variableIndexer()->localIds();
209208
ConstArrayView<ComponentItemInternal*> items_internal = itemsInternalView();
210209

211210
for( Integer z=0, nb=local_ids.size(); z<nb; ++z ){
212211
Int32 lid = local_ids[z];
213-
Int32 nb_mat = connectivity_list.cellNbMaterial(CellLocalId(lid), env_id);
214212
ComponentItemInternal* env_item = items_internal[z];
213+
Int32 nb_mat = env_item->nbSubItem();
215214
cells_index[lid] = cell_index;
216215
cells_pos[lid] = cell_index;
217216
//info(4) << "XZ=" << z << " LID=" << lid << " POS=" << cell_index;
218-
env_item->_setNbSubItem(nb_mat);
219-
env_item->_setComponent(env_id);
220217
if (nb_mat!=0){
221-
env_item->_setFirstSubItem(&mat_items_internal[cell_index]);
222-
cells_env[lid] = env_item;
218+
env_item->_setFirstSubItem(mat_items_internal_range[cell_index]);
223219
}
220+
cells_env[lid] = env_item->_internalLocalId();
224221
cell_index += nb_mat;
225222
}
226223
}

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

arcane/src/arcane/materials/internal/MeshEnvironment.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class MeshEnvironment
158158
void addToTotalNbCellMat(Int32 v) { m_total_nb_cell_mat += v; }
159159

160160
void resizeItemsInternal(Integer nb_item);
161-
void computeMaterialIndexes(const ConstituentConnectivityList& connectivity_list, ComponentItemInternalData* item_internal_data);
161+
void computeMaterialIndexes(ComponentItemInternalData* item_internal_data);
162162
void notifyLocalIdsChanged(Int32ConstArrayView old_to_new_ids);
163163
MeshComponentData* componentData() { return &m_data; }
164164

0 commit comments

Comments
 (0)