Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::mesh::AsyncParticleExchanger Class Reference
Inheritance diagram for Arcane::mesh::AsyncParticleExchanger:
Collaboration diagram for Arcane::mesh::AsyncParticleExchanger:

Public Member Functions

 AsyncParticleExchanger (const ServiceBuildInfo &sbi)
void build () override
 Build-level construction of the service.
void initialize (IItemFamily *item_family) override
 Initializes the exchanger for the item_family item_family.
void beginNewExchange (Integer nb_particule) override
 Starts a new particle exchange.
bool exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, ItemGroup item_group, IFunctor *functor) override
 Exchanges particles between sub-domains.
bool exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, Int32Array *new_particle_local_ids, IFunctor *functor) override
 Exchanges particles between sub-domains.
void sendItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send) override
bool waitMessages (Integer nb_pending_particles, Int32Array *new_particle_local_ids, IFunctor *functor) override
void addNewParticles (Integer nb_particle) override
 Adds nb_particle to the current exchange.
IItemFamilyitemFamily () override
 Associated family.
void setVerboseLevel (Integer level) override
 Sets the verbosity level (0 for no messages).
Integer verboseLevel () const override
 Verbosity level.
IAsyncParticleExchangerasyncParticleExchanger () override
 Asynchronism management (returns nullptr if functionality is not available).
bool exchangeItemsAsync (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, Int32Array *new_particle_local_ids, IFunctor *functor, bool has_local_flying_particles) override
Public Member Functions inherited from Arcane::BasicService
 ~BasicService () override
 Releases resources.
virtual ISubDomainsubDomain ()
Public Member Functions inherited from Arcane::AbstractService
 ~AbstractService () override
 Destructor.
IServiceInfoserviceInfo () const override
 Access to service information. See IServiceInfo for details.
IBaseserviceParent () const override
 Access to the base interface of main Arcane objects.
IServiceserviceInterface () override
 Returns the low-level IService interface of the service.
Public Member Functions inherited from Arcane::TraceAccessor
 TraceAccessor (ITraceMng *m)
 Constructs an accessor via the trace manager m.
 TraceAccessor (const TraceAccessor &rhs)
 Copy constructor.
TraceAccessoroperator= (const TraceAccessor &rhs)
 Copy assignment operator.
virtual ~TraceAccessor ()
 Frees resources.
ITraceMngtraceMng () const
 Trace manager.
TraceMessage info () const
 Flow for an information message.
TraceMessage pinfo () const
 Flow for a parallel information message.
TraceMessage info (char category) const
 Flow for an information message of a given category.
TraceMessage pinfo (char category) const
 Flow for a parallel information message of a given category.
TraceMessage info (bool v) const
 Flow for an information message.
TraceMessage warning () const
 Flow for a warning message.
TraceMessage pwarning () const
TraceMessage error () const
 Flow for an error message.
TraceMessage perror () const
TraceMessage log () const
 Flow for a log message.
TraceMessage plog () const
 Flow for a log message.
TraceMessage logdate () const
 Flow for a log message preceded by the date.
TraceMessage fatal () const
 Flow for a fatal error message.
TraceMessage pfatal () const
 Flow for a parallel fatal error message.
TraceMessageDbg debug (Trace::eDebugLevel=Trace::Medium) const
 Flow for a debug message.
Trace::eDebugLevel configDbgLevel () const
 Debug level of the configuration file.
TraceMessage info (Int32 verbose_level) const
 Flow for an information message of a given level.
TraceMessage linfo () const
 Flow for an information message with the local information level of this instance.
TraceMessage linfo (Int32 relative_level) const
 Flow for an information message with the local information level of this instance.
void fatalMessage (const StandaloneTraceMessage &o) const
Public Member Functions inherited from Arcane::IService
virtual ~IService ()
 Releases resources.
Public Member Functions inherited from Arcane::MeshAccessor
 MeshAccessor (ISubDomain *sd)
 MeshAccessor (IMesh *mesh)
 MeshAccessor (const MeshHandle &mesh_handle)
Integer nbCell () const
 Returns the number of cells in the mesh.
