MED fichier
build.python3.8/include/med.h
Aller à la documentation de ce fichier.
1 /* -*- mode:C; coding:utf-8 -*- */
2 /* This file is part of MED.
3  *
4  * COPYRIGHT (C) 1999 - 2019 EDF R&D, CEA/DEN
5  * MED is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * MED is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with MED. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef MED_H
20 #define MED_H
21 
22 #include <hdf5.h>
23 #ifdef HAVE_STDINT_H
24 #include <stdint.h> // Use the C99 official header
25 #endif
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 /* This is the minimum hdf version med must have */
32 #define HDF_VERSION_REF 5-1.10.2
33 #define HDF_VERSION_MAJOR_REF 1
34 #define HDF_VERSION_MINOR_REF 10
35 #define HDF_VERSION_RELEASE_REF 2
36 #define HDF_VERSION_NUM_REF (HDF_VERSION_MAJOR_REF * 10000 + HDF_VERSION_MINOR_REF * 100 + HDF_VERSION_RELEASE_REF )
37 
38 #define HDF5_VERSION (H5_VERS_MAJOR * 10000 + H5_VERS_MINOR * 100 + H5_VERS_RELEASE )
39 
40 #if HDF5_VERSION < 10607
41 /*TODO : A enlever après MAJ complète api hdf5-1.8 */
42 #define HDF5_SELECT_BUG (const hsize_t **)
43 #else
44 #define HDF5_SELECT_BUG
45 #endif
46 
47 /*Le symbole H5F_LIBVER_18 n'existe pas dans hdf5-1.8.4 (uniquement à partir de la version 1.8.6)
48  Pour rester dans le modèle interne hdf introduit en 1.8 quelque soit les futurs modèles internes hdf
49  on impose le modèle 1.8 et non le LATEST (cf _MEDfileCreate).
50  La valeur utilisée est celle définie dans les version >= 1.8.6 (cf H5Fpublic.h) */
51 #ifndef H5F_LIBVER_18
52 
53 #define H5F_LIBVER_18 1
54 #endif
55 
56 /*En anglais*/
57 #define MED_MAJOR_NUM 4
58 #define MED_MINOR_NUM 0
59 #define MED_RELEASE_NUM 0
60 #define MED_3_LATEST_MINOR 3
61 #define MED_4_LATEST_MINOR 0
62 /*En franglais*/
63 #define MED_NUM_MAJEUR 4
64 #define MED_NUM_MINEUR 0
65 #define MED_NUM_RELEASE 0
66 
67 #define STR(x) #x
68 #define _MED_VERSION(x,y,z) STR(x) "." STR(y) "." STR(z)
69 #define MED_VERSION_STR _MED_VERSION(MED_NUM_MAJEUR,MED_NUM_MINEUR,MED_NUM_RELEASE)
70 
71 #define MED_HAVE_MPI
72 
73 #define MED_NULL (void *) NULL
74 #define MED_MAX_PARA 20
75 
77 #define MED_COMMENT_SIZE 200
78 #define MED_IDENT_SIZE 8
79 #define MED_NAME_SIZE 64
80 #define MED_SNAME_SIZE 16
81 #define MED_LNAME_SIZE 80
82 
83 #define MED_SNAME_BLANK " "
84 #define MED_NAME_BLANK " "
85 /* 0123456789012345678901234567890123456789012345678901234567890123*/
86 
87 #define MED_PATHNAME_SIZE 255
88 #define MED_MAX_CHFID_PATH MED_PATHNAME_SIZE
93 /* 2.3v3.0 ok*/
94 typedef enum {MED_FULL_INTERLACE,
100 
101 
105 /* 2.3v3.0 ok*/
106 typedef enum { MED_UNDEF_STMODE,
113 
114 
118 typedef enum {MED_ACC_RDONLY,
123  } med_access_mode;
124 
128 /*2.3v3.0 ok*/
130 
134 /* 2.3v3.0 ok*/
135 typedef enum {MED_CARTESIAN_GRID,
139 
140 /* 2.3v3.0 ok*/
144 #define MED_N_ENTITY_TYPES 6
145 
146 /* 2.3v3.0 ok*/
151 
152 /* 2.3v3.0 ok*/
160 /*TODO: Réécrire les routines _MEDatt avec med_internal_type au lieu de med_field_type */
161 
168  } med_field_type;
169 
174 
175 typedef med_field_type med_parameter_type;
176 
177 #define MED_ATT_FLOAT64_ctype med_float
178 #define MED_ATT_INT_ctype med_int
179 #define MED_ATT_NAME_ctype char
180 #define MED_ATT_UNDEF_ctype unknown_ctype
182 #define MED_CTYPE(medatttype) medatttype##_ctype
183 
184 /* 2.3v3.0 ok : med_type_donnee*/
189 
190 
191 typedef int med_geometry_type;
192 
193 /* Mailles dont la géométrie à une connectivité fixe*/
194 
195 #define MED_POINT1 001
196 
197 #define MED_SEG2 102
198 #define MED_SEG3 103
199 #define MED_SEG4 104
200 #define MED_TRIA3 203
201 #define MED_QUAD4 204
202 #define MED_TRIA6 206
203 #define MED_TRIA7 207
204 #define MED_QUAD8 208
205 #define MED_QUAD9 209
206 
207 #define MED_TETRA4 304
208 #define MED_PYRA5 305
209 #define MED_PENTA6 306
210 #define MED_HEXA8 308
211 #define MED_TETRA10 310
212 #define MED_OCTA12 312
213 #define MED_PYRA13 313
214 #define MED_PENTA15 315
215 #define MED_PENTA18 318
216 #define MED_HEXA20 320
217 #define MED_HEXA27 327
218 
219 /* Mailles dont la géométrie à une connectivité variable*/
220 #define MED_POLYGON 400
221 #define MED_POLYGON2 420
222 #define MED_POLYHEDRON 500
223 
224 /* Mailles dont la géométrie est dynamique (découverte du modèle dans le fichier) */
225 #define MED_STRUCT_GEO_INTERNAL 600
226 #define MED_STRUCT_GEO_SUP_INTERNAL 700
227 
228 #define MED_NONE 0
229 #define MED_NO_GEOTYPE MED_NONE
230 #define MED_UNDEF_GEOTYPE MED_NONE
231 #define MED_UNDEF_GEOMETRY_TYPE MED_NONE
232 #define MED_ALL_GEOTYPE -1
233 #define MED_GEO_ALL MED_ALL_GEOTYPE
234 
235 #define MED_N_CELL_GEO 25
236 #define MED_N_CELL_FIXED_GEO 24
237 #define MED_N_CELL_GEO_FIXED_CON 21
239 #define MED_N_FACE_GEO 8
240 #define MED_N_FACE_FIXED_GEO 8
241 #define MED_N_FACE_GEO_FIXED_CON 6
242 
243 #define MED_N_EDGE_TYPES 3
244 #define MED_N_EDGE_FIXED_GEO 3
245 #define MED_N_EDGE_GEO_FIXED_CON 3
246 
247 #define MED_N_NODE_GEO 1
248 #define MED_N_NODE_FIXED_GEO 1
249 #define MED_N_NODE_GEO_FIXED_CON 1
250 
251 /*2.3v3.0 ok*/
253 
254 /*2.3v3.0 ok*/
256 
257 typedef enum {MED_FALSE, MED_TRUE} med_bool ;
258 
259 #define MED_GAUSS_ELNO "MED_GAUSS_ELNO"
262 #define MED_IPOINT_ELNO MED_GAUSS_ELNO
263 
264 
265 #define MED_NO_NAME ""
267 #define MED_NO_MESHNAME ""
268 #define MED_NO_MESH ""
270 #define MED_NO_MESH_SUPPORT ""
272 #define MED_NO_LOCALIZATION ""
274 #define MED_NO_INTERPOLATION ""
276 #define MED_NO_IPOINT_INTERNAL 1
278 #define MED_NO_PROFILE ""
283 #define MED_NO_GROUP ""
285 #define MED_ALLENTITIES_PROFILE MED_NO_PROFILE
289 #define MED_NO_PROFILE_INTERNAL "MED_NO_PROFILE_INTERNAL"
290 #define MED_SAME_PROFILE_INTERNAL "MED_SAME_PROFILE_INTERNAL"
292 #define MED_ALL_CONSTITUENT 0
296 #define MED_UNDEF_SIZE 0
297 #define MED_NO_PROFILE_SIZE 0
299 typedef enum {MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF=-1 } med_sorting_type;
308 #define MED_NO_DT -1
309 #define MED_NO_IT -1
310 #define MED_UNDEF_DT 0
312 #define MED_ATT_NOT_FILLED -1
313 
314 
315 /* correspondance des types avec HDF 5 */
317 typedef hsize_t med_size;
318 typedef hssize_t med_ssize;
319 typedef hid_t med_idt;
320 typedef herr_t med_err;
322 /* types elementaires */
323 
324 typedef double med_float;
325 typedef double med_float64;
326 typedef double med_double;
327 typedef float med_float32;
328 
329 /*La ligne suivante est déterminée à l'étape de configuration*/
330 typedef int med_int;
331 typedef int32_t med_int32;
332 typedef int64_t med_int64;
334 #define INIT2X( x ) x, x,
335 #define INIT4X( x ) x, x, x, x
336 #define INIT10X( x ) x, x, x, x, x, x, x, x, x, x
337 #define MED_MAX_FILTER_SPACES 4100
338 #define MED_MAX_FILTER_SPACES_INIT {INIT4X(INIT10X(INIT10X(INIT10X(0)))), INIT10X(INIT10X(0)) }
343 typedef struct {
344  /*PRIVATE attributes*/
345  med_int nspaces;
346  med_idt memspace[MED_MAX_FILTER_SPACES];
347  med_idt diskspace[MED_MAX_FILTER_SPACES];
348  /*PUBLIC IN attributes*/
349  med_int nentity;
350  med_int nvaluesperentity;
351  med_int nconstituentpervalue;
352  med_int constituentselect;
353  med_switch_mode switchmode;
354  med_int filterarraysize;
355  med_size* filterarray23v30;
356  med_int profilearraysize;/*PRIVATE attribute en IN et OUT positionnée dans MEDfilterCr*/
357  med_storage_mode storagemode;
358  char profilename[MED_NAME_SIZE+1];
359 } med_filter;
360 
361 
362 #define MED_FILTER_INIT { 0, MED_MAX_FILTER_SPACES_INIT, MED_MAX_FILTER_SPACES_INIT ,0,0,0,0,\
363  MED_UNDEF_INTERLACE,MED_NO_FILTER_SIZE, NULL , \
364  MED_NO_PROFILE_SIZE,MED_UNDEF_PFLMODE,MED_NO_PROFILE }
365 
366 #define MED_NO_FILTER NULL
367 #define MED_NO_FILTER_SIZE 0
368 #define MED_NO_PROFILE_F " "
373 typedef struct {
374  med_int majeur; med_int mineur; med_int release;
376 #define MED_FILE_VERSION_INIT {0, 0, 0};
377 
381 typedef struct {
382  void *app_image_ptr;
383  size_t app_image_size;
384  int ref_count;
386  void *fapl_image_ptr;
387  size_t fapl_image_size;
388  int fapl_ref_count;
389  void *vfd_image_ptr;
390  size_t vfd_image_size;
391  int vfd_ref_count;
392  med_access_mode flags;
393 } med_memfile ;
394 
395 #define MED_MEMFILE_INIT {NULL, 0, 1, NULL, 0, 0, NULL, 0, 0, MED_ACC_RDONLY}
396 
398 #define AFF_MEMFILE \
399 XSCRUTE(memfile->app_image_ptr);\
400 ISCRUTE_long(memfile->app_image_size);\
401 ISCRUTE_int(memfile->ref_count);\
402 XSCRUTE(memfile->fapl_image_ptr);\
403 ISCRUTE_long(memfile->fapl_image_size);\
404 ISCRUTE_int(memfile->fapl_ref_count);\
405 XSCRUTE(memfile->vfd_image_ptr);\
406 ISCRUTE_long(memfile->vfd_image_size);\
407 ISCRUTE_int(memfile->vfd_ref_count);\
408 ISCRUTE_int(memfile->flags);
409 
410 
411 #include "med_proto.h"
412 
413 /*En cas de modifications/ajouts de type d'entité/géométrique mettre à jour les itérateurs suivants : */
414 
416 extern MEDC_EXPORT const char * const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2];
425 
426 /* Predefined names for struct elements */
427 #define MED_PARTICLE_NAME "MED_PARTICLE"
428 #define MED_BALL_NAME "MED_BALL"
429 #define MED_BEAM_NAME "MED_BEAM"
430 
431 /* Predefined attributes names for struct elements */
432 #define MED_PARTICLE_LABEL "MED_PARTICLE_LABEL"
433 #define MED_BALL_DIAMETER "MED_BALL_DIAMETER"
434 #define MED_BEAM_THICKNESS "MED_BEAM_THICKNESS"
436 #ifdef __cplusplus
437 }
438 #endif
440 #endif /* MED_H */
MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2]
Definition: MEDiterators.c:44
Filtre de sélection.
hsize_t med_size
MEDC_EXPORT const char *const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2]
Definition: MEDiterators.c:33
double med_double
unsigned long long hsize_t
MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2]
Definition: MEDiterators.c:145
MEDC_EXPORT const char *const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2]
Definition: MEDiterators.c:116
MEDC_EXPORT med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2]
Definition: MEDiterators.c:22
MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2]
Definition: MEDiterators.c:151
#define MED_N_ENTITY_TYPES
MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2]
Definition: MEDiterators.c:137
#define MEDC_EXPORT
Definition: medC_win_dll.h:29
med_field_type med_parameter_type
double med_float
#define MED_N_EDGE_FIXED_GEO
double med_float64
Structure d&#39;acceuil du numéro de version MED d&#39;un fichier.
Structure d&#39;acceuil du buffer d&#39;un fichier MED en mémoire.
MEDC_EXPORT const char *const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2]
Definition: MEDiterators.c:73
MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2]
Definition: MEDiterators.c:129
#define MED_N_CELL_FIXED_GEO
#define MED_N_FACE_FIXED_GEO
#define MED_N_NODE_FIXED_GEO
MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2]
Definition: MEDiterators.c:103
int64_t med_int64
int32_t med_int32
hssize_t med_ssize
#define MED_MAX_FILTER_SPACES
#define MED_NAME_SIZE