This file is indexed.

/usr/include/med.h is in libmedc-dev 3.0.6-11.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
/* -*- mode:C; coding:utf-8 -*- */
/*  This file is part of MED.
 *
 *  COPYRIGHT (C) 1999 - 2012  EDF R&D, CEA/DEN
 *  MED is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  MED is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef MED_H
#define MED_H

#include <hdf5.h>

#ifdef __cplusplus
extern "C" {
#endif

#define HDF5_VERSION (H5_VERS_MAJOR * 10000 + H5_VERS_MINOR * 100  + H5_VERS_RELEASE )

#if HDF5_VERSION < 10607
/*TODO : A enlever après MAJ complète api hdf5-1.8 */
#define HDF5_SELECT_BUG (const hsize_t **)
#else
#define HDF5_SELECT_BUG
#endif

/*Le symbole H5F_LIBVER_18 n'existe pas dans hdf5-1.8.4 (uniquement à partir de la version 1.8.6)
  Pour rester dans le modèle interne hdf introduit en 1.8 quelque soit les futurs modèles internes hdf
  on impose le modèle 1.8 et non le LATEST.
  La valeur utilisée est celle définie dans les  version >= 1.8.6 (cf H5Fpublic.h) */
#ifndef H5F_LIBVER_18
/** \internal*/
#define H5F_LIBVER_18 1
#endif

#define MED_MAJOR_NUM 3
#define MED_MINOR_NUM 0
#define MED_RELEASE_NUM 6

#define MED_NUM_MAJEUR 3
#define MED_NUM_MINEUR 0
#define MED_NUM_RELEASE 6

#define MED_HAVE_MPI

#define MED_NULL       (void *) NULL
#define MED_MAX_PARA        20

/** Longueurs des chaînes de caractères stockées dans
    les fichiers
*/
#define MED_COMMENT_SIZE 200
#define MED_IDENT_SIZE 8
#define MED_NAME_SIZE 64
#define MED_SNAME_SIZE 16
#define MED_LNAME_SIZE 80

#define MED_SNAME_BLANK "                "
#define MED_NAME_BLANK  "                                                                "
/*                       0123456789012345678901234567890123456789012345678901234567890123*/

/** \enum med_switch_mode Mode d'entrelacement
    \details Indique le mode d'entrelacement utilisé en mémoire par l'application.
*/
/* 2.3v3.0 ok*/
typedef enum {MED_FULL_INTERLACE, /**<Exemple avec 3 composantes X,Y,Z : X1Y1Z1X2Y2Z2X3Y3Z3...*/
	      MED_NO_INTERLACE,    /**<Exemple avec 3 composantes X,Y,Z : X1X2X3Y1Y2Y3Z1Z2Z3...*/
              MED_UNDEF_INTERLACE=-1/**<Mode d'entelacement non défini */
	}  med_switch_mode;


/**\enum med_storage_mode Mode de stockage global ou compact.
   \details Indique le mode de stockage utilisé par l'application.
*/
/* 2.3v3.0 ok*/
typedef enum { MED_UNDEF_STMODE,  /**< Mode de stockage en mémoire non initialisé*/
               MED_GLOBAL_STMODE, /**< Le stockage utilisé contient en mémoire toutes les valeurs relatives à toutes les entités d'un même type.*/ 
	       MED_COMPACT_STMODE, /**< Le stockage utilisé contient en mémoire contigüe un sous-ensemble de valeurs relatives à un sous-ensemble d'entités d'un même type.*/ 
               MED_GLOBAL_PFLMODE=MED_GLOBAL_STMODE,   /**< Old name, do not use it anymore*/
               MED_COMPACT_PFLMODE=MED_COMPACT_STMODE, /**< Old name, do not use it anymore*/
               MED_UNDEF_PFLMODE=MED_UNDEF_STMODE      /**< Old name, do not use it anymore*/
	     }  med_storage_mode;


/**\enum med_access_mode
   \details Permet de choisir le mode d'ouverture d'un fichier MED.
*/
typedef enum {MED_ACC_RDONLY, /**<Ouverture en lecture seule*/
              MED_ACC_RDWR,   /**<Ouverture en lecture/ecriture, si un élément existe il est écrasé*/
              MED_ACC_RDEXT,  /**<Ouverture en lecture/ecriture, si un élément existe une erreur est générée*/
              MED_ACC_CREAT,  /**<Créer le fichier s'il n'existe pas, l'écrase sinon*/
              MED_ACC_UNDEF   /**<Variable globale interne initialisée au mode d'ouverture*/ 
             } med_access_mode;