Integer nbFace () const
 Returns the number of faces in the mesh.
Integer nbEdge () const
 Returns the number of edges in the mesh.
Integer nbNode () const
 Returns the number of nodes in the mesh.
VariableNodeReal3nodesCoordinates () const
 Returns the coordinates of the mesh nodes.
NodeGroup allNodes () const
 Returns the group containing all nodes.
EdgeGroup allEdges () const
 Returns the group containing all edges.
FaceGroup allFaces () const
 Returns the group containing all faces.
CellGroup allCells () const
 Returns the group containing all cells.
FaceGroup outerFaces () const
 Returns the group containing all boundary faces.
NodeGroup ownNodes () const
 Returns the group containing all nodes specific to this domain.
CellGroup ownCells () const
 Returns the group containing all cells specific to this domain.
FaceGroup ownFaces () const
 Group containing all faces specific to this domain.
EdgeGroup ownEdges () const
 Group containing all edges specific to this domain.
IMeshmesh () const
const MeshHandlemeshHandle () const
Public Member Functions inherited from Arcane::CommonVariables
 CommonVariables (IModule *c)
 Constructs the references of the common variables for the module c.
 CommonVariables (IVariableMng *variable_mng)
 Constructs the references of the common variables for the manager variable_mng.
 CommonVariables (ISubDomain *sd)
 Constructs the references of the common variables for the subdomain sd.
virtual ~CommonVariables ()
 Releases resources.
Int32 globalIteration () const
 Current iteration number.
Real globalTime () const
 Current time.
Real globalOldTime () const
 Previous current time.
Real globalFinalTime () const
 Final time of the simulation.
Real globalDeltaT () const
 Current Delta T.
Real globalCPUTime () const
 CPU time used (in seconds).
Real globalOldCPUTime () const
 Previous CPU time used (in seconds).
Real globalElapsedTime () const
 Clock time (elapsed) used (in seconds).
Real globalOldElapsedTime () const
 Previous clock time (elapsed) used (in seconds).
Public Member Functions inherited from Arcane::IParticleExchanger
virtual ~IParticleExchanger ()=default
 Releases resources.

Private Member Functions

void _generateSendItemsAsync (Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send)
bool _waitSomeMessages (ItemGroup item_group, Int32Array *new_particle_local_ids)

Private Attributes

BasicParticleExchanger m_bpe
Integer m_nb_particle_send_before_reduction = 0
Integer m_nb_particle_send_before_reduction_tmp = 0
Integer m_sum_of_nb_particle_sent = 0
UniqueArray< Parallel::Requestm_reduce_requests

Additional Inherited Members

Public Attributes inherited from Arcane::CommonVariables
VariableScalarInt32 m_global_iteration
 Current iteration.
VariableScalarReal m_global_time
 Current time.
VariableScalarReal m_global_deltat
 Global Delta T.
VariableScalarReal m_global_old_time
 Time previous to the current time.
VariableScalarReal m_global_old_deltat
 Delta T at the time previous to the global time.
VariableScalarReal m_global_final_time
 Final time of the case.
VariableScalarReal m_global_old_cpu_time
 Previous CPU time used (in seconds).
VariableScalarReal m_global_cpu_time
 CPU time used (in seconds).
VariableScalarReal m_global_old_elapsed_time
 Previous clock time used (in seconds).
VariableScalarReal m_global_elapsed_time
 Clock time used (in seconds).
Protected Member Functions inherited from Arcane::BasicService
 BasicService (const ServiceBuildInfo &)
Protected Member Functions inherited from Arcane::AbstractService
 AbstractService (const ServiceBuildInfo &)
 Constructor from a ServiceBuildInfo.
Protected Member Functions inherited from Arcane::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
Int32 _localVerboseLevel () const
Protected Member Functions inherited from Arcane::IService
 IService ()
 Constructor.

Detailed Description

Definition at line 22 of file AsyncParticleExchanger.h.

Constructor & Destructor Documentation

◆ AsyncParticleExchanger()

Arcane::mesh::AsyncParticleExchanger::AsyncParticleExchanger ( const ServiceBuildInfo & sbi)
explicit

