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