Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::IParticleExchangerabstract

Interface d'un échangeur de particules. Plus de détails...

#include <arcane/core/IParticleExchanger.h>

+ Graphe de collaboration de Arcane::IParticleExchanger:

Fonctions membres publiques

virtual void build ()=0
 
virtual void initialize (IItemFamily *item_family)=0
 Initialize l'échangeur pour la familly item_family.
 
virtual void beginNewExchange (Integer nb_particle)=0
 Commence un nouvel échange de particules.
 
virtual ARCANE_DEPRECATED bool exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, ItemGroup item_group, IFunctor *wait_functor)=0
 Échange des particules entre sous-domaines.
 
virtual bool exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView ranks_to_send, Int32Array *new_particle_local_ids, IFunctor *wait_functor)=0
 Échange des particules entre sous-domaines.
 
virtual void sendItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send)=0
 
virtual bool waitMessages (Integer nb_pending_particle, Int32Array *new_particle_local_ids, IFunctor *functor)=0
 
virtual void addNewParticles (Integer nb_particle)=0
 Ajoute nb_particle dans l'échange actuel.
 
virtual IItemFamilyitemFamily ()=0
 Famille associée.
 
virtual void setVerboseLevel (Integer level)=0
 Positionne le niveau de verbosité (0 pour aucune message)
 
virtual Integer verboseLevel () const =0
 Niveau de verbosité
 
virtual IAsyncParticleExchangerasyncParticleExchanger ()=0
 Gestion de l'asynchronisme (retourne nullptr si fonctionnalité non disponible)
 

Description détaillée

Interface d'un échangeur de particules.

Cette classe sert à échanger des particules entre sous-domaines en plusieurs étapes et est en général utilisée par des codes de trajectographie. Si l'on souhaite faire un échange en une fois, il faut utiliser IItemFamily::exchangeItems().

Avant tout, une instance doit être initialisée avec une famille de particules via initialize().

Pour procéder à un échange, il faut d'abord initialiser l'échange via beginNewExchange() avec comme argument le nombre de particules du sous-domaine concernées par l'échange. Il faut ensuite appeler exchangeItems() pour chaque phase d'échange de particules. A chaque appel à exchangeItems(), il faut spécifier le nombre de particules ne participant plus à l'échange. Lorsqu'il n'y a plus de particules concernée, exchangeItems() return true et l'échange est terminé. Il est possible de recommencer tout le processus via un nouvel appel à beginNewExchange().

Entre deux phases d'un échange, il est possible d'indiquer que de nouvelles particules vont participer via addNewParticles()

Définition à la ligne 60 du fichier IParticleExchanger.h.

Documentation des constructeurs et destructeur

◆ IParticleExchanger()

Arcane::IParticleExchanger::IParticleExchanger ( )
inlineprotected

Définition à la ligne 64 du fichier IParticleExchanger.h.

◆ ~IParticleExchanger()

virtual Arcane::IParticleExchanger::~IParticleExchanger ( )
inlinevirtual

Définition à la ligne 68 du fichier IParticleExchanger.h.

Documentation des fonctions membres

◆ addNewParticles()

virtual void Arcane::IParticleExchanger::addNewParticles ( Integer  nb_particle)
pure virtual

Ajoute nb_particle dans l'échange actuel.

Cette méthode permet d'indiquer que de nouvelles particules vont participer à l'échanger, par exemple suite à leur création.

◆ beginNewExchange()

virtual void Arcane::IParticleExchanger::beginNewExchange ( Integer  nb_particle)
pure virtual

Commence un nouvel échange de particules.

nb_particule est le nombre de particules du sous-domaine qui vont prendre part à un éventuel échange.

Cette méthode est collective et doit être appelée par tout les sous-domaines.

◆ exchangeItems() [1/2]

virtual bool Arcane::IParticleExchanger::exchangeItems ( Integer  nb_particle_finish_exchange,
Int32ConstArrayView  local_ids,
Int32ConstArrayView  ranks_to_send,
Int32Array new_particle_local_ids,
IFunctor wait_functor 
)
pure virtual

Échange des particules entre sous-domaines.

Cette opération envoie les particules de la famille item_family dont les indices locaux sont donnés par la liste local_ids aux sous-domaines specifiés par sub_domains_to_send, et réceptionne de ces mêmes sous-domaines celles dont ce sous-domaine est propriétaire. Les particules envoyées sont supprimées de la famille item_family et celles recues ajoutées.

Les variables reposant sur la famille item_family sont transférées en même temps que les particules.

Cette opération est collective et bloquante.

Si new_particle_local_ids n'est pas nul, il contiendra en retour le tableau des indices locaux des nouvelles entitées.

Si wait_functor n'est pas nul, le fonctor est appelé pendant l'envoie et la réception des messages. Il est alors possible de faire des opérations. Les opérations ne doivent pas utiliser de particules, ni des variables sur les particules de la famille échangée.

Valeurs retournées

a true si toutes les phases d'échange sont terminés

Valeurs retournées

a false sinon

◆ exchangeItems() [2/2]

virtual ARCANE_DEPRECATED bool Arcane::IParticleExchanger::exchangeItems ( Integer  nb_particle_finish_exchange,
Int32ConstArrayView  local_ids,
Int32ConstArrayView  sub_domains_to_send,
ItemGroup  item_group,
IFunctor wait_functor 
)
pure virtual

Échange des particules entre sous-domaines.

Cette opération envoie les particules de la famille item_family dont les indices locaux sont donnés par la liste local_ids aux sous-domaines specifiés par sub_domains_to_send, et réceptionne de ces mêmes sous-domaines celles dont ce sous-domaine est propriétaire. Les particules envoyées sont supprimées de la famille item_family et celles recues ajoutées.

Les variables reposant sur la famille item_family sont transférées en même temps que les particules.

Cette opération est collective et bloquante.

Si item_group n'est pas nul, il contiendra en retour la liste des nouvelles entités.

Si wait_functor n'est pas nul, le fonctor est appelé pendant l'envoie et la réception des messages. Il est alors possible de faire des opérations. Les opérations ne doivent pas utiliser de particules, ni des variables sur les particules de la famille échangée.

Valeurs retournées

a true si toutes les phases d'échange sont terminés

Valeurs retournées

a false sinon


La documentation de cette classe a été générée à partir du fichier suivant :