2 creation d'une geometrie 2d : un cube [0,1]^2
3 maillé uniformement en quadrangle reguliers;
4 avec en plus une partie des aretes (une partie
5 des arretes de la frontiere) du maillage.
6 ATTENTION : 3 noeuds dans chaque direction
12 int main (int argc, char **argv)
16 char maa[MED_TAILLE_NOM+1] = "carre_en_quad4_seg2";
17 char maadesc[MED_TAILLE_DESC+1] = "Example de maillage non structure 2D";
34 char nomcoo[2*MED_TAILLE_PNOM+1] = "x y ";
35 char unicoo[2*MED_TAILLE_PNOM+1] = "cm cm ";
36 /* char nomnoe[19*MED_TAILLE_PNOM+1] = "nom1 nom2 nom3 nom4";*/
38 med_int numnoe[9] = {1,2,3,4,5,6,7,8,9};
39 med_int nufano[9] = {0,0,0,0,0,0,0,0,0};
50 char nomquad4[MED_TAILLE_PNOM*4+1] = "quad1 quad2 quad3 quad4 ";
51 med_int numquad4[4] = {1,2,3,4};
52 med_int nufaquad4[4] = {-10,-10,0,0};
55 Les Faces qui dans ce cas (2D) sont des arretes
67 char nomseg2[MED_TAILLE_PNOM*6+1] = "seg1 seg2 seg3 seg4 seg5 seg6 ";
68 med_int numseg2[6] = {1,2,3,4,5,6};
69 med_int nufaseg2[6] = {-1,-2,-1,-1,-2,-2};
71 char nomfam[MED_TAILLE_NOM+1];
73 char attdes[MED_TAILLE_DESC+1];
78 char gro[MED_TAILLE_LNOM+1];
84 Some fields : 2 on nodes : one int and one double , one on cells : double
86 char champ1[MED_TAILLE_NOM+1]="fieldnodeint" ;
87 char champ1_comp[MED_TAILLE_PNOM+1]="comp1 " ;
88 char champ1_unit[MED_TAILLE_PNOM+1]="M " ;
89 med_int fieldnodeint[9] = {1,1,3,2,2,3,4,4,5};
91 char champ2[MED_TAILLE_NOM+1]="fieldnodedouble" ;
92 char champ2_comp[MED_TAILLE_PNOM+1]="comp1 " ;
93 char champ2_unit[MED_TAILLE_PNOM+1]="J " ;
94 med_float fieldnodedouble1[9] = {1.,3.,4.,1.,3.,4.,3.,2.,5.};
95 med_float fieldnodedouble2[9] = {1.,2.,2.,3.,3.,3.,4.,4.,5.};
97 char champ3[MED_TAILLE_NOM+1]="fieldcelldouble" ;
98 char champ3_comp[MED_TAILLE_PNOM*2+1]="comp1 comp2 " ;
99 char champ3_unit[MED_TAILLE_PNOM*2+1]="M/S m/s " ;
100 med_float fieldcelldouble[4*2] = {0.,1.,1.,1.,1.,2.,2.,3.};
102 /***************************************************************************/
103 fid = MEDouvrir("carre_en_quad4_seg2.med",MED_LECTURE_ECRITURE);
108 printf("MEDouvrir : %d\n",ret);
110 /***************************************************************************/
112 ret = MEDmaaCr(fid,maa,mdim,MED_NON_STRUCTURE,maadesc);
113 printf("MEDmaaCr : %d\n",ret);
115 ret = MEDunvCr(fid,maa);
116 printf("MEDunvCr : %d\n",ret);
118 /***************************************************************************/
120 ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
121 nomcoo,unicoo,nomnoe,MED_FAUX,numnoe,MED_VRAI,
123 printf("MEDnoeudsEcr : %d\n",ret);
125 /* ecriture des mailles MED_QUAD4 :
128 - numeros (optionnel)
129 - numeros des familles */
131 ret = MEDelementsEcr(fid,maa,mdim,quad4,MED_FULL_INTERLACE,
132 nomquad4,MED_FAUX,numquad4,MED_VRAI,nufaquad4,nquad4,
133 MED_MAILLE,MED_QUAD4,MED_NOD);
134 printf("MEDelementsEcr : %d \n",ret);
136 /* ecriture des mailles MED_SEG2 :
139 - numeros (optionnel)
140 - numeros des familles */
142 ret = MEDelementsEcr(fid,maa,mdim,seg2,MED_FULL_INTERLACE,
143 nomseg2,MED_FAUX,numseg2,MED_VRAI,nufaseg2,nseg2,
144 MED_MAILLE,MED_SEG2,MED_NOD);
147 /***************************************************************************/
148 /* ecriture des familles */
150 - toujours creer une famille de numero 0 ne comportant aucun attribut
151 ni groupe (famille de reference pour les noeuds ou les elements
152 qui ne sont rattaches a aucun groupe ni attribut)
153 - les numeros de familles de noeuds sont > 0
154 - les numeros de familles des elements sont < 0
155 - rien d'imposer sur les noms de familles
161 strcpy(nomfam,"FAMILLE_0");
163 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
169 - 1 familles d'elements de dimension (d-1)
171 - 1 familles d'elements de dimension (d-1)
173 - 1 familles d'elements de dimension (d)
174 en fait de face (-10)
180 strcpy(nomfam,"FAMILLE_EDGE_");
181 sprintf(nomfam,"%s%d",nomfam,-numfam);
185 strcpy(attdes,"description attribut");
186 strcpy(gro,"groupe1");
189 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
191 printf("MEDfamCr : %d\n",ret);
196 strcpy(nomfam,"FAMILLE_EDGE_");
197 sprintf(nomfam,"%s%d",nomfam,-numfam);
201 strcpy(attdes,"description attribut");
202 strcpy(gro,"groupe1");
205 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
207 printf("MEDfamCr : %d\n",ret);
212 strcpy(nomfam,"FAMILLE_CELL_");
213 sprintf(nomfam,"%s%d",nomfam,-numfam);
217 strcpy(attdes,"description attribut");
218 strcpy(gro,"groupe0");
221 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
223 printf("MEDfamCr : %d\n",ret);
225 /***************************************************************************/
231 ret = MEDchampCr(fid,champ1,MED_INT32,champ1_comp,champ1_unit,1);
232 printf("MEDchampCr : %d \n",ret);
234 ret = MEDchampEcr(fid, maa, champ1, (unsigned char *)fieldnodeint,
235 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
236 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
237 MED_NOPDT," ", 0., MED_NONOR);
239 printf("MEDchampEcr : %d \n",ret);
245 ret = MEDchampCr(fid,champ2,MED_FLOAT64,champ2_comp,champ2_unit,1);
246 printf("MEDchampCr : %d \n",ret);
248 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
249 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
250 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
251 1,"S ", 1.1 , MED_NONOR);
252 printf("MEDchampEcr1 : %d \n",ret);
253 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble2,
254 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
255 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
256 2,"S ", 1.2 , MED_NONOR);
257 printf("MEDchampEcr2 : %d \n",ret);
261 /* on met champ2 sans pas de temps pour pouvoir le lire aussi par defaut !*/
264 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
265 MED_NO_INTERLACE, nnoe, MED_NOGAUSS, MED_ALL,
266 MED_NOPFL, MED_NO_PFLMOD, MED_NOEUD, 0,
267 MED_NOPDT," ", 0. , MED_NONOR);
268 printf("MEDchampEcr : %d \n",ret);
273 ret = MEDchampCr(fid,champ3,MED_FLOAT64,champ3_comp,champ3_unit,2);
274 printf("MEDchampCr : %d \n",ret);
276 ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble,
277 MED_NO_INTERLACE, nquad4, MED_NOGAUSS, MED_ALL,
278 MED_NOPFL, MED_NO_PFLMOD, MED_MAILLE, MED_QUAD4,
279 MED_NOPDT," ", 0., MED_NONOR);
280 printf("MEDchampEcr : %d \n",ret);
284 /***************************************************************************/
286 ret = MEDfermer(fid);