Exchange of entities and their characteristics for a given family. More...
#include <arcane/core/IItemFamilyExchanger.h>
Public Member Functions | |
| virtual void | computeExchangeItems ()=0 |
| Determines the list of entities to exchange. | |
| virtual void | setExchangeItems (ConstArrayView< std::set< Int32 > > items_to_send)=0 |
| Positions the list of entities to exchange. | |
| virtual bool | computeExchangeInfos ()=0 |
| Determines the information necessary for the exchanges. | |
| virtual void | prepareToSend ()=0 |
| Prepares the sending structures. | |
| virtual void | releaseBuffer ()=0 |
| virtual void | readAndAllocItems ()=0 |
| After receiving messages, reads and creates the transferred entities. | |
| virtual void | readAndAllocSubMeshItems ()=0 |
| virtual void | readAndAllocItemRelations ()=0 |
| virtual void | readGroups ()=0 |
| After receiving messages, reads the groups. | |
| virtual void | readVariables ()=0 |
| After receiving messages, reads the variable values. | |
| virtual void | removeSentItems ()=0 |
| Removes the sent entities. | |
| virtual void | processExchange ()=0 |
| Sends the exchange messages. | |
| virtual void | finalizeExchange ()=0 |
| Finalizes the exchange. | |
| virtual IItemFamily * | itemFamily ()=0 |
| Associated family. | |
| virtual void | setParallelExchangerOption (const ParallelExchangerOptions &options)=0 |
| Sets the options used during entity exchange. | |
Exchange of entities and their characteristics for a given family.
This class manages the exchange of entities between sub-domains. It is used, for example, during a redistribution. Generally, this class is not used directly (except to specify the entities to exchange) but via the IMeshExchanger interface.
The user of this class must start by specifying the list of entities to send to each sub-domain via the setExchangeItems() method.
Entity exchange is done in several steps as indicated in IMeshExchanger.
The actual serialization of entities takes place in three successive phases: entities, groups, and variables. Deserialization is done in the same order. Indeed, it is necessary to know the groups to deserialize the variables, and to know the entities to deserialize the groups.
When cells or particles are sent, you must call the readAndAllocItems() method to create them, before calling readGroups() and then readVariables().
Definition at line 62 of file IItemFamilyExchanger.h.
|
inlinevirtual |
Definition at line 66 of file IItemFamilyExchanger.h.
|
pure virtual |
Determines the information necessary for the exchanges.
| true | if there is nothing to exchange |
| false | otherwise. |
Implemented in Arcane::mesh::ItemsExchangeInfo2.
Referenced by Arcane::mesh::MeshExchanger::computeExchangeInfos().
|
pure virtual |
Determines the list of entities to exchange.
This operation uses the itemsOwner() variable and the owner() field of each entity to determine who each entity must be sent to. Therefore, this operation must be called before DynamicMesh::_setOwnerFromVariable() is called.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Finalizes the exchange.
Performs the final updates following an exchange. This method is called when all entities and variables have been exchanged.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Associated family.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Prepares the sending structures.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Sends the exchange messages.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
After receiving messages, reads and creates the transferred entities.
This method does nothing for entities other than cells and particles, for legacy management. With the ItemFamilyNetwork family graph, this method creates the items and their dependencies (i.e., descendant connectivities). This involves separating the processing of sub-items (sub-meshes) and relations (ascending connectivities or dofs), which cannot be processed until all items are created.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
After receiving messages, reads the groups.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
After receiving messages, reads the variable values.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Removes the sent entities.
This operation must only be performed for entities that do not depend on another entity. For example, it is impossible to directly delete nodes, because certain cells that are not sent may rely on them.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
|
pure virtual |
Positions the list of entities to exchange.
Implemented in Arcane::mesh::ItemsExchangeInfo2.
Referenced by Arcane::mesh::MeshExchanger::computeExchangeInfos().
|
pure virtual |
Sets the options used during entity exchange.
Implemented in Arcane::mesh::ItemsExchangeInfo2.