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