/**\enum med_mesh_type
   \details Permet de choisir le type d'un maillage : non structuré ou structuré.
*/
/*2.3v3.0 ok*/
typedef enum {MED_UNSTRUCTURED_MESH, MED_STRUCTURED_MESH, MED_UNDEF_MESH_TYPE=-1} med_mesh_type;

/**\enum med_grid_type
   \details Permet de définir le type de grille d'un maillage structuré.
*/
/* 2.3v3.0 ok*/
typedef enum {MED_CARTESIAN_GRID,
	      MED_POLAR_GRID,
	      MED_CURVILINEAR_GRID,
	      MED_UNDEF_GRID_TYPE=-1} med_grid_type;

/* 2.3v3.0 ok*/
typedef enum {MED_CELL, MED_DESCENDING_FACE, MED_DESCENDING_EDGE, MED_NODE,
	      MED_NODE_ELEMENT, MED_STRUCT_ELEMENT, MED_ALL_ENTITY_TYPE,
	      MED_UNDEF_ENTITY_TYPE=-1 } med_entity_type;
#define MED_N_ENTITY_TYPES 6

/* 2.3v3.0 ok*/
typedef enum {MED_COORDINATE, MED_CONNECTIVITY, MED_NAME, MED_NUMBER,  MED_FAMILY_NUMBER, 
	MED_COORDINATE_AXIS1, MED_COORDINATE_AXIS2, MED_COORDINATE_AXIS3, 
	MED_INDEX_FACE, MED_INDEX_NODE, MED_GLOBAL_NUMBER,
	MED_VARIABLE_ATTRIBUTE, MED_COORDINATE_TRSF,MED_UNDEF_DATATYPE=-1} med_data_type;

/* 2.3v3.0 ok*/
/** \internal*/
typedef enum {MED_INTERNAL_FLOAT64=6, MED_INTERNAL_INT32=24,MED_INTERNAL_INT64=26,
	 MED_INTERNAL_INT=28, MED_INTERNAL_NAME=30, MED_INTERNAL_SNAME=32,
	 MED_INTERNAL_LNAME=34, MED_INTERNAL_IDENT=38, MED_INTERNAL_CHAR=40, MED_INTERNAL_UNDEF=0 } med_internal_type; /**< \internal */

/*TODO: Réécrire les routines _MEDatt avec med_internal_type au lieu de med_field_type */

typedef enum {MED_FLOAT64=MED_INTERNAL_FLOAT64, MED_INT32=MED_INTERNAL_INT32, 
	      MED_INT64=MED_INTERNAL_INT64, MED_INT=MED_INTERNAL_INT }  med_field_type; 

typedef enum {MED_ATT_FLOAT64=MED_INTERNAL_FLOAT64,
	      MED_ATT_INT=MED_INTERNAL_INT,
	      MED_ATT_NAME=MED_INTERNAL_NAME,
	      MED_ATT_UNDEF=MED_INTERNAL_UNDEF }  med_attribute_type; 

typedef med_field_type med_parameter_type; 

#define MED_ATT_FLOAT64_ctype   med_float       /**< \internal */
#define MED_ATT_INT_ctype 	med_int         /**< \internal */
#define MED_ATT_NAME_ctype 	char            /**< \internal */
#define MED_ATT_UNDEF_ctype   	unknown_ctype   /**< \internal */

#define MED_CTYPE(medatttype) medatttype##_ctype 

/* 2.3v3.0 ok : med_type_donnee*/
typedef enum {MED_MESH, MED_FIELD, MED_LIBRARY, MED_FILE,
	MED_MESH_SUPPORT,MED_ELSTRUCT, MED_FAMILY,MED_EQUIVALENCE, MED_GROUP, MED_JOINT, 
	MED_LOCALIZATION, MED_PROFILE, MED_FILTER, MED_INTERPOLATION, MED_NUMERICAL_DATA,
	MED_LINK, MED_CLASS_UNDEF=-1, MED_CLASS_ALL=-2 } med_class;


typedef int med_geometry_type;

#define MED_POINT1 001

