14#include "arcane/utils/FunctorUtils.h"
16#include "arcane/IItemFamilySerializeStep.h"
17#include "arcane/IMesh.h"
18#include "arcane/IItemFamily.h"
19#include "arcane/IItemFamilyPolicyMng.h"
20#include "arcane/ItemFamilySerializeArgs.h"
21#include "arcane/ISerializer.h"
23#include "arcane/materials/MeshMaterialExchangeMng.h"
24#include "arcane/materials/MeshMaterialIndirectModifier.h"
25#include "arcane/materials/IMeshMaterialVariable.h"
27#include "arcane/materials/internal/MeshMaterialMng.h"
46 m_indirect_modifier(
nullptr)
51 info() <<
"DESTROY SERIALIZE_CELLS_MATERIAL";
57 if (m_exchange_mng->m_is_in_mesh_material_exchange)
59 m_exchange_mng->m_is_in_mesh_material_exchange =
false;
79 info() <<
"NOTIFY_ACTION BEGIN_RECEIVE";
81 delete m_indirect_modifier;
82 m_indirect_modifier =
nullptr;
85 info() <<
"NOTIFY_ACTION END_RECEIVE";
97 info() <<
"SERIALIZE_CELLS_MATERIAL rank=" << args.
rank()
103 info() <<
"SERIALIZE_MESH_MATERIAL_VARIABLE name=" <<
mv->name();
113 delete m_indirect_modifier;
114 m_indirect_modifier =
nullptr;
115 m_exchange_mng->m_is_in_mesh_material_exchange =
false;
117 ePhase phase()
const override {
return IItemFamilySerializeStep::PH_Variable; }
153MeshMaterialExchangeMng::
157, m_serialize_cells_factory(
nullptr)
158, m_is_in_mesh_material_exchange(
false)
165MeshMaterialExchangeMng::
166~MeshMaterialExchangeMng()
168 if (m_serialize_cells_factory){
170 cell_family->policyMng()->removeSerializeStep(m_serialize_cells_factory);
171 delete m_serialize_cells_factory;
181void MeshMaterialExchangeMng::
194void MeshMaterialExchangeMng::
197 if (m_serialize_cells_factory)
199 m_serialize_cells_factory =
new ExchangeCellFactory(
this);
200 IItemFamily* cell_family = m_material_mng->
mesh()->cellFamily();
201 cell_family->policyMng()->addSerializeStep(m_serialize_cells_factory);
207IMeshMaterialMng* MeshMaterialExchangeMng::
210 return m_material_mng;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Fabrique pour créer une étape de la sérialisation des familles d'entités.
Interface d'une étape de la sérialisation des familles d'entités.
ePhase
Phase de la sérialisation.
@ AC_BeginReceive
Début de la réception des données.
@ AC_EndReceive
Fin de la réception des données.
Interface d'une famille d'entités.
virtual ITraceMng * traceMng() const =0
Gestionnaire de trace associé
virtual IMesh * mesh() const =0
Maillage associé
Arguments des callbacks de sérialisation des familles d'entités.
Int32 rank() const
Rang de la source ou de la destination.
Int32ConstArrayView localIds() const
Indices locaux des entités. En sérialisation, il s'agit des indices locaux des entités envoyées au ra...
ISerializer * serializer() const
Sérialiseur associé
Lecteur des fichiers de maillage via la bibliothèque LIMA.
virtual bool isKeepValuesAfterChange() const =0
Indique si les valeurs des variables sont conservées entre les modifications.
Interface d'une variable matériau d'un maillage.
IItemFamilySerializeStep * createStep(IItemFamily *family) override
Créé une étape pour la famille family.
void notifyAction(const NotifyActionArgs &args) override
Notifie l'instance qu'on entre dans une certaine phase de l'échange.
ePhase phase() const override
Phase de la sérialisation où cette instance intervient.
IItemFamily * family() const override
Famille associée.
void serialize(const ItemFamilySerializeArgs &args) override
Sérialise dans/depuis buf.
void finalize() override
Effectue les traitements de fin d'échange.
void initialize() override
Initialise l'instance avant le début des échanges.
Objet permettant de modifier indirectement les matériaux ou les milieux.
void beginUpdate()
Prépare une modification.
void endUpdate()
Met à jour les structures après une modification.
Implémentation d'un gestion des matériaux.
void visitVariables(IFunctorWithArgumentT< IMeshMaterialVariable * > *functor) override
Applique le fonctor functor sur l'ensemble des variables matériaux.
Gestion de l'échange des matériaux entre sous-domaines.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Interface d'un sérialiseur.
Classe d'accès aux traces.
TraceMessage info() const
Flot pour un message d'information.
Active toujours les traces dans les parties Arcane concernant les matériaux.