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";
33 char nomcoo[2*MED_TAILLE_PNOM+1] = "x y ";
34 char unicoo[2*MED_TAILLE_PNOM+1] = "cm cm ";
35 /* char nomnoe[19*MED_TAILLE_PNOM+1] = "nom1 nom2 nom3 nom4";*/
37 med_int numnoe[9] = {1,2,3,4,5,6,7,8,9};
38 med_int nufano[9] = {0,0,0,0,0,0,0,0,0};
49 char nomquad4[MED_TAILLE_PNOM*4+1] = "quad1 quad2 quad3 quad4 ";
50 med_int numquad4[4] = {1,2,3,4};
51 med_int nufaquad4[4] = {-10,-10,0,0};
54 Les Faces qui dans ce cas (2D) sont des arretes
66 char nomseg2[MED_TAILLE_PNOM*6+1] = "seg1 seg2 seg3 seg4 seg5 seg6 ";
67 med_int numseg2[6] = {1,2,3,4,5,6};
68 med_int nufaseg2[6] = {-1,-2,-1,-1,-2,-2};
70 char nomfam[MED_TAILLE_NOM+1];
72 char attdes[MED_TAILLE_DESC+1];
77 char gro[MED_TAILLE_LNOM+1];
83 Some fields : 2 on nodes : one int and one double , one on cells : double
85 char champ1[MED_TAILLE_NOM+1]="fieldnodeint" ;
86 char champ1_comp[MED_TAILLE_PNOM+1]="comp1 " ;
87 char champ1_unit[MED_TAILLE_PNOM+1]="M " ;
88 med_int fieldnodeint[9] = {1,1,3,2,2,3,4,4,5};
90 char champ2[MED_TAILLE_NOM+1]="fieldnodedouble" ;
91 char champ2_comp[MED_TAILLE_PNOM+1]="comp1 " ;
92 char champ2_unit[MED_TAILLE_PNOM+1]="J " ;
93 med_float fieldnodedouble1[9] = {1.,3.,4.,1.,3.,4.,3.,2.,5.};
94 med_float fieldnodedouble2[9] = {1.,2.,2.,3.,3.,3.,4.,4.,5.};
96 char champ3[MED_TAILLE_NOM+1]="fieldcelldouble" ;
97 char champ3_comp[MED_TAILLE_PNOM*2+1]="comp1 comp2 " ;
98 char champ3_unit[MED_TAILLE_PNOM*2+1]="M/S m/s " ;
99 med_float fieldcelldouble[4*2] = {0.,1.,1.,1.,1.,2.,2.,3.};
101 /***************************************************************************/
102 fid = MEDouvrir("carre_en_quad4_seg2.med",MED_REMP);
109 /***************************************************************************/
111 ret = MEDmaaCr(fid,maa,mdim);
114 ret = MEDunvCr(fid,maa);
117 /***************************************************************************/
119 ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
120 nomcoo,unicoo,nomnoe,MED_FAUX,numnoe,MED_VRAI,
121 nufano,nnoe,MED_ECRI);
124 /* ecriture des mailles MED_QUAD4 :
127 - numeros (optionnel)
128 - numeros des familles */
130 ret = MEDelementsEcr(fid,maa,mdim,quad4,MED_FULL_INTERLACE,
131 nomquad4,MED_FAUX,numquad4,MED_VRAI,nufaquad4,nquad4,
132 MED_MAILLE,MED_QUAD4,MED_NOD,MED_ECRI);
135 /* ecriture des mailles MED_SEG2 :
138 - numeros (optionnel)
139 - numeros des familles */
141 ret = MEDelementsEcr(fid,maa,mdim,seg2,MED_FULL_INTERLACE,
142 nomseg2,MED_FAUX,numseg2,MED_VRAI,nufaseg2,nseg2,
143 MED_MAILLE,MED_SEG2,MED_NOD,MED_ECRI);
146 /***************************************************************************/
147 /* ecriture des familles */
149 - toujours creer une famille de numero 0 ne comportant aucun attribut
150 ni groupe (famille de reference pour les noeuds ou les elements
151 qui ne sont rattaches a aucun groupe ni attribut)
152 - les numeros de familles de noeuds sont > 0
153 - les numeros de familles des elements sont < 0
154 - rien d'imposer sur les noms de familles
160 strcpy(nomfam,"FAMILLE_0");
162 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
168 - 1 familles d'elements de dimension (d-1)
170 - 1 familles d'elements de dimension (d-1)
172 - 1 familles d'elements de dimension (d)
173 en fait de face (-10)
179 strcpy(nomfam,"FAMILLE_EDGE_");
180 sprintf(nomfam,"%s%d",nomfam,-numfam);
184 strcpy(attdes,"description attribut");
185 strcpy(gro,"groupe1");
188 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
190 printf("MEDfamCr : %d\n",ret);
195 strcpy(nomfam,"FAMILLE_EDGE_");
196 sprintf(nomfam,"%s%d",nomfam,-numfam);
200 strcpy(attdes,"description attribut");
201 strcpy(gro,"groupe1");
204 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
206 printf("MEDfamCr : %d\n",ret);
211 strcpy(nomfam,"FAMILLE_CELL_");
212 sprintf(nomfam,"%s%d",nomfam,-numfam);
216 strcpy(attdes,"description attribut");
217 strcpy(gro,"groupe0");
220 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
222 printf("MEDfamCr : %d\n",ret);
224 /***************************************************************************/
230 ret = MEDchampCr(fid,champ1,MED_INT32,champ1_comp,champ1_unit,1);
231 printf("MEDchampCr : %d \n",ret);
233 ret = MEDchampEcr(fid, maa, champ1, (unsigned char *)fieldnodeint,
234 MED_NO_INTERLACE, nnoe,
235 MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD,
236 0, MED_NOPDT," ", 0., MED_NONOR);
238 printf("MEDchampEcr : %d \n",ret);
244 ret = MEDchampCr(fid,champ2,MED_REEL64,champ2_comp,champ2_unit,1);
245 printf("MEDchampCr : %d \n",ret);
247 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
248 MED_NO_INTERLACE, nnoe,
249 MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD,
250 0, 1,"S ", 1.1 , MED_NONOR);
251 printf("MEDchampEcr1 : %d \n",ret);
252 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble2,
253 MED_NO_INTERLACE, nnoe,
254 MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD,
255 0, 2,"S ", 1.2 , MED_NONOR);
256 printf("MEDchampEcr2 : %d \n",ret);
260 /* on met champ2 sans pas de temps pour pouvoir le lire aussi par defaut !*/
263 ret = MEDchampEcr(fid, maa, champ2, (unsigned char *)fieldnodedouble1,
264 MED_NO_INTERLACE, nnoe,
265 MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_NOEUD,
266 0, MED_NOPDT," ", 0. , MED_NONOR);
267 printf("MEDchampEcr : %d \n",ret);
272 ret = MEDchampCr(fid,champ3,MED_REEL64,champ3_comp,champ3_unit,2);
273 printf("MEDchampCr : %d \n",ret);
275 ret = MEDchampEcr(fid, maa, champ3, (unsigned char *)fieldcelldouble,
276 MED_NO_INTERLACE, nquad4,
277 MED_NOPG, MED_ALL, MED_NOPFL, MED_ECRI, MED_MAILLE,
278 MED_QUAD4, MED_NOPDT," ", 0., MED_NONOR);
279 printf("MEDchampEcr : %d \n",ret);
283 /***************************************************************************/
285 ret = MEDfermer(fid);