Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AsyncParticleExchanger.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* AsyncParticleExchanger.h (C) 2000-2021 */
9/* Author : Hugo Taboada */
10/*---------------------------------------------------------------------------*/
11
12#include "arcane/mesh/BasicParticleExchanger.h"
13
14#include "arcane/IAsyncParticleExchanger.h"
15
16/*---------------------------------------------------------------------------*/
17/*---------------------------------------------------------------------------*/
18
19namespace Arcane::mesh
20{
21
23: public BasicService
24, public IParticleExchanger
26{
27
28 //Constructors and destructors
29 public:
31 ~AsyncParticleExchanger() override;
32
33 //IParticleExchanger.h interface
34 public:
35 void build() override;
36 void initialize(IItemFamily* item_family) override;
37 void beginNewExchange(Integer nb_particule) override;
42 IFunctor* functor) override;
47 IFunctor* functor) override;
53 IFunctor* functor) override;
54 void addNewParticles(Integer nb_particle) override;
55 IItemFamily* itemFamily() override;
56 void setVerboseLevel(Integer level) override;
57 Integer verboseLevel() const override;
59
60 //IAsyncParticleExchanger.h interface
61 public:
62
63 bool exchangeItemsAsync(Integer nb_particle_finish_exchange,
67 IFunctor* functor,
68 bool has_local_flying_particles) override;
69
70 //Private member variables including bpe that is a composition with BasicParticleExchanger class.
71 private:
72
74 Integer m_nb_particle_send_before_reduction = 0;
75 Integer m_nb_particle_send_before_reduction_tmp = 0;
76 Integer m_sum_of_nb_particle_sent = 0; //Somme des particules envoyé calculé dans la condition d'arrêt du mode asynchrone
77 UniqueArray<Parallel::Request> m_reduce_requests; //Ce tableau doit avoir qu'une seule requête à la fois
78
79 //Private functions used by internal implementation of AsyncParticleExchanger
80 private:
81
83 //bool _waitSomeMessages(Integer nb_pending_particles, ItemGroup item_group, Int32Array* new_particle_local_ids);
84 bool _waitSomeMessages(ItemGroup item_group, Int32Array* new_particle_local_ids);
85};
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90} // namespace Arcane::mesh
Tableau d'items de types quelconques.
Classe de base de service lié à un sous-domaine.
Interface d'un échangeur de particules asynchrone.
Interface d'une famille d'entités.
Interface d'un échangeur de particules.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Structure contenant les informations pour créer un service.
bool waitMessages(Integer nb_pending_particles, Int32Array *new_particle_local_ids, IFunctor *functor) override
void setVerboseLevel(Integer level) override
Positionne le niveau de verbosité (0 pour aucune message)
void sendItems(Integer nb_particle_finish_exchange, Int32ConstArrayView local_ids, Int32ConstArrayView sub_domains_to_send) override
void initialize(IItemFamily *item_family) override
Initialize l'échangeur pour la familly item_family.
IAsyncParticleExchanger * asyncParticleExchanger() override
Gestion de l'asynchronisme (retourne nullptr si fonctionnalité non disponible)
void build() override
Construction de niveau build du service.
void beginNewExchange(Integer nb_particule) override
Commence un nouvel échange de particules.
void addNewParticles(Integer nb_particle) override
Ajoute nb_particle dans l'échange actuel.
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.
Integer verboseLevel() const override
Niveau de verbosité
IItemFamily * itemFamily() override
Famille associée.
Echangeur de particules basique (utilise une réduction bloquante).
Vue constante d'un tableau de type T.