]> SALOME platform Git repositories - modules/med.git/blob - src/MEDMEM/create_mesh.c
Salome HOME
DCQ : Merge with Ecole Ete a6.
[modules/med.git] / src / MEDMEM / create_mesh.c
1 #include <med.h>
2 #include <string.h>
3
4 #define MED_NOPG   1                   /* -> pas de point de Gauss                    */
5 #define MED_NOPFL  ""                  /* -> pas de profils utilisateur               */
6 #define MED_NOPFLi "                                "  /* Variable Interne                      */
7 #define MED_NOPF   0                   /* -> pas de profils pour _MEDdataseNnumEcrire */
8 #define MED_NOPDT -1                   /* rem: pas de pas de temps negatifs           */
9 #define MED_NONOR -1                   /* rem: pas de n°ordre negatif                 */
10 #define MED_DIM1   1                   /* PAS */
11
12 #define MED_ALL    0
13
14 int main (int argc, char **argv)
15 {
16   med_err ret;
17   med_idt fid;
18   char maa[MED_TAILLE_NOM+1] = "maa1";
19   med_int mdim = 3;
20   med_int nnoe = 19;
21   med_float coo[57] = {
22     0.0, 0.0, 0.0, 
23     0.0, 0.0, 1.0, 
24     2.0, 0.0, 1.0, 
25     0.0, 2.0, 1.0, 
26     -2.0, 0.0, 1.0, 
27     0.0, -2.0, 1.0, 
28     1.0, 1.0, 2.0, 
29     -1.0, 1.0, 2.0, 
30     -1.0, -1.0, 2.0, 
31     1.0, -1.0, 2.0, 
32     1.0, 1.0, 3.0, 
33     -1.0, 1.0, 3.0, 
34     -1.0, -1.0, 3.0, 
35     1.0, -1.0, 3.0, 
36     1.0, 1.0, 4.0, 
37     -1.0, 1.0, 4.0, 
38     -1.0, -1.0, 4.0, 
39     1.0, -1.0, 4.0,
40     0.0, 0.0, 5.0
41   };
42   char nomcoo[3*MED_TAILLE_PNOM+1] = "x       y       z       ";
43   char unicoo[3*MED_TAILLE_PNOM+1] = "cm      cm      cm      ";
44   /*  char nomnoe[19*MED_TAILLE_PNOM+1] = "nom1    nom2    nom3    nom4";*/
45   char *nomnoe ;
46   med_int numnoe[19] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
47   med_int nufano[19] = {1,1,3,3,0,0,2,0,4,0,4,2,4,2,4,2,4,1,3};
48   
49   med_int ntet4 = 12;
50   med_int tet4[12*4] = {
51     1,2,3,6,
52     1,2,4,3,
53     1,2,5,4,
54     1,2,6,5,
55     2,7,4,3,
56     2,8,5,4,
57     2,9,6,5,
58     2,10,3,6,
59     2,7,3,10,
60     2,8,4,7,
61     2,9,5,8,
62     2,10,6,9
63   };
64   char * nomtet4 ; 
65   med_int numtet4[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
66   med_int nufatet4[12] = {-1,-1,-1,-1,0,0,0,0,0,0,-2,-3}; 
67
68   med_int npyra5 = 2;
69   med_int pyra5[5*2] = {
70     7,8,9,10,2,
71     15,18,17,16,19
72   };
73   char nompyra5[MED_TAILLE_PNOM*2+1] = "pyra1   pyra2   ";
74   med_int numpyra5[2] = {13,16};
75   med_int nufapyra5[2] = {0,-3};
76
77   med_int nhexa8 = 2;
78   med_int hexa8[8*2] = {
79     11,12,13,14,7,8,9,10,
80     15,16,17,18,11,12,13,14
81   };
82   char nomhexa8[MED_TAILLE_PNOM*2+1] = "hexa1   hexa2   ";
83   med_int numhexa8[2] = {14,15};
84   med_int nufahexa8[2] = {0,0};
85
86   char nomfam[MED_TAILLE_NOM+1];
87   med_int numfam;
88   char attdes[MED_TAILLE_DESC+1];
89   med_int natt;
90   med_int attide;
91   med_int attval;
92   med_int ngro;
93   char gro[MED_TAILLE_LNOM+1];
94   char gro2[MED_TAILLE_LNOM*2+1];
95   char gro3[MED_TAILLE_LNOM*3+1];
96   int i;
97   int nfame = 3; 
98   int nfamn = 2;
99
100
101   /*
102     Some fields : 2 on nodes : one int and one double , one on cells : double
103    */
104   char champ1[MED_TAILLE_NOM+1]="fieldnodeint" ;
105   char champ1_comp[MED_TAILLE_PNOM+1]="comp1   " ;
106   char champ1_unit[MED_TAILLE_PNOM+1]="M       " ;
107   med_int     fieldnodeint[19]    = {1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7};
108
109   char champ2[MED_TAILLE_NOM+1]="fieldnodedouble" ;
110   char champ2_comp[MED_TAILLE_PNOM+1]="comp1   " ;
111   char champ2_unit[MED_TAILLE_PNOM+1]="J       " ;
112   med_float   fieldnodedouble1[19] = {1.,1.,1.,2.,2.,2.,3.,3.,3.,4.,4.,4.,5.,5.,5.,6.,6.,6.,7.};
113   med_float   fieldnodedouble2[19] = {1.,2.,2.,2.,3.,3.,3.,4.,4.,4.,5.,5.,5.,6.,6.,6.,7.,7.,7.};
114
115   char champ3[MED_TAILLE_NOM+1]="fieldcelldoublevector" ;
116   char champ3_comp[MED_TAILLE_PNOM*3+1]="comp1   comp2   comp3   " ;
117   char champ3_unit[MED_TAILLE_PNOM*3+1]="m/s     m/s     m/s     " ;
118   med_float   fieldcelldouble1[12*3] = {1.,1.,1.,2.,2.,2.,3.,3.,3.,4.,4.,4.,0.,0.,0.,1.,1.,1.,0.,0.,0.,1.,1.,1.,1.,1.,1.,0.,0.,0.,1.,1.,1.,0.,0.,0.};
119   med_float   fieldcelldouble2[2*3]  = {5.,5.,0.,1.,0.,1.};
120   med_float   fieldcelldouble3[2*3]  = {6.,6.,1.,0.,1.,0.};
121
122   char champ4[MED_TAILLE_NOM+1]="fieldcelldoublescalar" ;
123   char champ4_comp[MED_TAILLE_PNOM+1]="comp1   " ;
124   char champ4_unit[MED_TAILLE_PNOM+1]="m/s     " ;
125   med_float   fieldcelldouble4[12] = {1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,1.};
126   med_float   fieldcelldouble5[2]  = {2.,2.};
127   med_float   fieldcelldouble6[2]  = {3.,3.};
128
129   /***************************************************************************/
130   fid = MEDouvrir("pointe.med",MED_REMP);
131   if (fid < 0)
132     ret = -1;
133   else
134     ret = 0;
135   printf("MEDouvrir : %d\n",ret);
136
137   /***************************************************************************/
138   if (ret == 0)
139     ret = MEDmaaCr(fid,maa,mdim);
140   printf("MEDmaaCr : %d\n",ret);
141   if (ret == 0)
142     ret = MEDunvCr(fid,maa);
143   printf("MEDunvCr : %d\n",ret);
144
145   /***************************************************************************/
146   if (ret == 0)
147     ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
148                        nomcoo,unicoo,nomnoe,MED_FAUX,numnoe,MED_VRAI,
149                        nufano,nnoe,MED_ECRI);
150   printf("MEDnoeudsEcr : %d\n",ret);
151
152
153   /***************************************************************************/
154   /* ecriture des mailles MED_TETRA4 :
155      - connectivite
156      - noms (optionnel) 
157      - numeros (optionnel)
158      - numeros des familles */
159   if (ret == 0) 
160     ret = MEDelementsEcr(fid,maa,mdim,tet4,MED_FULL_INTERLACE,
161                          nomtet4,MED_FAUX,numtet4,MED_VRAI,nufatet4,ntet4,
162                          MED_MAILLE,MED_TETRA4,MED_NOD,MED_ECRI);
163   printf("MEDelementsEcr : %d \n",ret);
164
165   /* ecriture des mailles MED_PYRA5 :
166      - connectivite
167      - noms (optionnel) 
168      - numeros (optionnel)
169      - numeros des familles */
170   if (ret == 0) 
171     ret = MEDelementsEcr(fid,maa,mdim,pyra5,MED_FULL_INTERLACE,
172                          nompyra5,MED_VRAI,numpyra5,MED_VRAI,nufapyra5,npyra5,
173                          MED_MAILLE,MED_PYRA5,MED_NOD,MED_ECRI);
174   printf("MEDelementsEcr : %d \n",ret);
175
176   /* ecriture des mailles MED_HEXA8 :
177      - connectivite
178      - noms (optionnel) 
179      - numeros (optionnel)
180      - numeros des familles */
181   if (ret == 0) 
182     ret = MEDelementsEcr(fid,maa,mdim,hexa8,MED_FULL_INTERLACE,
183                          nomhexa8,MED_FAUX,numhexa8,MED_VRAI,nufahexa8,nhexa8,
184                          MED_MAILLE,MED_HEXA8,MED_NOD,MED_ECRI);
185   printf("MEDelementsEcr : %d \n",ret);
186
187   /***************************************************************************/
188   /* ecriture des familles */
189   /* Conventions :
190      - toujours creer une famille de numero 0 ne comportant aucun attribut
191        ni groupe (famille de reference pour les noeuds ou les elements
192        qui ne sont rattaches a aucun groupe ni attribut)
193      - les numeros de familles de noeuds sont > 0
194      - les numeros de familles des elements sont < 0
195      - rien d'imposer sur les noms de familles
196    */ 
197
198   /* la famille 0 */
199   if (ret == 0)
200     {
201       strcpy(nomfam,"FAMILLE_0");
202       numfam = 0;
203       ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
204                      gro,0);
205     }
206   printf("MEDfamCr : %d \n",ret);
207
208   /* on cree :
209       - 3 familles d'elements (-1,-2,-3) et 
210       - 2 familles de noeuds (1,2) 
211   */
212   if (ret == 0)
213     {
214       nfame = 3;
215       for (i=0;i<nfame;i++)
216         {
217           if (ret == 0)
218             {
219               strcpy(nomfam,"FAMILLE_ELEMENT_");
220               numfam = -(i+1);
221               sprintf(nomfam,"%s%d",nomfam,-numfam);
222               attide = 1;
223               attval = numfam*100;
224               natt = 1;
225               strcpy(attdes,"description attribut");
226               strcpy(gro,"groupe1");
227               ngro = 1;
228               /*printf("nomfam : %s - numfam : %d - attide : %d - attval : %d - ngro : %d \n",nomfam,numfam,attide,attval,ngro);*/
229               ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
230                              natt,gro,ngro);
231               printf("MEDfamCr : %d\n",ret);
232             }
233         }
234     }
235   
236   if (ret == 0)
237     {
238       strcpy(nomfam,"FAMILLE_NOEUD_1");
239       numfam = 1;
240       attide = 1;
241       attval = numfam*100;
242       natt = 1;
243       strcpy(attdes,"description attribut");
244       strcpy(gro2,"groupe2");
245       strcpy(gro2+MED_TAILLE_LNOM,"groupe3");
246       ngro = 2;
247       ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
248                      natt,gro2,ngro);
249       printf("MEDfamCr : %d\n",ret);
250     }
251   if (ret == 0)
252     {
253       strcpy(nomfam,"FAMILLE_NOEUD_2");
254       numfam = 2;
255       attide = 1;
256       attval = numfam*100;
257       natt = 1;
258       strcpy(attdes,"description attribut");
259       strcpy(gro2,"groupe3");
260       strcpy(gro2+MED_TAILLE_LNOM,"groupe4");
261       ngro = 2;
262       ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
263                      natt,gro2,ngro);
264       printf("MEDfamCr : %d\n",ret);
265     }
266   if (ret == 0)
267     {
268       strcpy(nomfam,"FAMILLE_NOEUD_3");
269       numfam = 3;
270       attide = 1;
271       attval = numfam*100;
272       natt = 1;
273       strcpy(attdes,"description attribut");
274       strcpy(gro2,"groupe2");
275       strcpy(gro2+MED_TAILLE_LNOM,"groupe4");
276       ngro = 2;
277       ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
278                      natt,gro2,ngro);
279       printf("MEDfamCr : %d\n",ret);
280     }
281   if (ret == 0)
282     {
283       strcpy(nomfam,"FAMILLE_NOEUD_4");
284       numfam = 4;
285       attide = 1;
286       attval = numfam*100;
287       natt = 1;
288       strcpy(attdes,"description attribut");
289       strcpy(gro,"groupe5");
290       ngro = 1;
291       ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
292                      natt,gro,ngro);
293       printf("MEDfamCr : %d\n",ret);
294     }
295
296   /***************************************************************************/
297   /*
298     Les champs
299   */
300   if (ret == 0)
301     {
302       ret = MEDchampCr(fid,champ1,MED_INT32,champ1_comp,champ1_unit,1);
303       printf("MEDchampCr : %d \n",ret);
304       if (ret == 0) {
305         ret = MEDchampEcr(fid, maa, champ1, (unsigned char *)fieldnodeint,
306                           MED_NO_INTERLACE, nnoe,
307                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD, 
308                           0, MED_NOPDT,"        ", 0., MED_NONOR);
309         
310         printf("MEDchampEcr : %d \n",ret);
311       }
312     }
313   
314   if (ret == 0)
315     {
316       ret = MEDchampCr(fid,champ2,MED_REEL64,champ2_comp,champ2_unit,1);
317       printf("MEDchampCr : %d \n",ret);
318       if (ret == 0) {
319         ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
320                           MED_NO_INTERLACE, nnoe,
321                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD, 
322                           0, 1,"S       ", 1.1 , MED_NONOR);
323         printf("MEDchampEcr1 : %d \n",ret);
324         ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble2,
325                           MED_NO_INTERLACE, nnoe,
326                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD, 
327                           0, 2,"S       ", 1.2 , MED_NONOR);
328         printf("MEDchampEcr2 : %d \n",ret);
329       }
330     }
331   
332   /* on met champ2 sans pas de temps pour pouvoir le lire aussi par defaut !*/
333   if (ret == 0)
334     {
335 /*        ret = MEDchampCr(fid,champ2,MED_REEL64,champ2_comp,champ2_unit,1); */
336 /*        printf("MEDchampCr : %d \n",ret); */
337       if (ret == 0) {
338         ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
339                           MED_NO_INTERLACE, nnoe,
340                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD, 
341                           0, MED_NOPDT,"        ", 0. , MED_NONOR);
342         printf("MEDchampEcr : %d \n",ret);
343       }
344     }
345
346   if (ret == 0)
347     {
348       ret = MEDchampCr(fid,champ3,MED_REEL64,champ3_comp,champ3_unit,3);
349       printf("MEDchampCr : %d \n",ret);
350       if (ret == 0) {
351         ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble1,
352                           MED_NO_INTERLACE, ntet4,
353                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
354                           MED_TETRA4, MED_NOPDT,"        ", 0., MED_NONOR);
355         printf("MEDchampEcr : %d \n",ret);
356         ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble3,
357                           MED_NO_INTERLACE, nhexa8,
358                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
359                           MED_HEXA8, MED_NOPDT,"        ", 0., MED_NONOR);
360         printf("MEDchampEcr : %d \n",ret);
361         ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble2,
362                           MED_NO_INTERLACE, npyra5,
363                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
364                           MED_PYRA5, MED_NOPDT,"        ", 0., MED_NONOR);
365         printf("MEDchampEcr : %d \n",ret);
366       }
367     }
368   
369   if (ret == 0)
370     {
371       ret = MEDchampCr(fid,champ4,MED_REEL64,champ4_comp,champ4_unit,1);
372       printf("MEDchampCr : %d \n",ret);
373       if (ret == 0) {
374         ret = MEDchampEcr(fid, maa, champ4, (unsigned char *)fieldcelldouble4,
375                           MED_NO_INTERLACE, ntet4,
376                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
377                           MED_TETRA4, MED_NOPDT,"        ", 0., MED_NONOR);
378         printf("MEDchampEcr : %d \n",ret);
379         ret = MEDchampEcr(fid, maa, champ4, (unsigned char *)fieldcelldouble6,
380                           MED_NO_INTERLACE, nhexa8,
381                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
382                           MED_HEXA8, MED_NOPDT,"        ", 0., MED_NONOR);
383         printf("MEDchampEcr : %d \n",ret);
384         ret = MEDchampEcr(fid, maa, champ4, (unsigned char *)fieldcelldouble5,
385                           MED_NO_INTERLACE, npyra5,
386                           MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE, 
387                           MED_PYRA5, MED_NOPDT,"        ", 0., MED_NONOR);
388         printf("MEDchampEcr : %d \n",ret);
389       }
390     }
391   
392   /***************************************************************************/
393   ret = MEDfermer(fid);
394   printf("MEDfermer : %d\n",ret);
395   
396   return 0;
397 }
398