1 /*----------------------------------------------------------------------------
2 MED MEDMEM : MED files in memory
4 Copyright (C) 2003 CEA/DEN, EDF R&D
10 ----------------------------------------------------------------------------*/
12 /******************************************************************************
13 * - Nom du fichier : test19.c
15 * - Description : ecriture des objets MED relatifs aux grilles
18 *****************************************************************************/
23 /******************************************************************************
24 * - creation d'un fichier MED
25 * - ecriture des noeuds : coordonnees en mode MED_FULL_INTERLACE,
26 * noms,numeros,numeros de familles
27 * - ecriture des familles d'un maillage MED
28 * 2.0 via les routines de bas niveau
29 * - fermeture du fichier
30 *****************************************************************************/
32 int main (int argc, char **argv)
35 /* Ecriture d'un premier maillage non structure (test14 + test8)
36 ************************************************************* */
40 /* la dimension du maillage */
42 /* nom du maillage de longueur maxi MED_TAILLE_NOM */
43 char maa[MED_TAILLE_NOM+1] = "maa1";
44 /* le nombre de noeuds */
46 /* table des coordonnees
47 profil : (dimension * nombre de noeuds) */
48 med_float coo[8] = {0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0};
49 med_int nbr[2] = {2, 2};
50 /* tables des noms et des unites des coordonnees
51 profil : (dimension*MED_TAILLE_PNOM+1) */
52 char nomcoo[2*MED_TAILLE_PNOM+1] = "x y ";
53 char unicoo[2*MED_TAILLE_PNOM+1] = "cm cm ";
54 /* tables des noms, numeros, numeros de familles des noeuds
55 autant d'elements que de noeuds - les noms ont pout longueur
57 char nomnoe[4*MED_TAILLE_PNOM+1] = "nom1 nom2 nom3 nom4 ";
58 med_int numnoe[4] = {1,2,3,4};
59 med_int nufano[4] = {0,1,2,2};
60 char nomfam[MED_TAILLE_NOM+1];
62 char attdes[MED_TAILLE_DESC+1];
67 char gro[MED_TAILLE_LNOM+1];
79 char nomquad4[MED_TAILLE_PNOM*1+1] = "quad1 ";
80 med_int numquad4[1] = {1};
81 med_int nufaquad4[1] = {-1};
83 fid = MEDouvrir("test19.med",MED_REMP);
90 /* creation du maillage maa de dimension 2 */
92 ret = MEDmaaCr(fid,maa,mdim);
95 /* ecriture des noeuds d'un maillage MED :
96 - des coo en mode MED_FULL_INTERLACE : (X1,Y1,X2,Y2,X3,Y3,...)
97 dans un repere cartesien
98 - des noms (optionnel dans un fichier MED)
99 - des numeros (optionnel dans un fichier MED)
100 - des numeros de familles des noeuds */
102 ret = MEDnoeudsEcr(fid,maa,mdim,coo,MED_FULL_INTERLACE,MED_CART,
103 nomcoo,unicoo,nomnoe,MED_VRAI,numnoe,MED_VRAI,
104 nufano,nnoe,MED_ECRI);
107 /* ecriture des mailles MED_QUAD4 :
110 - numeros (optionnel)
111 - numeros des familles */
113 ret = MEDelementsEcr(fid,maa,mdim,quad4,MED_FULL_INTERLACE,
114 nomquad4,MED_FAUX,numquad4,MED_VRAI,nufaquad4,nquad4,
115 MED_MAILLE,MED_QUAD4,MED_NOD,MED_ECRI);
118 /* ecriture des familles */
120 - toujours creer une famille de numero 0 ne comportant aucun attribut
121 ni groupe (famille de reference pour les noeuds ou les elements
122 qui ne sont rattaches a aucun groupe ni attribut)
123 - les numeros de familles de noeuds sont > 0
124 - les numeros de familles des elements sont < 0
125 - rien d'imposer sur les noms de familles
131 strcpy(nomfam,"FAMILLE_0");
133 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
138 /* on cree pour correspondre aux cas tests precedents, 3 familles
139 d'elements (-1,-2,-3) et deux familles de noeuds (1,2) */
143 for (i=0;i<nfame;i++)
147 strcpy(nomfam,"FAMILLE_ELEMENT_");
149 sprintf(nomfam,"%s%d",nomfam,-numfam);
153 strcpy(attdes,"description attribut");
154 strcpy(gro,"groupe1");
156 printf("%s - %d - %d - %d - %d \n",nomfam,numfam,attide,attval,
158 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
160 printf("MEDfamCr (elements) : %d\n",ret);
168 for (i=0;i<nfamn;i++)
172 strcpy(nomfam,"FAMILLE_NOEUD_");
174 sprintf(nomfam,"%s%d",nomfam,numfam);
178 strcpy(attdes,"description attribut");
179 strcpy(gro,"groupe1");
181 printf("%s - %d - %d - %d - %d \n",nomfam,numfam,attide,attval,
183 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
185 printf("MEDfamCr (nodes) : %d\n",ret);
191 /* fermeture du fichier */
192 ret = MEDfermer(fid);
195 /* Ecriture d'un deuxieme maillage structure : body fitted
196 ******************************************************* */
198 fid = MEDouvrir("test19.med",MED_ECRI);
205 strcpy(maa, "bodyfitted");
206 /* creation du maillage body fitted maa de dimension 2 */
208 ret = MEDgridCr(fid, maa, mdim, MED_BODY_FITTED);
211 /* ecriture des noeuds d'un maillage MED :
212 - des coo en mode MED_FULL_INTERLACE : (X1,Y1,X2,Y2,X3,Y3,...)
213 dans un repere cartesien
214 - des noms (optionnel dans un fichier MED)
215 - des numeros (optionnel dans un fichier MED)
216 - des numeros de familles des noeuds */
218 ret = MEDbodyFittedEcr(fid,maa,mdim,coo,nbr,MED_FULL_INTERLACE,MED_CART,
219 nomcoo,unicoo,nufano,nnoe,MED_ECRI);
225 strcpy(nomfam,"FAMILLE_0");
227 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
237 for (i=0;i<nfamn;i++)
241 strcpy(nomfam,"FAMILLE_NOEUD_");
243 sprintf(nomfam,"%s%d",nomfam,numfam);
247 strcpy(attdes,"description attribut");
248 strcpy(gro,"groupe1");
250 printf("%s - %d - %d - %d - %d \n",nomfam,numfam,attide,attval,
252 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
254 printf("MEDfamCr (nodes) : %d\n",ret);
262 /* fermeture du fichier */
263 ret = MEDfermer(fid);
266 /* Ecriture d'un troisieme maillage structure : grille cartesienne
267 *************************************************************** */
269 fid = MEDouvrir("test19.med", MED_ECRI);
276 strcpy(maa, "CartGrid");
277 /* creation d'une grille cartesienne maa de dimension 2 */
279 ret = MEDgridCr(fid, maa, mdim, MED_CARTESIAN);
282 /* Ecriture des indices de la grille cartesienne :
283 - des coo en mode MED_FULL_INTERLACE : (X1,Y1,X2,Y2,X3,Y3,...) */
284 for (i=0; i<mdim; i++) {
290 ret = MEDgridEcr(fid, maa, mdim, coo, nnoe, i, MED_FULL_INTERLACE, MED_CART, nomcoo, unicoo, MED_ECRI);
295 /* Ecriture des familles de la grille cartesienne */
297 fam[ 0]=3; fam[ 1]=3; fam[ 2]=2; fam[ 3]=1;
298 fam[ 4]=7; fam[ 5]=8; fam[ 6]=2; fam[ 7]=4;
299 fam[ 8]=2; fam[ 9]=9; fam[10]=0; fam[11]=2;
300 fam[12]=5; fam[13]=5; fam[14]=6; fam[15]=7;
301 ret = MEDfamGridEcr(fid, maa, fam, 16, MED_ECRI,MED_NOEUD);
308 strcpy(nomfam,"FAMILLE_0");
310 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,0,
319 for (i=0;i<nfamn;i++)
323 strcpy(nomfam,"FAMILLE_NOEUD_");
325 sprintf(nomfam,"%s%d",nomfam,numfam);
329 strcpy(attdes,"description attribut");
330 strcpy(gro,"groupe1");
332 printf("%s - %d - %d - %d - %d \n",nomfam,numfam,attide,attval,
334 ret = MEDfamCr(fid,maa,nomfam,numfam,&attide,&attval,attdes,
336 printf("MEDfamCr (nodes) : %d\n",ret);
342 /* fermeture du fichier */
343 ret = MEDfermer(fid);