2 creation d'une geometrie 2d :
3 maillé en 4 quadrangles reguliers
4 1 triangle et 1 polygone.
11 int main (int argc, char **argv)
15 char maa[MED_TAILLE_NOM+1] = "poly2D";
16 char maadesc[MED_TAILLE_DESC+1] = "Example de maillage non structure 2D avec 1 polygone";
35 char nomcoo[2*MED_TAILLE_PNOM+1] = "x y ";
36 char unicoo[2*MED_TAILLE_PNOM+1] = "cm cm ";
37 /* char nomnoe[19*MED_TAILLE_PNOM+1] = "nom1 nom2 nom3 nom4";*/
39 med_int numnoe[11] = {1,2,3,4,5,6,7,8,9,10,11};
40 med_int nufano[11] = {0,0,0,0,0,0,0,0,0,0,0};
51 char nomquad4[MED_TAILLE_PNOM*4+1] = "quad1 quad2 quad3 quad4 ";
52 med_int numquad4[4] = {1,2,3,4};
53 med_int nufaquad4[4] = {-1,-1,0,0};
59 char nomtria3[MED_TAILLE_PNOM+1] = "tria1 ";
60 med_int numtria3[1] = {1};
61 med_int nufatria3[1] = {-2};
64 med_int nindexpoly = 2;
65 med_int indexpoly [2] = {
71 char nompoly[MED_TAILLE_PNOM+1] = "poly ";
72 med_int numpoly[1] = {1};
73 med_int nufapoly[1] = {-3};
75 char nomfam[MED_TAILLE_NOM+1];
77 char attdes[MED_TAILLE_DESC+1];
82 char gro[MED_TAILLE_LNOM+1];
88 Some fields : 2 on nodes : one int and one double , one on cells : double
90 char champ1[MED_TAILLE_NOM+1]="fieldnodeint" ;
91 char champ1_comp[MED_TAILLE_PNOM+1]="comp1 " ;
92 char champ1_unit[MED_TAILLE_PNOM+1]="M " ;
93 med_int fieldnodeint[9] = {1,1,3,2,2,3,4,4,5};
95 char champ2[MED_TAILLE_NOM+1]="fieldnodedouble" ;
96 char champ2_comp[MED_TAILLE_PNOM+1]="comp1 " ;
97 char champ2_unit[MED_TAILLE_PNOM+1]="J " ;
98 med_float fieldnodedouble1[9] = {1.,3.,4.,1.,3.,4.,3.,2.,5.};
99 med_float fieldnodedouble2[9] = {1.,2.,2.,3.,3.,3.,4.,4.,5.};
101 char champ3[MED_TAILLE_NOM+1]="fieldcelldouble" ;
102 char champ3_comp[MED_TAILLE_PNOM*2+1]="comp1 comp2 " ;
103 char champ3_unit[MED_TAILLE_PNOM*2+1]="M/S m/s " ;
104 med_float fieldcelldouble[4*2] = {0.,1.,1.,1.,1.,2.,2.,3.};
106 /***************************************************************************/
107 fid = MEDouvrir("poly2D.med",MED_LECTURE_ECRITURE);
112 printf("MEDouvrir : %d\n",ret);
114 /***************************************************************************/
116 ret = MEDmaaCr(fid,maa,mdim,MED_NON_STRUCTURE,maadesc);
117 printf("MEDmaaCr : %d\n",ret);
119 ret = MEDunvCr(fid,maa);
120 printf("MEDunvCr : %d\n",ret);
122 /***************************************************************************/
124 ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
125 nomcoo,unicoo,nomnoe,MED_FAUX,numnoe,MED_VRAI,
127 printf("MEDnoeudsEcr : %d\n",ret);
129 /* ecriture des mailles MED_QUAD4 :
132 - numeros (optionnel)
133 - numeros des familles */
135 ret = MEDelementsEcr(fid,maa,mdim,quad4,MED_FULL_INTERLACE,
136 nomquad4,MED_FAUX,numquad4,MED_VRAI,nufaquad4,nquad4,
137 MED_MAILLE,MED_QUAD4,MED_NOD);
138 printf("MEDelementsEcr for quad : %d \n",ret);
140 /* ecriture des mailles MED_TRIA3 :
143 - numeros (optionnel)
144 - numeros des familles */
146 ret = MEDelementsEcr(fid,maa,mdim,tria3,MED_FULL_INTERLACE,
147 nomtria3,MED_FAUX,numtria3,MED_VRAI,nufatria3,ntria3,
148 MED_MAILLE,MED_TRIA3,MED_NOD);
149 printf("MEDelementsEcr for tria : %d \n",ret);
151 /* ecriture des mailles MED_POLYGONE:
154 - numeros (optionnel)
155 - numeros des familles
156 Dans ce cas il n existe pas de routine globale (Warning !!)
160 ret = MEDpolygoneConnEcr(fid,maa,indexpoly,nindexpoly,poly,
162 printf("MEDpolygoneConnEcr: %d \n",ret);
165 MEDnomEcr(fid,maa,nompoly,npoly,MED_MAILLE,MED_POLYGONE);
166 printf("MEDnomEcr for poly : %d \n",ret);
169 MEDnumEcr(fid,maa,numpoly,npoly,MED_MAILLE,MED_POLYGONE);
170 printf("MEDnumEcr for poly : %d \n",ret);
173 MEDfamEcr(fid,maa,nufapoly,npoly,MED_MAILLE,MED_POLYGONE);
174 printf("MEDfamEcr for poly : %d \n",ret);
177 /***************************************************************************/
178 /* ecriture des familles */
180 - toujours creer une famille de numero 0 ne comportant aucun attribut
181 ni groupe (famille de reference pour les noeuds ou les elements
182 qui ne sont rattaches a aucun groupe ni attribut)
183 - les numeros de familles de noeuds sont > 0
184 - les numeros de familles des elements sont < 0
185 - rien d'imposer sur les noms de familles
191 strcpy(nomfam,"FAMILLE_0");
193 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
196 printf("MEDfamCr : %d \n",ret);
199 - 2 familles d'elements de dimension (d)
200 en fait de face (-10)
205 strcpy(nomfam,"FAMILLE_CELL_");
206 sprintf(nomfam,"%s%d",nomfam,-numfam);
210 strcpy(attdes,"description attribut");
211 strcpy(gro,"groupe0");
214 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
216 printf("MEDfamCr : %d\n",ret);
219 strcpy(nomfam,"FAMILLE_CELL_");
220 sprintf(nomfam,"%s%d",nomfam,-numfam);
224 strcpy(attdes,"description attribut");
225 strcpy(gro,"groupe0");
228 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
230 printf("MEDfamCr : %d\n",ret);
233 strcpy(nomfam,"FAMILLE_CELL_");
234 sprintf(nomfam,"%s%d",nomfam,-numfam);
238 strcpy(attdes,"description attribut");
239 strcpy(gro,"groupe0");
242 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
244 printf("MEDfamCr : %d\n",ret);
247 /***************************************************************************/
253 ret = MEDchampCr(fid,champ1,MED_INT32,champ1_comp,champ1_unit,1);
254 printf("MEDchampCr : %d \n",ret);
256 ret = MEDchampEcr(fid, maa, champ1, (unsigned char *)fieldnodeint,
257 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
258 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
259 MED_NOPDT," ", 0., MED_NONOR);
261 printf("MEDchampEcr : %d \n",ret);
267 ret = MEDchampCr(fid,champ2,MED_FLOAT64,champ2_comp,champ2_unit,1);
268 printf("MEDchampCr : %d \n",ret);
270 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
271 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
272 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
273 1,"S ", 1.1 , MED_NONOR);
274 printf("MEDchampEcr1 : %d \n",ret);
275 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble2,
276 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
277 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
278 2,"S ", 1.2 , MED_NONOR);
279 printf("MEDchampEcr2 : %d \n",ret);
283 // on met champ2 sans pas de temps pour pouvoir le lire aussi par defaut !
286 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
287 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
288 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
289 MED_NOPDT," ", 0. , MED_NONOR);
290 printf("MEDchampEcr : %d \n",ret);
295 ret = MEDchampCr(fid,champ3,MED_FLOAT64,champ3_comp,champ3_unit,2);
296 printf("MEDchampCr : %d \n",ret);
298 ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble,
299 MED_NO_INTERLACE, nquad4, MED_NOGAUSS, MED_ALL,
300 MED_NOPFL, MED_NO_PFLMOD, MED_MAILLE, MED_QUAD4,
301 MED_NOPDT," ", 0., MED_NONOR);
302 printf("MEDchampEcr : %d \n",ret);
306 /***************************************************************************/
308 ret = MEDfermer(fid);
309 printf("MEDfermer : %d\n",ret);