Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMeshBase.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/* IMeshBase.h (C) 2000-2023 */
9/* */
10/* Interface for base mesh operations */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_IMESHBASE_H
15#define ARCANE_IMESHBASE_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/ItemTypes.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25/*!
26 * \brief Interface for base mesh operations.
27 *
28 * This interface is created to gradually implement IMesh operations in a
29 * new implementation.
30 *
31 * This interface should be temporary.
32 */
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
37namespace Arcane
38{
39
40/*---------------------------------------------------------------------------*/
41/*---------------------------------------------------------------------------*/
42
43class IItemFamilyModifier;
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47
49{
50 public:
51
52 virtual ~IMeshBase() = default;
53
54 public:
55
56 //! Handle sur ce maillage
57 virtual MeshHandle handle() const = 0;
58
59 public:
60
61 //! Nom du maillage
62 virtual String name() const = 0;
63
64 //! Nombre de noeuds du maillage
65 virtual Integer nbNode() = 0;
66
67 //! Nombre d'arêtes du maillage
68 virtual Integer nbEdge() = 0;
69
70 //! Nombre de faces du maillage
71 virtual Integer nbFace() = 0;
72
73 //! Nombre de mailles du maillage
74 virtual Integer nbCell() = 0;
75
76 /*!
77 * \brief Nombre d'éléments du genre \a ik.
78 * \pre ik==IK_Node || ik==IK_Edge || ik==IK_Face || ik==IK_Cell
79 */
80 virtual Integer nbItem(eItemKind ik) = 0;
81
82 //! Gestionnaire de message associé
83 virtual ITraceMng* traceMng() = 0;
84
85 /*!
86 * \brief Dimension du maillage (1D, 2D ou 3D).
87 *
88 * La dimension correspond à la dimension des éléments mailles (Cell).
89 * Si des mailles de plusieurs dimensions sont présentes, c'est la dimension
90 * la plus importante qui est retournée.
91 * Si la dimension n'a pas encore été positionnée, retourne -1;
92 */
93 virtual Integer dimension() = 0;
94
95 //! Groupe de tous les noeuds
96 virtual NodeGroup allNodes() = 0;
97
98 //! Groupe de toutes les arêtes
99 virtual EdgeGroup allEdges() = 0;
100
101 //! Groupe de toutes les faces
102 virtual FaceGroup allFaces() = 0;
103
104 //! Groupe de toutes les mailles
105 virtual CellGroup allCells() = 0;
106
107 //! Groupe de tous les noeuds propres au domaine
108 virtual NodeGroup ownNodes() = 0;
109
110 //! Groupe de toutes les arêtes propres au domaine
111 virtual EdgeGroup ownEdges() = 0;
112
113 //! Groupe de toutes les faces propres au domaine
114 virtual FaceGroup ownFaces() = 0;
115
116 //! Groupe de toutes les mailles propres au domaine
117 virtual CellGroup ownCells() = 0;
118
119 //! Groupe de toutes les faces sur la frontière.
120 virtual FaceGroup outerFaces() = 0;
121
122 public:
123
124 //! Créé une famille de particule de nom \a name
126
127 /*!
128 * \brief Retourne la famille de nom \a name.
129 *
130 * Si \a create_if_needed est vrai, la famille est créé si elle n'existait pas.
131 * Si \a register_modifier_if_created est vrai, le modifier de la famille est enregistré
132 */
133 virtual IItemFamily* findItemFamily(eItemKind ik, const String& name, bool create_if_needed = false,
134 bool register_modifier_if_created = false) = 0;
135
136 /*!
137 * \brief Retourne la famille de nom \a name.
138 *
139 * Si la famille demandée n'existe pas, si \a throw_exception vaut \a true une
140 * exception est levée, sinon le pointeur nul est retourné.
141 */
142 virtual IItemFamily* findItemFamily(const String& name, bool throw_exception = false) = 0;
143
144 /*!
145 * \brief Retourne l'interface IItemFamilyModifier pour famille de nom \a name et de type \a ik
146 *
147 * Si ce modificateur n'est pas trouvé, retourne nullptr
148 */
150
151 /*!
152 * \brief Retourne la famille d'entité de type \a ik.
153 *
154 * \pre ik==IK_Node || ik==IK_Edge || ik==IK_Face || ik==IK_Cell
155 */
157
158 //! Retourne la famille des noeuds.
159 virtual IItemFamily* nodeFamily() = 0;
160 //! Retourne la famille des arêtes.
161 virtual IItemFamily* edgeFamily() = 0;
162 //! Retourne la famille des faces.
163 virtual IItemFamily* faceFamily() = 0;
164 //! Retourne la famille des mailles.
165 virtual IItemFamily* cellFamily() = 0;
166
167 virtual IItemFamilyCollection itemFamilies() = 0;
168};
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
173} // namespace Arcane
174
175/*---------------------------------------------------------------------------*/
176/*---------------------------------------------------------------------------*/
177
178#endif //ARCANE_IMESHBASE_H
179
180/*---------------------------------------------------------------------------*/
181/*---------------------------------------------------------------------------*/
Interface de modification d'une famille.
Interface d'une famille d'entités.
virtual ITraceMng * traceMng()=0
Gestionnaire de message associé
virtual NodeGroup ownNodes()=0
Groupe de tous les noeuds propres au domaine.
virtual MeshHandle handle() const =0
Handle sur ce maillage.
virtual IItemFamily * nodeFamily()=0
Retourne la famille des noeuds.
virtual String name() const =0
Nom du maillage.
virtual Integer nbCell()=0
Nombre de mailles du maillage.
virtual IItemFamilyModifier * findItemFamilyModifier(eItemKind ik, const String &name)=0
Retourne l'interface IItemFamilyModifier pour famille de nom name et de type ik.
virtual CellGroup ownCells()=0
Groupe de toutes les mailles propres au domaine.
virtual FaceGroup ownFaces()=0
Groupe de toutes les faces propres au domaine.
virtual FaceGroup allFaces()=0
Groupe de toutes les faces.
virtual Integer nbEdge()=0
Nombre d'arêtes du maillage.
virtual IItemFamily * itemFamily(eItemKind ik)=0
Retourne la famille d'entité de type ik.
virtual IItemFamily * edgeFamily()=0
Retourne la famille des arêtes.
virtual Integer nbNode()=0
Nombre de noeuds du maillage.
virtual FaceGroup outerFaces()=0
Groupe de toutes les faces sur la frontière.
virtual IItemFamily * findItemFamily(eItemKind ik, const String &name, bool create_if_needed=false, bool register_modifier_if_created=false)=0
Retourne la famille de nom name.
virtual Integer nbItem(eItemKind ik)=0
Nombre d'éléments du genre ik.
virtual Integer dimension()=0
Dimension du maillage (1D, 2D ou 3D).
virtual IItemFamily * findItemFamily(const String &name, bool throw_exception=false)=0
Retourne la famille de nom name.
virtual IItemFamily * faceFamily()=0
Retourne la famille des faces.
virtual EdgeGroup ownEdges()=0
Groupe de toutes les arêtes propres au domaine.
virtual NodeGroup allNodes()=0
Groupe de tous les noeuds.
virtual CellGroup allCells()=0
Groupe de toutes les mailles.
virtual Integer nbFace()=0
Nombre de faces du maillage.
virtual IItemFamily * cellFamily()=0
Retourne la famille des mailles.
virtual IItemFamily * createItemFamily(eItemKind ik, const String &name)=0
Créé une famille de particule de nom name.
virtual EdgeGroup allEdges()=0
Groupe de toutes les arêtes.
Handle sur un maillage.
Definition MeshHandle.h:47
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< IItemFamily * > IItemFamilyCollection
Collection de familles d'entités.
eItemKind
Genre d'entité de maillage.