1 2 /************************************************************************* 3 * COPYRIGHT (C) 1999 - 2003 EDF R&D 4 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY 5 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE 6 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 7 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION. 8 * 9 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT 10 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF 11 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU 12 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS. 13 * 14 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE 15 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION, 16 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA 17 * 18 *************************************************************************/ 19 20 /****************************************************************************** 21 * - Nom du fichier : test31.c 22 * 23 * - Description : ecriture d'une numerotation globale dans un maillage MED 24 * 25 *****************************************************************************/ 26 27 #include <med.h> 28 #define MESGERR 29 #include <med_utils.h> 30 31 #ifdef DEF_LECT_ECR 32 #define MODE_ACCES MED_LECTURE_ECRITURE 33 #elif DEF_LECT_AJOUT 34 #define MODE_ACCES MED_LECTURE_AJOUT 35 #else 36 #define MODE_ACCES MED_CREATION 37 #endif 38 39 int main (int argc, char **argv) 40 41 42 { 43 med_err ret = 0; 44 med_idt fid; 45 /* la dimension du maillage */ 46 med_int mdim; 47 /* nom du maillage de longueur maxi MED_TAILLE_NOM */ 48 char maa[MED_TAILLE_NOM+1]; 49 /* le nombre de noeuds */ 50 med_int nnoe = 0; 51 /* table des numeros global */ 52 med_int *numglobalnoe; 53 54 /* variable de stockage pour reperer le maillage */ 55 med_int i; 56 char desc[MED_TAILLE_DESC+1]; 57 med_maillage type; 58 59 60 61 if (argc != 2) { 62 MESSAGE("Il faut passer un fichier MED en paramètre"); 63 return -1; 64 } 65 66 /* Ouverture du fichier passe en argument */ 67 if ((fid = MEDouvrir(argv[1],MED_LECTURE_ECRITURE)) < 0) { 68 MESSAGE("Erreur a l'ouverture du fichier : "); SSCRUTE(argv[1]); 69 return -1; 70 } 71 72 73 /* Lecture des infos concernant le premier maillage */ 74 if (MEDmaaInfo(fid,1,maa,&mdim,&type,desc) < 0) { 75 MESSAGE("Erreur a la lecture des informations du 1er maillage"); 76 return -1; 77 } 78 printf("Maillage de nom : %s et de dimension : %d \n",maa,mdim); 79 80 /* Lecture du nombre de noeuds */ 81 if ((nnoe = MEDnEntMaa(fid,maa,MED_COOR,MED_NOEUD,0,0)) < 0) { 82 MESSAGE("Erreur a la lecture du nombre de noeuds "); 83 return -1; 84 } 85 printf("Nombre de noeuds : %d \n",nnoe); 86 87 /* Allocations memoires */ 88 89 /* table de la numerotation globale 90 profil : (nombre de noeuds ) */ 91 if (nnoe > 0) { 92 numglobalnoe = (med_int*) malloc(sizeof(med_int)*nnoe); 93 for (i=0;i<nnoe;i++) { 94 numglobalnoe[i]=i+100; 95 } 96 } 97 98 /* ecriture de la numerotation globale */ 99 100 if (MEDglobalNumEcr(fid,maa,numglobalnoe,nnoe,MED_NOEUD,0)<0) { 101 MESSAGE("Erreur a l''ecriture de la numerotation globale"); 102 return -1; 103 } 104 105 free(numglobalnoe); 106 107 /* Fermeture du fichier */ 108 if (MEDfermer(fid) < 0) { 109 MESSAGE("Erreur a la fermeture du fichier"); 110 return -1; 111 } 112 113 return 0; 114 } 115 116 117 118