Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMeshPartitionConstraintMng.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/* IMeshPartitionConstraintMng.h (C) 2000-2009 */
9/* */
10/* Interface d'un gestionnaire de contraintes de partitionnement de maillage.*/
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMESHPARTITIONCONSTRAINTMNG_H
13#define ARCANE_IMESHPARTITIONCONSTRAINTMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class IMeshPartitionConstraint;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \brief Interface d'un gestionnaire de contraintes
33 * de partitionnement de maillage.
34 */
36{
37 public:
38
39 virtual ~IMeshPartitionConstraintMng() {} //<! Libère les ressources
40
41 public:
42
43 //! Ajoute une contrainte
44 virtual void addConstraint(IMeshPartitionConstraint* constraint) =0;
45
46 /*!
47 * \brief Supprime une contrainte.
48 *
49 * L'appelant devient propriétaire de \a constraint et doit
50 * gérer sa destruction.
51 */
52 virtual void removeConstraint(IMeshPartitionConstraint* constraint) =0;
53
54 /*!
55 * \brief Calcule et applique des contraintes.
56 *
57 * Calcule les contraintes sur le maillage en appliquant
58 * pour chaque contrainte la méthode IMeshPartitionConstraint::addLinkedCell()
59 * et les applique en modifiant la variable IItemFamily::itemsNewOwner()
60 * des mailles. Toutes les mailles qui doivent être liées en elle sont
61 * alors mises dans une même partition.
62 *
63 * Cette opération ne garantit pas que les partitions résultantes soient
64 * équilibrées au niveau de la charge. Pour cela,
65 * il faut utiliser un service de repartionnement (IMeshPartitioner)
66 * qui prennent en compte ces contraintes.
67 *
68 * Cette opération est collective.
69 */
70 virtual void computeAndApplyConstraints() =0;
71
72 /*!
73 * \brief Calcule les contraintes et retourne une liste d'entités liées.
74 *
75 * Calcule les contraintes comme pour computeAndApplyConstraints()
76 * mais ne modifie pas le propriétaire. A la place, retourne une
77 * liste contenant les listes des uniqueId() des entités qui doivent
78 * être liées.
79 *
80 * Cette opération est collective.
81 */
82 virtual void computeConstraintList(Int64MultiArray2 & tied_uids) =0;
83
84 //! Ajoute une contrainte
85 virtual void addWeakConstraint(IMeshPartitionConstraint* constraint) =0;
86
87 /*!
88 * \brief Supprime une contrainte.
89 *
90 * L'appelant devient propriétaire de \a constraint et doit
91 * gérer sa destruction.
92 */
93 virtual void removeWeakConstraint(IMeshPartitionConstraint* constraint) =0;
94
95 /*!
96 * \brief Calcule et applique des contraintes.
97 *
98 * Calcule les contraintes sur le maillage en appliquant
99 * pour chaque contrainte la méthode IMeshPartitionConstraint::addLinkedCell()
100 * et les applique en modifiant la variable IItemFamily::itemsNewOwner()
101 * des mailles. Toutes les mailles qui doivent être liées en elle sont
102 * alors mises dans une même partition.
103 *
104 * Cette opération ne garantit pas que les partitions résultantes soient
105 * équilibrées au niveau de la charge. Pour cela,
106 * il faut utiliser un service de repartionnement (IMeshPartitioner)
107 * qui prennent en compte ces contraintes.
108 *
109 * Cette opération est collective.
110 */
112
113 /*!
114 * \brief Calcule les contraintes et retourne une liste d'entités liées.
115 *
116 * Calcule les contraintes comme pour computeAndApplyConstraints()
117 * mais ne modifie pas le propriétaire. A la place, retourne une
118 * liste contenant les listes des uniqueId() des entités qui doivent
119 * être liées.
120 *
121 * Cette opération est collective.
122 */
123 virtual void computeWeakConstraintList(Int64MultiArray2 & tied_uids) =0;
124};
125
126/*---------------------------------------------------------------------------*/
127/*---------------------------------------------------------------------------*/
128
129ARCANE_END_NAMESPACE
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134#endif
Interface d'un gestionnaire de contraintes de partitionnement de maillage.
virtual void addConstraint(IMeshPartitionConstraint *constraint)=0
Ajoute une contrainte.
virtual void computeWeakConstraintList(Int64MultiArray2 &tied_uids)=0
Calcule les contraintes et retourne une liste d'entités liées.
virtual void removeConstraint(IMeshPartitionConstraint *constraint)=0
Supprime une contrainte.
virtual void addWeakConstraint(IMeshPartitionConstraint *constraint)=0
Ajoute une contrainte.
virtual void computeAndApplyConstraints()=0
Calcule et applique des contraintes.
virtual void computeAndApplyWeakConstraints()=0
Calcule et applique des contraintes.
virtual void computeConstraintList(Int64MultiArray2 &tied_uids)=0
Calcule les contraintes et retourne une liste d'entités liées.
virtual void removeWeakConstraint(IMeshPartitionConstraint *constraint)=0
Supprime une contrainte.
Interface d'une contrainte de partitionnement d'un maillage.
MultiArray2< Int64 > Int64MultiArray2
Tableau 2D a taille variable d'entiers 64 bits.
Definition UtilsTypes.h:577