Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::IItemFamilyExchanger Class Referenceabstract

Exchange of entities and their characteristics for a given family. More...

#include <arcane/core/IItemFamilyExchanger.h>

Inheritance diagram for Arcane::IItemFamilyExchanger:
Collaboration diagram for Arcane::IItemFamilyExchanger:

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 IItemFamilyitemFamily ()=0
 Associated family.
virtual void setParallelExchangerOption (const ParallelExchangerOptions &options)=0
 Sets the options used during entity exchange.

Detailed Description

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.

Constructor & Destructor Documentation

◆ ~IItemFamilyExchanger()

virtual Arcane::IItemFamilyExchanger::~IItemFamilyExchanger ( )
inlinevirtual

Definition at line 66 of file IItemFamilyExchanger.h.

Member Function Documentation

◆ computeExchangeInfos()

virtual bool Arcane::IItemFamilyExchanger::computeExchangeInfos ( )
pure virtual

Determines the information necessary for the exchanges.

Return values
trueif there is nothing to exchange
falseotherwise.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

Referenced by Arcane::mesh::MeshExchanger::computeExchangeInfos().

Here is the caller graph for this function:

◆ computeExchangeItems()

virtual void Arcane::IItemFamilyExchanger::computeExchangeItems ( )
pure virtual

Determines the list of entities to exchange.

Warning
This method must only be used for particle families.

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.

Todo
To be removed

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ finalizeExchange()

virtual void Arcane::IItemFamilyExchanger::finalizeExchange ( )
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.

◆ itemFamily()

virtual IItemFamily * Arcane::IItemFamilyExchanger::itemFamily ( )
pure virtual

Associated family.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ prepareToSend()

virtual void Arcane::IItemFamilyExchanger::prepareToSend ( )
pure virtual

Prepares the sending structures.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ processExchange()

virtual void Arcane::IItemFamilyExchanger::processExchange ( )
pure virtual

Sends the exchange messages.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ readAndAllocItems()

virtual void Arcane::IItemFamilyExchanger::readAndAllocItems ( )
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.

Warning
Before calling this method, you must be certain that entities no longer belonging to this sub-domain have been destroyed

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ readGroups()

virtual void Arcane::IItemFamilyExchanger::readGroups ( )
pure virtual

After receiving messages, reads the groups.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ readVariables()

virtual void Arcane::IItemFamilyExchanger::readVariables ( )
pure virtual

After receiving messages, reads the variable values.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ removeSentItems()

virtual void Arcane::IItemFamilyExchanger::removeSentItems ( )
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.

Warning
This operation is only valid for particles without the concept of ghost particles.
Todo
To be removed

Implemented in Arcane::mesh::ItemsExchangeInfo2.

◆ setExchangeItems()

virtual void Arcane::IItemFamilyExchanger::setExchangeItems ( ConstArrayView< std::set< Int32 > > items_to_send)
pure virtual

Positions the list of entities to exchange.

Implemented in Arcane::mesh::ItemsExchangeInfo2.

Referenced by Arcane::mesh::MeshExchanger::computeExchangeInfos().

Here is the caller graph for this function:

◆ setParallelExchangerOption()

virtual void Arcane::IItemFamilyExchanger::setParallelExchangerOption ( const ParallelExchangerOptions & options)
pure virtual

Sets the options used during entity exchange.

Implemented in Arcane::mesh::ItemsExchangeInfo2.


The documentation for this class was generated from the following file: