      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