Arcane  v3.14.10.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-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/* IMeshPartitioner.h (C) 2000-2014 */
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/IMeshPartitionerBase.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class IMesh;
28class ILoadBalanceMng;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \brief Interface d'un partitionneur de maillage.
34 *
35 * Le partitionneur réaffecte les propriétaires des entités.
36 * Il n'effectue pas directement l'échange d'entité.
37 * Le partitionneur peut utiliser certaines informations comme
38 * le timeRatio() ou imbalance() pour calculer un partionnement efficace.
39 */
40class ARCANE_CORE_EXPORT IMeshPartitioner
42{
43 public:
44
45 virtual ~IMeshPartitioner() {} //!< Libère les ressources.
46
47 public:
48
49 virtual void build() =0;
50
51 public:
52
53 using IMeshPartitionerBase::partitionMesh;
54
55 virtual void partitionMesh(bool initial_partition,Int32 nb_part) =0;
56
57 //! Maillage associé au partitionneur
58 ARCCORE_DEPRECATED_2021("Use primaryMesh() instead")
59 virtual IMesh* mesh() const =0;
60
61 //! Maillage associé
62 virtual IPrimaryMesh* primaryMesh() override;
63
64 public:
65
66 /*!{ \name compact
67 *
68 * Proportion du temps de calcul de ce sous-domaine par rapport à celui
69 * du sous-domaine qui à le temps de calcul de plus élevé.
70 */
71 //! Positionne la proportion du temps de calcul
72 //virtual void setTimeRatio(Real v) =0;
73 //! Proportion du temps de calcul
74 //virtual Real timeRatio() const =0;
75 //@}
76
77 //! Temps de calcul du sous-domaine le plus chargé
78 virtual ARCANE_DEPRECATED_116 void setMaximumComputationTime(Real v) =0;
79 virtual ARCANE_DEPRECATED_116 Real maximumComputationTime() const =0;
80
81 /*! \brief Temps de calcul de se sous-domaine.
82 * Le premier élément indique le temps de calcul du sous-domaine
83 * correspondante aux calcul dont le cout est proportionnel aux mailles.
84 * Les suivants doivent être associées à une variable (à faire).
85 */
86 virtual ARCANE_DEPRECATED_116 void setComputationTimes(RealConstArrayView v) =0;
87 virtual ARCANE_DEPRECATED_116 RealConstArrayView computationTimes() const =0;
88
89 /*!@{ \name imbalance
90 *
91 * Déséquilibre de temps calcul. Il est calculé comme suit
92 * imbalance = (max_computation_time - min_computation_time) / min_computation_time;
93 */
94 //! Positionne le déséquilibre de temps de calcul
95 virtual void setImbalance(Real v) =0;
96 //! Déséquilibre de temps de calcul
97 virtual Real imbalance() const =0;
98 //@}
99
100 //! Positionne le déséquilibre maximal autorisé
101 virtual void setMaxImbalance(Real v) =0;
102 //! Déséquilibre maximal autorisé
103 virtual Real maxImbalance() const =0;
104
105 //! Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant.
106 virtual ARCANE_DEPRECATED_116 void setCellsWeight(ArrayView<float> weights,Integer nb_weight) =0;
107 virtual ARCANE_DEPRECATED_116 ArrayView<float> cellsWeight() const =0;
108
109 //! Change le ILoadBalanceMng à utiliser.
110 virtual void setILoadBalanceMng(ILoadBalanceMng* mng) =0;
111 virtual ILoadBalanceMng* loadBalanceMng() const =0;
112};
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116
117ARCANE_END_NAMESPACE
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122#endif
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 ~IMeshPartitioner()
Libère les ressources.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.