Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
GhostLayerFromConnectivityComputer.cc
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/* ReplicatedGhostDoFBuilder.cc (C) 2000-2017 */
9/* */
10/* Implémentation d'une politique de création de fantômes pour une connectivité */
11/*------------------------------------------------------------------------------*/
12/*------------------------------------------------------------------------------*/
13
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "GhostLayerFromConnectivityComputer.h"
18#include "arcane/IItemFamily.h"
19#include "arcane/IParallelMng.h"
20#include "arcane/IVariableSynchronizer.h"
21
22#include <algorithm>
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27Arcane::GhostLayerFromConnectivityComputer::
28GhostLayerFromConnectivityComputer(IItemConnectivity* item_to_dofs)
29 : m_connectivity(item_to_dofs)
30 , m_trace_mng(m_connectivity->sourceFamily()->traceMng())
31{
32 _computeSharedItems();
33}
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
37
38void
39Arcane::GhostLayerFromConnectivityComputer::
40_computeSharedItems()
41{
42 m_shared_items.clear();
43 m_shared_items_connected_items.clear();
44 // Politique : les shared items de la famille To sont ceux qui sont connectés aux shared de la famille from
45 // Attention ici le tableau shared items contient des items de la famille To family
46 Arcane::IItemFamily* item_family = m_connectivity->sourceFamily();
47 Arcane::IVariableSynchronizer* synchronizer = item_family->allItemsSynchronizer();
49 m_shared_items.resize(synchronizer->parallelMng()->commSize());
50 m_shared_items_connected_items.resize(synchronizer->parallelMng()->commSize());
51
52 for (Arcane::Integer i = 0; i < ranks.size(); ++i){
55 Arcane::Int32Array& shared_items = m_shared_items[ranks[i]];
56 Arcane::Int32Array& shared_items_connected_items = m_shared_items_connected_items[ranks[i]];
57
60 shared_items.add(to_family_item.localId());
62 }
63 }
64 }
65}
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69
70void
73{
74 // Very simple case : ghost_items are connected to the items to witch they where connected in their owner
75 // => ghost_items_connected items are present as ghost item in the current sub-domain
77 bool do_fatal = true;
80}
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
88{
89 return m_connectivity->sourceFamily()->allItemsSynchronizer()->communicatingRanks();
90}
91
92
93/*---------------------------------------------------------------------------*/
94/*---------------------------------------------------------------------------*/
95
98sharedItems(const Integer rank, const String& family_name)
99{
100 ARCANE_ASSERT((family_name == m_connectivity->targetFamily()->name()),
101 (String::format("Error : asking shared item for the family {0} that is not the ToFamily ({1}) of the connectivity",family_name,m_connectivity->targetFamily()->name()).localstr()))
102 _computeSharedItems();
103 return m_shared_items[rank];
104}
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
111sharedItemsConnectedItems(const Integer rank, const String& family_name)
112{
113 ARCANE_ASSERT((family_name == m_connectivity->sourceFamily()->name()),
114 (String::format("Error : asking shared item connected items for the family {0} that is not the FromFamily ({1}) of the connectivity",family_name,m_connectivity->sourceFamily()->name()).localstr()))
115 return m_shared_items_connected_items[rank];
116}
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
#define ENUMERATE_ITEM(name, group)
Enumérateur générique d'un groupe de noeuds.
Tableau d'items de types quelconques.
Gère la récupération des informations de connectivité.
Int32ConstArrayView sharedItems(const Integer rank, const String &family_name)
donne les local_ids des items de la famille family_name partagés pour la connectivité avec le process...
void updateConnectivity(Int32ConstArrayView ghost_items, Int64ConstArrayView ghost_items_connected_items)
mets à jour la connectivité en connectant les items fantômes ajoutés..
Int32ConstArrayView sharedItemsConnectedItems(const Integer rank, const String &family_name)
donne les local_ids des items de la famille family_name connectés avec les sharedItems(rank).
Int32ConstArrayView communicatingRanks()
Interface IItemConnectivityGhostPolicy.
Interface pour gérer une connectivité.
virtual IItemFamily * targetFamily() const =0
Famille cible.
virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items)=0
Mise à jour de la connectivité.
virtual IItemFamily * sourceFamily() const =0
Famille source.
Interface d'une famille d'entités.
Interface d'un service de synchronisation de variable.
virtual Int32ConstArrayView communicatingRanks()=0
Rangs des sous-domaines avec lesquels on communique.
virtual IParallelMng * parallelMng()=0
Gestionnaire parallèle associé
virtual Int32ConstArrayView sharedItems(Int32 index)=0
Liste des ids locaux des entités partagées avec un sous-domaine.
Vue sur un vecteur d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par référence.
Chaîne de caractères unicode.