Management of a mesh exchange between subdomains. More...
#include <arcane/core/IMeshExchanger.h>
Public Types | |
| enum class | ePhase { Init = 0 , ComputeInfos , ProcessExchange , RemoveItems , AllocateItems , UpdateItemGroups , UpdateVariables , Finalize , Ended } |
| Indicates the different phases of the exchange. More... | |
Public Member Functions | |
| virtual bool | computeExchangeInfos ()=0 |
| Calculates the information to send/receive from other subdomains. | |
| virtual void | processExchange ()=0 |
| Performs the exchange of information 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 void | updateItemGroups ()=0 |
| Update of entity groups. | |
| virtual void | updateVariables ()=0 |
| Update of variables. | |
| virtual void | finalizeExchange ()=0 |
| Finalizes the exchanges. | |
| 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 ePhase | phase () const =0 |
| Phase of the exchange we are currently in. | |
Management of a mesh exchange between subdomains.
An exchange takes place in several phases, which must be executed in the order dictated by the ePhase enumeration.
Definition at line 42 of file IMeshExchanger.h.
|
strong |
Indicates the different phases of the exchange.
Definition at line 47 of file IMeshExchanger.h.
|
inlinevirtual |
Definition at line 62 of file IMeshExchanger.h.
|
pure virtual |
Allocates the entities received from other subdomains.
This operation is collective.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Calculates the information to send/receive from other subdomains.
This operation is collective.
The calculation of information to send is done by knowing the new owner of each entity. This information is stored in the IItemFamily::itemsNewOwner() variable. For example, a cell will be migrated if the new owner is different from the current owner (which is given by Item::owner()).
After calling this method, each mesh entity is modified as follows:
Returns true if there is no exchange to perform.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Finalizes the exchanges.
This operation is collective.
This method performs the last necessary operations during the exchange.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Exchanger associated with the family. Throws an exception if not found.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Mesh associated with this exchanger.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Phase of the exchange we are currently in.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Performs the exchange of information between subdomains.
This operation is collective.
This operation makes no modification to the mesh. It simply sends and receives the necessary information for mesh update.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Deletes from this subdomain the entities that should no longer be there following the exchange.
All entities marked with the ItemFlags::II_NeedRemove flag are deleted.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Update of entity groups.
This operation is collective.
Implemented in Arcane::mesh::MeshExchanger.
|
pure virtual |
Update of variables.
This operation is collective.
Implemented in Arcane::mesh::MeshExchanger.