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"
45 m_material_mng(exchange_mng->m_material_mng), m_family(
family),
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();
104 mv->serialize(sbuf,args.
localIds());
106 functor::apply(m_material_mng,&MeshMaterialMng::visitVariables,serialize_variables_func);
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; }
121 MeshMaterialMng* m_material_mng;
134 : m_exchange_mng(exchange_mng){}
153MeshMaterialExchangeMng::
154MeshMaterialExchangeMng(MeshMaterialMng* material_mng)
156, m_material_mng(material_mng)
157, m_serialize_cells_factory(nullptr)
158, m_is_in_mesh_material_exchange(false)
165MeshMaterialExchangeMng::
166~MeshMaterialExchangeMng()
168 if (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);
207IMeshMaterialMng* MeshMaterialExchangeMng::
210 return m_material_mng;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
virtual void removeSerializeStep(IItemFamilySerializeStepFactory *factory)=0
Supprime une fabrique pour une étape de la sérialisation.
virtual void addSerializeStep(IItemFamilySerializeStepFactory *factory)=0
Ajoute une fabrique pour une étape de la sérialisation.
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 IItemFamilyPolicyMng * policyMng()=0
Interface des comportements/politiques associées à cette famille.
virtual ITraceMng * traceMng() const =0
Gestionnaire de trace associé
virtual IMesh * mesh() const =0
Maillage associé
virtual IItemFamily * cellFamily()=0
Retourne la famille des mailles.
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é
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.
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.