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