00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <med.h>
00026 #define MESGERR 1
00027 #include "med_utils.h"
00028 #include <string.h>
00029
00030 #ifdef DEF_LECT_ECR
00031 #define MODE_ACCES MED_LECTURE_ECRITURE
00032 #elif DEF_LECT_AJOUT
00033 #define MODE_ACCES MED_LECTURE_AJOUT
00034 #else
00035 #define MODE_ACCES MED_CREATION
00036 #endif
00037
00038 int main (int argc, char **argv)
00039
00040
00041 {
00042 med_err ret = 0;
00043 med_idt fid;
00044 med_int nse2;
00045 med_int *se2_1;
00046 med_int *se2_2;
00047 char *nomse2;
00048 med_int *numse2;
00049 med_int *nufase2;
00050 med_int ntr3;
00051 med_int *tr3;
00052 char *nomtr3;
00053 med_int *numtr3;
00054 med_int *nufatr3;
00055 char maa[MED_TAILLE_NOM+1] ="maa1";
00056 med_int mdim = 2;
00057 med_booleen inoele,inuele;
00058 med_int tse2,ttr3;
00059 med_int i;
00060 char str[MED_TAILLE_PNOM+1];
00061 med_int profil[2] = { 2, 3 };
00062 char desc[MED_TAILLE_DESC+1];
00063 med_maillage type;
00064
00065
00066 if ((fid = MEDouvrir("test6.med",MED_LECTURE)) < 0) {
00067 MESSAGE("Erreur a l'ouverture du fichier test6.med");
00068 return -1;
00069 }
00070
00071
00072 if (MEDmaaInfo(fid,1,maa,&mdim,&type,desc) < 0) {
00073 MESSAGE("Erreur a la lecture des information sur le 1er maillage");
00074 return -1;
00075 } else
00076 printf("Maillage de nom : %s et de dimension %d \n",maa,mdim);
00077
00078
00079 if ((nse2 = MEDnEntMaa(fid,maa,MED_CONN,MED_ARETE,MED_SEG2,MED_DESC)) < 0) {
00080 MESSAGE("Erreur a la lecture du nombre de faces MED_SEG2");
00081 return -1;
00082 }
00083 if ((ntr3 = MEDnEntMaa(fid,maa,MED_CONN,MED_MAILLE,MED_TRIA3,MED_DESC))<0) {
00084 MESSAGE("Erreur a la lecture du nombre de mailles MED_TRIA3");
00085 return -1;
00086 }
00087 printf("Nombre de MED_SEG2 : "IFORMAT" - nombre de MED_TRIA3 : "IFORMAT"\n",nse2,ntr3);
00088
00089
00090 tse2 = 2;
00091 se2_1 = (med_int*) calloc(tse2*nse2,sizeof(med_int));
00092 se2_2 = (med_int*) malloc(sizeof(med_int)*tse2*nse2);
00093 nomse2 = (char*) malloc(MED_TAILLE_PNOM*nse2+1);
00094 numse2 = (med_int*) malloc(sizeof(med_int)*nse2);
00095 nufase2 = (med_int*) malloc(sizeof(med_int)*nse2);
00096
00097 ttr3 = 3;
00098 tr3 = (med_int*) malloc(sizeof(med_int)*ntr3*ttr3);
00099 nomtr3 = (char*) malloc(MED_TAILLE_PNOM*ntr3+1);
00100 numtr3 = (med_int*) malloc(sizeof(med_int)*ntr3);
00101 nufatr3 = (med_int*) malloc(sizeof(med_int)*ntr3);
00102
00103
00104 if (MEDconnLire(fid,maa,mdim,se2_1,MED_FULL_INTERLACE,profil,2,
00105 MED_ARETE,MED_SEG2,MED_DESC) < 0) {
00106 MESSAGE("Erreur a la lecture de la connectivite des segments");
00107 return -1;
00108 }
00109
00110
00111 if (MEDconnLire(fid,maa,mdim,se2_2,MED_FULL_INTERLACE,NULL,0,
00112 MED_ARETE ,MED_SEG2,MED_DESC) < 0) {
00113 MESSAGE("Erreur a la lecture de la connectivite des segments");
00114 return -1;
00115 }
00116
00117
00118 if (MEDnomLire(fid,maa,nomse2,nse2,MED_ARETE,MED_SEG2) < 0)
00119 inoele = MED_FAUX;
00120 else
00121 inoele = MED_VRAI;
00122
00123
00124 if (MEDnumLire(fid,maa,numse2,nse2,MED_ARETE,MED_SEG2) < 0)
00125 inuele = MED_FAUX;
00126 else
00127 inuele = MED_VRAI;
00128
00129
00130 if (MEDfamLire(fid,maa,nufase2,nse2,MED_ARETE,MED_SEG2) < 0) {
00131 MESSAGE("Erreur a la lecture des numéros de famille des segments");
00132 return -1;
00133 }
00134
00135
00136 if (MEDconnLire(fid,maa,mdim,tr3,MED_NO_INTERLACE,NULL,0,MED_MAILLE,MED_TRIA3,
00137 MED_DESC) < 0) {
00138 MESSAGE("Erreur a la lecture de la connectivite des triangles");
00139 return -1;
00140 }
00141
00142
00143 if (MEDnomLire(fid,maa,nomtr3,ntr3,MED_MAILLE,MED_TRIA3) < 0)
00144 inoele = MED_FAUX;
00145 else
00146 inoele = MED_VRAI;
00147
00148
00149 if (MEDnumLire(fid,maa,numtr3,ntr3,MED_MAILLE,MED_TRIA3) < 0)
00150 inuele = MED_FAUX;
00151 else
00152 inuele = MED_VRAI;
00153
00154
00155 if (ret = MEDfamLire(fid,maa,nufatr3,ntr3,MED_MAILLE,MED_TRIA3) < 0) {
00156 MESSAGE("Erreur a la lecture des numeros de famille des segments");
00157 return -1;
00158 }
00159
00160
00161 if (MEDfermer(fid) < 0) {
00162 MESSAGE("Erreur a la fermeture du fichier");
00163 return -1;
00164 }
00165
00166
00167 if (ret == 0) {
00168 printf("Connectivite des segments (1): \n");
00169 for (i=0;i<nse2*tse2;i++)
00170 printf(IFORMAT" ",*(se2_1+i));
00171 printf("\n");
00172 printf("Connectivite des segments (2): \n");
00173 for (i=0;i<nse2*tse2;i++)
00174 printf(IFORMAT" ",*(se2_2+i));
00175 if (inoele) {
00176 printf("\nNoms des segments :\n");
00177 for (i=0;i<nse2;i++) {
00178 strncpy(str,nomse2+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM);
00179 str[MED_TAILLE_PNOM] = '\0';
00180 printf("%s ",str);
00181 }
00182 }
00183 if (inuele) {
00184 printf("\nNumeros des segments :\n");
00185 for (i=0;i<nse2;i++)
00186 printf(IFORMAT" ",*(numse2+i));
00187 }
00188 printf("\nNumeros des familles des segments :\n");
00189 for (i=0;i<nse2;i++)
00190 printf(IFORMAT" ",*(nufase2+i));
00191
00192 printf("\nConnectivite des triangles : \n");
00193 for (i=0;i<ntr3*ttr3;i++)
00194 printf(IFORMAT" ",*(tr3+i));
00195 if (inoele) {
00196 printf("\nNoms des triangles :\n");
00197 for (i=0;i<ntr3;i++) {
00198 strncpy(str,nomtr3+i*MED_TAILLE_PNOM,MED_TAILLE_PNOM);
00199 str[MED_TAILLE_PNOM] = '\0';
00200 printf("%s ",str);
00201 }
00202 }
00203 if (inuele) {
00204 printf("\nNumeros des triangles :\n");
00205 for (i=0;i<ntr3;i++)
00206 printf(IFORMAT" ",*(numtr3+i));
00207 }
00208 printf("\nNumeros des familles des triangles :\n");
00209 for (i=0;i<ntr3;i++)
00210 printf(IFORMAT" ",*(nufatr3+i));
00211
00212 printf("\n");
00213 }
00214
00215
00216 free(se2_1);
00217 free(se2_2);
00218 free(nomse2);
00219 free(numse2);
00220 free(nufase2);
00221
00222 free(tr3);
00223 free(nomtr3);
00224 free(numtr3);
00225 free(nufatr3);
00226
00227 return ret;
00228 }
00229