Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
TiedInterfaceExchanger.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* TiedInterfaceExchanger.h (C) 2000-2016 */
9/* */
10/* Echangeur entre sous-domaines des interfaces liées. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_TIEDINTERFACEEXCHANGER_H
13#define ARCANE_MESH_TIEDINTERFACEEXCHANGER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
19#include "arcane/mesh/MeshGlobal.h"
20
21#include "arcane/ItemInternalVectorView.h"
22#include "arcane/IItemFamilySerializeStep.h"
23
24#include <map>
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29ARCANE_BEGIN_NAMESPACE
30
31/*---------------------------------------------------------------------------*/
32/*---------------------------------------------------------------------------*/
33
34class ISubDomain;
35class ItemFamilySerializeArgs;
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40ARCANE_MESH_BEGIN_NAMESPACE
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44
45class DynamicMesh;
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
66class TiedInterfaceExchanger
67: public TraceAccessor
69{
70 class OneSubDomainInfo;
71 class DeserializedInfo;
72
73 public:
74
75 TiedInterfaceExchanger(DynamicMesh* mesh);
76 ~TiedInterfaceExchanger();
77
78 public:
79
80 void initialize() override;
81 void notifyAction(const NotifyActionArgs&) override {}
82 void serialize(const ItemFamilySerializeArgs& args) override;
83 void finalize() override;
84 IItemFamily* family() const override;
85 ePhase phase() const override { return IItemFamilySerializeStep::PH_Item; }
86
87 private:
88
89 DynamicMesh* m_mesh;
90 ISubDomain* m_sub_domain;
91 DeserializedInfo* m_deserialized_info;
92 Int32 m_my_rank;
93 typedef std::map<Int32,OneSubDomainInfo*> SubDomainInfoMap;
94 SubDomainInfoMap m_infos;
95
96 private:
97
98 inline OneSubDomainInfo* _getInfo(Int32 rank);
99};
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
110ARCANE_MESH_END_NAMESPACE
111ARCANE_END_NAMESPACE
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116#endif
117
Interface d'une étape de la sérialisation des familles d'entités.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Arguments des callbacks de sérialisation des familles d'entités.
ePhase phase() const override
Phase de la sérialisation où cette instance intervient.
void initialize() override
Initialise l'instance avant le début des échanges.
void notifyAction(const NotifyActionArgs &) override
Notifie l'instance qu'on entre dans une certaine phase de l'échange.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
std::int32_t Int32
Type entier signé sur 32 bits.