1 /*************************************************************************
2 * COPYRIGHT (C) 1999 - 2003 EDF R&D
3 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
4 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE
5 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION;
6 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
7 *
8 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
9 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
11 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
12 *
13 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE
14 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION,
15 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
16 *
17 *************************************************************************/
18
19
20 /******************************************************************************
21 * - Nom du fichier : test3.c
22 *
23 * - Description : lecture des informations sur les maillages d'un fichier MED.
24 *
25 *****************************************************************************/
26
27 #include <med.h>
28 #include <med_utils.h>
29 #include <string.h>
30
31 int main (int argc, char **argv)
32 {
33 med_err ret = 0;
34 med_idt fid;
35 med_int nmaa,i,mdim,edim;
36 char maa[MED_TAILLE_NOM+1];
37 char nomu[MED_TAILLE_LNOM+1];
38 char desc[MED_TAILLE_DESC+1];
39 med_maillage type;
40 med_err inomu;
41
42 /* Ouverture du fichier "test2.med" en lecture seule */
43 fid = MEDouvrir("test2.med",MED_LECTURE);
44 if (fid < 0) {
45 MESSAGE("Erreur a l'ouverture du fichier test2.med");
46 return -1;
47 }
48
49 /* Lecture du nombre de maillage dans le fichier */
50 nmaa = MEDnMaa(fid);
51 if (nmaa < 0) {
52 MESSAGE("Erreur a la lecture du nombre de maillage");
53 ret = -1;
54 }
55 if (ret == 0)
56 printf("- Nombre de maillage dans test2.med = %d\n",nmaa);
57
58 /* Boucle sur tous les maillages, pour chaque maillage, on lit :
59 - Le nom.
60 - Le type
61 - La dimension
62 - La description
63 - La dimension de l'espace si elle existe
64 - Le nom universel s'il existe
65 */
66 if (ret == 0)
67 for (i=0;i<nmaa;i++) {
68 /* lecture des informations */
69 if (MEDmaaInfo(fid,i+1,maa,&mdim,&type,desc) < 0) {
70 MESSAGE("Erreur a la lecture des informations du maillage :"); SSCRUTE(maa);
71 ret = -1;
72 }
73 /* lecture de la dimension de l'espace */
74 edim = MEDdimEspaceLire(fid,maa);
75 /* lecture du nom universel */
76 inomu = MEDunvLire(fid,maa,nomu);
77 /* affichage des donnees lues */
78 if (inomu < 0)
79 printf("maillage %d de nom %s, de dimension %d \n",i+1,maa,mdim);
80 else
81 printf("maillage %d de nom %s, de dimension %d et de nom univ. %s\n",i+1,maa,mdim,nomu);
82 if (edim > 0)
83 printf("La dimension de l'espace est %d \n",edim);
84 else
85 printf("La dimension de l'espace est %d \n",mdim);
86 if (type == MED_STRUCTURE)
87 printf("Il s'agit d'un maillage structure \n");
88 else
89 printf("Il s'agit d'un maillage non structure \n");
90 printf("Description associee au maillage : %s \n\n",desc);
91 }
92
93 /* Fermeture du fichier */
94 ret = MEDfermer(fid);
95 if (ret < 0) {
96 MESSAGE("Erreur a la fermeture du fichier test2.med");
97 return -1;
98 }
99
100 return ret;
101 }
102
103
104
105