Arcane  v3.16.0.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
ItemsExchangeInfo2.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* ItemsExchangeInfo2.h (C) 2000-2024 */
9/* */
10/* Informations pour échanger des entités et leur caractéristiques. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_ITEMSEXCHANGEINFO2_H
13#define ARCANE_MESH_ITEMSEXCHANGEINFO2_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/List.h"
18#include "arcane/utils/TraceAccessor.h"
19
20#include "arcane/VariableCollection.h"
21#include "arcane/IItemFamilyExchanger.h"
22#include "arcane/IItemFamilySerializeStep.h"
23#include "arcane/ParallelExchangerOptions.h"
24
25#include "arcane/mesh/MeshGlobal.h"
26
27#include <set>
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane
33{
34class ItemInternal;
38}
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
42
43namespace Arcane::mesh
44{
45class ItemGroupsSerializer2;
46class TiedInterfaceExchanger;
47class ItemFamilyVariableSerializer;
48
49/*---------------------------------------------------------------------------*/
50/*---------------------------------------------------------------------------*/
74class ARCANE_MESH_EXPORT ItemsExchangeInfo2
75: public TraceAccessor
77{
78 public:
79
80 ItemsExchangeInfo2(IItemFamily* item_family);
81 ~ItemsExchangeInfo2();
82
83 public:
84
85 void computeExchangeItems() override;
86
87 void setExchangeItems(ConstArrayView< std::set<Int32> > items_to_send) override;
88
94 bool computeExchangeInfos() override;
95
97 void prepareToSend() override;
98 void releaseBuffer() override;
99
110 void readAndAllocItems() override;
111 void readAndAllocSubMeshItems() override;
112 void readAndAllocItemRelations() override;
113
115 void readGroups() override;
116
118 void readVariables() override;
119
130 void removeSentItems() override;
131
133 void processExchange() override;
134
142 void finalizeExchange() override;
143
144 IItemFamily* itemFamily() override { return m_item_family; }
145
146 void setParallelExchangerOption(const ParallelExchangerOptions& options) override;
147
148 public:
149
150 void addSerializeStep(IItemFamilySerializeStep* step);
151
152 private:
153
154 IItemFamily* m_item_family;
155
158
161
169
170 Ref<IParallelExchanger> m_exchanger;
171
176
177 IItemFamilySerializer* m_family_serializer;
178
180
181 ParallelExchangerOptions m_exchanger_option;
182
183 private:
184
185 inline void _addItemToSend(Int32 sub_domain_id,Item item);
186 bool _computeExchangeInfos();
187 void _applySerializeStep(IItemFamilySerializeStep::ePhase phase,
188 const ItemFamilySerializeArgs& args);
189 void _applyDeserializePhase(IItemFamilySerializeStep::ePhase phase);
190};
191
192/*---------------------------------------------------------------------------*/
193/*---------------------------------------------------------------------------*/
194
195} // End namespace Arcane
196
197/*---------------------------------------------------------------------------*/
198/*---------------------------------------------------------------------------*/
199
200#endif
201
Vue constante d'un tableau de type T.
Échange des entités et leurs caractéristiques pour une famille donnée.
Interface d'une étape de la sérialisation des familles d'entités.
Gère la sérialisation/désérialisation des entités d'une famille.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Echange d'informations entre processeurs.
Arguments des callbacks de sérialisation des familles d'entités.
Structure interne d'une entité de maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Options pour IParallelMng::processExchange().
Référence à une instance.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
UniqueArray< ItemGroupsSerializer2 * > m_groups_serializers
Sérialiseur des groupes.
void readAndAllocItems() override
Après réception des messages, lit et créé les entités transférées.
void readVariables() override
Après réception des messages, lit les valeurs des variables.
void removeSentItems() override
Supprime les entités envoyées.
void finalizeExchange() override
Termine l'échange.
void computeExchangeItems() override
Détermine la liste des entités à échanger.
UniqueArray< IItemFamily * > m_families_to_exchange
Liste des familles intégrées à l'échange.
void setExchangeItems(ConstArrayView< std::set< Int32 > > items_to_send) override
Positionne la liste des entités à échanger.
UniqueArray< SharedArray< Int32 > > m_receive_local_ids
Liste des numéros locaux des entités reçues.
UniqueArray< SharedArray< Int32 > > m_send_local_ids
Liste des entités à envoyer à chaque processeur.
void processExchange() override
Envoie les messages d'échange.
bool computeExchangeInfos() override
Détermine les informations nécessaires pour les échanges.
IItemFamily * itemFamily() override
Famille associée.
void prepareToSend() override
Prépare les structures d'envoie.
void readGroups() override
Après réception des messages, lit les groupes.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int32_t Int32
Type entier signé sur 32 bits.