Echangeur de particules basique (utilise une réduction bloquante). Plus de détails...
#include <arcane/mesh/BasicParticleExchanger.h>
Fonctions membres publiques | |
BasicParticleExchanger (const ServiceBuildInfo &sbi) | |
void | build () override |
Construction de niveau build du service. | |
void | initialize (IItemFamily *item_family) override |
Initialize l'échangeur pour la familly item_family. | |
void | beginNewExchange (Integer nb_particle) override |
Commence un nouvel échange de particules. | |
IItemFamily * | itemFamily () override |
Famille associée. | |
bool | exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, ItemGroup item_group, IFunctor *functor) override |
Échange des particules entre sous-domaines. | |
bool | exchangeItems (Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, Int32Array *new_particle_local_ids, IFunctor *functor) override |
Échange des particules entre sous-domaines. | |
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 |
Ajoute nb_particle dans l'échange actuel. | |
void | setVerboseLevel (Integer level) override |
Positionne le niveau de verbosité (0 pour aucune message) | |
Integer | verboseLevel () const override |
Niveau de verbosité | |
IAsyncParticleExchanger * | asyncParticleExchanger () override |
Gestion de l'asynchronisme (retourne nullptr si fonctionnalité non disponible) | |
void | reset () |
![]() | |
ArcaneBasicParticleExchangerObject (const Arcane::ServiceBuildInfo &sbi) | |
Constructeur. | |
virtual | ~ArcaneBasicParticleExchangerObject () |
Destructeur. | |
CaseOptionsBasicParticleExchanger * | options () const |
Options du jeu de données du service. | |
![]() | |
~BasicService () override | |
Libère les ressources. | |
virtual ISubDomain * | subDomain () |
![]() | |
virtual | ~AbstractService () |
Destructeur. | |
virtual IServiceInfo * | serviceInfo () const |
Accès aux informations du service. | |
virtual IBase * | serviceParent () const |
Accès à l'interface de base des principaux objets Arcane. | |
virtual IService * | serviceInterface () |
Retourne l'interface bas niveau IService du service. | |
![]() | |
TraceAccessor (ITraceMng *m) | |
Construit un accesseur via le gestionnaire de trace m. | |
TraceAccessor (const TraceAccessor &rhs) | |
Constructeur par recopie. | |
TraceAccessor & | operator= (const TraceAccessor &rhs) |
Opérateur de recopie. | |
virtual | ~TraceAccessor () |
Libère les ressources. | |
ITraceMng * | traceMng () const |
Gestionnaire de trace. | |
TraceMessage | info () const |
Flot pour un message d'information. | |
TraceMessage | pinfo () const |
Flot pour un message d'information en parallèle. | |
TraceMessage | info (char category) const |
Flot pour un message d'information d'une catégorie donnée. | |
TraceMessage | pinfo (char category) const |
Flot pour un message d'information parallèle d'une catégorie donnée. | |
TraceMessage | info (bool v) const |
Flot pour un message d'information. | |
TraceMessage | warning () const |
Flot pour un message d'avertissement. | |
TraceMessage | pwarning () const |
TraceMessage | error () const |
Flot pour un message d'erreur. | |
TraceMessage | perror () const |
TraceMessage | log () const |
Flot pour un message de log. | |
TraceMessage | plog () const |
Flot pour un message de log. | |
TraceMessage | logdate () const |
Flot pour un message de log précédé de la date. | |
TraceMessage | fatal () const |
Flot pour un message d'erreur fatale. | |
TraceMessage | pfatal () const |
Flot pour un message d'erreur fatale en parallèle. | |
TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
Flot pour un message de debug. | |
Trace::eDebugLevel | configDbgLevel () const |
Niveau debug du fichier de configuration. | |
TraceMessage | info (Int32 verbose_level) const |
Flot pour un message d'information d'un niveau donné | |
TraceMessage | linfo () const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
TraceMessage | linfo (Int32 relative_level) const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
void | fatalMessage (const StandaloneTraceMessage &o) const |
![]() | |
virtual | ~IService () |
Libère les ressources. | |
![]() | |
MeshAccessor (ISubDomain *sd) | |
MeshAccessor (IMesh *mesh) | |
MeshAccessor (const MeshHandle &mesh_handle) | |
Integer | nbCell () const |
Retourne le nombre de mailles du maillage. | |
Integer | nbFace () const |
Retourne le nombre de faces du maillage. | |
Integer | nbEdge () const |
Retourne le nombre d'arêtes du maillage. | |
Integer | nbNode () const |
Retourne le nombre de noeuds du maillage. | |
VariableNodeReal3 & | nodesCoordinates () const |
Retourne les coordonnées des noeuds du maillage. | |
NodeGroup | allNodes () const |
Retourne le groupe contenant tous les noeuds. | |
EdgeGroup | allEdges () const |
Retourne le groupe contenant toutes les arêtes. | |
FaceGroup | allFaces () const |
Retourne le groupe contenant toutes les faces. | |
CellGroup | allCells () const |
Retourne le groupe contenant toutes les mailles. | |
FaceGroup | outerFaces () const |
Retourne le groupe contenant toutes les faces de le frontière. | |
NodeGroup | ownNodes () const |
Retourne le groupe contenant tous les noeuds propres à ce domaine. | |
CellGroup | ownCells () const |
Retourne le groupe contenant toutes les mailles propres à ce domaine. | |
FaceGroup | ownFaces () const |
Groupe contenant toutes les faces propres à ce domaine. | |
EdgeGroup | ownEdges () const |
Groupe contenant toutes les arêtes propres à ce domaine. | |
IMesh * | mesh () const |
const MeshHandle & | meshHandle () const |
![]() | |
CommonVariables (IModule *c) | |
Construit les références des variables communes pour le module c. | |
CommonVariables (IVariableMng *variable_mng) | |
Construit les références des variables communes pour le gestionnaire variable_mng. | |
CommonVariables (ISubDomain *sd) | |
Construit les références des variables communes pour le sous-domaine sd. | |
virtual | ~CommonVariables () |
Libère les ressources. | |
Int32 | globalIteration () const |
Numéro de l'itération courante. | |
Real | globalTime () const |
Temps courant. | |
Real | globalOldTime () const |
Temps courant précédent. | |
Real | globalFinalTime () const |
Temps final de la simulation. | |
Real | globalDeltaT () const |
Delta T courant. | |
Real | globalCPUTime () const |
Temps CPU utilisé (en seconde) | |
Real | globalOldCPUTime () const |
Temps CPU utilisé précédent (en seconde) | |
Real | globalElapsedTime () const |
Temps horloge (elapsed) utilisé (en seconde) | |
Real | globalOldElapsedTime () const |
Temps horloge (elapsed) utilisé précédent (en seconde) | |
Fonctions membres privées | |
void | _clearMessages () |
void | _serializeMessage (ISerializeMessage *sm, Int32ConstArrayView acc_ids, Int64Array &items_to_send_uid, Int64Array &items_to_send_cells_uid) |
void | _deserializeMessage (ISerializeMessage *message, Int64Array &items_to_create_unique_id, Int64Array &items_to_create_cells_unique_id, Int32Array &items_to_create_local_id, Int32Array &items_to_create_cells_local_id, ItemGroup item_group, Int32Array *new_particle_local_ids) |
void | _addItemsToSend (Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send, Int32ConstArrayView communicating_sub_domains, UniqueArray< SharedArray< Int32 > > &ids_to_send) |
void | _sendPendingMessages () |
void | _generateSendItems (Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send) |
void | _checkInitialized () |
bool | _waitMessages (Integer nb_pending_particles, ItemGroup item_group, Int32Array *new_particle_local_ids, IFunctor *functor) |
void | _waitMessages (ItemGroup item_group, Int32Array *new_particle_local_ids, IFunctor *functor) |
Amis | |
class | AsyncParticleExchanger |
Membres hérités additionnels | |
![]() | |
template<typename ServiceClassType> | |
static void | fillServiceInfo (Arcane::ServiceInfo *si) |
![]() | |
VariableScalarInt32 | m_global_iteration |
Itération courante. | |
VariableScalarReal | m_global_time |
Temps actuel. | |
VariableScalarReal | m_global_deltat |
Delta T global. | |
VariableScalarReal | m_global_old_time |
Temps précédent le temps actuel. | |
VariableScalarReal | m_global_old_deltat |
Delta T au temps précédent le temps global. | |
VariableScalarReal | m_global_final_time |
Temps final du cas. | |
VariableScalarReal | m_global_old_cpu_time |
Temps précédent CPU utilisé (en seconde) | |
VariableScalarReal | m_global_cpu_time |
Temps CPU utilisé (en seconde) | |
VariableScalarReal | m_global_old_elapsed_time |
Temps précédent horloge utilisé (en seconde) | |
VariableScalarReal | m_global_elapsed_time |
Temps horloge utilisé (en seconde) | |
![]() | |
BasicService (const ServiceBuildInfo &) | |
![]() | |
AbstractService (const ServiceBuildInfo &) | |
Constructeur à partir d'un ServiceBuildInfo. | |
![]() | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
![]() | |
IService () | |
Constructeur. | |
Echangeur de particules basique (utilise une réduction bloquante).
Définition à la ligne 62 du fichier BasicParticleExchanger.h.
|
explicit |
Définition à la ligne 38 du fichier BasicParticleExchanger.cc.
|
override |
Définition à la ligne 47 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 272 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 619 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 80 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 524 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 198 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 428 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 452 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 339 du fichier BasicParticleExchanger.cc.
|
private |
Définition à la ligne 382 du fichier BasicParticleExchanger.cc.
|
overridevirtual |
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.
Implémente Arcane::IParticleExchanger.
Définition à la ligne 609 du fichier BasicParticleExchanger.cc.
|
inlineoverridevirtual |
Gestion de l'asynchronisme (retourne nullptr si fonctionnalité non disponible)
Implémente Arcane::IParticleExchanger.
Définition à la ligne 99 du fichier BasicParticleExchanger.h.
|
overridevirtual |
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.
Implémente Arcane::IParticleExchanger.
Définition à la ligne 91 du fichier BasicParticleExchanger.cc.
Références Arcane::IParallelMng::computeMinMaxSum(), Arcane::platform::getCurrentDateTime(), Arcane::TraceAccessor::info(), m_max_nb_message_without_reduce, m_variables_to_exchange, et Arcane::ArcaneBasicParticleExchangerObject::options().
|
inlineoverridevirtual |
Construction de niveau build du service.
L'appel à build est effectué au moment de sa construction, usuellement au niveau de sa lecture dans les options en phase1.
Réimplémentée à partir de Arcane::AbstractService.
Définition à la ligne 74 du fichier BasicParticleExchanger.h.
|
overridevirtual |
É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.
a true si toutes les phases d'échange sont terminés
a false sinon
Implémente Arcane::IParticleExchanger.
Définition à la ligne 179 du fichier BasicParticleExchanger.cc.
Références Arcane::Array< DataType >::clear(), et sendItems().
|
overridevirtual |
É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.
a true si toutes les phases d'échange sont terminés
a false sinon
Implémente Arcane::IParticleExchanger.
Définition à la ligne 160 du fichier BasicParticleExchanger.cc.
Références Arcane::ItemGroup::clear(), Arcane::ItemGroup::null(), et sendItems().
|
overridevirtual |
Initialize l'échangeur pour la familly item_family.
Implémente Arcane::IParticleExchanger.
Définition à la ligne 60 du fichier BasicParticleExchanger.cc.
Références ARCANE_CHECK_POINTER, Arcane::IParallelMng::commRank(), Arcane::TraceAccessor::info(), m_max_nb_message_without_reduce, m_timer, Arcane::IItemFamily::mesh(), Arcane::IItemFamily::name(), Arcane::ArcaneBasicParticleExchangerObject::options(), Arcane::IMesh::parallelMng(), et Arcane::Timer::TimerReal.
|
inlineoverridevirtual |
Famille associée.
Implémente Arcane::IParticleExchanger.
Définition à la ligne 80 du fichier BasicParticleExchanger.h.
void Arcane::mesh::BasicParticleExchanger::reset | ( | ) |
Définition à la ligne 598 du fichier BasicParticleExchanger.cc.
|
overridevirtual |
Implémente Arcane::IParticleExchanger.
Définition à la ligne 140 du fichier BasicParticleExchanger.cc.
Références Arcane::TraceAccessor::info(), m_timer, et Arcane::ConstArrayView< T >::size().
Référencé par exchangeItems(), et exchangeItems().
|
inlineoverridevirtual |
Positionne le niveau de verbosité (0 pour aucune message)
Implémente Arcane::IParticleExchanger.
Définition à la ligne 97 du fichier BasicParticleExchanger.h.
|
inlineoverridevirtual |
Niveau de verbosité
Implémente Arcane::IParticleExchanger.
Définition à la ligne 98 du fichier BasicParticleExchanger.h.
|
overridevirtual |
Implémente Arcane::IParticleExchanger.
Définition à la ligne 330 du fichier BasicParticleExchanger.cc.
|
friend |
Définition à la ligne 65 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 109 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 135 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 140 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 131 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 107 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 136 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 134 du fichier BasicParticleExchanger.h.
|
private |
Nombre maximum de messages à envoyer avant de faire la réduction sur le nombre de particules. Si (-1) alors pas de limite.
Définition à la ligne 148 du fichier BasicParticleExchanger.h.
Référencé par beginNewExchange(), et initialize().
|
private |
Définition à la ligne 127 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 132 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 137 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 129 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 108 du fichier BasicParticleExchanger.h.
|
private |
Liste des message en attente d'envoie.
Définition à la ligne 122 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 133 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 111 du fichier BasicParticleExchanger.h.
|
private |
Numéro du message. Utile pour le débug.
Définition à la ligne 142 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 114 du fichier BasicParticleExchanger.h.
Référencé par initialize(), et sendItems().
|
private |
Définition à la ligne 115 du fichier BasicParticleExchanger.h.
|
private |
Définition à la ligne 116 du fichier BasicParticleExchanger.h.
|
private |
Liste des variables à échanger.
Définition à la ligne 119 du fichier BasicParticleExchanger.h.
Référencé par beginNewExchange().
|
private |
Définition à la ligne 139 du fichier BasicParticleExchanger.h.
|
private |
Liste des message envoyés mais en cours de traitement.
Définition à la ligne 125 du fichier BasicParticleExchanger.h.