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