Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MeshExchanger.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/* MeshExchanger.h (C) 2000-2022 */
9/* */
10/* Gestion d'un échange de maillage entre sous-domaines. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_MESHEXCHANGER_H
13#define ARCANE_MESH_MESHEXCHANGER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/List.h"
19#include "arcane/IMeshExchanger.h"
20#include "arcane/ParallelExchangerOptions.h"
21#include "arcane/mesh/MeshGlobal.h"
22
23#include <map>
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane
29{
30class ITimeStats;
31}
32
33namespace Arcane::mesh
34{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
39class DynamicMesh;
40
41/*---------------------------------------------------------------------------*/
42/*---------------------------------------------------------------------------*/
46class ARCANE_MESH_EXPORT MeshExchanger
47: public TraceAccessor
48, public IMeshExchanger
49{
50 private:
51
52 typedef std::map<IItemFamily*,IItemFamilyExchanger*> ItemFamilyExchangerMap;
53
54 public:
55
58
59 public:
60
61 bool computeExchangeInfos() override;
62 void processExchange() override;
63 void removeNeededItems() override;
64 void allocateReceivedItems() override;
65 void updateItemGroups() override;
66 void updateVariables() override;
67 void finalizeExchange() override;
68 IPrimaryMesh* mesh() const override;
69 void build();
70 IItemFamilyExchanger* findExchanger(IItemFamily* family) override;
71 ePhase phase() const override { return m_phase; }
72
73 protected:
74
75 void _setNextPhase(ePhase next_phase);
76
77 private:
78
79 DynamicMesh* m_mesh;
80 List<IItemFamilyExchanger*> m_family_exchangers;
81 ItemFamilyExchangerMap m_family_exchanger_map;
82 ITimeStats* m_time_stats;
83 ePhase m_phase;
84 ParallelExchangerOptions m_exchanger_option;
85
86 void _checkPhase(ePhase wanted_phase);
87 void _buildWithItemFamilyNetwork();
88 void _addItemFamilyExchanger(IItemFamily* family);
89};
90
91/*---------------------------------------------------------------------------*/
92/*---------------------------------------------------------------------------*/
93
94} // End namespace Arcane::mesh
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99#endif
Échange des entités et leurs caractéristiques pour une famille donnée.
Interface d'une famille d'entités.
Gestion d'un échange de maillage entre sous-domaines.
ePhase
Indique les différentes phases de l'échange.
Interface gérant les statistiques sur les temps d'exécution.
Definition ITimeStats.h:48
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Options pour IParallelMng::processExchange().
Implémentation d'un maillage.
Definition DynamicMesh.h:97
Informations pour un échange de maillage entre sous-domaines.
ePhase phase() const override
Phase de l'échange dans laquelle on se trouve.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-