Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IGridMeshPartitioner.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/* IGridMeshPartitioner.h (C) 2000-2021 */
9/* */
10/* Interface d'un partitionneur de maillage sur une grille. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IGRIDMESHPARTITIONER_H
13#define ARCANE_IGRIDMESHPARTITIONER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/IMeshPartitionerBase.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Interface d'un partitionneur de maillage sur une grille.
29 *
30 * Ce partitionneur redistribue le maillage dans une grille 2D ou 3D.
31 *
32 * La grille est composée d'un ensemble de partie, chaque partie étant
33 * définie par sa boite englobante (les coordonnées des deux
34 * points aux extrémités de la grille) et un indice (i,j,k). Les
35 * dimensions de chaque partie peuvent être différentes mais elles
36 * doivent être conformes: toutes les parties d'indice \a i identiques
37 * doivent avoir la même coordonnée \a x de boite englobante.
38 *
39 * ------------------------
40 * | 0,2 | 1,2 |2,2| 3,2 |
41 * ------------------------
42 * | 0,1 | 1,1 |2,1| 3,1 |
43 * ------------------------
44 * | 0,0 | 1,0 |2,0| 3,0 |
45 * ------------------------
46 *
47 * Les instances de cette classe sont à usage unique et ne doivent être utilisées
48 * que pour un seul partitionnement. L'utilisateur doit appeler setBoundingBox()
49 * et setPartIndex() et ensuite effectuer le partitionnement par l'appel à
50 * applyMeshPartitioning().
51 */
52class ARCANE_CORE_EXPORT IGridMeshPartitioner
53// TODO: supprimer l'héritage de cette interface
55{
56 public:
57
58 /*!
59 * \brief Positionne la bounding box de notre sous-domaine.
60 *
61 * Pour que l'algorithme fonctionne, il ne faut pas de recouvrement
62 * entre les bounding box des sous-domaines.
63 */
64 virtual void setBoundingBox(Real3 min_val, Real3 max_val) = 0;
65
66 /*!
67 * \brief Indice (i,j,k) de la partie.
68 *
69 * Les indices commencent à zéro. En 1D ou 2D, la valeur de \a k vaut \a
70 * (-1). En 1D, la valeur de \a j vaut \a (-1)
71 */
72 virtual void setPartIndex(Int32 i, Int32 j, Int32 k) = 0;
73
74 /*!
75 * \brief Applique le repartitionnement sur le maillage \a mesh.
76 *
77 * Les méthodes setPartIndex() et setBoundingBox() doivent avoir été
78 * appelées auparavant. Cette méthode ne peut être appelée qu'une seule
79 * fois par instance.
80 *
81 * Le partitionement utilise un algorithme spécique de
82 * calcul des mailles fantômes pour garantir que chaque maille de \a mesh
83 * qui intersecte la partie spécifiée dans setBoundingBox() sera dans
84 * ce sous-domaine, éventuellement en tant que maille fantôme.
85 */
86 virtual void applyMeshPartitioning(IMesh* mesh) =0;
87};
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92} // End namespace Arcane
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97#endif
Interface d'un partitionneur de maillage sur une grille.
virtual void setBoundingBox(Real3 min_val, Real3 max_val)=0
Positionne la bounding box de notre sous-domaine.
virtual void applyMeshPartitioning(IMesh *mesh)=0
Applique le repartitionnement sur le maillage mesh.
virtual void setPartIndex(Int32 i, Int32 j, Int32 k)=0
Indice (i,j,k) de la partie.
Interface d'un partitionneur de maillage.
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-