00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <med.h>
00023 #define MESGERR 1
00024 #include <med_utils.h>
00025
00026 #include <string.h>
00027
00028 int main (int argc, char **argv) {
00029 med_idt fid;
00030 const char meshname[MED_NAME_SIZE+1] = "2D unstructured mesh";
00031 char meshdescription[MED_COMMENT_SIZE+1]="";
00032 med_int meshdim;
00033 med_int spacedim;
00034 med_sorting_type sortingtype;
00035 med_int nstep;
00036 med_mesh_type meshtype;
00037 med_axis_type axistype;
00038 char axisname[2*MED_SNAME_SIZE+1]="";
00039 char unitname[2*MED_SNAME_SIZE+1]="";
00040 char dtunit[MED_SNAME_SIZE+1]="";
00041 med_float *coordinates = NULL;
00042 med_int nnodes = 0;
00043 med_int npoly = 0;
00044 med_int indexsize;
00045 med_int *index = NULL;
00046 med_int *connectivity = NULL;
00047 med_int connectivitysize;
00048 med_bool coordinatechangement;
00049 med_bool geotransformation;
00050 int i;
00051 int k,ind1,ind2;
00052 int ret=-1;
00053
00054
00055 fid = MEDfileOpen("UsesCase_MEDmesh_13.med",MED_ACC_RDONLY);
00056 if (fid < 0) {
00057 MESSAGE("ERROR : open file in READ ONLY ACCESS mode ...");
00058 goto ERROR;
00059 }
00060
00061
00062
00063
00064
00065
00066
00067 if (MEDmeshInfoByName(fid, meshname, &spacedim, &meshdim, &meshtype, meshdescription,
00068 dtunit, &sortingtype, &nstep, &axistype, axisname, unitname) < 0) {
00069 MESSAGE("ERROR : mesh info ...");
00070 goto ERROR;
00071 }
00072
00073
00074 if ((nnodes = MEDmeshnEntity(fid, meshname, MED_NO_DT, MED_NO_IT, MED_NODE, MED_POINT1,
00075 MED_COORDINATE, MED_NO_CMODE,&coordinatechangement,
00076 &geotransformation)) < 0) {
00077 MESSAGE("ERROR : number of nodes ...");
00078 goto ERROR;
00079 }
00080
00081
00082
00083
00084
00085
00086
00087
00088 if ((indexsize = MEDmeshnEntity(fid,meshname,MED_NO_DT,MED_NO_IT,
00089 MED_CELL,MED_POLYGON,MED_INDEX_NODE,MED_NODAL,
00090 &coordinatechangement,
00091 &geotransformation)) < 0) {
00092 MESSAGE("ERROR : read number of polygon ...");
00093 goto ERROR;
00094 }
00095 npoly = indexsize-1;
00096
00097
00098 if ((connectivitysize = MEDmeshnEntity(fid,meshname,MED_NO_DT,MED_NO_IT,
00099 MED_CELL,MED_POLYGON,MED_CONNECTIVITY,MED_NODAL,
00100 &coordinatechangement,
00101 &geotransformation)) < 0) {
00102 MESSAGE("ERROR : read connevity size ...");
00103 goto ERROR;
00104 }
00105
00106
00107 if ((coordinates = (med_float*) malloc(sizeof(med_float)*nnodes*spacedim)) == NULL) {
00108 MESSAGE("ERROR : memory allocation ...");
00109 goto ERROR;
00110 }
00111
00112 if (MEDmeshNodeCoordinateRd(fid, meshname, MED_NO_DT, MED_NO_IT, MED_FULL_INTERLACE,
00113 coordinates) < 0) {
00114 MESSAGE("ERROR : nodes coordinates ...");
00115 free(coordinates);
00116 goto ERROR;
00117 }
00118 free(coordinates);
00119
00120
00121 index = (med_int *) malloc(sizeof(med_int)*indexsize);
00122 connectivity = (med_int *) malloc(sizeof(med_int)*connectivitysize);
00123
00124 if (MEDmeshPolygonRd(fid,meshname,MED_NO_DT,MED_NO_IT,MED_CELL,MED_NODAL,
00125 index,connectivity) < 0) {
00126 MESSAGE("ERROR : read polygon connectivity ...");
00127 free(index);
00128 free(connectivity);
00129 goto ERROR;
00130 }
00131 free(index);
00132 free(connectivity);
00133
00134
00135
00136
00137
00138 ret=0;
00139 ERROR:
00140
00141
00142 if (MEDfileClose(fid) < 0) {
00143 MESSAGE("ERROR : close file");
00144 ret=-1;
00145 }
00146
00147 return ret;
00148 }
00149