Arcane  v3.16.2.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ArcaneTypes.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ArcaneTypes.h (C) 2000-2025 */
9/* */
10/* Définition des types généraux de Arcane. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ARCANETYPES_H
13#define ARCANE_CORE_ARCANETYPES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/datatype/DataTypes.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23// GG: Ne devrait pas être ici. Il faudrait inclure "SerializeGlobal.h" à la
24// place mais cela n'est pas possible tant que certains fichiers de
25// 'arcane/utils' utilisent des fichiers d'en-tête de 'arcane/core'. C'est
26// le cas par exemple des fichiers '*AMR*.h'.
27
28namespace Arcane
29{
30class ISerializer;
31}
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36namespace Arcane
37{
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
47/*---------------------------------------------------------------------------*/
48
49class IBase;
50class ISession;
51class IApplication;
52class IRessourceMng;
53class Real2;
54class Real3;
55class Real2x2;
56class Real3x3;
57class IData;
58
59/*---------------------------------------------------------------------------*/
60/*---------------------------------------------------------------------------*/
61
62class IArcaneMain;
63class ApplicationInfo;
64class IMainFactory;
65class VersionInfo;
66class ITimeStats;
67
68/*---------------------------------------------------------------------------*/
69/*---------------------------------------------------------------------------*/
70
71class IService;
72class IServiceInfo;
75class IModule;
76class ISubDomain;
79class ServiceProperty;
81
92namespace Internal
93{
96template<typename InterfaceType>
99class ServiceInfo;
100template<typename ServiceType>
102}
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107class IVariableMng;
108class IMeshFactoryMng;
109class IMeshMng;
110class IMesh;
111class IMeshInternal;
112class IMeshBase;
113class IUserDataList;
114class IMeshBuilder;
115class MeshHandle;
116class MeshHandleOrMesh;
117class MeshBuildInfo;
118class MeshKind;
119class IPrimaryMesh;
124class ItemInfoListView;
137class IParallelMng;
149class IIOMng;
150class ITimerMng;
151class IThreadMng;
152class ItemUniqueId;
157class Properties;
160class IDataReader;
161class IDataWriter;
162class VariableComparer;
167enum class eMeshStructure;
168enum class eMeshAMRKind;
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
184
186static const Integer NB_ITEM_KIND = 6;
187
189extern "C++" ARCANE_CORE_EXPORT const char*
191
193extern "C++" ARCANE_CORE_EXPORT std::ostream&
194operator<< (std::ostream& ostr,eItemKind item_kind);
195
197extern "C++" ARCANE_CORE_EXPORT std::istream&
198operator>> (std::istream& istr,eItemKind& item_kind);
199
200/*---------------------------------------------------------------------------*/
201/*---------------------------------------------------------------------------*/
202
206static const Integer NULL_ITEM_ID = static_cast<Integer>(-1);
207
209static const Integer NULL_ITEM_LOCAL_ID = static_cast<Integer>(-1);
210
212static const Int64 NULL_ITEM_UNIQUE_ID = static_cast<Int64>(-1);
213
215static const Integer NULL_SUB_DOMAIN_ID = static_cast<Integer>(-1);
216
218static const Int32 A_NULL_RANK = static_cast<Int32>(-1);
219
221static const Int16 IT_NullType = 0;
223static const Int16 IT_Vertex = 1;
225static const Int16 IT_Line2 = 2;
227static const Int16 IT_Triangle3 = 3;
229static const Int16 IT_Quad4 = 4;
231static const Int16 IT_Pentagon5 = 5;
233static const Int16 IT_Hexagon6 = 6;
235static const Int16 IT_Tetraedron4 = 7;
237static const Int16 IT_Pyramid5 = 8;
239static const Int16 IT_Pentaedron6 = 9;
241static const Int16 IT_Hexaedron8 = 10;
243static const Int16 IT_Heptaedron10 = 11;
245static const Int16 IT_Octaedron12 = 12;
247static const Int16 IT_HemiHexa7 = 13;
249static const Int16 IT_HemiHexa6 = 14;
251static const Int16 IT_HemiHexa5 = 15;
253static const Int16 IT_AntiWedgeLeft6 = 16;
255static const Int16 IT_AntiWedgeRight6 = 17;
257static const Int16 IT_DiTetra5 = 18;
259static const Int16 IT_DualNode = 19;
261static const Int16 IT_DualEdge = 20;
263static const Int16 IT_DualFace = 21;
265static const Int16 IT_DualCell = 22;
267static const Int16 IT_Link = 23;
269static const Int16 IT_FaceVertex = 24;
271static const Int16 IT_CellLine2 = 25;
273static const Int16 IT_DualParticle = 26;
274
276static const Int16 IT_Enneedron14 = 27;
278static const Int16 IT_Decaedron16 = 28;
279
281static const Int16 IT_Heptagon7 = 29;
282
284static const Int16 IT_Octogon8 = 30;
285
287
288
289static const Int16 IT_Line3 = 31;
291static const Int16 IT_Triangle6 = 32;
293static const Int16 IT_Quad8 = 33;
295static const Int16 IT_Tetraedron10 = 34;
297static const Int16 IT_Hexaedron20 = 35;
299
306
307static const Int16 IT_Cell3D_Line2 = 36;
309static const Int16 IT_Cell3D_Triangle3 = 37;
311static const Int16 IT_Cell3D_Quad4 = 38;
313
315static const Integer NB_BASIC_ITEM_TYPE = 39;
316
317extern "C++" ARCANE_CORE_EXPORT eItemKind
318dualItemKind(Integer type);
319
320/*---------------------------------------------------------------------------*/
321/*---------------------------------------------------------------------------*/
326{
327 TP_Computation = 0,
328 TP_Communication,
329 TP_InputOutput
330};
331static const Integer NB_TIME_PHASE = 3;
332
334extern "C++" ARCANE_CORE_EXPORT std::ostream&
335operator<< (std::ostream& ostr,eTimePhase time_phase);
336
338extern "C++" ARCANE_CORE_EXPORT std::istream&
339operator>> (std::istream& istr,eTimePhase& time_phase);
340
341/*---------------------------------------------------------------------------*/
342/*---------------------------------------------------------------------------*/
343
356
358extern "C++" ARCANE_CORE_EXPORT std::ostream&
359operator<<(std::ostream& o,eMeshDirection md);
360
361/*---------------------------------------------------------------------------*/
362/*---------------------------------------------------------------------------*/
363
364class ISubDomain;
365
366template<typename T> class SimplePropertyT;
367
368/*---------------------------------------------------------------------------*/
369/*---------------------------------------------------------------------------*/
370
371template<typename DataType>
372class IScalarDataT;
373template<typename DataType>
374class IArrayDataT;
375template<typename DataType>
376class IArray2DataT;
377template<typename DataType>
378class IMultiArray2DataT;
379
380template<typename DataType>
381class VariableScalarT;
382template<typename DataType>
383class VariableArrayT;
384template<typename DataType>
385class Array2VariableT;
386
387template<typename DataType>
388class VariableRefScalarT;
389template<typename DataType>
390class VariableRefArrayT;
391template<typename DataType>
392class VariableRefArray2T;
393// TODO: Ce type n'est plus utilisé. A supprimer fin 2025
394template<typename DataType>
396
397template<typename DataType>
399template<typename ItemType,class DataType>
401template<typename ItemType,class DataType>
403template<typename DataType>
405template<typename ItemType,class DataType>
407template<typename ItemTypeT, typename DataTypeT>
409template<typename DataTypeT>
411
412/*---------------------------------------------------------------------------*/
413/*---------------------------------------------------------------------------*/
414
415template <typename DataType>
416class DataViewSetter;
417template <typename DataType>
418class DataViewGetter;
419template <typename DataType>
421
422/*---------------------------------------------------------------------------*/
423/*---------------------------------------------------------------------------*/
424
425template <typename ItemType, typename DataType, typename Extents>
427template <typename ItemType, typename DataType, typename Extents>
429
430/*---------------------------------------------------------------------------*/
431/*---------------------------------------------------------------------------*/
432
433class CollectionBase;
434class IItemFamily;
436class IMesh;
437class IMeshPartitioner;
439class IModule;
440class IService;
443class IServiceInstance;
444class IEntryPoint;
445class ITimeLoop;
446class IVariable;
448class VariableRef;
449class Item;
451class ICaseOptions;
452class ICaseFunction;
453class ICaseDocument;
455class ICaseMng;
456class ICaseOptionList;
458class ItemGroup;
459class ITiedInterface;
461typedef VariableCollection VariableList;
462
501
522
523/*---------------------------------------------------------------------------*/
524/*---------------------------------------------------------------------------*/
525
526class IDataVisitor;
531class IDataOperation;
532class ISerializedData;
533class IHashAlgorithm;
536class ISerializedData;
537class IDataFactoryMng;
541class IDataInternal;
542template<typename DataType> class IArrayDataInternalT;
543template<typename DataType> class IArray2DataInternalT;
544
545/*---------------------------------------------------------------------------*/
546/*---------------------------------------------------------------------------*/
547
548class IVariableRef;
549class IVariableFactory;
550class VariableTypeInfo;
551class VariableRef;
555class VariableInfo;
556typedef VariableRef* (*VariableFactoryVariableRefCreateFunc)(const VariableBuildInfo& vb);
557
558/*---------------------------------------------------------------------------*/
559/*---------------------------------------------------------------------------*/
560
561namespace Accelerator
562{
563class IAcceleratorMng;
565}
566using Accelerator::IAcceleratorMng;
567using Accelerator::AcceleratorRuntimeInitialisationInfo;
568
569/*---------------------------------------------------------------------------*/
570/*---------------------------------------------------------------------------*/
571// Déclarations de types utilisés pour les classes 'friend'.
572namespace mesh
573{
574class DynamicMesh;
575class ItemFamily;
578class ItemDataList;
579}
580
581/*---------------------------------------------------------------------------*/
582/*---------------------------------------------------------------------------*/
583
584} // End namespace Arcane
585
586/*---------------------------------------------------------------------------*/
587/*---------------------------------------------------------------------------*/
588
599
600/*---------------------------------------------------------------------------*/
601/*---------------------------------------------------------------------------*/
602
603namespace Arcane
604{
606typedef Collection<Ref<ICaseFunction>> CaseFunctionCollection;
608typedef List<Ref<ICaseFunction>> CaseFunctionList;
609}
610
611/*---------------------------------------------------------------------------*/
612/*---------------------------------------------------------------------------*/
613
614#endif
#define ARCCORE_DECLARE_REFERENCE_COUNTED_CLASS(class_name)
Macro pour déclarer qu'une classe utilise un compteur de référence.
Déclarations des types utilisés dans Arcane.
Interface du gestionnaire des accélérateurs.
Informations sur une application.
Informations pour allouer les entités d'un maillage non structuré.
Source d'un jeu de données d'un cas.
Informations pour construire une option de jeu de données.
Classe de base d'une collection.
Definition Collection.h:33
Classe de base d'une collection fortement typée.
Definition Collection.h:115
Informations sur l'allocation d'une donnée.
Informations pour construire une instance de 'IData'.
Informations de type pour un conteneur de données.
Classe pour accéder à un élément d'une vue en lecture/écriture.
Definition DataView.h:245
Classe pour accéder à un élément d'une vue en lecture.
Definition DataView.h:44
Classe pour accéder à un élément d'une vue en écriture.
Definition DataView.h:62
Interface de l'application.
Interface de la classe de gestion du code.
Definition IArcaneMain.h:54
Interface d'une donnée tableau bi-dimensionnel d'un type T.
Interface du pattern visitor pour une donnée tableau 2D.
Interface d'une donnée tableau d'un type T.
Interface du pattern visitor pour une donnée tableau.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:38
Interface d'une partie d'un jeu de données.
Interface d'une classe gérant un document XML du jeu de données.
Interface d'une fonction du jeu de données.
Interface du gestionnaire de cas.
Definition ICaseMng.h:56
Interface d'une liste d'options du jeu de données.
Interface d'une liste d'options du jeu de données.
Interface du gestionnaire de fabrique d'une donnée.
Partie interne de IData.
Interface d'une opération sur une donnée.
Interface de lecture des données d'une variable.
Definition IDataReader.h:41
Interface d'une fabrique de conteneur d'une donnée.
Interface du pattern visitor pour une donnée.
Interface d'écriture des données d'une variable.
Definition IDataWriter.h:49
Interface d'une donnée.
Definition IData.h:33
Interface d'un point d'entrée d'un module.
Definition IEntryPoint.h:34
Opérations pour accéder aux valeurs de variables d'un autre sous-domaine.
Interface d'un algorithme de hashage.
Interface du gestionnaire des entrées sorties.
Definition IIOMng.h:42
API interne à Arcane de IIncrementalItemConnectivity.
Interface pour gérer une connectivité incrémentale.
Interface de la source d'une connectivité incrémentale.
Interface de la cible d'une connectivité incrémentale.
Interface du gestionnaire des connectivités incrémentales indexées sur les entités.
Interface pour gérer une connectivité incrémentale.
Interface des informations sur la connectivité par type d'entité.
Interface pour gérer une connectivité.
Partie interne de IItemFamily.
Interface des politiques d'une famille d'entités.
Interface de modification de la topologie des entités d'une famille.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface d'une fonction de tri des entités.
Manufacture des classes d'Arcane.
Interface d'un service de création/lecture du maillage.
Interface du gestionnaire de fabriques de maillages.
Interface d'allocation des entités du maillage.
Partie interne de IMesh.
Interface du gestionnaire des maillages.
Definition IMeshMng.h:40
Interface d'un partitionneur de maillage.
Interface d'un partitionneur de maillage.
Informations sur la fabrique d'un module.
Interface d'un module.
Definition IModule.h:39
Interface du pattern visitor pour une donnée tableau 2D à taille variable.
Echange d'informations entre processeurs.
Interface d'une fabrique de conteneur de 'IParallelMng'.
Interface d'un conteneur de 'IParallelMng'.
Partie interne de IParallelMng.
Interface d'une fabrique pour les fonctions utilitaires de IParallelMng.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface des opérations parallèles collectives non bloquantes.
Informations sur la réplication des sous-domaines en parallèle.
Informations sur la topologie d'allocation des coeurs de calcul.
Interface d'un système d'unité.
Interface d'un gestionnaire de ressource.
Interface du pattern visitor pour une donnée scalaire.
Interface d'une donnée sérialisée.
Informations sur la fabrique d'un service.
Interface des informations d'un service ou d'un module.
Interface d'une instance d'un service.
Definition IService.h:73
Interface d'un service.
Definition IService.h:45
Interface d'une session d'exécution d'un cas.
Definition ISession.h:44
Interface d'une instance de service singleton.
Definition IService.h:95
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface d'un gestionnaire de thread.
Definition IThreadMng.h:30
Interface d'un classe gérant une semi-conformité du maillage.
Interface d'une boucle en temps.
Definition ITimeLoop.h:41
Interface gérant les statistiques sur les temps d'exécution.
Definition ITimeStats.h:43
Interface d'un gestionnaire de timer.
Definition ITimerMng.h:53
Envoie de valeurs sur différents processeurs.
Interface d'une liste qui gère des données utilisateurs.
Interface d'une fabrique de variables.
Partie interne de Ivariable.
Interface du gestionnaire de variables.
Interface du gestionnaire de synchronisation des variables.
Interface d'un service de synchronisation de variable.
Interface d'une variable.
Definition IVariable.h:56
Fabrique pour un service implémentant l'interface InterfaceType.
Classe permettant de créer et d'enregistrer les fabriques pour un service.
Informations d'un service.
Definition ServiceInfo.h:46
Informations pour gérer le compactage des entités d'une famille.
Arguments de l'évènement pour l'ajout ou la supression d'entités.
Vue sur les informations génériques d'une famille d'entités.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Vue sur une liste pour obtenir des informations sur les entités.
Enumérateur sur un tableau de tableaux d'entités du maillage.
Variable partielle scalaire sur un type d'entité du maillage.
Identifiant unique d'une entité.
Variable scalaire sur un type d'entité du maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Implémentation d'une collection d'éléments sous forme de vecteur.
Definition List.h:222
Paramètres nécessaires à la construction d'un maillage.
Classe de compatibilité pour contenir un MeshHandle ou un IMesh*.
Definition MeshHandle.h:194
Handle sur un maillage.
Definition MeshHandle.h:47
Caractéristiques d'un maillage.
Definition MeshKind.h:104
Classe de base gérant une variable multi-dimension sur une entité du maillage.
Classe gérant une variable multi-dimension sur une entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Variable tableau sur un type d'entité du maillage.
Variable scalaire sur un type d'entité du maillage.
Constructeur pour une variable nulle.
Liste de propriétés.
Definition Properties.h:64
Classe gérant un vecteur de réel de dimension 2.
Definition Real2.h:121
Classe gérant une matrice de réel de dimension 2x2.
Definition Real2x2.h:53
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Classe gérant une matrice de réel de dimension 3x3.
Definition Real3x3.h:66
Référence à une instance.
Informations pour créer un service.
Référence sur une instance de service.
Propriétés de création d'un service.
Informations pour allouer les entités d'un maillage non structuré.
Paramètres nécessaires à la construction d'une variable.
Collection de variables.
Arguments des méthodes de VariableComparer.
Résultats d'une opération de comparaison.
Classe pour effectuer des comparaisons entre les variables.
Enregistreur d'une fabrique de variables.
Infos caractérisant une variable.
Référence à une variable.
Definition VariableRef.h:56
Arguments de l'évènement notifiant une synchronisation de variables.
Informations caractérisant le type d'une variable.
Informations sur une version.
Definition VersionInfo.h:46
Infos de maillage pour un genre donné d'entité.
Implémentation d'un maillage.
Definition DynamicMesh.h:97
Famille d'entités.
Definition ItemFamily.h:76
Classe temporaire pour conserver un ItemSharedInfo et un type d'entité.
Espace de nom pour l'utilisation des accélérateurs.
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
Types interne à Arcane.
Definition ArcaneTypes.h:93
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Collection< IService * > ServiceCollection
Collection de services.
List< ISession * > SessionList
Tableau de sessions.
Collection< VariableRef * > VariableRefCollection
Collection de variables.
Collection< ItemGroup > ItemGroupCollection
Collection de groupes d'éléments du maillage.
eVariableComparerComputeDifferenceMethod
Méthode utilisée pour calculer la différence entre deux valeurs v1 et v2.
Int32 Integer
Type représentant un entier.
Collection< IItemFamily * > ItemFamilyCollection
Collection de familles d'entités.
List< ICaseOptions * > CaseOptionsList
Tableau d'options du jeu de données.
Collection< IServiceFactoryInfo * > ServiceFactoryInfoCollection
Collection d'informations sur les fabriques de service.
Collection< Internal::IServiceFactory2 * > ServiceFactory2Collection
Collection de fabriques de service.
List< ItemGroup > ItemGroupList
Tableau de groupes d'éléments du maillage.
List< IModule * > ModuleList
Tableau de modules.
eMeshStructure
Structure du maillage.
Definition MeshKind.h:29
Collection< IItemFamily * > IItemFamilyCollection
Collection de familles d'entités.
List< IEntryPoint * > EntryPointList
Tableau de points d'entrées.
eMeshDirection
Type de la direction pour un maillage structuré
@ MD_DirInvalid
Direction invalide ou non initialisée.
@ MD_DirZ
Direction Z.
@ MD_DirY
Direction Y.
@ MD_DirX
Direction X.
Collection< SingletonServiceInstanceRef > SingletonServiceInstanceCollection
Collection d'instances de services singletons.
Collection< ICaseOptions * > CaseOptionsCollection
Collection d'options du jeu de données.
Collection< ITimeLoop * > TimeLoopCollection
Collection de boucles en temps.
Ref< ISingletonServiceInstance > SingletonServiceInstanceRef
Référence à l'interface 'ISingletonServiceInstance'.
Definition ArcaneTypes.h:85
List< ISubDomain * > SubDomainList
Tableau de sous-domaines.
Collection< IModuleFactoryInfo * > ModuleFactoryInfoCollection
Collection d'informations sur les fabriques de module.
List< IService * > ServiceList
Tableau de services.
List< ITiedInterface * > TiedInterfaceList
Tableau d'interfaces liées.
std::istream & operator>>(std::istream &istr, eItemKind &item_kind)
Opérateur d'entrée depuis un flot.
eVariableComparerCompareMode
Méthode de comparaison à utiliser.
eItemKind
Genre d'entité de maillage.
@ IK_Particle
Entité de maillage de genre particule.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
@ IK_Face
Entité de maillage de genre face.
@ IK_DoF
Entité de maillage de genre degre de liberte.
@ IK_Edge
Entité de maillage de genre arête.
const char * itemKindName(eItemKind kind)
Nom du genre d'entité.
Collection< IModule * > ModuleCollection
Collection de modules.
Collection< IEntryPoint * > EntryPointCollection
Collection de points d'entrées.
List< ITimeLoop * > TimeLoopList
Tableau de boucles en temps.
Collection< IMesh * > MeshCollection
Collection de maillages.
Collection< ISession * > SessionCollection
Collection de sessions.
eTimePhase
Phase d'une action temporelle.
Collection< ISubDomain * > SubDomainCollection
Collection de sous-domaines.
List< VariableRef * > VariableRefList
Tableau de références de variables.
Collection< IMesh * > IMeshCollection
Collection de maillages.
Collection< ServiceInstanceRef > ServiceInstanceCollection
Collection d'instances de services.
eMeshAMRKind
Type de maillage AMR.
Definition MeshKind.h:48
Collection< ITiedInterface * > TiedInterfaceCollection
Collection d'interfaces liées.