2.3.6/test7.c

Aller à la documentation de ce fichier.
00001 /*  This file is part of MED.
00002  *
00003  *  COPYRIGHT (C) 1999 - 2015  EDF R&D, CEA/DEN
00004  *  MED is free software: you can redistribute it and/or modify
00005  *  it under the terms of the GNU Lesser General Public License as published by
00006  *  the Free Software Foundation, either version 3 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  MED is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Lesser General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Lesser General Public License
00015  *  along with MED.  If not, see <http://www.gnu.org/licenses/>.
00016  */
00017 
00018 /******************************************************************************
00019  * - Nom du fichier : test7.c
00020  *
00021  * - Description : lecture des elements du maillage MED crees par test6
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   /* Ouverture du fichier en mode lecture seule */
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   /* Lecture des informations sur le premier maillage */
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   /* Combien de triangles et de segments */
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   /* Allocations memoire */ 
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   /* Lecture des connectivites des segments avec profil */
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   /* Lecture de la connectivite des segments */
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   /* Lecture (optionnelle) des noms des segments */
00118   if (MEDnomLire(fid,maa,nomse2,nse2,MED_ARETE,MED_SEG2) < 0)
00119     inoele = MED_FAUX;
00120   else
00121     inoele = MED_VRAI;
00122 
00123   /* Lecture (optionnelle) des numeros des segments */
00124   if (MEDnumLire(fid,maa,numse2,nse2,MED_ARETE,MED_SEG2) < 0)
00125     inuele = MED_FAUX;
00126   else
00127     inuele = MED_VRAI;
00128 
00129   /* Lecture des numeros des familles des segments */
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   /* Lecture de la connectivite des triangles */
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   /* Lecture (optionnelle) des noms des triangles */
00143   if (MEDnomLire(fid,maa,nomtr3,ntr3,MED_MAILLE,MED_TRIA3) < 0)
00144     inoele = MED_FAUX;
00145   else
00146     inoele = MED_VRAI;
00147 
00148   /* Lecture (optionnelle) des numeros des triangles */
00149   if (MEDnumLire(fid,maa,numtr3,ntr3,MED_MAILLE,MED_TRIA3) < 0)
00150     inuele = MED_FAUX;
00151   else
00152     inuele = MED_VRAI;
00153 
00154   /* Lecture des numeros des familles des triangles */
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   /* Fermeture du fichier */
00161   if (MEDfermer(fid) < 0) {
00162     MESSAGE("Erreur a la fermeture du fichier");
00163     return -1;
00164   }
00165 
00166   /* Affichage */
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   /* Nettoyage memoire */
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 

Généré le Thu Oct 8 14:26:17 2015 pour MED fichier par  doxygen 1.6.1