#define MED_SEG2 102
#define MED_SEG3 103
#define MED_SEG4 104
#define MED_TRIA3 203
#define MED_QUAD4 204
#define MED_TRIA6 206
#define MED_TRIA7 207
#define MED_QUAD8 208
#define MED_QUAD9 209

#define MED_TETRA4 304
#define MED_PYRA5 305
#define MED_PENTA6 306
#define MED_HEXA8 308
#define MED_TETRA10 310
#define MED_OCTA12 312
#define MED_PYRA13 313
#define MED_PENTA15 315
#define MED_HEXA20 320
#define MED_HEXA27 327

#define MED_POLYGON 400
#define MED_POLYHEDRON 500

#define MED_STRUCT_GEO_INTERNAL 600
#define MED_STRUCT_GEO_SUP_INTERNAL 700

#define MED_NONE 0
#define MED_NO_GEOTYPE MED_NONE
#define MED_UNDEF_GEOTYPE MED_NONE
#define MED_UNDEF_GEOMETRY_TYPE MED_NONE
#define MED_ALL_GEOTYPE -1
#define MED_GEO_ALL MED_ALL_GEOTYPE

#define MED_N_CELL_GEO            23 /**< Nombre de types géométriques de mailles */
#define MED_N_CELL_FIXED_GEO      22 /**< Nombre de types géométriques statiques de mailles */
#define MED_N_CELL_GEO_FIXED_CON  20 /**< Nombre de types géométriques statiques de mailles à connectivité fixe */

#define MED_N_FACE_GEO               7
#define MED_N_FACE_FIXED_GEO         7
#define MED_N_FACE_GEO_FIXED_CON     6

#define MED_N_EDGE_TYPES             3
#define MED_N_EDGE_FIXED_GEO         3
#define MED_N_EDGE_GEO_FIXED_CON     3

#define MED_N_NODE_GEO               1
#define MED_N_NODE_FIXED_GEO         1
#define MED_N_NODE_GEO_FIXED_CON     1

/*2.3v3.0 ok*/
  typedef enum {MED_NODAL, MED_DESCENDING, MED_UNDEF_CONNECTIVITY_MODE=-1, MED_NO_CMODE=-1} med_connectivity_mode; 

/*2.3v3.0 ok*/
typedef enum {MED_CARTESIAN, MED_CYLINDRICAL, MED_SPHERICAL, MED_UNDEF_AXIS_TYPE=-1} med_axis_type;

typedef enum {MED_FALSE, MED_TRUE} med_bool ;

#define MED_GAUSS_ELNO "MED_GAUSS_ELNO" /** < Localisation des points d'intégrations aux
					     noeuds des élements. L'utilisation de cette
					     localisation ne necessite pas sa création au préalable. */ 
#define MED_IPOINT_ELNO MED_GAUSS_ELNO

   
#define MED_NO_NAME ""                  /**< De manière générale une chaîne vide indique l'abscence de nom MED.*/

#define MED_NO_MESHNAME ""              /**< Indique qu'il n'y a pas de maillage */
#define MED_NO_MESH     ""              /**< Indique qu'il n'y a pas de maillage */

#define MED_NO_MESH_SUPPORT ""          /**< Indique qu'il n'y a pas de maillage support  */

#define MED_NO_LOCALIZATION ""          /**< Indique qu'il n'y a pas de localisation de points d'intégration */

#define MED_NO_INTERPOLATION ""         /**< Indique qu'il n'y a pas de fonction d'interpolation  */

#define MED_NO_IPOINT_INTERNAL 1       /**< \internal */

#define MED_NO_PROFILE ""                     /**<Indique l'absence de profil. 
					       Ceci est équivalent à un profil qui sélectionne tous les éléments 
					      \internal L'utilisation d'une chaine vide permet de tester rapidement la taille*/

#define MED_NO_GROUP ""                 /**< Indique l'absence de groupe dans la famille 0 */

#define MED_ALLENTITIES_PROFILE MED_NO_PROFILE /**<Indique qu'il s'agit d'un profil qui selectionne toutes les entités.
					       Ceci est équivalent à #MED_NO_PROFILE . */	 


#define MED_NO_PROFILE_INTERNAL   "MED_NO_PROFILE_INTERNAL"   /**< \internal*/
#define MED_SAME_PROFILE_INTERNAL "MED_SAME_PROFILE_INTERNAL" /**< \internal*/

