2 creation d'une geometrie 3d :
5 ayant pour faces 3 polygones
15 int main (int argc, char **argv)
19 char maa[MED_TAILLE_NOM+1] = "poly3D";
20 char maadesc[MED_TAILLE_DESC+1] = "Example de maillage non structure 3D avec 2 polyedres+1tetra4 comme mailles et 3 polygones comme faces";
47 char nomcoo[3*MED_TAILLE_PNOM+1] = "x y z ";
48 char unicoo[3*MED_TAILLE_PNOM+1] = "cm cm cm ";
49 /* char nomnoe[18*MED_TAILLE_PNOM+1] = "nom1 nom2 nom3 nom4";*/
51 med_int numnoe[19] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
52 med_int nufano[19] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
68 char nomquad4[MED_TAILLE_PNOM*8+1] = "quad1 quad2 quad3 quad4 quad5 quad6 quad7 quad8 ";
69 med_int numquad4[9] = {2,3,4,5,6,7,12,17};
70 med_int nufaquad4[9] = {-1,-1,-1,-1,-1,-1,-1,-1};
82 char nomtria3[MED_TAILLE_PNOM*6+1] = "tria1 tria2 tria3 tria4 tria5 tria6 ";
83 med_int numtria3[6] = {8,13,14,15,16,18};
84 med_int nufatria3[6] = {-2,-2,-2,-2,-2,-2};
88 med_int nindexpolygon = 4;
89 med_int indexpolygon [4] = {
92 med_int polygon[16] = {
97 char nompolygon[MED_TAILLE_PNOM*3+1] = "polygon1 polygon2 polygon3 ";
98 med_int numpolygon[3] = {1,9,10};
99 med_int nufapolygon[3] = {-3,-3,-3};
101 /* Mailles POLYEDRE */
102 med_int npolyhedron = 2;
103 med_int npolyhedronfaces = 19;
104 med_int npolyhedronnodes = 74;
105 med_int polyhedronconnectivity[74] = {1,2,3,4,5,6,1,7,8,2,2,8,9,3,4,3,9,10,5,4,10,11,6,5,11,12,1,6,12,7,7,12,8,10,9,8,12,11,
106 13,14,15,3,2,13,2,8,16,14,13,16,17,15,14,17,15,17,18,15,18,9,3,15,9,2,3,9,8,8,9,17,16,9,18,17};
107 med_int polyhedronfacesindex[20] = {1,7,11,15,19,23,27,31,34,
108 39,44,48,52,55,58,61,64,68,72,75};
109 med_int polyhedronindex[3] = {1,10,20};
110 char nompolyhedron[MED_TAILLE_PNOM*2+1] = "polyhedron1 polyhedron2 ";
111 med_int numpolyhedron[2] = {2,3};
112 med_int nufapolyhedron[2] = {-4,-4};
116 med_int tetra4[4] = {
119 char nomtetra4[MED_TAILLE_PNOM*1+1] = "tetra1 ";
120 med_int numtetra4[1] = {1};
121 med_int nufatetra4[1] = {-5};
124 char nomfam[MED_TAILLE_NOM+1];
126 char attdes[MED_TAILLE_DESC+1];
131 char gro[MED_TAILLE_LNOM+1];
137 Some fields : 2 on nodes : one int and one double , one on cells : double
139 char champ1[MED_TAILLE_NOM+1]="fieldnodeint" ;
140 char champ1_comp[MED_TAILLE_PNOM+1]="comp1 " ;
141 char champ1_unit[MED_TAILLE_PNOM+1]="M " ;
142 med_int fieldnodeint[19] = {1,1,3,2,2,3,4,4,5,6,6,7,8,8,9,9,9,10,5};
144 char champ2[MED_TAILLE_NOM+1]="fieldnodedouble" ;
145 char champ2_comp[MED_TAILLE_PNOM+1]="comp1 " ;
146 char champ2_unit[MED_TAILLE_PNOM+1]="J " ;
147 med_float fieldnodedouble1[19] = {1.,3.,4.,1.,3.,4.,3.,2.,5.,6.,4.,3.,1.,5.,6.,4.,3.,7.,3.};
148 med_float fieldnodedouble2[19] = {1.,2.,2.,3.,3.,3.,4.,4.,5.,2.,8.,9.,6.,7.,1.,2.,5.,8.,4.};
150 char champ3[MED_TAILLE_NOM+1]="fieldfacedouble" ;
151 char champ3_comp[MED_TAILLE_PNOM*2+1]="comp1 comp2 " ;
152 char champ3_unit[MED_TAILLE_PNOM*2+1]="M/S m/s " ;
153 med_float fieldfacedouble[6*2] = {0.,1.,1.,1.,1.,2.,2.,3.,3.,4.,4.,6.};
155 /***************************************************************************/
156 fid = MEDouvrir("poly3D.med",MED_LECTURE_ECRITURE);
161 printf("MEDouvrir : %d\n",ret);
163 /***************************************************************************/
165 ret = MEDmaaCr(fid,maa,mdim,MED_NON_STRUCTURE,maadesc);
166 printf("MEDmaaCr : %d\n",ret);
168 ret = MEDunvCr(fid,maa);
169 printf("MEDunvCr : %d\n",ret);
171 /***************************************************************************/
173 ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
174 nomcoo,unicoo,nomnoe,MED_FAUX,numnoe,MED_VRAI,
176 printf("MEDnoeudsEcr : %d\n",ret);
178 /* ecriture des faces MED_QUAD4 :
181 - numeros (optionnel)
182 - numeros des familles */
184 ret = MEDelementsEcr(fid,maa,mdim,quad4,MED_FULL_INTERLACE,
185 nomquad4,MED_FAUX,numquad4,MED_VRAI,nufaquad4,nquad4,
186 MED_MAILLE,MED_QUAD4,MED_NOD);
187 printf("MEDelementsEcr for quad : %d \n",ret);
189 /* ecriture des faces MED_TRIA3 :
192 - numeros (optionnel)
193 - numeros des familles */
195 ret = MEDelementsEcr(fid,maa,mdim,tria3,MED_FULL_INTERLACE,
196 nomtria3,MED_FAUX,numtria3,MED_VRAI,nufatria3,ntria3,
197 MED_MAILLE,MED_TRIA3,MED_NOD);
198 printf("MEDelementsEcr for tria : %d \n",ret);
200 /* ecriture des faces MED_POLYGONE :
203 - numeros (optionnel)
204 - numeros des familles
205 Dans ce cas il n existe pas de routine globale (Warning !!) */
207 ret = MEDpolygoneConnEcr(fid,maa,indexpolygon,nindexpolygon,polygon,
209 printf("MEDpolygoneConnEcr: %d \n",ret);
212 MEDnomEcr(fid,maa,nompolygon,npolygon,MED_MAILLE,MED_POLYGONE);
213 printf("MEDnomEcr for polygon : %d \n",ret);
216 MEDnumEcr(fid,maa,numpolygon,npolygon,MED_MAILLE,MED_POLYGONE);
217 printf("MEDnumEcr for polygon : %d \n",ret);
220 MEDfamEcr(fid,maa,nufapolygon,npolygon,MED_MAILLE,MED_POLYGONE);
221 printf("MEDfamEcr for polygon : %d \n",ret);
223 /* ecriture des mailles MED_POLYEDRE :
226 - numeros (optionnel)
227 - numeros des familles
228 Dans ce cas il n existe pas de routine globale (Warning !!) */
230 ret = MEDpolyedreConnEcr(fid,maa,polyhedronindex,npolyhedron+1,polyhedronfacesindex,npolyhedronfaces+1,polyhedronconnectivity,MED_NOD);
231 printf("MEDpolyedreConnEcr: %d \n",ret);
234 ret = MEDnomEcr(fid,maa,nompolyhedron,npolyhedron,MED_MAILLE,MED_POLYEDRE);
235 printf("MEDnomEcr for polyhedron : %d \n",ret);
238 ret = MEDnumEcr(fid,maa,numpolyhedron,npolyhedron,MED_MAILLE,MED_POLYEDRE);
239 printf("MEDnumEcr for polyhedron : %d \n",ret);
242 ret = MEDfamEcr(fid,maa,nufapolyhedron,npolyhedron,MED_MAILLE,MED_POLYEDRE);
243 printf("MEDfamEcr for polyhedron : %d \n",ret);
245 /* ecriture des mailles TETRA4 :
248 - numeros (optionnel)
249 - numeros des familles */
251 ret = MEDelementsEcr(fid,maa,mdim,tetra4,MED_FULL_INTERLACE,
252 nomtetra4,MED_FAUX,numtetra4,MED_VRAI,nufatetra4,ntetra4,
253 MED_MAILLE,MED_TETRA4,MED_NOD);
254 printf("MEDelementsEcr for tetra : %d \n",ret);
256 /***************************************************************************/
257 /* ecriture des familles */
259 - toujours creer une famille de numero 0 ne comportant aucun attribut
260 ni groupe (famille de reference pour les noeuds ou les elements
261 qui ne sont rattaches a aucun groupe ni attribut)
262 - les numeros de familles de noeuds sont > 0
263 - les numeros de familles des elements sont < 0
264 - rien d'imposer sur les noms de familles
270 strcpy(nomfam,"FAMILLE_0");
272 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
275 printf("MEDfamCr : %d \n",ret);
278 - 2 familles d'elements de dimension (d)
279 en fait de face (-10)
285 strcpy(nomfam,"FAMILLE_FACE_QUAD4");
286 sprintf(nomfam,"%s%d",nomfam,-numfam);
290 strcpy(attdes,"description attribut");
291 strcpy(gro,"groupe0");
294 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
296 printf("MEDfamCr : %d\n",ret);
299 strcpy(nomfam,"FAMILLE_FACE_TRIA3");
300 sprintf(nomfam,"%s%d",nomfam,-numfam);
304 strcpy(attdes,"description attribut");
305 strcpy(gro,"groupe0");
308 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
310 printf("MEDfamCr : %d\n",ret);
313 strcpy(nomfam,"FAMILLE_FACE_POLYGONS");
314 sprintf(nomfam,"%s%d",nomfam,-numfam);
318 strcpy(attdes,"description attribut");
319 strcpy(gro,"groupe0");
322 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
324 printf("MEDfamCr : %d\n",ret);
327 strcpy(nomfam,"FAMILLE_MAILLE_POLYHEDRON");
328 sprintf(nomfam,"%s%d",nomfam,-numfam);
332 strcpy(attdes,"description attribut");
333 strcpy(gro,"groupe0");
336 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
338 printf("MEDfamCr : %d\n",ret);
341 strcpy(nomfam,"FAMILLE_MAILLE_TETRA4");
342 sprintf(nomfam,"%s%d",nomfam,-numfam);
346 strcpy(attdes,"description attribut");
347 strcpy(gro,"groupe0");
350 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
352 printf("MEDfamCr : %d\n",ret);
355 /***************************************************************************/
361 ret = MEDchampCr(fid,champ1,MED_INT32,champ1_comp,champ1_unit,1);
362 printf("MEDchampCr : %d \n",ret);
364 ret = MEDchampEcr(fid, maa, champ1, (unsigned char *)fieldnodeint,
365 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
366 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
367 MED_NOPDT," ", 0., MED_NONOR);
369 printf("MEDchampEcr : %d \n",ret);
375 ret = MEDchampCr(fid,champ2,MED_FLOAT64,champ2_comp,champ2_unit,1);
376 printf("MEDchampCr : %d \n",ret);
378 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
379 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
380 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
381 1,"S ", 1.1 , MED_NONOR);
382 printf("MEDchampEcr1 : %d \n",ret);
383 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble2,
384 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
385 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
386 2,"S ", 1.2 , MED_NONOR);
387 printf("MEDchampEcr2 : %d \n",ret);
391 // on met champ2 sans pas de temps pour pouvoir le lire aussi par defaut !
394 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
395 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
396 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
397 MED_NOPDT," ", 0. , MED_NONOR);
398 printf("MEDchampEcr : %d \n",ret);
403 ret = MEDchampCr(fid,champ3,MED_FLOAT64,champ3_comp,champ3_unit,2);
404 printf("MEDchampCr : %d \n",ret);
406 ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldfacedouble,
407 MED_NO_INTERLACE, ntria3, MED_NOGAUSS, MED_ALL,
408 MED_NOPFL, MED_NO_PFLMOD, MED_FACE, MED_TRIA3,
409 MED_NOPDT," ", 0., MED_NONOR);
410 printf("MEDchampEcr : %d \n",ret);
413 /***************************************************************************/
415 ret = MEDfermer(fid);
416 printf("MEDfermer : %d\n",ret);