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 * - Nom du fichier : test8.c 21 * 22 * - Description : exemple d'ecriture de familles dans un maillage MED 23 * 24 *****************************************************************************/ 25 26 #include <med.h> 27 #include <med_utils.h> 28 #include <stdio.h> 29 #include <string.h> 30 #include <stdlib.h> 31 32 int main (int argc, char **argv) 33 { 34 med_idt fid; 35 char maa[MED_TAILLE_NOM+1] ="maa1"; 36 med_int mdim = 2; 37 char nomfam[MED_TAILLE_NOM+1]; 38 med_int numfam; 39 char attdes[MED_TAILLE_DESC+1]; 40 med_int natt; 41 med_int attide; 42 med_int attval; 43 med_int ngro; 44 char gro[MED_TAILLE_LNOM+1]; 45 int i; 46 int nfame = 3; 47 int nfamn = 2; 48 49 /* Creation du fichier "test8.med" */ 50 if ((fid = MEDouvrir("test8.med",MED_CREATION)) < 0) { 51 MESSAGE("Erreur a la creation du fichier test8.med"); 52 return -1; 53 } 54 55 /* Creation d'un maillage */ 56 if (MEDmaaCr(fid,maa,2,MED_NON_STRUCTURE, 57 "un maillage pour test8") < 0) { 58 MESSAGE("Erreur a la creation du maillage"); 59 return -1; 60 } 61 62 /* Ecriture des familles */ 63 /* Conventions appliquees dans MED : 64 - Toujours creer une famille de numero 0 ne comportant aucun attribut 65 ni groupe (famille de reference pour les noeuds ou les elements 66 qui ne sont rattaches a aucun groupe ni attribut) 67 - Les numeros de familles de noeuds sont > 0 68 - Les numeros de familles des elements sont < 0 69 - Rien d'imposer sur les noms de familles. 70 */ 71 72 /* Creation de la famille 0 */ 73 strcpy(nomfam,"FAMILLE_0"); 74 numfam = 0; 75 if (MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0, 76 gro,0) < 0) { 77 MESSAGE("Erreur a la creation de la famille 0"); 78 return -1; 79 } 80 81 /* Creation pour correspondre aux cas test precedent de : 82 - 3 familles d'elements (-1,-2,-3) 83 - 2 familles de noeuds (1,2) */ 84 nfame = 3; 85 for (i=0;i<nfame;i++) { 86 strcpy(nomfam,"FAMILLE_ELEMENT_"); 87 numfam = -(i+1); 88 sprintf(nomfam,"%s%d",nomfam,-numfam); 89 attide = 1; 90 attval = numfam*100; 91 natt = 1; 92 strcpy(attdes,"description attribut"); 93 strcpy(gro,"groupe1"); 94 ngro = 1; 95 printf("%s - %d - %d - %d - %d \n",nomfam,numfam,attide,attval, 96 ngro); 97 if (MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes, 98 natt,gro,ngro) < 0) { 99 MESSAGE("Erreur a la creation de la famille :"); 100 SSCRUTE(nomfam); ISCRUTE(numfam); 101 return -1; 102 } 103 } 104 105 nfamn = 2; 106 for (i=0;i<nfamn;i++) { 107 strcpy(nomfam,"FAMILLE_NOEUD_"); 108 numfam = i+1; 109 sprintf(nomfam,"%s%d",nomfam,numfam); 110 attide = 1; 111 attval = numfam*100; 112 natt = 1; 113 strcpy(attdes,"description attribut"); 114 strcpy(gro,"groupe1"); 115 ngro = 1; 116 if (MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes, 117 natt,gro,ngro) < 0) { 118 MESSAGE("Erreur a la creation de la famille :"); 119 SSCRUTE(nomfam); ISCRUTE(numfam); 120 return -1; 121 } 122 } 123 124 125 /* Fermeture du fichier */ 126 if (MEDfermer(fid) < 0) { 127 MESSAGE("Erreur a la fermeture du fichier :"); 128 return -1; 129 } 130 131 return 0; 132 } 133 134 135 136