Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
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;
35class IParallelExchanger;
36class IItemFamilySerializer;
37class IItemFamilySerializeStep;
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
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
É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.
Arguments des callbacks de sérialisation des familles d'entités.
Classe de base d'un élément de maillage.
Definition Item.h:83
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Options pour IParallelMng::processExchange().
Informations pour échanger des entités d'une famille donnée et leur caractéristiques.
UniqueArray< ItemGroupsSerializer2 * > m_groups_serializers
Sérialiseur des groupes.
UniqueArray< IItemFamily * > m_families_to_exchange
Liste des familles intégrées à l'échange.
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.
IItemFamily * itemFamily() override
Famille associée.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-