Definition at line 29 of file AsyncParticleExchanger.cc.

◆ ~AsyncParticleExchanger()

Arcane::mesh::AsyncParticleExchanger::~AsyncParticleExchanger ( )
override

Definition at line 39 of file AsyncParticleExchanger.cc.

Member Function Documentation

◆ _generateSendItemsAsync()

void Arcane::mesh::AsyncParticleExchanger::_generateSendItemsAsync ( Int32ConstArrayView local_ids,
Int32ConstArrayView sub_domains_to_send )
private

Definition at line 268 of file AsyncParticleExchanger.cc.

◆ _waitSomeMessages()

bool Arcane::mesh::AsyncParticleExchanger::_waitSomeMessages ( ItemGroup item_group,
Int32Array * new_particle_local_ids )
private

Definition at line 335 of file AsyncParticleExchanger.cc.

◆ addNewParticles()

void Arcane::mesh::AsyncParticleExchanger::addNewParticles ( Integer nb_particle)
overridevirtual

Adds nb_particle to the current exchange.

This method allows indicating that new particles will participate in the exchange, for example following their creation.

Implements Arcane::IParticleExchanger.

Definition at line 143 of file AsyncParticleExchanger.cc.

◆ asyncParticleExchanger()

IAsyncParticleExchanger * Arcane::mesh::AsyncParticleExchanger::asyncParticleExchanger ( )
overridevirtual

Asynchronism management (returns nullptr if functionality is not available).

Implements Arcane::IParticleExchanger.

Definition at line 179 of file AsyncParticleExchanger.cc.

◆ beginNewExchange()

void Arcane::mesh::AsyncParticleExchanger::beginNewExchange ( Integer nb_particle)
overridevirtual

Starts a new particle exchange.

nb_particle is the number of particles in the sub-domain that will take part in a potential exchange.

This method is collective and must be called by all sub-domains.

Implements Arcane::IParticleExchanger.

Definition at line 79 of file AsyncParticleExchanger.cc.

References Arcane::TraceAccessor::info().

Here is the call graph for this function:

◆ build()

void Arcane::mesh::AsyncParticleExchanger::build ( void )
overridevirtual

Build-level construction of the service.

This method is called right after the constructor.

Reimplemented from Arcane::AbstractService.

Definition at line 50 of file AsyncParticleExchanger.cc.

◆ exchangeItems() [1/2]

bool Arcane::mesh::AsyncParticleExchanger::exchangeItems ( Integer nb_particle_finish_exchange,
Int32ConstArrayView local_ids,
Int32ConstArrayView ranks_to_send,
Int32Array * new_particle_local_ids,
IFunctor * wait_functor )
overridevirtual

Exchanges particles between sub-domains.

This operation sends the particles from the item_family item_family whose local indices are given by the list local_ids to the sub-domains specified by sub_domains_to_send, and receives from these same sub-domains those that this sub-domain owns. The sent particles are deleted from the item_family item_family and the received ones are added.

Variables associated with the item_family item_family are transferred at the same time as the particles.

This operation is collective and blocking.

If new_particle_local_ids is not null, it will contain in return the array of local indices of the new entities.

If wait_functor is not null, the functor is called during the sending and receiving of messages. It is then possible to perform operations. Operations must not use particles, nor variables on the particles of the exchanged family.

Return values

a true if all exchange phases are finished

Return values

a false otherwise

Todo
improve the documentation

Implements Arcane::IParticleExchanger.

Definition at line 107 of file AsyncParticleExchanger.cc.

◆ exchangeItems() [2/2]

bool Arcane::mesh::AsyncParticleExchanger::exchangeItems ( Integer nb_particle_finish_exchange,
Int32ConstArrayView local_ids,
Int32ConstArrayView sub_domains_to_send,
ItemGroup item_group,
IFunctor * wait_functor )
overridevirtual

Exchanges particles between sub-domains.

This operation sends the particles from the item_family item_family whose local indices are given by the list local_ids to the sub-domains specified by sub_domains_to_send, and receives from these same sub-domains those that this sub-domain owns. The sent particles are deleted from the item_family item_family and the received ones are added.

