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 1
00048 #define MED_RELEASE_NUM 0
00049
00050 #define MED_NUM_MAJEUR 3
00051 #define MED_NUM_MINEUR 1
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,
00083 MED_NO_INTERLACE,
00084 MED_UNDEF_INTERLACE=-1
00085 } med_switch_mode;
00086
00087
00091
00092 typedef enum { MED_UNDEF_STMODE,
00093 MED_GLOBAL_STMODE,
00094 MED_COMPACT_STMODE,
00095 MED_GLOBAL_PFLMODE=MED_GLOBAL_STMODE,
00096 MED_COMPACT_PFLMODE=MED_COMPACT_STMODE,
00097 MED_UNDEF_PFLMODE=MED_UNDEF_STMODE
00098 } med_storage_mode;
00099
00100
00104 typedef enum {MED_ACC_RDONLY,
00105 MED_ACC_RDWR,
00106 MED_ACC_RDEXT,
00107 MED_ACC_CREAT,
00108 MED_ACC_UNDEF
00109 } med_access_mode;
00110
00114
00115 typedef enum {MED_UNSTRUCTURED_MESH, MED_STRUCTURED_MESH, MED_UNDEF_MESH_TYPE=-1} med_mesh_type;
00116
00120
00121 typedef enum {MED_CARTESIAN_GRID,
00122 MED_POLAR_GRID,
00123 MED_CURVILINEAR_GRID,
00124 MED_UNDEF_GRID_TYPE=-1} med_grid_type;
00125
00126
00127 typedef enum {MED_CELL, MED_DESCENDING_FACE, MED_DESCENDING_EDGE, MED_NODE,
00128 MED_NODE_ELEMENT, MED_STRUCT_ELEMENT, MED_ALL_ENTITY_TYPE,
00129 MED_UNDEF_ENTITY_TYPE=-1 } med_entity_type;
00130 #define MED_N_ENTITY_TYPES 6
00131
00132
00133 typedef enum {MED_COORDINATE, MED_CONNECTIVITY, MED_NAME, MED_NUMBER, MED_FAMILY_NUMBER,
00134 MED_COORDINATE_AXIS1, MED_COORDINATE_AXIS2, MED_COORDINATE_AXIS3,
00135 MED_INDEX_FACE, MED_INDEX_NODE, MED_GLOBAL_NUMBER,
00136 MED_VARIABLE_ATTRIBUTE, MED_COORDINATE_TRSF,MED_UNDEF_DATATYPE=-1} med_data_type;
00137
00138
00140 typedef enum {MED_INTERNAL_FLOAT64=6, MED_INTERNAL_INT32=24,MED_INTERNAL_INT64=26,
00141 MED_INTERNAL_INT=28, MED_INTERNAL_NAME=30, MED_INTERNAL_SNAME=32,
00142 MED_INTERNAL_LNAME=34, MED_INTERNAL_IDENT=38, MED_INTERNAL_CHAR=40, MED_INTERNAL_UNDEF=0 } med_internal_type;
00144
00145
00146 typedef enum {MED_FLOAT64=MED_INTERNAL_FLOAT64, MED_INT32=MED_INTERNAL_INT32,
00147 MED_INT64=MED_INTERNAL_INT64, MED_INT=MED_INTERNAL_INT } med_field_type;
00148
00149 typedef enum {MED_ATT_FLOAT64=MED_INTERNAL_FLOAT64,
00150 MED_ATT_INT=MED_INTERNAL_INT,
00151 MED_ATT_NAME=MED_INTERNAL_NAME,
00152 MED_ATT_UNDEF=MED_INTERNAL_UNDEF } med_attribute_type;
00153
00154 typedef med_field_type med_parameter_type;
00155
00156 #define MED_ATT_FLOAT64_ctype med_float
00157 #define MED_ATT_INT_ctype med_int
00158 #define MED_ATT_NAME_ctype char
00159 #define MED_ATT_UNDEF_ctype unknown_ctype
00161 #define MED_CTYPE(medatttype) medatttype##_ctype
00162
00163
00164 typedef enum {MED_MESH, MED_FIELD, MED_LIBRARY, MED_FILE,
00165 MED_MESH_SUPPORT,MED_ELSTRUCT, MED_FAMILY,MED_EQUIVALENCE, MED_GROUP, MED_JOINT,
00166 MED_LOCALIZATION, MED_PROFILE, MED_FILTER, MED_INTERPOLATION, MED_NUMERICAL_DATA,
00167 MED_LINK, MED_CLASS_UNDEF=-1, MED_CLASS_ALL=-2 } med_class;
00168
00169
00170 typedef int med_geometry_type;
00171
00172 #define MED_POINT1 001
00173
00174 #define MED_SEG2 102
00175 #define MED_SEG3 103
00176 #define MED_SEG4 104
00177 #define MED_TRIA3 203
00178 #define MED_QUAD4 204
00179 #define MED_TRIA6 206
00180 #define MED_TRIA7 207
00181 #define MED_QUAD8 208
00182 #define MED_QUAD9 209
00183
00184 #define MED_TETRA4 304
00185 #define MED_PYRA5 305
00186 #define MED_PENTA6 306
00187 #define MED_HEXA8 308
00188 #define MED_TETRA10 310
00189 #define MED_OCTA12 312
00190 #define MED_PYRA13 313
00191 #define MED_PENTA15 315
00192 #define MED_HEXA20 320
00193 #define MED_HEXA27 327
00194
00195 #define MED_POLYGON 400
00196 #define MED_POLYGON2 420
00197 #define MED_POLYHEDRON 500
00198
00199 #define MED_STRUCT_GEO_INTERNAL 600
00200 #define MED_STRUCT_GEO_SUP_INTERNAL 700
00201
00202 #define MED_NONE 0
00203 #define MED_NO_GEOTYPE MED_NONE
00204 #define MED_UNDEF_GEOTYPE MED_NONE
00205 #define MED_UNDEF_GEOMETRY_TYPE MED_NONE
00206 #define MED_ALL_GEOTYPE -1
00207 #define MED_GEO_ALL MED_ALL_GEOTYPE
00208
00209 #define MED_N_CELL_GEO 24
00210 #define MED_N_CELL_FIXED_GEO 23
00211 #define MED_N_CELL_GEO_FIXED_CON 20
00213 #define MED_N_FACE_GEO 8
00214 #define MED_N_FACE_FIXED_GEO 8
00215 #define MED_N_FACE_GEO_FIXED_CON 6
00216
00217 #define MED_N_EDGE_TYPES 3
00218 #define MED_N_EDGE_FIXED_GEO 3
00219 #define MED_N_EDGE_GEO_FIXED_CON 3
00220
00221 #define MED_N_NODE_GEO 1
00222 #define MED_N_NODE_FIXED_GEO 1
00223 #define MED_N_NODE_GEO_FIXED_CON 1
00224
00225
00226 typedef enum {MED_NODAL, MED_DESCENDING, MED_UNDEF_CONNECTIVITY_MODE=-1, MED_NO_CMODE=-1} med_connectivity_mode;
00227
00228
00229 typedef enum {MED_CARTESIAN, MED_CYLINDRICAL, MED_SPHERICAL, MED_UNDEF_AXIS_TYPE=-1} med_axis_type;
00230
00231 typedef enum {MED_FALSE, MED_TRUE} med_bool ;
00232
00233 #define MED_GAUSS_ELNO "MED_GAUSS_ELNO"
00236 #define MED_IPOINT_ELNO MED_GAUSS_ELNO
00237
00238
00239 #define MED_NO_NAME ""
00241 #define MED_NO_MESHNAME ""
00242 #define MED_NO_MESH ""
00244 #define MED_NO_MESH_SUPPORT ""
00246 #define MED_NO_LOCALIZATION ""
00248 #define MED_NO_INTERPOLATION ""
00250 #define MED_NO_IPOINT_INTERNAL 1
00252 #define MED_NO_PROFILE ""
00257 #define MED_NO_GROUP ""
00259 #define MED_ALLENTITIES_PROFILE MED_NO_PROFILE
00263 #define MED_NO_PROFILE_INTERNAL "MED_NO_PROFILE_INTERNAL"
00264 #define MED_SAME_PROFILE_INTERNAL "MED_SAME_PROFILE_INTERNAL"
00266 #define MED_ALL_CONSTITUENT 0
00270 #define MED_UNDEF_SIZE 0
00271 #define MED_NO_PROFILE_SIZE 0
00273 typedef enum {MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF=-1 } med_sorting_type;
00282 #define MED_NO_DT -1
00283 #define MED_NO_IT -1
00284 #define MED_UNDEF_DT 0
00286 #define MED_ATT_NOT_FILLED -1
00287
00288
00289
00290
00291 typedef hsize_t med_size;
00292 typedef hssize_t med_ssize;
00293 typedef hid_t med_idt;
00294 typedef herr_t med_err;
00296
00297
00298 typedef double med_float;
00299
00300 typedef int med_int;
00302 #define INIT4X( x ) x, x, x, x
00303 #define INIT10X( x ) x, x, x, x, x, x, x, x, x, x
00304 #define MED_MAX_FILTER_SPACES 4100
00305 #define MED_MAX_FILTER_SPACES_INIT {INIT4X(INIT10X(INIT10X(INIT10X(0)))), INIT10X(INIT10X(0)) }
00306
00310 typedef struct {
00311
00312 med_int nspaces;
00313 med_idt memspace[MED_MAX_FILTER_SPACES];
00314 med_idt diskspace[MED_MAX_FILTER_SPACES];
00315
00316 med_int nentity;
00317 med_int nvaluesperentity;
00318 med_int nconstituentpervalue;
00319 med_int constituentselect;
00320 med_switch_mode switchmode;
00321 med_int filterarraysize;
00322 med_size* filterarray23v30;
00323 med_int profilearraysize;
00324 med_storage_mode storagemode;
00325 char profilename[MED_NAME_SIZE+1];
00326 } med_filter;
00327
00328
00329 #define MED_FILTER_INIT { 0, MED_MAX_FILTER_SPACES_INIT, MED_MAX_FILTER_SPACES_INIT ,0,0,0,0,\
00330 MED_UNDEF_INTERLACE,MED_NO_FILTER_SIZE, NULL , \
00331 MED_NO_PROFILE_SIZE,MED_UNDEF_PFLMODE,MED_NO_PROFILE }
00332
00333 #define MED_NO_FILTER NULL
00334 #define MED_NO_FILTER_SIZE 0
00335 #define MED_NO_PROFILE_F " "
00336
00340 typedef struct {
00341 med_int majeur; med_int mineur; med_int release;
00342 } med_file_version;
00343 #define MED_FILE_VERSION_INIT {0, 0, 0};
00344
00348 typedef struct {
00349 void *app_image_ptr;
00350 size_t app_image_size;
00351 int ref_count;
00353 void *fapl_image_ptr;
00354 size_t fapl_image_size;
00355 int fapl_ref_count;
00356 void *vfd_image_ptr;
00357 size_t vfd_image_size;
00358 int vfd_ref_count;
00359 med_access_mode flags;
00360 } med_memfile ;
00361
00362 #define MED_MEMFILE_INIT {NULL, 0, 1, NULL, 0, 0, NULL, 0, 0, MED_ACC_RDONLY}
00363
00364
00365 #include "med_proto.h"
00366
00367
00368
00369 extern MEDC_EXPORT med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2];
00370 extern MEDC_EXPORT const char * const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2];
00371 extern MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2];
00372 extern MEDC_EXPORT const char * const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2];
00373 extern MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2];
00374 extern MEDC_EXPORT const char * const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2];
00375 extern MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2];
00376 extern MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2];
00377 extern MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2];
00378 extern MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2];
00379
00380
00381 #define MED_PARTICLE_NAME "MED_PARTICLE"
00382 #define MED_BALL_NAME "MED_BALL"
00383 #define MED_BEAM_NAME "MED_BEAM"
00384
00385
00386 #define MED_PARTICLE_LABEL "MED_PARTICLE_LABEL"
00387 #define MED_BALL_DIAMETER "MED_BALL_DIAMETER"
00388 #define MED_BEAM_THICKNESS "MED_BEAM_THICKNESS"
00389
00390 #ifdef __cplusplus
00391 }
00392 #endif
00393
00394 #endif