Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IMainFactory.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/* IMainFactory.h (C) 2000-2023 */
9/* */
10/* Interface des AbstractFactory d'Arcane. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IMAINFACTORY_H
13#define ARCANE_IMAINFACTORY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28class IBase;
29class ISubDomain;
30class ApplicationInfo;
31class IArcaneMain;
32class IParallelSuperMng;
33class IApplication;
34class IRegistry;
35class IVariableMng;
36class IModuleMng;
37class IEntryPointMng;
38class ITimeHistoryMng;
39class ICaseMng;
40class ICaseDocument;
41class ITimerMng;
42class ITimeLoopMng;
43class ITimeLoop;
44class IIOMng;
45class IServiceMng;
46class IServiceLoader;
47class IXmlDocumentHolder;
48class IMesh;
49class IDataFactory;
50class ITimeStats;
51class IParallelMng;
52class ItemGroup;
53class IPrimaryMesh;
54class ITraceMngPolicy;
55class IModuleMaster;
56class ILoadBalanceMng;
57class ICheckpointMng;
58class IPropertyMng;
59class IDataFactoryMng;
60
61/*---------------------------------------------------------------------------*/
62/*---------------------------------------------------------------------------*/
63/*!
64 * \internal
65 * \brief Manufacture des classes d'Arcane.
66 *
67 Il s'agit d'une classe virtuelle comprenant les méthodes pour fabriquer
68 les différentes instances des gestionnaires de l'architecture
69 (Design Pattern: AbstractFactory).
70
71 Arcane fournit des fabriques par défaut pour la plupart des gestionnaires
72 (IApplication, IParallelSuperMng, ...). La classe gérant le code doit par contre
73 être spécifiée en implémentant la méthode createArcaneMain() dans une
74 classe dérivée.
75
76 Le point d'entrée général du code se fait par l'appel à la fonction
77 arcaneMain().
78
79 Par exemple, si on définit une classe <tt>ConcreteMainFactory</tt> qui
80 dérive de IMainFactory, on lance le code comme suit:
81
82 * \code
83 * int
84 * main(int argc,char** argv)
85 * {
86 * ApplicationInfo exe_info = ... // Création des infos de l'exécutable.
87 * ConcreteMainFactory cmf; // Création de la manufacture
88 * return IMainFactory::arcaneMain(exe_info,&cmf);
89 * }
90 * \endcode
91 */
93{
94 public:
95
96 virtual ~IMainFactory() {} //!< Libère les ressources.
97
98 public:
99
100 public:
101
102 //! Crée une instance de IArcaneMain
103 virtual IArcaneMain* createArcaneMain(const ApplicationInfo& app_info) =0;
104
105 public:
106
107 //! Crée une instance d'un superviseur
109
110 //! Crée une instance du gestionnaire de variable
112
113 //! Crée une instance du gestionnaire de module
115
116 //! Crée une instance du gestionnaire des points d'entrée
118
119 //! Crée une instance du gestionnaire d'historique en temps
121
122 //! Crée une instance du gestionnaire du jeu de données
124
125 //! Crée une instance d'un document du jeu de données
127
128 //! Crée une instance d'un document du jeu de données pour une langue donnée \a lang
130
131 //! Crée une instance d'un document du jeu de données
133
134 /*!
135 * \brief Crée une instance des statistiques de temps d'exécution.
136 *
137 * Utiliser la surchage createTimeStats(ITimerMng*,ITraceMng*,const String& name).
138 */
139 virtual ARCANE_DEPRECATED_116 ITimeStats* createTimeStats(ISubDomain*) =0;
140
141 //! Crée une instance des statistiques de temps d'exécution
142 virtual ITimeStats* createTimeStats(ITimerMng* tim,ITraceMng* trm,const String& name) =0;
143
144 //! Crée une instance du gestionnaire de la boucle en temps
146
147 //! Crée une boucle en temps de nom \a name
148 virtual ITimeLoop* createTimeLoop(IApplication* sm,const String& name) =0;
149
150 //! Crée une instance du gestionnaire d'entrée/sortie
152
153 //! Crée une instance du gestionnaire d'entrée/sortie pour le gestionnaire de parallélisme \a pm
155
156 //! Crée une instance du chargeur de services
158
159 //! Crée une instance du gestionnaire de services
161
162 //! Crée une instance du gestionnaire de protections
164
165 //! Crée une instance du gestionnaire de propriétés
166 ARCCORE_DEPRECATED_2020("Use createPropertyMngReference() instead")
168
169 //! Crée une instance du gestionnaire de propriétés
171
172 /*!
173 * \brief Créé ou récupère un maillage.
174 *
175 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain.
176 *
177 * Si le sous-domaine possède déjà un maillage avec le nom \a name,
178 * c'est ce dernier qui est retourné.
179 */
180 virtual IPrimaryMesh* createMesh(ISubDomain* sub_domain,const String& name) =0;
181
182 /*!
183 * \brief Créé ou récupère un maillage.
184 *
185 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain.
186 *
187 * Si le sous-domaine possède déjà un maillage avec le nom \a name,
188 * c'est ce dernier qui est retourné.
189 */
190 ARCANE_DEPRECATED_REASON("Y2023: Use createMesh(..., eMeshAMRKind amr_type) instead")
191 virtual IPrimaryMesh* createMesh(ISubDomain* sub_domain,const String& name,bool is_amr) =0;
192
193 /*!
194 * \brief Créé ou récupère un maillage.
195 *
196 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain.
197 *
198 * Si le sous-domaine possède déjà un maillage avec le nom \a name,
199 * c'est ce dernier qui est retourné.
200 */
201 virtual IPrimaryMesh* createMesh(ISubDomain* sub_domain,const String& name,eMeshAMRKind amr_type) =0;
202
203 /*!
204 * \brief Créé ou récupère un maillage.
205 *
206 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain
207 * associé au gestionnaire de parallélisme \a pm. Si le sous-domaine possède
208 * déjà un maillage avec le nom \a name, c'est ce dernier qui est retourné.
209 *
210 * Le gestionnaire de parallélisme doit être le même que celui du sous-domaine
211 * ou issu de celui-ci.
212 */
214 const String& name) =0;
215
216 /*!
217 * \brief Créé ou récupère un maillage.
218 *
219 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain
220 * associé au gestionnaire de parallélisme \a pm. Si le sous-domaine possède
221 * déjà un maillage avec le nom \a name, c'est ce dernier qui est retourné.
222 *
223 * Le gestionnaire de parallélisme doit être le même que celui du sous-domaine
224 * ou issu de celui-ci.
225 */
226 ARCANE_DEPRECATED_REASON("Y2023: Use createMesh(..., eMeshAMRKind amr_type) instead")
228 const String& name, bool is_amr) =0;
229
230 /*!
231 * \brief Créé ou récupère un maillage.
232 *
233 * Créé ou récupère un maillage de nom \a name pour le sous-domaine \a sub_domain
234 * associé au gestionnaire de parallélisme \a pm. Si le sous-domaine possède
235 * déjà un maillage avec le nom \a name, c'est ce dernier qui est retourné.
236 *
237 * Le gestionnaire de parallélisme doit être le même que celui du sous-domaine
238 * ou issu de celui-ci.
239 */
241 const String& name, eMeshAMRKind amr_type) =0;
242
243 /*!
244 * \brief Créé un sous-maillage pour le maillage \a mesh, de nom \a name.
245 *
246 * Le sous-maillage est initialisé avec les items du groupe \a group.
247 * Actuellement, ce groupe ne peut ni être un groupe complet (isAllItems())
248 * ni un groupe calculé (si non incrémental).
249 */
250 virtual IMesh* createSubMesh(IMesh* mesh, const ItemGroup& group, const String& name) =0;
251
252 //! Créé une fabrique pour les données
253 ARCCORE_DEPRECATED_2020("Use createDataFactoryMngRef() instead")
255
256 //! Créé un gestionnaire de fabrique pour les données
258
259 //! Créé un gestionnaire pour les accélérateurs
261
262 /*!
263 * \brief Créé un gestionnaire de trace.
264 *
265 * L'instance retournée doit être initialisée via un ITraceMngPolicy.
266 */
268
269 /*!
270 * \brief Créé un gestionnaire de configuration pour un gestion de trace.
271 */
273
274 /*!
275 * \brief Créé le module maitre pour le sous-domaine \a sd.
276 */
278
279 /*!
280 * \brief Cree un gestionnaire de description pour l'equilibrage.
281 */
283
284 private:
285};
286
287/*---------------------------------------------------------------------------*/
288/*---------------------------------------------------------------------------*/
289
290} // End namespace Arcane
291
292/*---------------------------------------------------------------------------*/
293/*---------------------------------------------------------------------------*/
294
295#endif
296
Interface du gestionnaire des accélérateurs.
Informations sur une application.
Interface de l'application.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Interface du gestionnaire de cas.
Definition ICaseMng.h:56
Interface du gestionnaire des informations des protections.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
Interface d'enregistrement des variables pour l'equilibrage de charge.
virtual ITraceMng * createTraceMng()=0
Créé un gestionnaire de trace.
virtual Ref< IPropertyMng > createPropertyMngReference(ISubDomain *)=0
Crée une instance du gestionnaire de propriétés.
virtual IServiceMng * createServiceMng(IBase *)=0
Crée une instance du gestionnaire de services.
virtual ITraceMngPolicy * createTraceMngPolicy(IApplication *app)=0
Créé un gestionnaire de configuration pour un gestion de trace.
virtual Ref< IDataFactoryMng > createDataFactoryMngRef(IApplication *)=0
Créé un gestionnaire de fabrique pour les données.
virtual IEntryPointMng * createEntryPointMng(ISubDomain *)=0
Crée une instance du gestionnaire des points d'entrée.
virtual ICheckpointMng * createCheckpointMng(ISubDomain *)=0
Crée une instance du gestionnaire de protections.
virtual ITimeLoopMng * createTimeLoopMng(ISubDomain *)=0
Crée une instance du gestionnaire de la boucle en temps.
virtual IApplication * createApplication(IArcaneMain *)=0
Crée une instance d'un superviseur.
virtual ITimeHistoryMng * createTimeHistoryMng(ISubDomain *)=0
Crée une instance du gestionnaire d'historique en temps.
virtual IPrimaryMesh * createMesh(ISubDomain *sub_domain, const String &name)=0
Créé ou récupère un maillage.
virtual IPropertyMng * createPropertyMng(ISubDomain *)=0
Crée une instance du gestionnaire de propriétés.
virtual ~IMainFactory()
Libère les ressources.
virtual ARCANE_DEPRECATED_116 ITimeStats * createTimeStats(ISubDomain *)=0
Crée une instance des statistiques de temps d'exécution.
virtual IIOMng * createIOMng(IParallelMng *pm)=0
Crée une instance du gestionnaire d'entrée/sortie pour le gestionnaire de parallélisme pm.
virtual IMesh * createSubMesh(IMesh *mesh, const ItemGroup &group, const String &name)=0
Créé un sous-maillage pour le maillage mesh, de nom name.
virtual IServiceLoader * createServiceLoader()=0
Crée une instance du chargeur de services.
virtual IDataFactory * createDataFactory(IApplication *)=0
Créé une fabrique pour les données.
virtual ILoadBalanceMng * createLoadBalanceMng(ISubDomain *sd)=0
Cree un gestionnaire de description pour l'equilibrage.
virtual ITimeStats * createTimeStats(ITimerMng *tim, ITraceMng *trm, const String &name)=0
Crée une instance des statistiques de temps d'exécution.
virtual ICaseMng * createCaseMng(ISubDomain *)=0
Crée une instance du gestionnaire du jeu de données.
virtual ICaseDocument * createCaseDocument(IApplication *)=0
Crée une instance d'un document du jeu de données.
virtual IModuleMng * createModuleMng(ISubDomain *)=0
Crée une instance du gestionnaire de module.
virtual IVariableMng * createVariableMng(ISubDomain *)=0
Crée une instance du gestionnaire de variable.
virtual ITimeLoop * createTimeLoop(IApplication *sm, const String &name)=0
Crée une boucle en temps de nom name.
virtual IModuleMaster * createModuleMaster(ISubDomain *sd)=0
Créé le module maitre pour le sous-domaine sd.
virtual IArcaneMain * createArcaneMain(const ApplicationInfo &app_info)=0
Crée une instance de IArcaneMain.
virtual Ref< IAcceleratorMng > createAcceleratorMngRef(ITraceMng *tm)=0
Créé un gestionnaire pour les accélérateurs.
virtual ICaseDocument * createCaseDocument(IApplication *, const String &lang)=0
Crée une instance d'un document du jeu de données pour une langue donnée lang.
virtual IIOMng * createIOMng(IApplication *)=0
Crée une instance du gestionnaire d'entrée/sortie.
virtual ICaseDocument * createCaseDocument(IApplication *, IXmlDocumentHolder *doc)=0
Crée une instance d'un document du jeu de données.
Interface du gestionnaire de modules.
Definition IModuleMng.h:39
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface du gestionnaire des propriétés.
Interface du gestionnaire de services.
Definition IServiceMng.h:31
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Classe gérant un historique de valeurs.
Interface du gestionnaire de la boucle en temps.
Interface d'une boucle en temps.
Definition ITimeLoop.h:41
Interface d'un gestionnaire de timer.
Definition ITimerMng.h:53
Interface du gestionnaire de configuration d'un gestionnnaire de trace.
Interface du gestionnaire de variables.
Gestionnaire d'un document DOM.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eMeshAMRKind
Type de maillage AMR.
Definition MeshKind.h:40