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