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 0
00048 #define MED_RELEASE_NUM 6
00049
00050 #define MED_NUM_MAJEUR 3
00051 #define MED_NUM_MINEUR 0
00052 #define MED_NUM_RELEASE 6
00053
00054 #define MED_HAVE_MPI
00055
00056 #define MED_NULL (void *) NULL
00057 #define MED_MAX_PARA 20
00058
00062 #define MED_COMMENT_SIZE 200
00063 #define MED_IDENT_SIZE 8
00064 #define MED_NAME_SIZE 64
00065 #define MED_SNAME_SIZE 16
00066 #define MED_LNAME_SIZE 80
00067
00068 #define MED_SNAME_BLANK " "
00069 #define MED_NAME_BLANK " "
00070
00071
00075
00076 typedef enum {MED_FULL_INTERLACE,
00077 MED_NO_INTERLACE,
00078 MED_UNDEF_INTERLACE=-1
00079 } med_switch_mode;
00080
00081
00085
00086 typedef enum { MED_UNDEF_STMODE,
00087 MED_GLOBAL_STMODE,
00088 MED_COMPACT_STMODE,
00089 MED_GLOBAL_PFLMODE=MED_GLOBAL_STMODE,
00090 MED_COMPACT_PFLMODE=MED_COMPACT_STMODE,
00091 MED_UNDEF_PFLMODE=MED_UNDEF_STMODE
00092 } med_storage_mode;
00093
00094
00098 typedef enum {MED_ACC_RDONLY,
00099 MED_ACC_RDWR,
00100 MED_ACC_RDEXT,
00101 MED_ACC_CREAT,
00102 MED_ACC_UNDEF
00103 } med_access_mode;
00104
00108
00109 typedef enum {MED_UNSTRUCTURED_MESH, MED_STRUCTURED_MESH, MED_UNDEF_MESH_TYPE=-1} med_mesh_type;
00110
00114
00115 typedef enum {MED_CARTESIAN_GRID,
00116 MED_POLAR_GRID,
00117 MED_CURVILINEAR_GRID,
00118 MED_UNDEF_GRID_TYPE=-1} med_grid_type;
00119
00120
00121 typedef enum {MED_CELL, MED_DESCENDING_FACE, MED_DESCENDING_EDGE, MED_NODE,
00122 MED_NODE_ELEMENT, MED_STRUCT_ELEMENT, MED_ALL_ENTITY_TYPE,
00123 MED_UNDEF_ENTITY_TYPE=-1 } med_entity_type;
00124 #define MED_N_ENTITY_TYPES 6
00125
00126
00127 typedef enum {MED_COORDINATE, MED_CONNECTIVITY, MED_NAME, MED_NUMBER, MED_FAMILY_NUMBER,
00128 MED_COORDINATE_AXIS1, MED_COORDINATE_AXIS2, MED_COORDINATE_AXIS3,
00129 MED_INDEX_FACE, MED_INDEX_NODE, MED_GLOBAL_NUMBER,
00130 MED_VARIABLE_ATTRIBUTE, MED_COORDINATE_TRSF,MED_UNDEF_DATATYPE=-1} med_data_type;
00131
00132
00134 typedef enum {MED_INTERNAL_FLOAT64=6, MED_INTERNAL_INT32=24,MED_INTERNAL_INT64=26,
00135 MED_INTERNAL_INT=28, MED_INTERNAL_NAME=30, MED_INTERNAL_SNAME=32,
00136 MED_INTERNAL_LNAME=34, MED_INTERNAL_IDENT=38, MED_INTERNAL_CHAR=40, MED_INTERNAL_UNDEF=0 } med_internal_type;
00138
00139
00140 typedef enum {MED_FLOAT64=MED_INTERNAL_FLOAT64, MED_INT32=MED_INTERNAL_INT32,
00141 MED_INT64=MED_INTERNAL_INT64, MED_INT=MED_INTERNAL_INT } med_field_type;
00142
00143 typedef enum {MED_ATT_FLOAT64=MED_INTERNAL_FLOAT64,
00144 MED_ATT_INT=MED_INTERNAL_INT,
00145 MED_ATT_NAME=MED_INTERNAL_NAME,
00146 MED_ATT_UNDEF=MED_INTERNAL_UNDEF } med_attribute_type;
00147
00148 typedef med_field_type med_parameter_type;
00149
00150 #define MED_ATT_FLOAT64_ctype med_float
00151 #define MED_ATT_INT_ctype med_int
00152 #define MED_ATT_NAME_ctype char
00153 #define MED_ATT_UNDEF_ctype unknown_ctype
00155 #define MED_CTYPE(medatttype) medatttype##_ctype
00156
00157
00158 typedef enum {MED_MESH, MED_FIELD, MED_LIBRARY, MED_FILE,
00159 MED_MESH_SUPPORT,MED_ELSTRUCT, MED_FAMILY,MED_EQUIVALENCE, MED_GROUP, MED_JOINT,
00160 MED_LOCALIZATION, MED_PROFILE, MED_FILTER, MED_INTERPOLATION, MED_NUMERICAL_DATA,
00161 MED_LINK, MED_CLASS_UNDEF=-1, MED_CLASS_ALL=-2 } med_class;
00162
00163
00164 typedef int med_geometry_type;
00165
00166 #define MED_POINT1 001
00167
00168 #define MED_SEG2 102
00169 #define MED_SEG3 103
00170 #define MED_SEG4 104
00171 #define MED_TRIA3 203
00172 #define MED_QUAD4 204
00173 #define MED_TRIA6 206
00174 #define MED_TRIA7 207
00175 #define MED_QUAD8 208
00176 #define MED_QUAD9 209
00177
00178 #define MED_TETRA4 304
00179 #define MED_PYRA5 305
00180 #define MED_PENTA6 306
00181 #define MED_HEXA8 308
00182 #define MED_TETRA10 310
00183 #define MED_OCTA12 312
00184 #define MED_PYRA13 313
00185 #define MED_PENTA15 315
00186 #define MED_HEXA20 320
00187 #define MED_HEXA27 327
00188
00189 #define MED_POLYGON 400
00190 #define MED_POLYHEDRON 500
00191
00192 #define MED_STRUCT_GEO_INTERNAL 600
00193 #define MED_STRUCT_GEO_SUP_INTERNAL 700
00194
00195 #define MED_NONE 0
00196 #define MED_NO_GEOTYPE MED_NONE
00197 #define MED_UNDEF_GEOTYPE MED_NONE
00198 #define MED_UNDEF_GEOMETRY_TYPE MED_NONE
00199 #define MED_ALL_GEOTYPE -1
00200 #define MED_GEO_ALL MED_ALL_GEOTYPE
00201
00202 #define MED_N_CELL_GEO 23
00203 #define MED_N_CELL_FIXED_GEO 22
00204 #define MED_N_CELL_GEO_FIXED_CON 20
00206 #define MED_N_FACE_GEO 7
00207 #define MED_N_FACE_FIXED_GEO 7
00208 #define MED_N_FACE_GEO_FIXED_CON 6
00209
00210 #define MED_N_EDGE_TYPES 3
00211 #define MED_N_EDGE_FIXED_GEO 3
00212 #define MED_N_EDGE_GEO_FIXED_CON 3
00213
00214 #define MED_N_NODE_GEO 1
00215 #define MED_N_NODE_FIXED_GEO 1
00216 #define MED_N_NODE_GEO_FIXED_CON 1
00217
00218
00219 typedef enum {MED_NODAL, MED_DESCENDING, MED_UNDEF_CONNECTIVITY_MODE=-1, MED_NO_CMODE=-1} med_connectivity_mode;
00220
00221
00222 typedef enum {MED_CARTESIAN, MED_CYLINDRICAL, MED_SPHERICAL, MED_UNDEF_AXIS_TYPE=-1} med_axis_type;
00223
00224 typedef enum {MED_FALSE, MED_TRUE} med_bool ;
00225
00226 #define MED_GAUSS_ELNO "MED_GAUSS_ELNO"
00229 #define MED_IPOINT_ELNO MED_GAUSS_ELNO
00230
00231
00232 #define MED_NO_NAME ""
00234 #define MED_NO_MESHNAME ""
00235 #define MED_NO_MESH ""
00237 #define MED_NO_MESH_SUPPORT ""
00239 #define MED_NO_LOCALIZATION ""
00241 #define MED_NO_INTERPOLATION ""
00243 #define MED_NO_IPOINT_INTERNAL 1
00245 #define MED_NO_PROFILE ""
00249 #define MED_NO_GROUP ""
00251 #define MED_ALLENTITIES_PROFILE MED_NO_PROFILE
00255 #define MED_NO_PROFILE_INTERNAL "MED_NO_PROFILE_INTERNAL"
00256 #define MED_SAME_PROFILE_INTERNAL "MED_SAME_PROFILE_INTERNAL"
00258 #define MED_ALL_CONSTITUENT 0
00261 #define MED_UNDEF_SIZE 0
00262 #define MED_NO_PROFILE_SIZE 0
00264 typedef enum {MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF=-1 } med_sorting_type;
00267 #define MED_NO_DT -1
00268 #define MED_NO_IT -1
00269 #define MED_UNDEF_DT 0
00271 #define MED_ATT_NOT_FILLED -1
00272
00273
00274
00275
00276 typedef hsize_t med_size;
00277 typedef hssize_t med_ssize;
00278 typedef hid_t med_idt;
00279 typedef herr_t med_err;
00281
00282
00283 typedef double med_float;
00284
00285 typedef int med_int;
00287 #define INIT4X( x ) x, x, x, x
00288 #define INIT10X( x ) x, x, x, x, x, x, x, x, x, x
00289 #define MED_MAX_FILTER_SPACES 4100
00290 #define MED_MAX_FILTER_SPACES_INIT {INIT4X(INIT10X(INIT10X(INIT10X(0)))), INIT10X(INIT10X(0)) }
00291
00295 typedef struct {
00296
00297 med_int nspaces;
00298 med_idt memspace[MED_MAX_FILTER_SPACES];
00299 med_idt diskspace[MED_MAX_FILTER_SPACES];
00300
00301 med_int nentity;
00302 med_int nvaluesperentity;
00303 med_int nconstituentpervalue;
00304 med_int constituentselect;
00305 med_switch_mode switchmode;
00306 med_int filterarraysize;
00307 med_size* filterarray23v30;
00308 med_int profilearraysize;
00309 med_storage_mode storagemode;
00310 char profilename[MED_NAME_SIZE+1];
00311 } med_filter;
00312
00313
00314 #define MED_FILTER_INIT { 0, MED_MAX_FILTER_SPACES_INIT, MED_MAX_FILTER_SPACES_INIT ,0,0,0,0,\
00315 MED_UNDEF_INTERLACE,MED_NO_FILTER_SIZE, NULL , \
00316 MED_NO_PROFILE_SIZE,MED_UNDEF_PFLMODE,MED_NO_PROFILE }
00317
00318 #define MED_NO_FILTER NULL
00319 #define MED_NO_FILTER_SIZE 0
00320 #define MED_NO_PROFILE_F " "
00321
00325 typedef struct {
00326 med_int majeur; med_int mineur; med_int release;
00327 } med_file_version;
00328 #define MED_FILE_VERSION_INIT {0, 0, 0};
00329
00330
00331 #include "med_proto.h"
00332
00333 extern MEDC_EXPORT med_entity_type MED_GET_ENTITY_TYPE[MED_N_ENTITY_TYPES+2];
00334 extern MEDC_EXPORT const char * const MED_GET_ENTITY_TYPENAME[MED_N_ENTITY_TYPES+2];
00335 extern MEDC_EXPORT med_geometry_type MED_GET_CELL_GEOMETRY_TYPE[MED_N_CELL_FIXED_GEO+2];
00336 extern MEDC_EXPORT const char * const MED_GET_CELL_GEOMETRY_TYPENAME[MED_N_CELL_FIXED_GEO+2];
00337 extern MEDC_EXPORT med_geometry_type MED_GET_FACE_GEOMETRY_TYPE[MED_N_FACE_FIXED_GEO+2];
00338 extern MEDC_EXPORT const char * const MED_GET_FACE_GEOMETRY_TYPENAME[MED_N_FACE_FIXED_GEO+2];
00339 extern MEDC_EXPORT med_geometry_type MED_GET_EDGE_GEOMETRY_TYPE[MED_N_EDGE_FIXED_GEO+2];
00340 extern MEDC_EXPORT const char * MED_GET_EDGE_GEOMETRY_TYPENAME[MED_N_EDGE_FIXED_GEO+2];
00341 extern MEDC_EXPORT med_geometry_type MED_GET_NODE_GEOMETRY_TYPE[MED_N_NODE_FIXED_GEO+2];
00342 extern MEDC_EXPORT const char * MED_GET_NODE_GEOMETRY_TYPENAME[MED_N_NODE_FIXED_GEO+2];
00343
00344
00345 #define MED_PARTICLE_NAME "MED_PARTICLE"
00346 #define MED_BALL_NAME "MED_BALL"
00347 #define MED_BEAM_NAME "MED_BEAM"
00348
00349
00350 #define MED_PARTICLE_LABEL "MED_PARTICLE_LABEL"
00351 #define MED_BALL_DIAMETER "MED_BALL_DIAMETER"
00352 #define MED_BEAM_THICKNESS "MED_BEAM_THICKNESS"
00353
00354 #ifdef __cplusplus
00355 }
00356 #endif
00357
00358 #endif