Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
MeshBuildInfo.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* MeshBuildInfo.h (C) 2000-2023 */
9/* */
10/* Informations pour construire un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESHBUILDINFO_H
13#define ARCANE_MESHBUILDINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18
19#include "arcane/core/IParallelMng.h"
20#include "arcane/core/ItemGroup.h"
21#include "arcane/core/MeshKind.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \brief Paramètres nécessaires à la construction d'un maillage.
33 *
34 * Seul le nom (name()) est indispensable. Les autres paramètres sont
35 * optionnels suivant le type de création qu'on souhaite. S'il ne sont pas
36 * définit et utiles, une valeur par défaut sera utilisée.
37 *
38 * Il existe deux possibilités de création:
39 *
40 * - création d'un nouveau maillage. Dans ce cas il est nécessaire de spécifier
41 * le \a IParallelMng associé via addParallelMng().
42 * - création d'un sous-maillage d'un maillage existant. Dans ce cas il
43 * est nécessaire de positionner le groupe via addItemGroup(). Le
44 * IParallelMng associé est nécessairement celui du maillage parent. Le
45 * sous-maillage créé comprendra les mailles de ce groupe.
46 */
47class ARCANE_CORE_EXPORT MeshBuildInfo
48{
49 public:
50
51 /*!
52 * \brief Construit un maillage par défaut avec pour nom \a name.
53 */
54 explicit MeshBuildInfo(const String& name);
55
56 public:
57
58 //! Positionne le nom de la fabrique pour créer ce maillage
59 MeshBuildInfo& addFactoryName(const String& factory_name);
60 //! Positionne le gestionnaire de parallélisme pour créér la maillage
61 MeshBuildInfo& addParallelMng(Ref<IParallelMng> pm);
62 //! Positionne le groupe de mailles pour un sous-maillage
63 MeshBuildInfo& addParentGroup(const ItemGroup& parent_group);
64 /*!
65 * \brief Indique si le générateur nécessite d'appeler un partitionneur.
66 *
67 * C'est le cas par exemple si le lecteur ne sait générer que des maillages
68 * séquentiels.
69 */
70 MeshBuildInfo& addNeedPartitioning(bool v);
71
72 //! Positionne les caractéristiques du maillage
73 MeshBuildInfo& addMeshKind(const MeshKind& v);
74
75 //! Nom du nouveau maillage
76 const String& name() const { return m_name; }
77 //! Nom de la fabrique pour créer le maillage (via IMeshFactory)
78 const String& factoryName() const { return m_factory_name; }
79 //! Gestionnaire de parallélisme dans le cas d'un nouveau maillage.
80 Ref<IParallelMng> parallelMngRef() const { return m_parallel_mng; }
81 //! Groupe parent dans le cas d'un sous-maillage, null sinon.
82 const ItemGroup& parentGroup() const { return m_parent_group; }
83 //! Indique si le lecteur/générateur nécessite un partitionnement
84 bool isNeedPartitioning() const { return m_is_need_partitioning; }
85 //! Caractéristiques du maillage
86 const MeshKind meshKind() const { return m_mesh_kind; }
87
88 private:
89
90 String m_name;
91 String m_factory_name;
92 Ref<IParallelMng> m_parallel_mng;
93 ItemGroup m_parent_group;
94 bool m_is_need_partitioning = false;
95 MeshKind m_mesh_kind;
96};
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101} // End namespace Arcane
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106#endif
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Paramètres nécessaires à la construction d'un maillage.
const String & name() const
Nom du nouveau maillage.
const ItemGroup & parentGroup() const
Groupe parent dans le cas d'un sous-maillage, null sinon.
const MeshKind meshKind() const
Caractéristiques du maillage.
bool isNeedPartitioning() const
Indique si le lecteur/générateur nécessite un partitionnement.
Ref< IParallelMng > parallelMngRef() const
Gestionnaire de parallélisme dans le cas d'un nouveau maillage.
const String & factoryName() const
Nom de la fabrique pour créer le maillage (via IMeshFactory)
Caractéristiques d'un maillage.
Definition MeshKind.h:59
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-