00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MED_H
00020 #define MED_H
00021
00022 #include <hdf5.h>
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027
00028 #define HDF5_VERSION (H5_VERS_MAJOR * 10000 + H5_VERS_MINOR * 100 + H5_VERS_RELEASE )
00029
00030 #if HDF5_VERSION < 10607
00031
00032 #define HDF5_SELECT_BUG (const hsize_t **)
00033 #else
00034 #define HDF5_SELECT_BUG
00035 #endif
00036
00037
00038
00039
00040
00041 #ifndef H5F_LIBVER_18
00042
00043 #define H5F_LIBVER_18 1
00044 #endif
00045
00046 #define MED_MAJOR_NUM 3
00047 #define MED_MINOR_NUM 2
00048 #define MED_RELEASE_NUM 0
00049
00050 #define MED_NUM_MAJEUR 3
00051 #define MED_NUM_MINEUR 2
00052 #define MED_NUM_RELEASE 0
00053
00054 #define STR(x) #x
00055 #define _MED_VERSION(x,y,z) STR(x) "." STR(y) "." STR(z)
00056 #define MED_VERSION_STR _MED_VERSION(MED_NUM_MAJEUR,MED_NUM_MINEUR,MED_NUM_RELEASE)
00057
00058
00059
00060 #define MED_NULL (void *) NULL
00061 #define MED_MAX_PARA 20
00062
00065 #define MED_COMMENT_SIZE 200
00066 #define MED_IDENT_SIZE 8
00067 #define MED_NAME_SIZE 64
00068 #define MED_SNAME_SIZE 16
00069 #define MED_LNAME_SIZE 80
00070
00071 #define MED_SNAME_BLANK " "
00072 #define MED_NAME_BLANK " "
00073
00074
00075 #define MED_PATHNAME_SIZE 255
00076 #define MED_MAX_CHFID_PATH MED_PATHNAME_SIZE
00081
00082 typedef enum {MED_FULL_INTERLACE,
00084 MED_NO_INTERLACE,
00086 MED_UNDEF_INTERLACE=-1
00087 } med_switch_mode;
00088
00089
00093
00094 typedef enum { MED_UNDEF_STMODE,
00095 MED_GLOBAL_STMODE,
00096 MED_COMPACT_STMODE,
00097 MED_GLOBAL_PFLMODE=MED_GLOBAL_STMODE,
00098 MED_COMPACT_PFLMODE=MED_COMPACT_STMODE,
00099 MED_UNDEF_PFLMODE=MED_UNDEF_STMODE
00100 } med_storage_mode;
00101
00102
00106 typedef enum {MED_ACC_RDONLY,
00107 MED_ACC_RDWR,
00108 MED_ACC_RDEXT,
00109 MED_ACC_CREAT,
00110 MED_ACC_UNDEF
00111 } med_access_mode;
00112
00116
00117 typedef enum {MED_UNSTRUCTURED_MESH, MED_STRUCTURED_MESH, MED_UNDEF_MESH_TYPE=-1} med_mesh_type;
00118
00122
00123 typedef enum {MED_CARTESIAN_GRID,
00124 MED_POLAR_GRID,
00125 MED_CURVILINEAR_GRID,
00126 MED_UNDEF_GRID_TYPE=-1} med_grid_type;
00127
00128
00129 typedef enum {MED_CELL, MED_DESCENDING_FACE, MED_DESCENDING_EDGE, MED_NODE,
00130 MED_NODE_ELEMENT, MED_STRUCT_ELEMENT, MED_ALL_ENTITY_TYPE,
00131 MED_UNDEF_ENTITY_TYPE=-1 } med_entity_type;
00132 #define MED_N_ENTITY_TYPES 6
00133
00134
00135 typedef enum {MED_COORDINATE, MED_CONNECTIVITY, MED_NAME, MED_NUMBER, MED_FAMILY_NUMBER,
00136 MED_COORDINATE_AXIS1, MED_COORDINATE_AXIS2, MED_COORDINATE_AXIS3,
00137 MED_INDEX_FACE, MED_INDEX_NODE, MED_GLOBAL_NUMBER,
00138 MED_VARIABLE_ATTRIBUTE, MED_COORDINATE_TRSF,MED_UNDEF_DATATYPE=-1} med_data_type;
00139
00140
00142 typedef enum {MED_INTERNAL_FLOAT64=6, MED_INTERNAL_INT32=24,MED_INTERNAL_INT64=26,
00143 MED_INTERNAL_INT=28, MED_INTERNAL_NAME=30, MED_INTERNAL_SNAME=32,
00144 MED_INTERNAL_LNAME=34, MED_INTERNAL_IDENT=38, MED_INTERNAL_CHAR=40, MED_INTERNAL_UNDEF=0 } med_internal_type;
00146
00147
00148 typedef enum {MED_FLOAT64=MED_INTERNAL_FLOAT64, MED_INT32=MED_INTERNAL_INT32,
00149 MED_INT64=MED_INTERNAL_INT64, MED_INT=MED_INTERNAL_INT } med_field_type;
00150
00151 typedef enum {MED_ATT_FLOAT64=MED_INTERNAL_FLOAT64,
00152 MED_ATT_INT=MED_INTERNAL_INT,
00153 MED_ATT_NAME=MED_INTERNAL_NAME,
00154 MED_ATT_UNDEF=MED_INTERNAL_UNDEF } med_attribute_type;
00155
00156 typedef med_field_type med_parameter_type;
00157
00158 #define MED_ATT_FLOAT64_ctype med_float
00159 #define MED_ATT_INT_ctype med_int
00160 #define MED_ATT_NAME_ctype char
00161 #define MED_ATT_UNDEF_ctype unknown_ctype
00163 #define MED_CTYPE(medatttype) medatttype##_ctype
00164
00165
00166 typedef enum {MED_MESH, MED_FIELD, MED_LIBRARY, MED_FILE,
00167 MED_MESH_SUPPORT,MED_ELSTRUCT, MED_FAMILY,MED_EQUIVALENCE, MED_GROUP, MED_JOINT,
00168 MED_LOCALIZATION, MED_PROFILE, MED_FILTER, MED_INTERPOLATION, MED_NUMERICAL_DATA,
00169 MED_LINK, MED_CLASS_UNDEF=-1, MED_CLASS_ALL=-2 } med_class;
00170
00171
00172 typedef int med_geometry_type;
00173
00174 #define MED_POINT1 001
00175
00176 #define MED_SEG2 102
00177 #define MED_SEG3 103
00178 #define MED_SEG4 104
00179 #define MED_TRIA3 203
00180 #define MED_QUAD4 204
00181 #define MED_TRIA6 206
00182 #define MED_TRIA7 207
00183 #define MED_QUAD8 208
00184 #define MED_QUAD9 209
00185
00186 #define MED_TETRA4 304
00187 #define MED_PYRA5 305
00188 #define MED_PENTA6 306
00189 #define MED_HEXA8 308
00190 #define MED_TETRA10 310
00191 #define MED_OCTA12 312
00192 #define MED_PYRA13 313
00193 #define MED_PENTA15 315
00194 #define MED_HEXA20 320
00195 #define MED_HEXA27 327
00196
00197 #define MED_POLYGON 400
00198 #define MED_POLYGON2 420
00199 #define MED_POLYHEDRON 500
00200
00201 #define MED_STRUCT_GEO_INTERNAL 600
00202 #define MED_STRUCT_GEO_SUP_INTERNAL 700
00203
00204 #define MED_NONE 0
00205 #define MED_NO_GEOTYPE MED_NONE
00206 #define MED_UNDEF_GEOTYPE MED_NONE
00207 #define MED_UNDEF_GEOMETRY_TYPE MED_NONE
00208 #define MED_ALL_GEOTYPE -1
00209 #define MED_GEO_ALL MED_ALL_GEOTYPE
00210
00211 #define MED_N_CELL_GEO 24
00212 #define MED_N_CELL_FIXED_GEO 23
00213 #define MED_N_CELL_GEO_FIXED_CON 20
00215 #define MED_N_FACE_GEO 8
00216 #define MED_N_FACE_FIXED_GEO 8
00217 #define MED_N_FACE_GEO_FIXED_CON 6
00218
00219 #define MED_N_EDGE_TYPES 3
00220 #define MED_N_EDGE_FIXED_GEO 3
00221 #define MED_N_EDGE_GEO_FIXED_CON 3
00222
00223 #define MED_N_NODE_GEO 1
00224 #define MED_N_NODE_FIXED_GEO 1
00225 #define MED_N_NODE_GEO_FIXED_CON 1
00226
00227
00228 typedef enum {MED_NODAL, MED_DESCENDING, MED_UNDEF_CONNECTIVITY_MODE=-1, MED_NO_CMODE=-1} med_connectivity_mode;
00229
00230
00231 typedef enum {MED_CARTESIAN, MED_CYLINDRICAL, MED_SPHERICAL, MED_UNDEF_AXIS_TYPE=-1} med_axis_type;
00232
00233 typedef enum {MED_FALSE, MED_TRUE} med_bool ;
00234
00235 #define MED_GAUSS_ELNO "MED_GAUSS_ELNO"
00238 #define MED_IPOINT_ELNO MED_GAUSS_ELNO
00239
00240
00241 #define MED_NO_NAME ""
00243 #define MED_NO_MESHNAME ""
00244 #define MED_NO_MESH ""
00246 #define MED_NO_MESH_SUPPORT ""
00248 #define MED_NO_LOCALIZATION ""
00250 #define MED_NO_INTERPOLATION ""
00252 #define MED_NO_IPOINT_INTERNAL 1
00254 #define MED_NO_PROFILE ""
00259 #define MED_NO_GROUP ""
00261 #define MED_ALLENTITIES_PROFILE MED_NO_PROFILE
00265 #define MED_NO_PROFILE_INTERNAL "MED_NO_PROFILE_INTERNAL"
00266 #define MED_SAME_PROFILE_INTERNAL "MED_SAME_PROFILE_INTERNAL"
00268 #define MED_ALL_CONSTITUENT 0
00272 #define MED_UNDEF_SIZE 0
00273 #define MED_NO_PROFILE_SIZE 0
00275 typedef enum {MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF=-1 } med_sorting_type;
00284 #define MED_NO_DT -1
00285 #define MED_NO_IT -1
00286 #define MED_UNDEF_DT 0
00288 #define MED_ATT_NOT_FILLED -1
00289
00290
00291
00292
00293 typedef hsize_t med_size;
00294 typedef hssize_t med_ssize;
00295 typedef hid_t med_idt;
00296 typedef herr_t med_err;
00298
00299
00300 typedef double med_float;
00301
00302 typedef int med_int;
00304 #define INIT4X( x ) x, x, x, x
00305 #define INIT10X( x ) x, x, x, x, x, x, x, x, x, x
00306 #define MED_MAX_FILTER_SPACES 4100
00307 #define MED_MAX_FILTER_SPACES_INIT {INIT4X(INIT10X(INIT10X(INIT10X(0)))), INIT10X(INIT10X(0)) }
00308
00312 typedef struct {
00313
00314 med_int nspaces;
00315 med_idt memspace[MED_MAX_FILTER_SPACES];
00316 med_idt diskspace[MED_MAX_FILTER_SPACES];
00317
00318 med_int nentity;
00319 med_int nvaluesperentity;
00320 med_int nconstituentpervalue;
00321 med_int constituentselect;
00322 med_switch_mode switchmode;
00323 med_int filterarraysize;
00324 med_size* filterarray23v30;
00325 med_int profilearraysize;
00326 med_storage_mode storagemode;
00327 char profilename[MED_NAME_SIZE+1];
00328 } med_filter;
00329
00330
00331 #define MED_FILTER_INIT { 0, MED_MAX_FILTER_SPACES_INIT, MED_MAX_FILTER_SPACES_INIT ,0,0,0,0,\
00332 MED_UNDEF_INTERLACE,MED_NO_FILTER_SIZE, NULL , \
00333 MED_NO_PROFILE_SIZE,MED_UNDEF_PFLMODE,MED_NO_PROFILE }
00334
00335 #define MED_NO_FILTER NULL
00336 #define MED_NO_FILTER_SIZE 0
00337 #define MED_NO_PROFILE_F " "
00338
00342 typedef struct {
00343 med_int majeur; med_int mineur; med_int release;
00344 } med_file_version;
00345 #define MED_FILE_VERSION_INIT {0, 0, 0};
00346
00350 typedef struct {
00351 void *app_image_ptr;
00352 size_t app_image_size;
00353 int ref_count;
00355 void *fapl_image_ptr;
00356 size_t fapl_image_size;
00357 int fapl_ref_count;
00358 void *vfd_image_ptr;
00359 size_t vfd_image_size;
00360 int vfd_ref_count;
00361 med_access_mode flags;
00362 } med_memfile ;
00363
00364 #define MED_MEMFILE_INIT {NULL, 0, 1, NULL, 0, 0, NULL, 0, 0, MED_ACC_RDONLY}
00365
00366
00367 #include "med_proto.h"
00368
00369
00370
00371 extern MEDC_EXPORT med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2];
00372 extern MEDC_EXPORT const char * const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2];
00373 extern MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2];
00374 extern MEDC_EXPORT const char * const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2];
00375 extern MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2];
00376 extern MEDC_EXPORT const char * const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2];
00377 extern MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2];
00378 extern MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2];
00379 extern MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2];
00380 extern MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2];
00381
00382
00383 #define MED_PARTICLE_NAME "MED_PARTICLE"
00384 #define MED_BALL_NAME "MED_BALL"
00385 #define MED_BEAM_NAME "MED_BEAM"
00386
00387
00388 #define MED_PARTICLE_LABEL "MED_PARTICLE_LABEL"
00389 #define MED_BALL_DIAMETER "MED_BALL_DIAMETER"
00390 #define MED_BEAM_THICKNESS "MED_BEAM_THICKNESS"
00391
00392 #ifdef __cplusplus
00393 }
00394 #endif
00395
00396 #endif