      1 /*************************************************************************
      2 * COPYRIGHT (C) 1999 - 2007  EDF R&D, CEA/DEN
      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  * - Nom du fichier : test32.c
     21  *
     22  * - Description : lecture nominale d'une numerotation globale dans un maillage MED
     23  *
     24  *****************************************************************************/
     25
     26 #include <med.h>
     27 #define MESGERR
     28 #include <med_utils.h>
     29
     30 #ifdef DEF_LECT_ECR
     31 #define MODE_ACCES MED_LECTURE_ECRITURE
     32 #elif DEF_LECT_AJOUT
     33 #define MODE_ACCES MED_LECTURE_AJOUT
     34 #else
     35 #define MODE_ACCES MED_CREATION
     36 #endif
     37
     38 int main (int argc, char **argv)
     39
     40
     41 {
     42   med_err ret = 0;
     43   med_idt fid;
     44   /* la dimension du maillage */
     45   med_int mdim;
     46   /* nom du maillage de longueur maxi MED_TAILLE_NOM */
     47   char maa[MED_TAILLE_NOM+1];
     48   /* le nombre de noeuds */
     49   med_int nnoe = 0;
     50   /* table des numeros global */
     51   med_int *numglobalnoe;
     52
     53   /* variable de stockage pour reperer le maillage */
     54   med_int i;
     55   char des[MED_TAILLE_DESC+1];
     56   med_maillage type;
     57
     58   if (argc != 2) {
     59     MESSAGE("Il faut passer un fichier MED en paramètre");
     60     return -1;
     61   }
     62
     63   /* Ouverture du fichier passe en argument en lecture seule */
     64   if ((fid = MEDouvrir(argv[1],MED_LECTURE)) < 0) {
     65     MESSAGE("Erreur a l'ouverture du fichier : "); SSCRUTE(argv[1]);
     66     return -1;
     67   }
     68
     69   /* Lecture des infos sur le premier maillage */
     70   if (MEDmaaInfo(fid,1,maa,&mdim,&type,des) < 0) {
     71     MESSAGE("Erreur a lecture des infos sur le 1er maillage");
     72     return -1;
     73   }
     74   printf("Maillage de nom %s et de dimension %d \n",maa,mdim);
     75
     76
     77   /* Lecture du nombre de noeuds */
     78   if ((nnoe = MEDnEntMaa(fid,maa,MED_COOR,MED_NOEUD,0,0)) < 0) {
     79     MESSAGE("Erreur a la lecture du nombre de noeuds ");
     80     return -1;
     81   }
     82   printf("Nombre de noeuds : %d \n",nnoe);
     83
     84   /* Allocations memoires */
     85
     86   /* table de la numerotation globale
     87      profil : (nombre de noeuds ) */
     88   if (nnoe > 0) {
     89     numglobalnoe = (med_int*) malloc(sizeof(med_int)*nnoe);
     90   }
     91
     92   /* lecture de la numerotation globale attachee aux noeuds*/
     93   if (MEDglobalNumLire(fid,maa,numglobalnoe,nnoe,MED_NOEUD,0)<0) {
     94     MESSAGE("Erreur a la lecture de de la numerotation globale");
     95     return -1;
     96   }
     97
     98   /* ecriture a l'ecran des resultats */
     99   for (i=0;i<nnoe;i++)
    100     printf("Numero global du noeud %d : %d \n",i+1,numglobalnoe[i]);
    101
    102
    103
    104   free(numglobalnoe);
    105
    106   /* Fermeture du fichier */
    107   if (MEDfermer(fid) < 0) {
    108     MESSAGE("Erreur a la fermeture du fichier ");
    109     return -1;
    110   }
    111
    112   return 0;
    113 }
    114