Variables associated with the item_family item_family are transferred at the same time as the particles.

This operation is collective and blocking.

If item_group is not null, it will contain the list of new entities in return.

If wait_functor is not null, the functor is called during the sending and receiving of messages. It is then possible to perform operations. Operations must not use particles, nor variables on the particles of the exchanged family.

Return values

a true if all exchange phases are finished

Return values

a false otherwise

Todo
improve the documentation

Implements Arcane::IParticleExchanger.

Definition at line 93 of file AsyncParticleExchanger.cc.

◆ exchangeItemsAsync()

bool Arcane::mesh::AsyncParticleExchanger::exchangeItemsAsync ( Integer nb_particle_finish_exchange,
Int32ConstArrayView local_ids,
Int32ConstArrayView sub_domains_to_send,
Int32Array * new_particle_local_ids,
IFunctor * functor,
bool has_local_flying_particles )
overridevirtual

Implements Arcane::IAsyncParticleExchanger.

Definition at line 188 of file AsyncParticleExchanger.cc.

◆ initialize()

void Arcane::mesh::AsyncParticleExchanger::initialize ( IItemFamily * item_family)
overridevirtual

Initializes the exchanger for the item_family item_family.

Implements Arcane::IParticleExchanger.

Definition at line 62 of file AsyncParticleExchanger.cc.

References ARCANE_THROW, Arcane::IParallelMng::isParallel(), and Arcane::IParallelMng::nonBlockingCollective().

Here is the call graph for this function:

◆ itemFamily()

IItemFamily * Arcane::mesh::AsyncParticleExchanger::itemFamily ( )
overridevirtual

Associated family.

Implements Arcane::IParticleExchanger.

Definition at line 152 of file AsyncParticleExchanger.cc.

◆ sendItems()

void Arcane::mesh::AsyncParticleExchanger::sendItems ( Integer nb_particle_finish_exchange,
Int32ConstArrayView local_ids,
Int32ConstArrayView sub_domains_to_send )
overridevirtual

Implements Arcane::IParticleExchanger.

Definition at line 121 of file AsyncParticleExchanger.cc.

◆ setVerboseLevel()

void Arcane::mesh::AsyncParticleExchanger::setVerboseLevel ( Integer level)
overridevirtual

Sets the verbosity level (0 for no messages).

Implements Arcane::IParticleExchanger.

Definition at line 161 of file AsyncParticleExchanger.cc.

◆ verboseLevel()

Integer Arcane::mesh::AsyncParticleExchanger::verboseLevel ( ) const
overridevirtual

Verbosity level.

Implements Arcane::IParticleExchanger.

Definition at line 170 of file AsyncParticleExchanger.cc.

◆ waitMessages()

bool Arcane::mesh::AsyncParticleExchanger::waitMessages ( Integer nb_pending_particle,
Int32Array * new_particle_local_ids,
IFunctor * functor )
overridevirtual

Implements Arcane::IParticleExchanger.

Definition at line 132 of file AsyncParticleExchanger.cc.

Member Data Documentation

◆ m_bpe

BasicParticleExchanger Arcane::mesh::AsyncParticleExchanger::m_bpe
private

Definition at line 75 of file AsyncParticleExchanger.h.

◆ m_nb_particle_send_before_reduction

Integer Arcane::mesh::AsyncParticleExchanger::m_nb_particle_send_before_reduction = 0
private

Definition at line 76 of file AsyncParticleExchanger.h.

◆ m_nb_particle_send_before_reduction_tmp

Integer Arcane::mesh::AsyncParticleExchanger::m_nb_particle_send_before_reduction_tmp = 0
private

Definition at line 77 of file AsyncParticleExchanger.h.

◆ m_reduce_requests

UniqueArray<Parallel::Request> Arcane::mesh::AsyncParticleExchanger::m_reduce_requests
private

Definition at line 79 of file AsyncParticleExchanger.h.

◆ m_sum_of_nb_particle_sent

Integer Arcane::mesh::AsyncParticleExchanger::m_sum_of_nb_particle_sent = 0
private

Definition at line 78 of file AsyncParticleExchanger.h.


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