Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
IMeshExchanger.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* IMeshExchanger.h (C) 2000-2022 */
9/* */
10/* Mesh exchange management between subdomains. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMESHEXCHANGER_H
13#define ARCANE_IMESHEXCHANGER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IPrimaryMesh;
29class IItemFamily;
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
42class ARCANE_CORE_EXPORT IMeshExchanger
43{
44 public:
45
47 enum class ePhase
48 {
49 Init = 0,
50 ComputeInfos,
51 ProcessExchange,
52 RemoveItems,
53 AllocateItems,
54 UpdateItemGroups,
55 UpdateVariables,
56 Finalize,
57 Ended
58 };
59
60 public:
61
62 virtual ~IMeshExchanger() {} //<! Releases resources
63
64 public:
65
88 virtual bool computeExchangeInfos() = 0;
89
102 virtual void processExchange() = 0;
103
114 virtual void removeNeededItems() = 0;
115
124 virtual void allocateReceivedItems() = 0;
125
134 virtual void updateItemGroups() = 0;
135
144 virtual void updateVariables() = 0;
145
157 virtual void finalizeExchange() = 0;
158
160 virtual IPrimaryMesh* mesh() const = 0;
161
164
166 virtual ePhase phase() const = 0;
167};
168
169/*---------------------------------------------------------------------------*/
170/*---------------------------------------------------------------------------*/
171
172} // End namespace Arcane
173
174/*---------------------------------------------------------------------------*/
175/*---------------------------------------------------------------------------*/
176
177#endif
Arcane configuration file.
Exchange of entities and their characteristics for a given family.
Interface of an entity family.
Definition IItemFamily.h:83
Management of a mesh exchange between subdomains.
virtual void removeNeededItems()=0
Deletes from this subdomain the entities that should no longer be there following the exchange.
virtual void allocateReceivedItems()=0
Allocates the entities received from other subdomains.
virtual ePhase phase() const =0
Phase of the exchange we are currently in.
virtual void processExchange()=0
Performs the exchange of information between subdomains.
virtual void finalizeExchange()=0
Finalizes the exchanges.
virtual void updateVariables()=0
Update of variables.
virtual bool computeExchangeInfos()=0
Calculates the information to send/receive from other subdomains.
virtual IPrimaryMesh * mesh() const =0
Mesh associated with this exchanger.
virtual IItemFamilyExchanger * findExchanger(IItemFamily *family)=0
Exchanger associated with the family. Throws an exception if not found.
virtual void updateItemGroups()=0
Update of entity groups.
ePhase
Indicates the different phases of the exchange.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --