Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
VariableBuildInfo.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* VariableBuildInfo.h (C) 2000-2024 */
9/* */
10/* Informations pour construire une variable. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_VARIABLEBUILDINFO_H
13#define ARCANE_VARIABLEBUILDINFO_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/String.h"
18#include "arcane/core/MeshHandle.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
29class IModule;
30class ISubDomain;
31class IMesh;
32class IItemFamily;
33class IVariableMng;
34class VariablePrivate;
35class IDataFactoryMng;
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39/*!
40 * \brief Paramètres nécessaires à la construction d'une variable.
41 */
42class ARCANE_CORE_EXPORT VariableBuildInfo
43{
44 public:
45
46 // Pour accéder au constructeur par défaut.
47 friend class NullVariableBuildInfo;
48 // TEMPORAIRE Pour accéder à _subDomain(). A supprimer par la suite.
49 friend class VariablePrivate;
50
51 private:
52
53 //! Tag pour un VariableBuildInfo nul.
54 struct NullTag
55 {};
56
57 public:
58
59 /*!
60 * \brief Construit un initialiseur pour une variable.
61 *
62 * \param name nom de la variable
63 * \param m module associé
64 * \param property propriétés de la variable
65 */
66 VariableBuildInfo(IModule* m,const String& name,int property=0);
67
68 /*!
69 * \brief Construit un initialiseur pour une variable sans l'associer à
70 * un module.
71 *
72 * \param sub_domain gestionnaire de sous-domaine
73 * \param name nom de la variable
74 * \param property propriétés de la variable
75 */
76 VariableBuildInfo(ISubDomain* sub_domain,const String& name,int property=0);
77
78 /*!
79 * \brief Construit un initialiseur pour une variable sans l'associer à
80 * un module.
81 *
82 * \param variable_mng gestionnaire de variable
83 * \param name nom de la variable
84 * \param property propriétés de la variable
85 */
86 VariableBuildInfo(IVariableMng* variable_mng,const String& name,int property=0);
87
88 /*!
89 * \brief Construit un initialiseur pour une variable associée à
90 * un maillage autre que le maillage par défaut.
91 *
92 * \param mesh maillage
93 * \param name nom de la variable
94 * \param property propriétés de la variable
95 */
96 VariableBuildInfo(IMesh* mesh,const String& name,int property=0);
97
98 /*!
99 * \brief Construit un initialiseur pour une variable associée à
100 * un maillage autre que le maillage par défaut.
101 *
102 * \param mesh maillage
103 * \param name nom de la variable
104 * \param property propriétés de la variable
105 */
106 VariableBuildInfo(const MeshHandle& mesh_handle,const String& name,int property=0);
107
108 /*!
109 * \brief Construit un initialiseur pour une variable.
110 *
111 * \param m module associé
112 * \param name nom de la variable
113 * \param item_family_name nom de la famille d'entité
114 * \param property propriétés de la variable
115 */
116 VariableBuildInfo(IModule* m,const String& name,
117 const String& item_family_name,int property=0);
118
119 /*!
120 * \brief Construit un initialiseur pour une variable associée à
121 * un maillage autre que le maillage par défaut.
122 *
123 * \param mesh maillage
124 * \param name nom de la variable
125 * \param item_family_name nom de la famille d'entité
126 * \param property propriétés de la variable
127 */
128 VariableBuildInfo(IMesh* mesh,const String& name,
129 const String& item_family_name,int property=0);
130
131 /*!
132 * \brief Construit un initialiseur pour une variable associée à
133 * un maillage autre que le maillage par défaut.
134 *
135 * \param mesh maillage
136 * \param name nom de la variable
137 * \param item_family_name nom de la famille d'entité
138 * \param property propriétés de la variable
139 */
140 VariableBuildInfo(const MeshHandle& mesh_handle,const String& name,
141 const String& item_family_name,int property=0);
142
143 /*!
144 * \brief Construit un initialiseur pour une variable non associée à un maillage.
145 *
146 * \param sd sous-domaine
147 * \param name nom de la variable
148 * \param mesh_name nom du maillage
149 * \param item_family_name nom de la famille d'entité
150 * \param property propriétés de la variable
151 */
152 VariableBuildInfo(ISubDomain* sd,const String& name, const String& mesh_name,
153 const String& item_family_name,int property=0);
154
155 /*!
156 * \brief Construit un initialiseur pour une variable non associée à un maillage.
157 *
158 * \param variable_mng gestionnaire de variable
159 * \param name nom de la variable
160 * \param mesh_name nom du maillage
161 * \param item_family_name nom de la famille d'entité
162 * \param property propriétés de la variable
163 */
164 VariableBuildInfo(IVariableMng* variable_mng,const String& name, const String& mesh_name,
165 const String& item_family_name,int property=0);
166
167 /*!
168 * \brief Construit un initialiseur pour une variable associée à
169 * un maillage autre que le maillage par défaut.
170 *
171 * \param family famille d'entité
172 * \param name nom de la variable
173 * \param property propriétés de la variable
174 */
175 VariableBuildInfo(IItemFamily* family,const String& name,int property=0);
176
177 /*!
178 * \brief Construit un initialiseur pour une variable.
179 *
180 * \param m module associé
181 * \param name nom de la variable
182 * \param item_family_name nom de la famille d'entité
183 * \param group_name nom du groupe associé (pour les variables partielles)
184 * \param property propriétés de la variable
185 */
186 VariableBuildInfo(IModule* m,const String& name,
187 const String& item_family_name,
188 const String& item_group_name,int property=0);
189
190 /*!
191 * \brief Construit un initialiseur pour une variable associée à
192 * un maillage autre que le maillage par défaut.
193 *
194 * \param mesh maillage
195 * \param name nom de la variable
196 * \param item_family_name nom de la famille d'entité
197 * \param group_name nom du groupe associé (pour les variables partielles)
198 * \param property propriétés de la variable
199 */
200 VariableBuildInfo(IMesh* mesh,const String& name,
201 const String& item_family_name,
202 const String& item_group_name,int property=0);
203
204 /*!
205 * \brief Construit un initialiseur pour une variable associée à
206 * un maillage autre que le maillage par défaut.
207 *
208 * \param mesh maillage
209 * \param name nom de la variable
210 * \param item_family_name nom de la famille d'entité
211 * \param group_name nom du groupe associé (pour les variables partielles)
212 * \param property propriétés de la variable
213 */
214 VariableBuildInfo(const MeshHandle& mesh_handle,const String& name,
215 const String& item_family_name,
216 const String& item_group_name,int property=0);
217
218 /*!
219 * \brief Construit un initialiseur pour une variable non associée à un maillage
220 *
221 * \param sd sous-domaine
222 * \param name nom de la variable
223 * \param mesh_name nom du maillage
224 * \param item_family_name nom de la famille d'entité
225 * \param group_name nom du groupe associé (pour les variables partielles)
226 * \param property propriétés de la variable
227 */
228 VariableBuildInfo(ISubDomain* sd,const String& name,
229 const String& mesh_name,
230 const String& item_family_name,
231 const String& item_group_name,int property=0);
232
233 /*!
234 * \brief Construit un initialiseur pour une variable non associée à un maillage
235 *
236 * \param variable_mng gestionnaire de variable
237 * \param name nom de la variable
238 * \param mesh_name nom du maillage
239 * \param item_family_name nom de la famille d'entité
240 * \param group_name nom du groupe associé (pour les variables partielles)
241 * \param property propriétés de la variable
242 */
243 VariableBuildInfo(IVariableMng* variable_mng,const String& name,
244 const String& mesh_name,
245 const String& item_family_name,
246 const String& item_group_name,int property=0);
247
248 private:
249
250 explicit VariableBuildInfo(const NullTag&);
251
252 public:
253
254 ARCCORE_DEPRECATED_2020("Do not use this method. Try to get ISubDomain from another way")
255 ISubDomain* subDomain() const { return m_sub_domain; }
256
257 public:
258
259 IVariableMng* variableMng() const;
260 IDataFactoryMng* dataFactoryMng() const;
261 ITraceMng* traceMng() const;
262 IModule* module() const { return m_module; }
263 IMesh* mesh() const { return m_mesh_handle.mesh(); }
264 const MeshHandle& meshHandle() const { return m_mesh_handle; }
265 const String& name() const { return m_name; }
266 const String& itemFamilyName() const { return m_item_family_name; }
267 const String& itemGroupName() const { return m_item_group_name; }
268 const String& meshName() const { return m_mesh_name; }
269 int property() const { return m_property; }
270 bool isNull() const { return m_is_null; }
271
272 private:
273
274 ISubDomain* m_sub_domain = nullptr; //!< Gestionnaire de sous-domaine
275 IModule* m_module = nullptr; //!< Module associé à la variable
276 MeshHandle m_mesh_handle; //!< Handle sur le maillage
277 String m_name; //!< Nom de la variable
278 String m_item_family_name; //!< Nom de la famille d'entité
279 String m_item_group_name; //!< Nom du groupe d'entité support
280 String m_mesh_name; //!< Nom du maillage associé à la variable
281 int m_property = 0; //!< Propriétés de la variable
282 bool m_is_null = false;
283
284 private:
285
286 void _init();
287 ISubDomain* _subDomain() const { return m_sub_domain; }
288};
289
290/*---------------------------------------------------------------------------*/
291/*---------------------------------------------------------------------------*/
292/*!
293 * \brief Constructeur pour une variable nulle.
294 *
295 * \warning Cette classe est expérimentale. Ne pas utiliser en dehors
296 * de Arcane.
297 */
298class ARCANE_CORE_EXPORT NullVariableBuildInfo
299: public VariableBuildInfo
300{
301 public:
302
304 : VariableBuildInfo(NullTag{})
305 {}
306};
307
308/*---------------------------------------------------------------------------*/
309/*---------------------------------------------------------------------------*/
310
311} // End namespace Arcane
312
313/*---------------------------------------------------------------------------*/
314/*---------------------------------------------------------------------------*/
315
316#endif
317
Interface d'une famille d'entités.
Interface d'un module.
Definition IModule.h:39
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface du gestionnaire de variables.
Handle sur un maillage.
Definition MeshHandle.h:47
Constructeur pour une variable nulle.
Paramètres nécessaires à la construction d'une variable.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-