Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
AlephTopology.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* AlephTopology.h (C) 2000-2024 */
9/* */
10/*---------------------------------------------------------------------------*/
11#ifndef ALEPH_TOPOLOGY_H
12#define ALEPH_TOPOLOGY_H
13/*---------------------------------------------------------------------------*/
14/*---------------------------------------------------------------------------*/
15
16#include "arcane/aleph/AlephGlobal.h"
17
18#include "arcane/utils/TraceAccessor.h"
19#include "arcane/utils/Array.h"
20#include "arcane/utils/FatalErrorException.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33class ARCANE_ALEPH_EXPORT AlephTopology
34: public TraceAccessor
35{
36 public:
37
38 explicit AlephTopology(AlephKernel*);
39 AlephTopology(ITraceMng*, AlephKernel*, Integer, Integer);
40 virtual ~AlephTopology();
41
42 public:
43 void create(Integer);
44 void setRowNbElements(IntegerConstArrayView row_nb_element);
45 IntegerConstArrayView ptr_low_up_array();
47 IParallelMng* parallelMng();
48 void rowRange(Integer& min_row, Integer& max_row);
49
50 private:
51 inline void checkForInit()
52 {
53 if (m_has_been_initialized == false)
54 throw FatalErrorException("AlephTopology::create", "Has not been yet initialized!");
55 }
56
57 public:
58 Integer rowLocalRange(const Integer);
59 AlephKernel* kernel(void) { return m_kernel; }
60 Integer nb_row_size(void)
61 { /*checkForInit();*/
62 return m_nb_row_size;
63 }
64 Integer nb_row_rank(void)
65 {
66 checkForInit();
67 return m_nb_row_rank;
68 }
69 AlephInt gathered_nb_row(Integer i)
70 {
71 checkForInit();
72 return m_gathered_nb_row[i];
73 }
74 ArrayView<AlephInt> gathered_nb_row_elements(void)
75 {
76 checkForInit();
77 return m_gathered_nb_row_elements;
78 }
79 ArrayView<AlephInt> gathered_nb_setValued(void)
80 {
81 checkForInit();
82 return m_gathered_nb_setValued;
83 }
84 AlephInt gathered_nb_setValued(Integer i)
85 {
86 checkForInit();
87 return m_gathered_nb_setValued[i];
88 }
89 bool hasSetRowNbElements(void) { return m_has_set_row_nb_elements; }
90
91 private:
92 AlephKernel* m_kernel;
93 Integer m_nb_row_size; // Nombre de lignes de la matrice réparties sur l'ensemble
94 Integer m_nb_row_rank; // Nombre de lignes de la matrice vue de mon rang
95 UniqueArray<AlephInt> m_gathered_nb_row; // Indices des lignes par CPU
96 UniqueArray<AlephInt> m_gathered_nb_row_elements; // nombre d'éléments par ligne
97 UniqueArray<AlephInt> m_gathered_nb_setValued; // nombre d'éléments setValué par CPU
98 bool m_created;
99 bool m_has_set_row_nb_elements;
100 bool m_has_been_initialized;
101};
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106ARCANE_END_NAMESPACE
107
108/*---------------------------------------------------------------------------*/
109/*---------------------------------------------------------------------------*/
110
111#endif
Informations sur l'environnement parallèle.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
Exception lorsqu'une erreur fatale est survenue.
Interface du gestionnaire de traces.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-