Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMeshPartitioner.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* IMeshPartitioner.h (C) 2000-2025 */
9/* */
10/* Interface d'un partitionneur de maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMESHPARTITIONER_H
13#define ARCANE_IMESHPARTITIONER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/IMeshPartitionerBase.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Interface d'un partitionneur de maillage.
29 *
30 * Le partitionneur réaffecte les propriétaires des entités.
31 * Il n'effectue pas directement l'échange d'entité.
32 * Le partitionneur peut utiliser certaines informations comme
33 * le timeRatio() ou imbalance() pour calculer un partionnement efficace.
34 */
35class ARCANE_CORE_EXPORT IMeshPartitioner
37{
38 public:
39
40 virtual void build() = 0;
41
42 public:
43
45
46 virtual void partitionMesh(bool initial_partition, Int32 nb_part) = 0;
47
48 //! Maillage associé au partitionneur
49 ARCCORE_DEPRECATED_2021("Use primaryMesh() instead")
50 virtual IMesh* mesh() const = 0;
51
52 //! Maillage associé
53 virtual IPrimaryMesh* primaryMesh() override;
54
55 public:
56
57 /*!{ \name compact
58 *
59 * Proportion du temps de calcul de ce sous-domaine par rapport à celui
60 * du sous-domaine qui à le temps de calcul de plus élevé.
61 */
62 //! Positionne la proportion du temps de calcul
63 //virtual void setTimeRatio(Real v) =0;
64 //! Proportion du temps de calcul
65 //virtual Real timeRatio() const =0;
66 //@}
67
68 //! Temps de calcul du sous-domaine le plus chargé
69 virtual ARCANE_DEPRECATED_116 void setMaximumComputationTime(Real v) = 0;
70 virtual ARCANE_DEPRECATED_116 Real maximumComputationTime() const = 0;
71
72 /*! \brief Temps de calcul de se sous-domaine.
73 * Le premier élément indique le temps de calcul du sous-domaine
74 * correspondante aux calcul dont le cout est proportionnel aux mailles.
75 * Les suivants doivent être associées à une variable (à faire).
76 */
77 virtual ARCANE_DEPRECATED_116 void setComputationTimes(RealConstArrayView v) = 0;
78 virtual ARCANE_DEPRECATED_116 RealConstArrayView computationTimes() const = 0;
79
80 /*!@{ \name imbalance
81 *
82 * Déséquilibre de temps calcul. Il est calculé comme suit
83 * imbalance = (max_computation_time - min_computation_time) / min_computation_time;
84 */
85 //! Positionne le déséquilibre de temps de calcul
86 virtual void setImbalance(Real v) = 0;
87 //! Déséquilibre de temps de calcul
88 virtual Real imbalance() const = 0;
89 //@}
90
91 //! Positionne le déséquilibre maximal autorisé
92 virtual void setMaxImbalance(Real v) = 0;
93 //! Déséquilibre maximal autorisé
94 virtual Real maxImbalance() const = 0;
95
96 //! Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant.
97 virtual ARCANE_DEPRECATED_116 void setCellsWeight(ArrayView<float> weights, Integer nb_weight) = 0;
98 virtual ARCANE_DEPRECATED_116 ArrayView<float> cellsWeight() const = 0;
99
100 //! Change le ILoadBalanceMng à utiliser.
101 virtual void setILoadBalanceMng(ILoadBalanceMng* mng) = 0;
102 virtual ILoadBalanceMng* loadBalanceMng() const = 0;
103};
104
105/*---------------------------------------------------------------------------*/
106/*---------------------------------------------------------------------------*/
107
108} // namespace Arcane
109
110/*---------------------------------------------------------------------------*/
111/*---------------------------------------------------------------------------*/
112
113#endif
Vue modifiable d'un tableau d'un type T.
Interface d'enregistrement des variables pour l'equilibrage de charge.
Interface d'un partitionneur de maillage.
virtual void partitionMesh(bool initial_partition)=0
Interface d'un partitionneur de maillage.
virtual ARCANE_DEPRECATED_116 void setComputationTimes(RealConstArrayView v)=0
Temps de calcul de se sous-domaine. Le premier élément indique le temps de calcul du sous-domaine cor...
virtual void setImbalance(Real v)=0
Positionne le déséquilibre de temps de calcul.
virtual IMesh * mesh() const =0
Maillage associé au partitionneur.
virtual Real imbalance() const =0
Déséquilibre de temps de calcul.
virtual void setILoadBalanceMng(ILoadBalanceMng *mng)=0
Change le ILoadBalanceMng à utiliser.
virtual IPrimaryMesh * primaryMesh() override
Maillage associé
virtual Real maxImbalance() const =0
Déséquilibre maximal autorisé
virtual ARCANE_DEPRECATED_116 void setCellsWeight(ArrayView< float > weights, Integer nb_weight)=0
Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenan...
virtual ARCANE_DEPRECATED_116 void setMaximumComputationTime(Real v)=0
Positionne la proportion du temps de calcul.
virtual void setMaxImbalance(Real v)=0
Positionne le déséquilibre maximal autorisé
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.
ConstArrayView< Real > RealConstArrayView
Equivalent C d'un tableau à une dimension de réels.
Definition UtilsTypes.h:575