/usr/include/med.h is in libmedc-dev 3.0.6-9build1.
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_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 */
|