Arcane  v3.15.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
DataTypes.h
Aller à la documentation de ce fichier.
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/* DataTypes.h (C) 2000-2024 */
9/* */
10/* Définition des types liées aux données. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_DATATYPES_DATATYPES_H
13#define ARCANE_CORE_DATATYPES_DATATYPES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include <iosfwd>
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27// NOTE: Swig 4.2.0 ne gère pas bien le 'Int32´.
28// (cela fonctionne avec Swig 4.1.1)
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \brief Type d'une donnée.
33 */
34#ifndef SWIG
35enum eDataType : Int32
36#else
37enum eDataType
38#endif
39{
40 DT_Byte = 0, //!< Donnée de type octet
41 DT_Real = 1, //!< Donnée de type réel
42 DT_Int16 = 2, //!< Donnée de type entier 16 bits
43 DT_Int32 = 3, //!< Donnée de type entier 32 bits
44 DT_Int64 = 4, //!< Donnée de type entier 64 bits
45 DT_String = 5, //!< Donnée de type chaîne de caractère UTF-8
46 DT_Real2 = 6, //!< Donnée de type vecteur 2
47 DT_Real3 = 7, //!< Donnée de type vecteur 3
48 DT_Real2x2 = 8, //!< Donnée de type tenseur 3x3
49 DT_Real3x3 = 9, //!< Donnée de type tenseur 3x3
50 DT_BFloat16 = 10, //!< Donnée de type 'BFloat16'
51 DT_Float16 = 11, //!< Donnée de type 'Float16'
52 DT_Float32 = 12, //!< Donnée de type 'Float32'
53 DT_Int8 = 13, //!< Donnée de type entier sur 8 bits
54 DT_Float128 = 14, //!< Donnée de type flottant sur 128 bits
55 DT_Int128 = 15, //!< Donnée de type entier sur 128 bits
56 DT_Unknown = 16 //!< Donnée de type inconnue ou non initialisée
57};
58
59//! Nombre de valeurs de eDataType
60static constexpr Int32 NB_ARCANE_DATA_TYPE = 17;
61
62/*---------------------------------------------------------------------------*/
63/*---------------------------------------------------------------------------*/
64/*!
65 * \brief Liste des noms pour eDataType.
66 */
68{
69 public:
70 static constexpr const char* N_BYTE = "Byte";
71 static constexpr const char* N_REAL = "Real";
72 static constexpr const char* N_INT16 = "Int16";
73 static constexpr const char* N_INT32 = "Int32";
74 static constexpr const char* N_INT64 = "Int64";
75 static constexpr const char* N_STRING = "String";
76 static constexpr const char* N_REAL2 = "Real2";
77 static constexpr const char* N_REAL3 = "Real3";
78 static constexpr const char* N_REAL2x2 = "Real2x2";
79 static constexpr const char* N_REAL3x3 = "Real3x3";
80 static constexpr const char* N_BFLOAT16 = "BFloat16";
81 static constexpr const char* N_FLOAT16 = "Float16";
82 static constexpr const char* N_FLOAT32 = "Float32";
83 static constexpr const char* N_INT8 = "Int8";
84 static constexpr const char* N_FLOAT128 = "Float128";
85 static constexpr const char* N_INT128 = "Int128";
86 static constexpr const char* N_UNKNOWN = "Unknown";
87};
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92//! Nom du type de donnée.
93extern "C++" ARCANE_CORE_EXPORT const char*
95
96//! Trouve le type associé à \a name
97extern "C++" ARCANE_CORE_EXPORT eDataType
98dataTypeFromName(const char* name,bool& has_error);
99
100//! Trouve le type associé à \a name. Envoie une exception en cas d'erreur
101extern "C++" ARCANE_CORE_EXPORT eDataType
102dataTypeFromName(const char* name);
103
104//! Taille du type de donnée \a type (qui doit être différent de \a DT_String)
105extern "C++" ARCANE_CORE_EXPORT Integer
107
108//! Opérateur de sortie sur un flot
109extern "C++" ARCANE_CORE_EXPORT std::ostream&
110operator<< (std::ostream& ostr,eDataType data_type);
111
112//! Opérateur d'entrée depuis un flot
113extern "C++" ARCANE_CORE_EXPORT std::istream&
114operator>> (std::istream& istr,eDataType& data_type);
115
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
119/*!
120 * \brief Type de politique d'initialisation possible pour une donnée.
121 *
122 * Par défaut, pour des raisons historiques, il s'agit de DIP_Legacy.
123 *
124 * La politique d'initialisation est prise en compte pour
125 * l'initialisation des variables Arcane. Cette valeur peut être
126 * positionnée/récupérée via les fonctions
127 * setGlobalDataInitialisationPolicy() et getGlobalDataInitialisationPolicy().
128 *
129 */
131{
132 //! Pas d'initialisation forcée
134 /*!
135 * \brief Initialisation avec le constructeur par défaut.
136 *
137 * Pour les entiers, il s'agit de la valeurs 0. Pour les réels, il
138 * s'agit de la valeur 0.0.
139 */
141 /*!
142 * \brief Initialisation avec des NaN (Not a Number)
143 *
144 * Ce mode permet d'initialiser les données de type Real et dérivés (Real2, Real3, ...)
145 * avec des valeurs NaN qui déclenchent une exception lorsqu'elles
146 * sont utilisées.
147 */
149 /*!
150 * \brief Initialisation en mode historique.
151 *
152 * Ce mode est conservé pour compatibilité avec les versions d'Arcane inférieurs
153 * à la version 2.0 où c'était le mode par défaut.
154 * Dans ce mode, les variables sur les entités du maillage étaient
155 * toujours initialisées avec le constructeur par défaut lors de
156 * leur première allocation, quelle que soit la valeur de
157 * getGlobalDataInitialisationPolicy(). La politique d'initialisation n'était
158 * prise en compte que lors d'un changement du nomnbre d'éléments (resize())
159 * où pour les variables qui n'étaient pas des variables du maillage.
160 */
162 /*!
163 * \brief Initialisation avec des NaN pour à la création et le constructeur
164 * par défaut ensuite.
165 *
166 * Ce mode est identique à DIP_InitWithNan pour la création des variables
167 * et à DIP_InitWithDefault lorsqu'on la taille de la variable évolue
168 * (en géneral via un appel à IVariable::resize() ou IVariable::resizeFromGroup()).
169 */
172
173/*---------------------------------------------------------------------------*/
174/*---------------------------------------------------------------------------*/
175
176//! Positionne la politique d'initialisation des variables.
177extern "C++" ARCANE_CORE_EXPORT void
179
180//! Récupère la politique d'initialisation des variables.
181extern "C++" ARCANE_CORE_EXPORT eDataInitialisationPolicy
183
184/*---------------------------------------------------------------------------*/
185/*---------------------------------------------------------------------------*/
186//! Type de trace possible
188{
189 TT_None = 0,
190 TT_Read = 1,
191 TT_Write = 2
192};
193
194/*---------------------------------------------------------------------------*/
195/*---------------------------------------------------------------------------*/
196
197} // End namespace Arcane
198
199// Macro pour instantier une classe template pour tous les types numériques
200#define ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE1(class_name)\
201template class class_name <Real>;\
202template class class_name <Real3>;\
203template class class_name <Real3x3>;\
204template class class_name <Real2>;\
205template class class_name <Real2x2>;
206
207// Macro pour instantier une classe template pour tous les types numériques
208#define ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE2(class_name)\
209template class class_name <Int8>;\
210template class class_name <Int16>;\
211template class class_name <Int32>;\
212template class class_name <Int64>;\
213template class class_name <Byte>
214
215// Macro pour instantier une classe template pour tous les types numériques
216#define ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE3(class_name)\
217template class class_name <BFloat16>;\
218template class class_name <Float16>;\
219template class class_name <Float32>;
220
221// Macro pour instantier une classe template pour tous les types numériques
222#define ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE(class_name)\
223 ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE1(class_name);\
224 ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE2(class_name);\
225 ARCANE_INTERNAL_INSTANTIATE_TEMPLATE_FOR_NUMERIC_DATATYPE3(class_name)
226
227/*---------------------------------------------------------------------------*/
228/*---------------------------------------------------------------------------*/
229
230#endif
Déclarations des types utilisés dans Arcane.
Liste des noms pour eDataType.
Definition DataTypes.h:68
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ARCANE_DATATYPE_EXPORT Integer dataTypeSize(eDataType type)
Taille du type de donnée type (qui doit être différent de DT_String)
Definition DataTypes.cc:109
void setGlobalDataInitialisationPolicy(eDataInitialisationPolicy init_policy)
Positionne la politique d'initialisation des variables.
Definition DataTypes.cc:156
eDataInitialisationPolicy
Type de politique d'initialisation possible pour une donnée.
Definition DataTypes.h:131
@ DIP_InitInitialWithNanResizeWithDefault
Initialisation avec des NaN pour à la création et le constructeur par défaut ensuite.
Definition DataTypes.h:170
@ DIP_Legacy
Initialisation en mode historique.
Definition DataTypes.h:161
@ DIP_None
Pas d'initialisation forcée.
Definition DataTypes.h:133
@ DIP_InitWithNan
Initialisation avec des NaN (Not a Number)
Definition DataTypes.h:148
@ DIP_InitWithDefault
Initialisation avec le constructeur par défaut.
Definition DataTypes.h:140
eDataInitialisationPolicy getGlobalDataInitialisationPolicy()
Récupère la politique d'initialisation des variables.
Definition DataTypes.cc:162
eTraceType
Type de trace possible.
Definition DataTypes.h:188
std::istream & operator>>(std::istream &istr, eItemKind &item_kind)
Opérateur d'entrée depuis un flot.
eDataType
Type d'une donnée.
Definition DataTypes.h:39
@ DT_Float32
Donnée de type 'Float32'.
Definition DataTypes.h:52
@ DT_Int128
Donnée de type entier sur 128 bits.
Definition DataTypes.h:55
@ DT_Real2x2
Donnée de type tenseur 3x3.
Definition DataTypes.h:48
@ DT_Int16
Donnée de type entier 16 bits.
Definition DataTypes.h:42
@ DT_Int8
Donnée de type entier sur 8 bits.
Definition DataTypes.h:53
@ DT_Real3x3
Donnée de type tenseur 3x3.
Definition DataTypes.h:49
@ DT_Int32
Donnée de type entier 32 bits.
Definition DataTypes.h:43
@ DT_Real3
Donnée de type vecteur 3.
Definition DataTypes.h:47
@ DT_Float16
Donnée de type 'Float16'.
Definition DataTypes.h:51
@ DT_Int64
Donnée de type entier 64 bits.
Definition DataTypes.h:44
@ DT_Unknown
Donnée de type inconnue ou non initialisée.
Definition DataTypes.h:56
@ DT_String
Donnée de type chaîne de caractère UTF-8.
Definition DataTypes.h:45
@ DT_BFloat16
Donnée de type 'BFloat16'.
Definition DataTypes.h:50
@ DT_Real2
Donnée de type vecteur 2.
Definition DataTypes.h:46
@ DT_Real
Donnée de type réel.
Definition DataTypes.h:41
@ DT_Byte
Donnée de type octet.
Definition DataTypes.h:40
@ DT_Float128
Donnée de type flottant sur 128 bits.
Definition DataTypes.h:54
std::ostream & operator<<(std::ostream &ostr, eItemKind item_kind)
Opérateur de sortie sur un flot.
ARCANE_DATATYPE_EXPORT eDataType dataTypeFromName(const char *name, bool &has_error)
Trouve le type associé à name.
Definition DataTypes.cc:92
const char * dataTypeName(eDataType type)
Nom du type de donnée.
Definition DataTypes.cc:70