diff --git a/arcane/src/arcane/accelerator/RunCommandMaterialEnumerate.h b/arcane/src/arcane/accelerator/RunCommandMaterialEnumerate.h index 90d6148e0..402001491 100644 --- a/arcane/src/arcane/accelerator/RunCommandMaterialEnumerate.h +++ b/arcane/src/arcane/accelerator/RunCommandMaterialEnumerate.h @@ -61,7 +61,7 @@ class MatCommandContainerBase void _init() { m_nb_item = m_items.nbItem(); - m_matvar_indexes = m_items.matvarIndexes(); + m_matvar_indexes = m_items._matvarIndexes(); m_global_cells_local_id = m_items._internalLocalIds(); } }; diff --git a/arcane/src/arcane/core/materials/ComponentItemVector.cc b/arcane/src/arcane/core/materials/ComponentItemVector.cc index fe2692579..fb0421561 100644 --- a/arcane/src/arcane/core/materials/ComponentItemVector.cc +++ b/arcane/src/arcane/core/materials/ComponentItemVector.cc @@ -68,7 +68,7 @@ Impl(IMeshComponent* component,ConstArrayView items_inte { m_matvar_indexes.copy(matvar_indexes); m_items_local_id.copy(items_local_id); - m_part_data->setFromMatVarIndexes(matvar_indexes); + m_part_data->_setFromMatVarIndexes(matvar_indexes); } /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/core/materials/ComponentItemVector.h b/arcane/src/arcane/core/materials/ComponentItemVector.h index a957d440b..bb5ca2ade 100644 --- a/arcane/src/arcane/core/materials/ComponentItemVector.h +++ b/arcane/src/arcane/core/materials/ComponentItemVector.h @@ -54,6 +54,9 @@ namespace Arcane::Materials */ class ARCANE_CORE_EXPORT ComponentItemVector { + friend class EnvCellVector; + friend class MatCellVector; + /*! * \brief Implémentation de ComponentItemVector. */ @@ -127,13 +130,21 @@ class ARCANE_CORE_EXPORT ComponentItemVector //! Interne à Arcane //@{ + ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane") ConstArrayView matvarIndexes() const { return m_p->m_matvar_indexes; } + + ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane") ConstArrayView itemsInternalView() const { return m_p->m_items_internal.constView(); } //@} + private: + + ConstArrayView _matvarIndexes() const { return m_p->m_matvar_indexes; } + ConstArrayView _itemsInternalView() const { return m_p->m_items_internal.constView(); } + protected: void _setItemsInternal(ConstArrayView globals, diff --git a/arcane/src/arcane/core/materials/ComponentItemVectorView.h b/arcane/src/arcane/core/materials/ComponentItemVectorView.h index 6629e375c..72f8f282c 100644 --- a/arcane/src/arcane/core/materials/ComponentItemVectorView.h +++ b/arcane/src/arcane/core/materials/ComponentItemVectorView.h @@ -28,6 +28,11 @@ namespace ArcaneTest { class MeshMaterialTesterModule; +class MaterialHeatTestModule; +} +namespace Arcane::Accelerator::impl +{ +class MatCommandContainerBase; } namespace Arcane::Materials @@ -45,7 +50,9 @@ class ARCANE_CORE_EXPORT ComponentItemVectorView friend class ComponentItemVector; friend class MatItemVectorView; friend class EnvItemVectorView; + friend Arcane::Accelerator::impl::MatCommandContainerBase; friend ArcaneTest::MeshMaterialTesterModule; + friend ArcaneTest::MaterialHeatTestModule; template friend class LambdaMatItemRangeFunctorT; @@ -87,18 +94,27 @@ class ARCANE_CORE_EXPORT ComponentItemVectorView //! Interne à Arcane //@{ + ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane") ConstArrayView itemsInternalView() const { return m_items_internal_main_view; } // Tableau des MatVarIndex de cette vue. + ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane") ConstArrayView matvarIndexes() const { return m_matvar_indexes_view; } - //! Tableau des localId() des entités associées - ConstArrayView _internalLocalIds() const { return m_items_local_id_view; } //@} private: + ConstArrayView _itemsInternalView() const + { return m_items_internal_main_view; } + + // Tableau des MatVarIndex de cette vue. + ConstArrayView _matvarIndexes() const { return m_matvar_indexes_view; } + + //! Tableau des localId() des entités associées + ConstArrayView _internalLocalIds() const { return m_items_local_id_view; } + /*! * \internal * \brief Créé une sous-vue de cette vue. diff --git a/arcane/src/arcane/core/materials/EnvItemVector.h b/arcane/src/arcane/core/materials/EnvItemVector.h index de30cae1b..fc45c9c46 100644 --- a/arcane/src/arcane/core/materials/EnvItemVector.h +++ b/arcane/src/arcane/core/materials/EnvItemVector.h @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* EnvItemVector.h (C) 2000-2022 */ +/* EnvItemVector.h (C) 2000-2023 */ /* */ /* Vecteur sur les entités d'un milieu. */ /*---------------------------------------------------------------------------*/ @@ -53,7 +53,7 @@ class ARCANE_CORE_EXPORT EnvCellVector //! Vue sur ce vecteur EnvCellVectorView view() const { - return {_component(),matvarIndexes(),itemsInternalView(),_localIds() }; + return {_component(),_matvarIndexes(),_itemsInternalView(),_localIds() }; } //! Milieu associé diff --git a/arcane/src/arcane/core/materials/IMeshComponent.h b/arcane/src/arcane/core/materials/IMeshComponent.h index b3d521b4a..381384582 100644 --- a/arcane/src/arcane/core/materials/IMeshComponent.h +++ b/arcane/src/arcane/core/materials/IMeshComponent.h @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* IMeshComponent.h (C) 2000-2022 */ +/* IMeshComponent.h (C) 2000-2023 */ /* */ /* Interface d'un composant (matériau ou milieu) d'un maillage. */ /*---------------------------------------------------------------------------*/ @@ -33,7 +33,7 @@ class ARCANE_CORE_EXPORT IMeshComponent { public: - virtual ~IMeshComponent(){} + virtual ~IMeshComponent() = default; public: @@ -44,7 +44,7 @@ class ARCANE_CORE_EXPORT IMeshComponent virtual ITraceMng* traceMng() =0; //! Nom du composant - virtual const String& name() const =0; + virtual String name() const =0; /*! * \brief Groupe des mailles de ce matériau. @@ -55,18 +55,6 @@ class ARCANE_CORE_EXPORT IMeshComponent */ virtual CellGroup cells() const =0; - /*! - * \internal - * Indexeur pour accéder aux variables partielles. - */ - virtual MeshMaterialVariableIndexer* variableIndexer() const =0; - - /*! - * \internal - * Vue sur les mailles du composant. - */ - virtual ConstArrayView itemsInternalView() const =0; - /*! * \brief Identifiant du composant. * @@ -126,6 +114,21 @@ class ARCANE_CORE_EXPORT IMeshComponent * Si isEnvironment()==false, retourne \a nullptr */ virtual IMeshEnvironment* asEnvironment() =0; + + public: + + /*! + * \internal + * Indexeur pour accéder aux variables partielles. + */ + virtual MeshMaterialVariableIndexer* variableIndexer() const =0; + + /*! + * \internal + * Vue sur les mailles du composant. + */ + ARCANE_DEPRECATED_REASON("Y2023: This method is internal to Arcane") + virtual ConstArrayView itemsInternalView() const =0; }; /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/core/materials/MatItemVector.h b/arcane/src/arcane/core/materials/MatItemVector.h index e8fe33bf1..a096dc635 100644 --- a/arcane/src/arcane/core/materials/MatItemVector.h +++ b/arcane/src/arcane/core/materials/MatItemVector.h @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* MatItemVector.h (C) 2000-2022 */ +/* MatItemVector.h (C) 2000-2023 */ /* */ /* Vecteur sur les entités d'un matériau. */ /*---------------------------------------------------------------------------*/ @@ -57,7 +57,7 @@ class ARCANE_CORE_EXPORT MatCellVector //! Vue sur ce vecteur MatCellVectorView view() const { - return {_component(),matvarIndexes(),itemsInternalView(),_localIds()}; + return {_component(),_matvarIndexes(),_itemsInternalView(),_localIds()}; } //! Matériau associé diff --git a/arcane/src/arcane/core/materials/MeshComponentPartData.cc b/arcane/src/arcane/core/materials/MeshComponentPartData.cc index 4ec359e4e..79257e7d6 100644 --- a/arcane/src/arcane/core/materials/MeshComponentPartData.cc +++ b/arcane/src/arcane/core/materials/MeshComponentPartData.cc @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* MeshComponentPartData.cc (C) 2000-2022 */ +/* MeshComponentPartData.cc (C) 2000-2023 */ /* */ /* Données d'une partie (pure ou partielle) d'un constituant. */ /*---------------------------------------------------------------------------*/ @@ -74,7 +74,7 @@ _notifyValueIndexesChanged() /*---------------------------------------------------------------------------*/ void MeshComponentPartData:: -setFromMatVarIndexes(ConstArrayView matvar_indexes) +_setFromMatVarIndexes(ConstArrayView matvar_indexes) { Int32Array& pure_indexes = m_value_indexes[(Int32)eMatPart::Pure]; Int32Array& impure_indexes = m_value_indexes[(Int32)eMatPart::Impure]; diff --git a/arcane/src/arcane/core/materials/MeshComponentPartData.h b/arcane/src/arcane/core/materials/MeshComponentPartData.h index 6f4efbcbd..cfd802182 100644 --- a/arcane/src/arcane/core/materials/MeshComponentPartData.h +++ b/arcane/src/arcane/core/materials/MeshComponentPartData.h @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* MeshComponentPartData.h (C) 2000-2022 */ +/* MeshComponentPartData.h (C) 2000-2023 */ /* */ /* Données séparées en parties pure et impures d'un constituant . */ /*---------------------------------------------------------------------------*/ @@ -36,29 +36,21 @@ namespace Arcane::Materials class ARCANE_CORE_EXPORT MeshComponentPartData : public TraceAccessor { + friend class MeshComponentData; + friend class ComponentItemVector; + public: - MeshComponentPartData(IMeshComponent* component); + explicit MeshComponentPartData(IMeshComponent* component); MeshComponentPartData(const MeshComponentPartData& rhs) = default; - virtual ~MeshComponentPartData(); - - public: + ~MeshComponentPartData() override; public: - void setComponentItemInternalView(ConstArrayView v) - { - m_items_internal = v; - } - - void setFromMatVarIndexes(ConstArrayView matvar_indexes); - Int32 impureVarIdx() const { return m_impure_var_idx; } IMeshComponent* component() const { return m_component; } - ConstArrayView itemsInternal() const { return m_items_internal; } - void checkValid() const; //! Vue sur la partie pure @@ -82,6 +74,15 @@ class ARCANE_CORE_EXPORT MeshComponentPartData return m_items_internal_indexes[(Int32)k]; } + private: + + void _setComponentItemInternalView(ConstArrayView v) + { + m_items_internal = v; + } + + void _setFromMatVarIndexes(ConstArrayView matvar_indexes); + //! Il faut appeler notifyValueIndexesChanged() après modification du tableau. Int32Array& _mutableValueIndexes(eMatPart k) { diff --git a/arcane/src/arcane/materials/AllEnvData.cc b/arcane/src/arcane/materials/AllEnvData.cc index 677240ecd..6d917445e 100644 --- a/arcane/src/arcane/materials/AllEnvData.cc +++ b/arcane/src/arcane/materials/AllEnvData.cc @@ -154,7 +154,7 @@ forceRecompute(bool compute_all) // de la maille milieu correspondante (globale ou partielle suivant le cas) // Redimensionne les tableaux des infos - // ATTENTION: il ne doivent plus être redimensionnés par la suite sous peine + // ATTENTION : ils ne doivent plus être redimensionnés par la suite sous peine // de tout invalider. m_item_internal_data.resizeNbAllEnvCell(max_local_id); m_item_internal_data.resizeNbEnvCell(total_env_cell); @@ -313,9 +313,9 @@ forceRecompute(bool compute_all) } for( MeshEnvironment* env : true_environments ){ - env->componentData()->rebuildPartData(); + env->componentData()->_rebuildPartData(); for( MeshMaterial* mat : env->trueMaterials() ) - mat->componentData()->rebuildPartData(); + mat->componentData()->_rebuildPartData(); } m_material_mng->checkValid(); @@ -348,9 +348,9 @@ forceRecompute(bool compute_all) // Met à jour le AllCellToAllEnvCell s'il a été initialisé si la fonctionnalité est activé if (m_material_mng->isCellToAllEnvCellForRunCommand()) { - auto* allCell2AllEnvCell(m_material_mng->getAllCellToAllEnvCell()); - if (allCell2AllEnvCell) - allCell2AllEnvCell->bruteForceUpdate(m_material_mng->mesh()->allCells().internal()->itemsLocalId()); + auto* all_cell_to_all_env_cell(m_material_mng->getAllCellToAllEnvCell()); + if (all_cell_to_all_env_cell) + all_cell_to_all_env_cell->bruteForceUpdate(m_material_mng->mesh()->allCells().internal()->itemsLocalId()); else m_material_mng->createAllCellToAllEnvCell(platform::getDefaultDataAllocator()); } @@ -528,7 +528,7 @@ _copyBetweenPartialsAndGlobals(Int32ConstArrayView pure_local_ids, * Retourne le nombre d'erreurs. */ Integer AllEnvData:: -_checkMaterialPrescence(IMeshMaterial* mat,Int32ConstArrayView ids,eOperation operation) +_checkMaterialPresence(IMeshMaterial* mat,Int32ConstArrayView ids,eOperation operation) { // TODO: faut-il vérifier la validité des \a ids //(ils sont compris entre 0 et max_loca_id-1) ? @@ -599,7 +599,7 @@ void AllEnvData:: _filterValidIds(IMeshMaterial* mat,Int32ConstArrayView ids,bool do_add,Int32Array& valid_ids) { // TODO: faut-il vérifier la validité des \a ids - //(ils sont compris entre 0 et max_loca_id-1) ? + //(ils sont compris entre 0 et max_local_id-1) ? MeshMaterialVariableIndexer* indexer = mat->variableIndexer(); IItemFamily* item_family = mat->cells().itemFamily(); @@ -666,11 +666,11 @@ updateMaterialDirect(IMeshMaterial* mat,Int32ConstArrayView ids, eOperation operation) { UniqueArray filtered_ids; - bool filter_invalid = true; + const bool filter_invalid = true; // Vérifie dans le cas des mailles à ajouter si elles ne sont pas déjà // dans le matériau et dans le cas des mailles à supprimer si elles y sont. if (arcaneIsCheck()){ - Integer nb_error = _checkMaterialPrescence(mat,ids,operation); + Integer nb_error = _checkMaterialPresence(mat, ids, operation); if (nb_error!=0){ if (filter_invalid){ _filterValidIds(mat,ids,true,filtered_ids); @@ -695,7 +695,7 @@ _updateMaterialDirect(IMeshMaterial* mat,Int32ConstArrayView ids,eOperation oper _throwBadOperation(operation); bool is_add = (operation==eOperation::Add); - MeshMaterial* true_mat = dynamic_cast(mat); + auto* true_mat = dynamic_cast(mat); if (!true_mat) throw NotImplementedException(A_FUNCINFO,"material is not an instance of MeshMaterial"); @@ -711,7 +711,7 @@ _updateMaterialDirect(IMeshMaterial* mat,Int32ConstArrayView ids,eOperation oper // S'il est possible d'avoir plusieurs matériaux par milieu, il faut gérer // pour chaque maille si le milieu évolue suite à l'ajout/suppression de matériau. - // les deux cas sont: + // Les deux cas sont : // - en cas d'ajout, le milieu évolue pour une maille s'il n'y avait pas // de matériau avant. Dans ce cas le milieu est ajouté à la maille. // - en cas de suppression, le milieu évolue dans la maille s'il y avait diff --git a/arcane/src/arcane/materials/MeshComponentData.cc b/arcane/src/arcane/materials/MeshComponentData.cc index f6c730fd0..f05f14728 100644 --- a/arcane/src/arcane/materials/MeshComponentData.cc +++ b/arcane/src/arcane/materials/MeshComponentData.cc @@ -11,13 +11,14 @@ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ +#include "arcane/materials/internal/MeshComponentData.h" + #include "arcane/utils/FatalErrorException.h" -#include "arcane/IItemFamily.h" -#include "arcane/ItemPrinter.h" +#include "arcane/core/IItemFamily.h" +#include "arcane/core/ItemPrinter.h" #include "arcane/materials/MeshComponentPartData.h" -#include "arcane/materials/MeshComponentData.h" #include "arcane/materials/MeshMaterialVariableIndexer.h" #include "arcane/materials/IMeshMaterialMng.h" @@ -65,18 +66,18 @@ MeshComponentData:: /*---------------------------------------------------------------------------*/ void MeshComponentData:: -resizeItemsInternal(Integer nb_item) +_resizeItemsInternal(Integer nb_item) { m_items_internal.resize(nb_item); if (m_part_data) - m_part_data->setComponentItemInternalView(m_items_internal); + m_part_data->_setComponentItemInternalView(m_items_internal); } /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ void MeshComponentData:: -setVariableIndexer(MeshMaterialVariableIndexer* indexer) +_setVariableIndexer(MeshMaterialVariableIndexer* indexer) { m_variable_indexer = indexer; m_is_indexer_owner = false; @@ -86,7 +87,7 @@ setVariableIndexer(MeshMaterialVariableIndexer* indexer) /*---------------------------------------------------------------------------*/ void MeshComponentData:: -setItems(const ItemGroup& group) +_setItems(const ItemGroup& group) { m_items = group; if (m_variable_indexer) @@ -97,10 +98,10 @@ setItems(const ItemGroup& group) /*---------------------------------------------------------------------------*/ void MeshComponentData:: -buildPartData() +_buildPartData() { m_part_data = new MeshComponentPartData(m_component); - m_part_data->setComponentItemInternalView(m_items_internal); + m_part_data->_setComponentItemInternalView(m_items_internal); } /*---------------------------------------------------------------------------*/ @@ -113,13 +114,13 @@ buildPartData() * m_variable_indexer car on se sert de ses local_ids. */ void MeshComponentData:: -changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids) +_changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids) { ItemInfoListView global_item_list = items().itemFamily()->itemInfoListView(); // TODO: regarder s'il est possible de supprimer le tableau temporaire // new_internals (c'est à peu près sur que c'est possible). - ConstArrayView current_internals(itemsInternalView()); + ConstArrayView current_internals(_itemsInternalView()); UniqueArray new_internals; Int32ConstArrayView local_ids = variableIndexer()->localIds(); @@ -144,8 +145,8 @@ changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids) // TODO: regarder supprimer cette copie aussi. { - resizeItemsInternal(new_internals.size()); - itemsInternalView().copy(new_internals); + _resizeItemsInternal(new_internals.size()); + _itemsInternalView().copy(new_internals); } } @@ -153,12 +154,12 @@ changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids) /*---------------------------------------------------------------------------*/ void MeshComponentData:: -rebuildPartData() +_rebuildPartData() { if (!m_part_data) - buildPartData(); - m_part_data->setComponentItemInternalView(m_items_internal); - m_part_data->setFromMatVarIndexes(m_variable_indexer->matvarIndexes()); + _buildPartData(); + m_part_data->_setComponentItemInternalView(m_items_internal); + m_part_data->_setFromMatVarIndexes(m_variable_indexer->matvarIndexes()); } /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/materials/MeshEnvironment.cc b/arcane/src/arcane/materials/MeshEnvironment.cc index 13e92f1f5..381e75006 100644 --- a/arcane/src/arcane/materials/MeshEnvironment.cc +++ b/arcane/src/arcane/materials/MeshEnvironment.cc @@ -133,7 +133,7 @@ build() cells.internal()->attachObserver(this,m_group_observer); } - m_data.setItems(cells); + m_data._setItems(cells); } /*---------------------------------------------------------------------------*/ @@ -152,7 +152,7 @@ addMaterial(MeshMaterial* mm) void MeshEnvironment:: setVariableIndexer(MeshMaterialVariableIndexer* idx) { - m_data.setVariableIndexer(idx); + m_data._setVariableIndexer(idx); idx->setCells(m_data.items()); idx->setIsEnvironment(true); @@ -162,10 +162,10 @@ setVariableIndexer(MeshMaterialVariableIndexer* idx) // TODO: pour garantir la cohérence, il faudrait supprimer // dans m_data le groupe d'entité. if (m_true_materials.size()==1) - m_true_materials[0]->componentData()->setItems(m_data.items()); - m_data.buildPartData(); + m_true_materials[0]->componentData()->_setItems(m_data.items()); + m_data._buildPartData(); for( MeshMaterial* mat : m_true_materials ) - mat->componentData()->buildPartData(); + mat->componentData()->_buildPartData(); } /*---------------------------------------------------------------------------*/ @@ -507,7 +507,7 @@ notifyLocalIdsChanged(Int32ConstArrayView old_to_new_ids) // entre les nouveaux et les anciens localId if (nb_mat==1){ - m_data.changeLocalIdsForInternalList(old_to_new_ids); + m_data._changeLocalIdsForInternalList(old_to_new_ids); MeshMaterial* true_mat = m_true_materials[0]; _changeIds(true_mat->componentData(),old_to_new_ids); } @@ -527,9 +527,9 @@ notifyLocalIdsChanged(Int32ConstArrayView old_to_new_ids) { for( Integer i=0; icomponentData()->rebuildPartData(); + true_mat->componentData()->_rebuildPartData(); } - componentData()->rebuildPartData(); + componentData()->_rebuildPartData(); } checkValid(); @@ -544,7 +544,7 @@ _changeIds(MeshComponentData* cdata,Int32ConstArrayView old_to_new_ids) info(4) << "ChangeIds() (V4) for name=" << cdata->name(); info(4) << "Use new version for ChangeIds()"; - cdata->changeLocalIdsForInternalList(old_to_new_ids); + cdata->_changeLocalIdsForInternalList(old_to_new_ids); cdata->variableIndexer()->changeLocalIds(old_to_new_ids); } @@ -599,7 +599,7 @@ view() const void MeshEnvironment:: resizeItemsInternal(Integer nb_item) { - m_data.resizeItemsInternal(nb_item); + m_data._resizeItemsInternal(nb_item); } /*---------------------------------------------------------------------------*/ @@ -608,7 +608,7 @@ resizeItemsInternal(Integer nb_item) ComponentPurePartItemVectorView MeshEnvironment:: pureItems() const { - return m_data.partData()->pureView(); + return m_data._partData()->pureView(); } /*---------------------------------------------------------------------------*/ @@ -617,7 +617,7 @@ pureItems() const ComponentImpurePartItemVectorView MeshEnvironment:: impureItems() const { - return m_data.partData()->impureView(); + return m_data._partData()->impureView(); } /*---------------------------------------------------------------------------*/ @@ -626,7 +626,7 @@ impureItems() const ComponentPartItemVectorView MeshEnvironment:: partItems(eMatPart part) const { - return m_data.partData()->partView(part); + return m_data._partData()->partView(part); } /*---------------------------------------------------------------------------*/ @@ -635,7 +635,7 @@ partItems(eMatPart part) const EnvPurePartItemVectorView MeshEnvironment:: pureEnvItems() const { - return { m_non_const_this, m_data.partData()->pureView() }; + return { m_non_const_this, m_data._partData()->pureView() }; } /*---------------------------------------------------------------------------*/ @@ -644,7 +644,7 @@ pureEnvItems() const EnvImpurePartItemVectorView MeshEnvironment:: impureEnvItems() const { - return { m_non_const_this, m_data.partData()->impureView() }; + return { m_non_const_this, m_data._partData()->impureView() }; } /*---------------------------------------------------------------------------*/ @@ -653,7 +653,7 @@ impureEnvItems() const EnvPartItemVectorView MeshEnvironment:: partEnvItems(eMatPart part) const { - return { m_non_const_this, m_data.partData()->partView(part) }; + return { m_non_const_this, m_data._partData()->partView(part) }; } /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/materials/MeshMaterial.cc b/arcane/src/arcane/materials/MeshMaterial.cc index 1f46a1040..b6f15b104 100644 --- a/arcane/src/arcane/materials/MeshMaterial.cc +++ b/arcane/src/arcane/materials/MeshMaterial.cc @@ -74,7 +74,7 @@ build() IItemFamily* cell_family = mesh->cellFamily(); String group_name = m_material_mng->name() + "_" + name(); CellGroup items = cell_family->findGroup(group_name, true); - m_data.setItems(items); + m_data._setItems(items); } /*---------------------------------------------------------------------------*/ @@ -138,7 +138,7 @@ view() const void MeshMaterial:: resizeItemsInternal(Integer nb_item) { - m_data.resizeItemsInternal(nb_item); + m_data._resizeItemsInternal(nb_item); } /*---------------------------------------------------------------------------*/ @@ -165,7 +165,7 @@ cells() const ComponentPurePartItemVectorView MeshMaterial:: pureItems() const { - return m_data.partData()->pureView(); + return m_data._partData()->pureView(); } /*---------------------------------------------------------------------------*/ @@ -174,7 +174,7 @@ pureItems() const ComponentImpurePartItemVectorView MeshMaterial:: impureItems() const { - return m_data.partData()->impureView(); + return m_data._partData()->impureView(); } /*---------------------------------------------------------------------------*/ @@ -183,7 +183,7 @@ impureItems() const ComponentPartItemVectorView MeshMaterial:: partItems(eMatPart part) const { - return m_data.partData()->partView(part); + return m_data._partData()->partView(part); } /*---------------------------------------------------------------------------*/ @@ -192,7 +192,7 @@ partItems(eMatPart part) const MatPurePartItemVectorView MeshMaterial:: pureMatItems() const { - return { m_non_const_this, m_data.partData()->pureView() }; + return { m_non_const_this, m_data._partData()->pureView() }; } /*---------------------------------------------------------------------------*/ @@ -201,7 +201,7 @@ pureMatItems() const MatImpurePartItemVectorView MeshMaterial:: impureMatItems() const { - return { m_non_const_this, m_data.partData()->impureView() }; + return { m_non_const_this, m_data._partData()->impureView() }; } /*---------------------------------------------------------------------------*/ @@ -210,7 +210,7 @@ impureMatItems() const MatPartItemVectorView MeshMaterial:: partMatItems(eMatPart part) const { - return { m_non_const_this, m_data.partData()->partView(part) }; + return { m_non_const_this, m_data._partData()->partView(part) }; } /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/materials/internal/AllEnvData.h b/arcane/src/arcane/materials/internal/AllEnvData.h index 9b8c16bc4..d539b5eae 100644 --- a/arcane/src/arcane/materials/internal/AllEnvData.h +++ b/arcane/src/arcane/materials/internal/AllEnvData.h @@ -50,11 +50,10 @@ class MeshMaterialMng; class AllEnvData : public TraceAccessor { - public: - AllEnvData(MeshMaterialMng* mmg); - virtual ~AllEnvData(); + explicit AllEnvData(MeshMaterialMng* mmg); + ~AllEnvData() override; public: @@ -88,19 +87,9 @@ class AllEnvData MeshMaterialMng* m_material_mng = nullptr; - /*! - * \brief Infos sur les matériaux et les milieux. - * Ce tableau est modifié chaque fois que les mailles des matériaux et - * des milieux change. - * Les premiers éléments de ce tableau contiennent - * les infos pour les mailles de type AllEnvCell et peut - * être indexés directement avec le localId() de ces mailles. - */ - //@{ + //! Nombre de milieux par mailles VariableCellInt32 m_nb_env_per_cell; - //UniqueArray m_all_env_items_internal; - //UniqueArray m_env_items_internal; - //@} + //! Liste des ComponentItemInternal pour les matériaux de chaque milieu //UniqueArray< UniqueArray > m_mat_items_internal; @@ -112,7 +101,7 @@ class AllEnvData void _computeNbEnvAndNbMatPerCell(); void _switchComponentItemsForEnvironments(IMeshEnvironment* modified_env,eOperation add_or_remove); void _switchComponentItemsForMaterials(MeshMaterial* modified_mat,eOperation add_or_remove); - Integer _checkMaterialPrescence(IMeshMaterial* mat,Int32ConstArrayView ids, + Integer _checkMaterialPresence(IMeshMaterial* mat,Int32ConstArrayView ids, eOperation operation); void _filterValidIds(IMeshMaterial* mat,Int32ConstArrayView ids, bool do_add,Int32Array& valid_ids); diff --git a/arcane/src/arcane/materials/MeshComponentData.h b/arcane/src/arcane/materials/internal/MeshComponentData.h similarity index 76% rename from arcane/src/arcane/materials/MeshComponentData.h rename to arcane/src/arcane/materials/internal/MeshComponentData.h index e94b033ad..dec6ce234 100644 --- a/arcane/src/arcane/materials/MeshComponentData.h +++ b/arcane/src/arcane/materials/internal/MeshComponentData.h @@ -1,11 +1,11 @@ // -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*- //----------------------------------------------------------------------------- -// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) +// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com) // See the top-level COPYRIGHT file for details. // SPDX-License-Identifier: Apache-2.0 //----------------------------------------------------------------------------- /*---------------------------------------------------------------------------*/ -/* MeshComponentData.h (C) 2000-2017 */ +/* MeshComponentData.h (C) 2000-2023 */ /* */ /* Données d'un constituant (matériau ou milieu) d'un maillage. */ /*---------------------------------------------------------------------------*/ @@ -16,19 +16,16 @@ #include "arcane/utils/TraceAccessor.h" -#include "arcane/ItemGroup.h" +#include "arcane/core/ItemGroup.h" +#include "arcane/core/materials/MatItem.h" -#include "arcane/materials/MatItem.h" +#include "arcane/materials/MaterialsGlobal.h" /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ -ARCANE_BEGIN_NAMESPACE - -/*---------------------------------------------------------------------------*/ -/*---------------------------------------------------------------------------*/ - -MATERIALS_BEGIN_NAMESPACE +namespace Arcane::Materials +{ /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -52,11 +49,15 @@ class MeshComponentPartData; class MeshComponentData : public TraceAccessor { + friend class MeshEnvironment; + friend class MeshMaterial; + friend class AllEnvData; + public: MeshComponentData(IMeshComponent* component,const String& name,Int32 component_id, bool create_indexer); - virtual ~MeshComponentData(); + ~MeshComponentData() override; public: @@ -67,12 +68,14 @@ class MeshComponentData return m_variable_indexer; } - ConstArrayView itemsInternalView() const + private: + + ConstArrayView _itemsInternalView() const { return m_items_internal; } - ArrayView itemsInternalView() + ArrayView _itemsInternalView() { return m_items_internal; } @@ -91,15 +94,15 @@ class MeshComponentData return m_component_id; } - public: + private: - void resizeItemsInternal(Integer nb_item); - void setVariableIndexer(MeshMaterialVariableIndexer* indexer); - void setItems(const ItemGroup& group); - void changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids); - void rebuildPartData(); - void buildPartData(); - MeshComponentPartData* partData() const { return m_part_data; } + void _resizeItemsInternal(Integer nb_item); + void _setVariableIndexer(MeshMaterialVariableIndexer* indexer); + void _setItems(const ItemGroup& group); + void _changeLocalIdsForInternalList(Int32ConstArrayView old_to_new_ids); + void _rebuildPartData(); + void _buildPartData(); + MeshComponentPartData* _partData() const { return m_part_data; } private: @@ -128,19 +131,12 @@ class MeshComponentData UniqueArray m_items_internal; MeshComponentPartData* m_part_data; - - private: - }; /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ -/*---------------------------------------------------------------------------*/ -/*---------------------------------------------------------------------------*/ - -MATERIALS_END_NAMESPACE -ARCANE_END_NAMESPACE +} /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ diff --git a/arcane/src/arcane/materials/internal/MeshEnvironment.h b/arcane/src/arcane/materials/internal/MeshEnvironment.h index ba585fd8d..e6f0e29ca 100644 --- a/arcane/src/arcane/materials/internal/MeshEnvironment.h +++ b/arcane/src/arcane/materials/internal/MeshEnvironment.h @@ -22,7 +22,7 @@ #include "arcane/materials/IMeshEnvironment.h" #include "arcane/materials/MatItemInternal.h" -#include "arcane/materials/MeshComponentData.h" +#include "arcane/materials/internal/MeshComponentData.h" /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -53,13 +53,13 @@ class MeshEnvironment public: MeshEnvironment(IMeshMaterialMng* mm,const String& name,Int32 env_id); - virtual ~MeshEnvironment(); + ~MeshEnvironment() override; public: IMeshMaterialMng* materialMng() override { return m_material_mng; } ITraceMng* traceMng() override { return TraceAccessor::traceMng(); } - const String& name() const override { return m_data.name(); } + String name() const override { return m_data.name(); } CellGroup cells() const override { return m_data.items(); } ConstArrayView materials() override { @@ -75,7 +75,7 @@ class MeshEnvironment } ConstArrayView itemsInternalView() const override { - return m_data.itemsInternalView(); + return m_data._itemsInternalView(); } Int32 id() const override { @@ -114,7 +114,7 @@ class MeshEnvironment ArrayView itemsInternalView() { - return m_data.itemsInternalView(); + return m_data._itemsInternalView(); } public: diff --git a/arcane/src/arcane/materials/internal/MeshMaterial.h b/arcane/src/arcane/materials/internal/MeshMaterial.h index 63d1d2c55..3c8cf8726 100644 --- a/arcane/src/arcane/materials/internal/MeshMaterial.h +++ b/arcane/src/arcane/materials/internal/MeshMaterial.h @@ -21,7 +21,7 @@ #include "arcane/materials/IMeshMaterial.h" #include "arcane/materials/MeshMaterialVariableIndexer.h" #include "arcane/materials/MatItem.h" -#include "arcane/materials/MeshComponentData.h" +#include "arcane/materials/internal/MeshComponentData.h" /*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/ @@ -54,14 +54,14 @@ class MeshMaterial MeshMaterial(MeshMaterialInfo* infos,MeshEnvironment* env, const String& name,Int32 mat_id); - virtual ~MeshMaterial(); + ~MeshMaterial() override; public: IMeshMaterialMng* materialMng() override { return m_material_mng; } ITraceMng* traceMng() override { return TraceAccessor::traceMng(); } MeshMaterialInfo* infos() const override { return m_infos; } - const String& name() const override { return m_data.name(); } + String name() const override { return m_data.name(); } IMeshEnvironment* environment() const override; CellGroup cells() const override; @@ -72,7 +72,7 @@ class MeshMaterial ConstArrayView itemsInternalView() const override { - return m_data.itemsInternalView(); + return m_data._itemsInternalView(); } Int32 id() const override { return m_data.componentId(); } @@ -106,7 +106,7 @@ class MeshMaterial ArrayView itemsInternalView() { - return m_data.itemsInternalView(); + return m_data._itemsInternalView(); } public: diff --git a/arcane/src/arcane/materials/srcs.cmake b/arcane/src/arcane/materials/srcs.cmake index 2a3859cb1..b20560a36 100644 --- a/arcane/src/arcane/materials/srcs.cmake +++ b/arcane/src/arcane/materials/srcs.cmake @@ -20,7 +20,6 @@ set(ARCANE_SOURCES MatItemEnumerator.h MatVarIndex.h MeshComponentData.cc - MeshComponentData.h MeshComponentPartData.h MeshMaterialExchangeMng.cc MeshMaterialExchangeMng.h @@ -76,7 +75,6 @@ set(ARCANE_SOURCES EnvItemVector.h MatItemEnumerator.h MatVarIndex.h - MeshComponentData.h MeshComponentPartData.h MeshMaterialExchangeMng.h MeshMaterialModifierImpl.h @@ -126,4 +124,5 @@ set(ARCANE_SOURCES internal/MeshMaterial.h internal/MeshMaterialMng.h internal/MeshMaterialVariablePrivate.h + internal/MeshComponentData.h )