#define MED_ALL_CONSTITUENT 0                 /**<Nombre de constituants par valeur.
                                               Celà peut être le nombre de coordonnées des noeuds, le nombre de noeuds d'une connectivité, 
	                                       le nombre de composantes d'un champ résultat.*/
#define MED_UNDEF_SIZE 0
#define MED_NO_PROFILE_SIZE 0  /**<Fourni une valeur de taille de profil par défaut d'utilisation de la notion de profil.*/

typedef enum {MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF=-1 } med_sorting_type; /**<Indique l'ordre de tri des séquences d'évolution d'un maillage.
                                                                                    Cette ordre est important pour la gestion des informations d'un maillage qui ont changés
                                                                                    d'une séquence d'évolution à une autre. */
#define MED_NO_DT -1 /**<Indique que l'on n'utilise pas la notion de date.*/
#define MED_NO_IT -1 /**<Indique que l'on n'utilise pas la notion d'itération.*/
#define MED_UNDEF_DT 0 /**<Fourni une valeur de date par défaut d'utilisation de la notion de date.*/

#define MED_ATT_NOT_FILLED -1


/* correspondance des types avec HDF 5 */

typedef hsize_t        med_size;  /**< \internal */
typedef hssize_t       med_ssize; /**< \internal */
typedef hid_t          med_idt;   /**< \internal */
typedef herr_t         med_err;   /**< \internal */

/* types elementaires */

typedef double         med_float;
/*La ligne suivante est déterminée à l'étape de configuration*/
typedef int  med_int; /**< La taille du med_int est paramétrable à l'étape de configuration de med fichier. */

#define INIT4X( x ) x, x, x, x
#define INIT10X( x ) x, x, x, x, x, x, x, x, x, x
#define MED_MAX_FILTER_SPACES 4100
#define MED_MAX_FILTER_SPACES_INIT {INIT4X(INIT10X(INIT10X(INIT10X(0)))), INIT10X(INIT10X(0)) }

/** \struct med_filter
    \brief  Filtre de sélection.
*/
typedef struct {
  /*PRIVATE attributes*/
  med_int          nspaces;
  med_idt          memspace[MED_MAX_FILTER_SPACES];
  med_idt          diskspace[MED_MAX_FILTER_SPACES];
  /*PUBLIC IN attributes*/
  med_int          nentity;
  med_int          nvaluesperentity;
  med_int          nconstituentpervalue;
  med_int          constituentselect;
  med_switch_mode  switchmode;
  med_int          filterarraysize;
  med_size*        filterarray23v30;
  med_int          profilearraysize;/*PRIVATE attribute en IN et OUT positionnée dans MEDfilterCr*/
  med_storage_mode storagemode;
  char             profilename[MED_NAME_SIZE+1];
} med_filter; 


#define MED_FILTER_INIT { 0, MED_MAX_FILTER_SPACES_INIT, MED_MAX_FILTER_SPACES_INIT ,0,0,0,0,\
                          MED_UNDEF_INTERLACE,MED_NO_FILTER_SIZE, NULL , \
                          MED_NO_PROFILE_SIZE,MED_UNDEF_PFLMODE,MED_NO_PROFILE }

#define MED_NO_FILTER NULL
#define MED_NO_FILTER_SIZE 0
#define MED_NO_PROFILE_F "                                "

/** \struct med_file_version
    \brief  Structure d'acceuil du numéro de version MED d'un fichier.
*/
typedef struct {
  med_int majeur; med_int mineur; med_int release;
} med_file_version;
#define MED_FILE_VERSION_INIT {0, 0, 0};


#include "med_proto.h"

extern MEDC_EXPORT med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2];
extern MEDC_EXPORT const char * const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2];
extern MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2];
extern MEDC_EXPORT const char * const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2];
extern MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2];
extern MEDC_EXPORT const char * const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2];
extern MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2];
extern MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2];
extern MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2];
extern MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2];

/*      Predefined names for struct elements            */
#define MED_PARTICLE_NAME   "MED_PARTICLE"
#define MED_BALL_NAME       "MED_BALL"
#define MED_BEAM_NAME       "MED_BEAM"

/* 	Predefined attributes names for struct elements */
#define MED_PARTICLE_LABEL  "MED_PARTICLE_LABEL"
#define MED_BALL_DIAMETER   "MED_BALL_DIAMETER"
#define MED_BEAM_THICKNESS  "MED_BEAM_THICKNESS"

#ifdef __cplusplus
}
#endif

#endif  /* MED_H */